From ab80b6224c6b3bd13e3ddd99df4dcc35436391ea Mon Sep 17 00:00:00 2001 From: Erik Jan de Wit Date: Tue, 7 Mar 2023 10:29:40 +0100 Subject: [PATCH] move help item to ui-shared (#4548) --- apps/admin-ui/src/App.tsx | 2 +- apps/admin-ui/src/PageHeader.tsx | 3 +- .../authentication/components/EditFlow.tsx | 6 +-- .../components/ExecutionConfigModal.tsx | 4 +- .../components/modals/AddSubFlowModal.tsx | 13 ++++--- .../src/authentication/form/FlowType.tsx | 4 +- .../authentication/form/NameDescription.tsx | 9 +++-- .../authentication/policies/CibaPolicy.tsx | 12 +++--- .../src/authentication/policies/OtpPolicy.tsx | 18 ++++----- .../src/authentication/policies/PolicyRow.tsx | 4 +- .../policies/WebauthnPolicy.tsx | 19 ++++++---- .../src/client-scopes/EditClientScope.tsx | 2 +- .../client-scopes/details/MappingDetails.tsx | 4 +- .../src/client-scopes/details/ScopeForm.tsx | 21 +++++----- .../src/clients/ClientDescription.tsx | 11 ++++-- .../src/clients/add/AccessSettings.tsx | 4 +- .../src/clients/add/CapabilityConfig.tsx | 24 ++++++------ .../src/clients/add/GeneralSettings.tsx | 4 +- .../src/clients/add/LoginSettings.tsx | 18 ++++----- .../src/clients/add/LoginSettingsPanel.tsx | 10 ++--- apps/admin-ui/src/clients/add/LogoutPanel.tsx | 14 ++++--- apps/admin-ui/src/clients/add/SamlConfig.tsx | 4 +- .../src/clients/add/SamlSignature.tsx | 8 ++-- .../src/clients/advanced/AdvancedSettings.tsx | 14 +++---- .../src/clients/advanced/ApplicationUrls.tsx | 8 ++-- .../advanced/AuthenticationOverrides.tsx | 6 +-- .../src/clients/advanced/ClusteringPanel.tsx | 4 +- .../advanced/FineGrainOpenIdConnect.tsx | 38 +++++++++++-------- .../advanced/FineGrainSamlEndpointConfig.tsx | 18 +++++---- .../OpenIdConnectCompatibilityModes.tsx | 14 ++++--- .../src/clients/advanced/RevocationPanel.tsx | 4 +- .../src/clients/advanced/TokenLifespan.tsx | 4 +- .../authorization/AuthorizationEvaluate.tsx | 12 +++--- .../authorization/AuthorizationExport.tsx | 4 +- .../authorization/DecisionStrategySelect.tsx | 4 +- .../clients/authorization/ImportDialog.tsx | 6 +-- .../authorization/PermissionDetails.tsx | 18 ++++----- .../clients/authorization/ResourceDetails.tsx | 21 +++++----- .../clients/authorization/ScopeDetails.tsx | 11 ++++-- .../src/clients/authorization/ScopePicker.tsx | 4 +- .../src/clients/authorization/Settings.tsx | 8 ++-- .../authorization/policy/Aggregate.tsx | 4 +- .../clients/authorization/policy/Client.tsx | 4 +- .../authorization/policy/ClientScope.tsx | 4 +- .../clients/authorization/policy/Group.tsx | 6 +-- .../authorization/policy/JavaScript.tsx | 4 +- .../authorization/policy/LogicSelector.tsx | 7 +++- .../authorization/policy/NameDescription.tsx | 6 +-- .../clients/authorization/policy/Regex.tsx | 6 +-- .../src/clients/authorization/policy/Role.tsx | 4 +- .../src/clients/authorization/policy/Time.tsx | 10 ++--- .../src/clients/authorization/policy/User.tsx | 22 ++++++----- .../src/clients/credentials/Credentials.tsx | 6 +-- .../src/clients/credentials/SignedJWT.tsx | 4 +- .../admin-ui/src/clients/credentials/X509.tsx | 6 +-- .../src/clients/import/ImportForm.tsx | 2 +- .../CreateInitialAccessToken.tsx | 6 +-- .../admin-ui/src/clients/keys/Certificate.tsx | 4 +- .../src/clients/keys/GenerateKeyDialog.tsx | 6 +-- .../src/clients/keys/ImportKeyDialog.tsx | 4 +- apps/admin-ui/src/clients/keys/Keys.tsx | 6 +-- apps/admin-ui/src/clients/keys/SamlKeys.tsx | 4 +- .../src/clients/keys/SamlKeysDialog.tsx | 4 +- .../src/clients/keys/StoreSettings.tsx | 10 ++--- .../registration/ClientRegistration.tsx | 6 +-- .../clients/registration/DetailProvider.tsx | 4 +- .../src/clients/scopes/DecicatedScope.tsx | 4 +- .../src/clients/scopes/EvaluateScopes.tsx | 17 ++++----- apps/admin-ui/src/components/alert/Alerts.tsx | 3 +- .../src/components/client/ClientSelect.tsx | 2 +- .../download-dialog/DownloadDialog.tsx | 3 +- .../components/dynamic/BooleanComponent.tsx | 2 +- .../src/components/dynamic/FileComponent.tsx | 2 +- .../src/components/dynamic/GroupComponent.tsx | 2 +- .../src/components/dynamic/ListComponent.tsx | 2 +- .../src/components/dynamic/MapComponent.tsx | 2 +- .../dynamic/MultivaluedListComponent.tsx | 2 +- .../dynamic/MultivaluedStringComponent.tsx | 2 +- .../components/dynamic/PasswordComponent.tsx | 2 +- .../src/components/dynamic/RoleComponent.tsx | 2 +- .../components/dynamic/ScriptComponent.tsx | 2 +- .../components/dynamic/StringComponent.tsx | 2 +- .../src/components/dynamic/TextComponent.tsx | 2 +- .../components/help-enabler/HelpHeader.tsx | 32 +--------------- .../permission-tab/PermissionTab.tsx | 4 +- .../src/components/roles-list/RolesList.tsx | 4 +- .../table-toolbar/KeycloakDataTable.tsx | 2 +- .../src/components/users/UserSelect.tsx | 2 +- .../src/components/view-header/ViewHeader.tsx | 3 +- apps/admin-ui/src/context/RealmsContext.tsx | 3 +- apps/admin-ui/src/context/RecentRealms.tsx | 8 ++-- apps/admin-ui/src/context/access/Access.tsx | 3 +- .../admin-ui/src/context/auth/AdminClient.tsx | 3 +- .../context/realm-context/RealmContext.tsx | 3 +- .../server-info/ServerInfoProvider.tsx | 3 +- apps/admin-ui/src/context/whoami/WhoAmI.tsx | 3 +- apps/admin-ui/src/dashboard/Dashboard.tsx | 6 +-- apps/admin-ui/src/dashboard/ProviderInfo.tsx | 2 +- apps/admin-ui/src/groups/SubGroupsContext.tsx | 3 +- .../identity-providers/add/AddMapperForm.tsx | 6 +-- .../add/AdvancedSettings.tsx | 6 +-- .../add/DescriptorSettings.tsx | 6 +-- .../add/DiscoverySettings.tsx | 4 +- .../add/ExtendedNonDiscoverySettings.tsx | 2 +- .../add/OIDCAuthentication.tsx | 6 +-- .../add/OIDCGeneralSettings.tsx | 4 +- .../add/OpenIdConnectSettings.tsx | 6 +-- .../add/ReqAuthnConstraintsSettings.tsx | 8 ++-- .../add/SamlConnectSettings.tsx | 6 +-- .../add/SamlGeneralSettings.tsx | 6 +-- .../component/ClientIdSecret.tsx | 6 +-- .../component/DiscoveryEndpointField.tsx | 2 +- .../component/DisplayOrder.tsx | 4 +- .../component/ExtendedFieldsForm.tsx | 22 +++++------ .../component/FormGroupField.tsx | 4 +- .../component/RedirectUrl.tsx | 4 +- apps/admin-ui/src/index.css | 32 ---------------- .../src/realm-roles/UsersInRoleTab.tsx | 2 +- .../src/realm-settings/ClientProfileForm.tsx | 4 +- .../src/realm-settings/DefaultGroupsTab.tsx | 2 +- apps/admin-ui/src/realm-settings/EmailTab.tsx | 10 ++--- .../src/realm-settings/ExecutorForm.tsx | 2 +- .../src/realm-settings/GeneralTab.tsx | 14 +++---- .../src/realm-settings/LocalizationTab.tsx | 4 +- apps/admin-ui/src/realm-settings/LoginTab.tsx | 16 ++++---- .../NewClientPolicyCondition.tsx | 2 +- .../realm-settings/NewClientPolicyForm.tsx | 6 +-- .../src/realm-settings/SessionsTab.tsx | 24 ++++++------ .../admin-ui/src/realm-settings/ThemesTab.tsx | 10 ++--- .../admin-ui/src/realm-settings/TokensTab.tsx | 30 ++++++++------- .../event-config/EventConfigForm.tsx | 10 ++--- .../event-config/EventListenersForm.tsx | 2 +- .../keys/key-providers/KeyProviderForm.tsx | 6 +-- .../security-defences/BruteForceDetection.tsx | 8 ++-- .../security-defences/HelpLinkTextInput.tsx | 2 +- .../realm-settings/security-defences/Time.tsx | 4 +- .../user-profile/AttributesGroupForm.tsx | 8 ++-- .../user-profile/UserProfileContext.tsx | 3 +- .../attribute/AttributeGeneralSettings.tsx | 10 ++--- .../attribute/AttributePermission.tsx | 6 +-- .../custom/CustomProviderSettings.tsx | 4 +- .../user-federation/custom/SyncSettings.tsx | 10 ++--- .../kerberos/KerberosSettingsRequired.tsx | 20 +++++----- .../ldap/LdapSettingsAdvanced.tsx | 8 ++-- .../ldap/LdapSettingsConnection.tsx | 20 +++++----- .../ldap/LdapSettingsGeneral.tsx | 6 +-- .../ldap/LdapSettingsKerberosIntegration.tsx | 18 +++++---- .../ldap/LdapSettingsSearching.tsx | 22 +++++------ .../ldap/LdapSettingsSynchronization.tsx | 16 ++++---- .../ldap/mappers/LdapMapperDetails.tsx | 4 +- .../user-federation/shared/SettingsCache.tsx | 12 +++--- apps/admin-ui/src/user/UserCredentials.tsx | 4 +- apps/admin-ui/src/user/UserForm.tsx | 12 +++--- apps/admin-ui/src/user/UserGroups.tsx | 2 +- .../CredentialsResetActionMultiSelect.tsx | 4 +- .../user/user-credentials/LifespanField.tsx | 7 +++- .../user-credentials/ResetPasswordDialog.tsx | 4 +- libs/ui-shared/src/context/HelpContext.tsx | 30 +++++++++++++++ .../ui-shared/src/controls}/HelpItem.tsx | 16 +++----- libs/ui-shared/src/controls/TextControl.tsx | 7 ++++ libs/ui-shared/src/main.ts | 6 +++ .../src/utils/createNamedContext.ts | 0 .../ui-shared}/src/utils/isDefined.test.ts | 0 .../ui-shared}/src/utils/isDefined.ts | 0 .../src/utils/useRequiredContext.test.ts | 2 +- .../src/utils/useRequiredContext.ts | 4 +- .../ui-shared}/src/utils/useStorageItem.ts | 0 .../ui-shared}/src/utils/useStoredState.ts | 0 168 files changed, 644 insertions(+), 615 deletions(-) create mode 100644 libs/ui-shared/src/context/HelpContext.tsx rename {apps/admin-ui/src/components/help-enabler => libs/ui-shared/src/controls}/HelpItem.tsx (62%) rename {apps/admin-ui => libs/ui-shared}/src/utils/createNamedContext.ts (100%) rename {apps/admin-ui => libs/ui-shared}/src/utils/isDefined.test.ts (100%) rename {apps/admin-ui => libs/ui-shared}/src/utils/isDefined.ts (100%) rename {apps/admin-ui => libs/ui-shared}/src/utils/useRequiredContext.test.ts (96%) rename {apps/admin-ui => libs/ui-shared}/src/utils/useRequiredContext.ts (88%) rename {apps/admin-ui => libs/ui-shared}/src/utils/useStorageItem.ts (100%) rename {apps/admin-ui => libs/ui-shared}/src/utils/useStoredState.ts (100%) diff --git a/apps/admin-ui/src/App.tsx b/apps/admin-ui/src/App.tsx index c9098e8825..db0854b85e 100644 --- a/apps/admin-ui/src/App.tsx +++ b/apps/admin-ui/src/App.tsx @@ -8,7 +8,7 @@ import { HashRouter as Router, Route, Routes } from "react-router-dom"; import { AlertProvider } from "./components/alert/Alerts"; import { PageBreadCrumbs } from "./components/bread-crumb/PageBreadCrumbs"; import { ErrorRenderer } from "./components/error/ErrorRenderer"; -import { Help } from "./components/help-enabler/HelpHeader"; +import { Help } from "ui-shared"; import { KeycloakSpinner } from "./components/keycloak-spinner/KeycloakSpinner"; import { AccessContextProvider, useAccess } from "./context/access/Access"; import { AdminClientContext } from "./context/auth/AdminClient"; diff --git a/apps/admin-ui/src/PageHeader.tsx b/apps/admin-ui/src/PageHeader.tsx index bb44898fe4..9c1560ac5d 100644 --- a/apps/admin-ui/src/PageHeader.tsx +++ b/apps/admin-ui/src/PageHeader.tsx @@ -15,7 +15,8 @@ import { HelpIcon } from "@patternfly/react-icons"; import { ReactNode, useState } from "react"; import { useTranslation } from "react-i18next"; import { Link } from "react-router-dom"; -import { HelpHeader, useHelp } from "./components/help-enabler/HelpHeader"; +import { HelpHeader } from "./components/help-enabler/HelpHeader"; +import { useHelp } from "ui-shared"; import { useAdminClient } from "./context/auth/AdminClient"; import { useRealm } from "./context/realm-context/RealmContext"; import { useWhoAmI } from "./context/whoami/WhoAmI"; diff --git a/apps/admin-ui/src/authentication/components/EditFlow.tsx b/apps/admin-ui/src/authentication/components/EditFlow.tsx index e11d67371c..3c33963ac0 100644 --- a/apps/admin-ui/src/authentication/components/EditFlow.tsx +++ b/apps/admin-ui/src/authentication/components/EditFlow.tsx @@ -13,7 +13,7 @@ import { useEffect } from "react"; import { useForm } from "react-hook-form"; import { useTranslation } from "react-i18next"; -import { HelpItem } from "../../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import { KeycloakTextArea } from "../../components/keycloak-text-area/KeycloakTextArea"; import { KeycloakTextInput } from "../../components/keycloak-text-input/KeycloakTextInput"; import useToggle from "../../utils/useToggle"; @@ -97,7 +97,7 @@ export const EditFlow = ({ execution, onRowChange }: EditFlowProps) => { } labelIcon={ } @@ -120,7 +120,7 @@ export const EditFlow = ({ execution, onRowChange }: EditFlowProps) => { fieldId="kc-description" labelIcon={ } diff --git a/apps/admin-ui/src/authentication/components/ExecutionConfigModal.tsx b/apps/admin-ui/src/authentication/components/ExecutionConfigModal.tsx index fcbf5ab9cf..104ca45528 100644 --- a/apps/admin-ui/src/authentication/components/ExecutionConfigModal.tsx +++ b/apps/admin-ui/src/authentication/components/ExecutionConfigModal.tsx @@ -19,7 +19,7 @@ import { useTranslation } from "react-i18next"; import { useAlerts } from "../../components/alert/Alerts"; import { DynamicComponents } from "../../components/dynamic/DynamicComponents"; -import { HelpItem } from "../../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import { KeycloakTextInput } from "../../components/keycloak-text-input/KeycloakTextInput"; import { useAdminClient, useFetch } from "../../context/auth/AdminClient"; import { convertFormValuesToObject, convertToFormValues } from "../../util"; @@ -141,7 +141,7 @@ export const ExecutionConfigModal = ({ isRequired labelIcon={ } diff --git a/apps/admin-ui/src/authentication/components/modals/AddSubFlowModal.tsx b/apps/admin-ui/src/authentication/components/modals/AddSubFlowModal.tsx index 7374ed88ef..24272f063e 100644 --- a/apps/admin-ui/src/authentication/components/modals/AddSubFlowModal.tsx +++ b/apps/admin-ui/src/authentication/components/modals/AddSubFlowModal.tsx @@ -15,7 +15,7 @@ import { useEffect, useState } from "react"; import { Controller, useForm } from "react-hook-form"; import { useTranslation } from "react-i18next"; -import { HelpItem } from "../../../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import { KeycloakTextInput } from "../../../components/keycloak-text-input/KeycloakTextInput"; import { useAdminClient, useFetch } from "../../../context/auth/AdminClient"; @@ -99,7 +99,10 @@ export const AddSubFlowModal = ({ errors.name ? ValidatedOptions.error : ValidatedOptions.default } labelIcon={ - + } isRequired > @@ -117,7 +120,7 @@ export const AddSubFlowModal = ({ fieldId="description" labelIcon={ } @@ -133,7 +136,7 @@ export const AddSubFlowModal = ({ fieldId="flowType" labelIcon={ } @@ -173,7 +176,7 @@ export const AddSubFlowModal = ({ label={t("flowType")} labelIcon={ } diff --git a/apps/admin-ui/src/authentication/form/FlowType.tsx b/apps/admin-ui/src/authentication/form/FlowType.tsx index 6f5b058d7f..d747bc6862 100644 --- a/apps/admin-ui/src/authentication/form/FlowType.tsx +++ b/apps/admin-ui/src/authentication/form/FlowType.tsx @@ -9,7 +9,7 @@ import { useState } from "react"; import { Controller, useFormContext } from "react-hook-form"; import { useTranslation } from "react-i18next"; -import { HelpItem } from "../../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; const TYPES = ["basic-flow", "client-flow"] as const; @@ -23,7 +23,7 @@ export const FlowType = () => { label={t("flowType")} labelIcon={ } diff --git a/apps/admin-ui/src/authentication/form/NameDescription.tsx b/apps/admin-ui/src/authentication/form/NameDescription.tsx index 82a66c4e9c..0e9739533f 100644 --- a/apps/admin-ui/src/authentication/form/NameDescription.tsx +++ b/apps/admin-ui/src/authentication/form/NameDescription.tsx @@ -3,7 +3,7 @@ import { FormGroup, ValidatedOptions } from "@patternfly/react-core"; import { useFormContext } from "react-hook-form"; import { useTranslation } from "react-i18next"; -import { HelpItem } from "../../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import { KeycloakTextArea } from "../../components/keycloak-text-area/KeycloakTextArea"; import { KeycloakTextInput } from "../../components/keycloak-text-input/KeycloakTextInput"; @@ -24,7 +24,10 @@ export const NameDescription = () => { errors.alias ? ValidatedOptions.error : ValidatedOptions.default } labelIcon={ - + } isRequired > @@ -42,7 +45,7 @@ export const NameDescription = () => { fieldId="kc-description" labelIcon={ } diff --git a/apps/admin-ui/src/authentication/policies/CibaPolicy.tsx b/apps/admin-ui/src/authentication/policies/CibaPolicy.tsx index 86785270e1..c62d10a2b4 100644 --- a/apps/admin-ui/src/authentication/policies/CibaPolicy.tsx +++ b/apps/admin-ui/src/authentication/policies/CibaPolicy.tsx @@ -18,7 +18,7 @@ import { useTranslation } from "react-i18next"; import { useAlerts } from "../../components/alert/Alerts"; import { FormAccess } from "../../components/form-access/FormAccess"; -import { HelpItem } from "../../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import { KeycloakTextInput } from "../../components/keycloak-text-input/KeycloakTextInput"; import { useAdminClient } from "../../context/auth/AdminClient"; import { useRealm } from "../../context/realm-context/RealmContext"; @@ -95,7 +95,9 @@ export const CibaPolicy = ({ realm, realmUpdated }: CibaPolicyProps) => { label={t("cibaBackchannelTokenDeliveryMode")} labelIcon={ } @@ -136,7 +138,7 @@ export const CibaPolicy = ({ realm, realmUpdated }: CibaPolicyProps) => { label={t("cibaExpiresIn")} labelIcon={ } @@ -180,7 +182,7 @@ export const CibaPolicy = ({ realm, realmUpdated }: CibaPolicyProps) => { label={t("cibaInterval")} labelIcon={ } @@ -222,7 +224,7 @@ export const CibaPolicy = ({ realm, realmUpdated }: CibaPolicyProps) => { label={t("cibaAuthRequestedUserHint")} labelIcon={ } diff --git a/apps/admin-ui/src/authentication/policies/OtpPolicy.tsx b/apps/admin-ui/src/authentication/policies/OtpPolicy.tsx index 8c24acdecf..6809756d8d 100644 --- a/apps/admin-ui/src/authentication/policies/OtpPolicy.tsx +++ b/apps/admin-ui/src/authentication/policies/OtpPolicy.tsx @@ -22,7 +22,7 @@ import { useTranslation } from "react-i18next"; import { useAlerts } from "../../components/alert/Alerts"; import { FormAccess } from "../../components/form-access/FormAccess"; -import { HelpItem } from "../../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import { TimeSelector } from "../../components/time-selector/TimeSelector"; import { useAdminClient } from "../../context/auth/AdminClient"; import { useRealm } from "../../context/realm-context/RealmContext"; @@ -103,7 +103,7 @@ export const OtpPolicy = ({ realm, realmUpdated }: OtpPolicyProps) => { label={t("otpType")} labelIcon={ } @@ -136,7 +136,7 @@ export const OtpPolicy = ({ realm, realmUpdated }: OtpPolicyProps) => { label={t("otpHashAlgorithm")} labelIcon={ } @@ -175,7 +175,7 @@ export const OtpPolicy = ({ realm, realmUpdated }: OtpPolicyProps) => { label={t("otpPolicyDigits")} labelIcon={ } @@ -208,7 +208,7 @@ export const OtpPolicy = ({ realm, realmUpdated }: OtpPolicyProps) => { label={t("lookAhead")} labelIcon={ } @@ -252,7 +252,7 @@ export const OtpPolicy = ({ realm, realmUpdated }: OtpPolicyProps) => { } labelIcon={ } @@ -295,7 +295,7 @@ export const OtpPolicy = ({ realm, realmUpdated }: OtpPolicyProps) => { } labelIcon={ } @@ -332,7 +332,7 @@ export const OtpPolicy = ({ realm, realmUpdated }: OtpPolicyProps) => { label={t("supportedApplications")} labelIcon={ } @@ -352,7 +352,7 @@ export const OtpPolicy = ({ realm, realmUpdated }: OtpPolicyProps) => { fieldId="otpPolicyCodeReusable" labelIcon={ } diff --git a/apps/admin-ui/src/authentication/policies/PolicyRow.tsx b/apps/admin-ui/src/authentication/policies/PolicyRow.tsx index 5fcf0d9779..d7fc7d466f 100644 --- a/apps/admin-ui/src/authentication/policies/PolicyRow.tsx +++ b/apps/admin-ui/src/authentication/policies/PolicyRow.tsx @@ -12,7 +12,7 @@ import { MinusCircleIcon } from "@patternfly/react-icons"; import { Controller, useFormContext } from "react-hook-form"; import { useTranslation } from "react-i18next"; -import { HelpItem } from "../../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import { KeycloakTextInput } from "../../components/keycloak-text-input/KeycloakTextInput"; import "./policy-row.css"; @@ -44,7 +44,7 @@ export const PolicyRow = ({ } labelIcon={ } diff --git a/apps/admin-ui/src/authentication/policies/WebauthnPolicy.tsx b/apps/admin-ui/src/authentication/policies/WebauthnPolicy.tsx index 7c197ee036..6d6594d2d4 100644 --- a/apps/admin-ui/src/authentication/policies/WebauthnPolicy.tsx +++ b/apps/admin-ui/src/authentication/policies/WebauthnPolicy.tsx @@ -26,8 +26,7 @@ import { useTranslation } from "react-i18next"; import type RealmRepresentation from "@keycloak/keycloak-admin-client/lib/defs/realmRepresentation"; import { useAlerts } from "../../components/alert/Alerts"; import { FormAccess } from "../../components/form-access/FormAccess"; -import { useHelp } from "../../components/help-enabler/HelpHeader"; -import { HelpItem } from "../../components/help-enabler/HelpItem"; +import { useHelp, HelpItem } from "ui-shared"; import { KeycloakTextInput } from "../../components/keycloak-text-input/KeycloakTextInput"; import { MultiLineInput } from "../../components/multi-line-input/MultiLineInput"; import { TimeSelector } from "../../components/time-selector/TimeSelector"; @@ -92,7 +91,7 @@ const WebauthnSelect = ({ label={t(label)} labelIcon={ } @@ -219,7 +218,7 @@ export const WebauthnPolicy = ({ isRequired labelIcon={ } @@ -242,7 +241,7 @@ export const WebauthnPolicy = ({ label={t("webAuthnPolicyRpId")} labelIcon={ } @@ -285,7 +284,7 @@ export const WebauthnPolicy = ({ validated={errors.webAuthnPolicyCreateTimeout ? "error" : "default"} labelIcon={ } @@ -314,7 +313,9 @@ export const WebauthnPolicy = ({ fieldId="webAuthnPolicyAvoidSameAuthenticatorRegister" labelIcon={ } @@ -340,7 +341,9 @@ export const WebauthnPolicy = ({ fieldId="webAuthnPolicyAcceptableAaguids" labelIcon={ } diff --git a/apps/admin-ui/src/client-scopes/EditClientScope.tsx b/apps/admin-ui/src/client-scopes/EditClientScope.tsx index 7fa892bb66..67daecf933 100644 --- a/apps/admin-ui/src/client-scopes/EditClientScope.tsx +++ b/apps/admin-ui/src/client-scopes/EditClientScope.tsx @@ -23,7 +23,7 @@ import { ClientScopeDefaultOptionalType, } from "../components/client-scope/ClientScopeTypes"; import { useConfirmDialog } from "../components/confirm-dialog/ConfirmDialog"; -import { useHelp } from "../components/help-enabler/HelpHeader"; +import { useHelp } from "ui-shared"; import { KeycloakSpinner } from "../components/keycloak-spinner/KeycloakSpinner"; import { RoleMapping, Row } from "../components/role-mapping/RoleMapping"; import { diff --git a/apps/admin-ui/src/client-scopes/details/MappingDetails.tsx b/apps/admin-ui/src/client-scopes/details/MappingDetails.tsx index e08c2cf486..4101e2243c 100644 --- a/apps/admin-ui/src/client-scopes/details/MappingDetails.tsx +++ b/apps/admin-ui/src/client-scopes/details/MappingDetails.tsx @@ -20,7 +20,7 @@ import { useAlerts } from "../../components/alert/Alerts"; import { useConfirmDialog } from "../../components/confirm-dialog/ConfirmDialog"; import { DynamicComponents } from "../../components/dynamic/DynamicComponents"; import { FormAccess } from "../../components/form-access/FormAccess"; -import { HelpItem } from "../../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import { KeycloakTextInput } from "../../components/keycloak-text-input/KeycloakTextInput"; import { ViewHeader } from "../../components/view-header/ViewHeader"; import { useAdminClient, useFetch } from "../../context/auth/AdminClient"; @@ -221,7 +221,7 @@ export default function MappingDetails() { label={t("common:name")} labelIcon={ } diff --git a/apps/admin-ui/src/client-scopes/details/ScopeForm.tsx b/apps/admin-ui/src/client-scopes/details/ScopeForm.tsx index 1a6f48a2bf..d0a9a29e77 100644 --- a/apps/admin-ui/src/client-scopes/details/ScopeForm.tsx +++ b/apps/admin-ui/src/client-scopes/details/ScopeForm.tsx @@ -21,7 +21,7 @@ import { clientScopeTypesSelectOptions, } from "../../components/client-scope/ClientScopeTypes"; import { FormAccess } from "../../components/form-access/FormAccess"; -import { HelpItem } from "../../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import { KeycloakTextArea } from "../../components/keycloak-text-area/KeycloakTextArea"; import { KeycloakTextInput } from "../../components/keycloak-text-input/KeycloakTextInput"; import { useRealm } from "../../context/realm-context/RealmContext"; @@ -70,7 +70,10 @@ export const ScopeForm = ({ clientScope, save }: ScopeFormProps) => { + } fieldId="kc-name" validated={ @@ -92,7 +95,7 @@ export const ScopeForm = ({ clientScope, save }: ScopeFormProps) => { label={t("common:description")} labelIcon={ } @@ -118,7 +121,7 @@ export const ScopeForm = ({ clientScope, save }: ScopeFormProps) => { label={t("type")} labelIcon={ } @@ -150,7 +153,7 @@ export const ScopeForm = ({ clientScope, save }: ScopeFormProps) => { label={t("protocol")} labelIcon={ } @@ -192,7 +195,7 @@ export const ScopeForm = ({ clientScope, save }: ScopeFormProps) => { label={t("displayOnConsentScreen")} labelIcon={ } @@ -220,7 +223,7 @@ export const ScopeForm = ({ clientScope, save }: ScopeFormProps) => { label={t("consentScreenText")} labelIcon={ } @@ -241,7 +244,7 @@ export const ScopeForm = ({ clientScope, save }: ScopeFormProps) => { label={t("includeInTokenScope")} labelIcon={ } @@ -268,7 +271,7 @@ export const ScopeForm = ({ clientScope, save }: ScopeFormProps) => { label={t("guiOrder")} labelIcon={ } diff --git a/apps/admin-ui/src/clients/ClientDescription.tsx b/apps/admin-ui/src/clients/ClientDescription.tsx index 58a89d234e..85b4bc886c 100644 --- a/apps/admin-ui/src/clients/ClientDescription.tsx +++ b/apps/admin-ui/src/clients/ClientDescription.tsx @@ -1,9 +1,9 @@ import { FormGroup, Switch, ValidatedOptions } from "@patternfly/react-core"; import { Controller, useFormContext } from "react-hook-form"; import { useTranslation } from "react-i18next"; +import { HelpItem } from "ui-shared"; import { FormAccess } from "../components/form-access/FormAccess"; -import { HelpItem } from "../components/help-enabler/HelpItem"; import { KeycloakTextArea } from "../components/keycloak-text-area/KeycloakTextArea"; import { KeycloakTextInput } from "../components/keycloak-text-input/KeycloakTextInput"; import { FormFields } from "./ClientDetails"; @@ -47,7 +47,10 @@ export const ClientDescription = ({ + } label={t("common:name")} fieldId="kc-name" @@ -57,7 +60,7 @@ export const ClientDescription = ({ } @@ -87,7 +90,7 @@ export const ClientDescription = ({ label={t("alwaysDisplayInUI")} labelIcon={ } diff --git a/apps/admin-ui/src/clients/add/AccessSettings.tsx b/apps/admin-ui/src/clients/add/AccessSettings.tsx index 8389889e14..6ecd9fa17f 100644 --- a/apps/admin-ui/src/clients/add/AccessSettings.tsx +++ b/apps/admin-ui/src/clients/add/AccessSettings.tsx @@ -3,7 +3,7 @@ import { useFormContext } from "react-hook-form"; import { useTranslation } from "react-i18next"; import { FormAccess } from "../../components/form-access/FormAccess"; -import { HelpItem } from "../../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import { KeycloakTextInput } from "../../components/keycloak-text-input/KeycloakTextInput"; import { useAccess } from "../../context/access/Access"; import { SaveReset } from "../advanced/SaveReset"; @@ -37,7 +37,7 @@ export const AccessSettings = ({ fieldId="kc-admin-url" labelIcon={ } diff --git a/apps/admin-ui/src/clients/add/CapabilityConfig.tsx b/apps/admin-ui/src/clients/add/CapabilityConfig.tsx index f24cfc9c9c..7e8259ddaf 100644 --- a/apps/admin-ui/src/clients/add/CapabilityConfig.tsx +++ b/apps/admin-ui/src/clients/add/CapabilityConfig.tsx @@ -11,7 +11,7 @@ import { useTranslation } from "react-i18next"; import type ClientRepresentation from "@keycloak/keycloak-admin-client/lib/defs/clientRepresentation"; import { FormAccess } from "../../components/form-access/FormAccess"; -import { HelpItem } from "../../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import { convertAttributeNameToForm } from "../../util"; import { FormFields } from "../ClientDetails"; @@ -48,7 +48,7 @@ export const CapabilityConfig = ({ fieldId="kc-authentication" labelIcon={ } @@ -88,7 +88,7 @@ export const CapabilityConfig = ({ fieldId="kc-authorization" labelIcon={ } @@ -137,7 +137,7 @@ export const CapabilityConfig = ({ onChange={field.onChange} /> @@ -159,7 +159,7 @@ export const CapabilityConfig = ({ onChange={field.onChange} /> @@ -181,7 +181,7 @@ export const CapabilityConfig = ({ onChange={field.onChange} /> @@ -210,7 +210,7 @@ export const CapabilityConfig = ({ } /> @@ -235,7 +235,9 @@ export const CapabilityConfig = ({ onChange={field.onChange} /> @@ -261,7 +263,7 @@ export const CapabilityConfig = ({ isDisabled={clientAuthentication} /> @@ -277,7 +279,7 @@ export const CapabilityConfig = ({ } @@ -307,7 +309,7 @@ export const CapabilityConfig = ({ } diff --git a/apps/admin-ui/src/clients/add/GeneralSettings.tsx b/apps/admin-ui/src/clients/add/GeneralSettings.tsx index 2499235f1b..7e54d4a744 100644 --- a/apps/admin-ui/src/clients/add/GeneralSettings.tsx +++ b/apps/admin-ui/src/clients/add/GeneralSettings.tsx @@ -9,7 +9,7 @@ import { Controller, useFormContext } from "react-hook-form"; import { useTranslation } from "react-i18next"; import { FormAccess } from "../../components/form-access/FormAccess"; -import { HelpItem } from "../../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import { useLoginProviders } from "../../context/server-info/ServerInfoProvider"; import { ClientDescription } from "../ClientDescription"; import { getProtocolName } from "../utils"; @@ -32,7 +32,7 @@ export const GeneralSettings = () => { validated={errors.protocol ? "error" : "default"} labelIcon={ } diff --git a/apps/admin-ui/src/clients/add/LoginSettings.tsx b/apps/admin-ui/src/clients/add/LoginSettings.tsx index 050000b835..8a5d06b8f4 100644 --- a/apps/admin-ui/src/clients/add/LoginSettings.tsx +++ b/apps/admin-ui/src/clients/add/LoginSettings.tsx @@ -2,7 +2,7 @@ import { FormGroup } from "@patternfly/react-core"; import { useFormContext } from "react-hook-form"; import { useTranslation } from "react-i18next"; -import { HelpItem } from "../../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import { KeycloakTextInput } from "../../components/keycloak-text-input/KeycloakTextInput"; import { MultiLineInput } from "../../components/multi-line-input/MultiLineInput"; import { useRealm } from "../../context/realm-context/RealmContext"; @@ -31,7 +31,7 @@ export const LoginSettings = ({ fieldId="kc-root-url" labelIcon={ } @@ -47,7 +47,7 @@ export const LoginSettings = ({ fieldId="kc-home-url" labelIcon={ } @@ -63,7 +63,7 @@ export const LoginSettings = ({ fieldId="kc-redirect" labelIcon={ } @@ -80,7 +80,7 @@ export const LoginSettings = ({ fieldId="kc-postLogoutRedirect" labelIcon={ } @@ -102,7 +102,7 @@ export const LoginSettings = ({ fieldId="idpInitiatedSsoUrlName" labelIcon={ } @@ -124,7 +124,7 @@ export const LoginSettings = ({ fieldId="idpInitiatedSsoRelayState" labelIcon={ } @@ -140,7 +140,7 @@ export const LoginSettings = ({ fieldId="masterSamlProcessingUrl" labelIcon={ } @@ -160,7 +160,7 @@ export const LoginSettings = ({ fieldId="kc-web-origins" labelIcon={ } diff --git a/apps/admin-ui/src/clients/add/LoginSettingsPanel.tsx b/apps/admin-ui/src/clients/add/LoginSettingsPanel.tsx index 0c18da7524..9e56b2768d 100644 --- a/apps/admin-ui/src/clients/add/LoginSettingsPanel.tsx +++ b/apps/admin-ui/src/clients/add/LoginSettingsPanel.tsx @@ -10,7 +10,7 @@ import { Controller, useFormContext } from "react-hook-form"; import { useTranslation } from "react-i18next"; import { FormAccess } from "../../components/form-access/FormAccess"; -import { HelpItem } from "../../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import { KeycloakTextArea } from "../../components/keycloak-text-area/KeycloakTextArea"; import { useServerInfo } from "../../context/server-info/ServerInfoProvider"; import { convertAttributeNameToForm } from "../../util"; @@ -35,7 +35,7 @@ export const LoginSettingsPanel = ({ access }: { access?: boolean }) => { label={t("loginTheme")} labelIcon={ } @@ -78,7 +78,7 @@ export const LoginSettingsPanel = ({ access }: { access?: boolean }) => { label={t("consentRequired")} labelIcon={ } @@ -105,7 +105,7 @@ export const LoginSettingsPanel = ({ access }: { access?: boolean }) => { label={t("displayOnClient")} labelIcon={ } @@ -135,7 +135,7 @@ export const LoginSettingsPanel = ({ access }: { access?: boolean }) => { label={t("consentScreenText")} labelIcon={ } diff --git a/apps/admin-ui/src/clients/add/LogoutPanel.tsx b/apps/admin-ui/src/clients/add/LogoutPanel.tsx index 4ec933d2e5..5aecbcd688 100644 --- a/apps/admin-ui/src/clients/add/LogoutPanel.tsx +++ b/apps/admin-ui/src/clients/add/LogoutPanel.tsx @@ -3,7 +3,7 @@ import { Controller, useFormContext } from "react-hook-form"; import { useTranslation } from "react-i18next"; import { FormAccess } from "../../components/form-access/FormAccess"; -import { HelpItem } from "../../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import { KeycloakTextInput } from "../../components/keycloak-text-input/KeycloakTextInput"; import { useAccess } from "../../context/access/Access"; import { beerify, convertAttributeNameToForm } from "../../util"; @@ -40,7 +40,7 @@ export const LogoutPanel = ({ label={t("frontchannelLogout")} labelIcon={ } @@ -69,7 +69,7 @@ export const LogoutPanel = ({ fieldId="frontchannelLogoutUrl" labelIcon={ } @@ -113,7 +113,7 @@ export const LogoutPanel = ({ fieldId="backchannelLogoutUrl" labelIcon={ } @@ -154,7 +154,7 @@ export const LogoutPanel = ({ label={t("backchannelLogoutSessionRequired")} labelIcon={ } @@ -183,7 +183,9 @@ export const LogoutPanel = ({ label={t("backchannelLogoutRevokeOfflineSessions")} labelIcon={ } diff --git a/apps/admin-ui/src/clients/add/SamlConfig.tsx b/apps/admin-ui/src/clients/add/SamlConfig.tsx index b8e0d62d6f..8f50333009 100644 --- a/apps/admin-ui/src/clients/add/SamlConfig.tsx +++ b/apps/admin-ui/src/clients/add/SamlConfig.tsx @@ -10,7 +10,7 @@ import { Controller, Path, PathValue, useFormContext } from "react-hook-form"; import { useTranslation } from "react-i18next"; import { FormAccess } from "../../components/form-access/FormAccess"; -import { HelpItem } from "../../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import { convertAttributeNameToForm } from "../../util"; import { FormFields } from "../ClientDetails"; @@ -70,7 +70,7 @@ export const SamlConfig = () => { fieldId="nameIdFormat" labelIcon={ } diff --git a/apps/admin-ui/src/clients/add/SamlSignature.tsx b/apps/admin-ui/src/clients/add/SamlSignature.tsx index 5c5e213a53..946b2e2c0d 100644 --- a/apps/admin-ui/src/clients/add/SamlSignature.tsx +++ b/apps/admin-ui/src/clients/add/SamlSignature.tsx @@ -9,7 +9,7 @@ import { Controller, useFormContext } from "react-hook-form"; import { useTranslation } from "react-i18next"; import { FormAccess } from "../../components/form-access/FormAccess"; -import { HelpItem } from "../../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import { convertAttributeNameToForm } from "../../util"; import { FormFields } from "../ClientDetails"; import { Toggle } from "./SamlConfig"; @@ -79,7 +79,7 @@ export const SamlSignature = () => { fieldId="signatureAlgorithm" labelIcon={ } @@ -119,7 +119,7 @@ export const SamlSignature = () => { fieldId="signatureKeyName" labelIcon={ } @@ -159,7 +159,7 @@ export const SamlSignature = () => { fieldId="canonicalization" labelIcon={ } diff --git a/apps/admin-ui/src/clients/advanced/AdvancedSettings.tsx b/apps/admin-ui/src/clients/advanced/AdvancedSettings.tsx index d0427bc77d..22096d9e8a 100644 --- a/apps/admin-ui/src/clients/advanced/AdvancedSettings.tsx +++ b/apps/admin-ui/src/clients/advanced/AdvancedSettings.tsx @@ -13,7 +13,7 @@ import { Controller, useFormContext } from "react-hook-form"; import { useTranslation } from "react-i18next"; import { FormAccess } from "../../components/form-access/FormAccess"; -import { HelpItem } from "../../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import { KeyValueInput } from "../../components/key-value-form/KeyValueInput"; import { MultiLineInput } from "../../components/multi-line-input/MultiLineInput"; import { TimeSelector } from "../../components/time-selector/TimeSelector"; @@ -62,7 +62,7 @@ export const AdvancedSettings = ({ fieldId="assertionLifespan" labelIcon={ } @@ -136,7 +136,7 @@ export const AdvancedSettings = ({ hasNoPaddingTop labelIcon={ } @@ -165,7 +165,7 @@ export const AdvancedSettings = ({ hasNoPaddingTop labelIcon={ } @@ -202,7 +202,7 @@ export const AdvancedSettings = ({ fieldId="pushedAuthorizationRequestRequired" labelIcon={ } @@ -230,7 +230,7 @@ export const AdvancedSettings = ({ fieldId="acrToLoAMapping" labelIcon={ } @@ -244,7 +244,7 @@ export const AdvancedSettings = ({ fieldId="defaultACRValues" labelIcon={ } diff --git a/apps/admin-ui/src/clients/advanced/ApplicationUrls.tsx b/apps/admin-ui/src/clients/advanced/ApplicationUrls.tsx index a60006c859..b0a99cdc14 100644 --- a/apps/admin-ui/src/clients/advanced/ApplicationUrls.tsx +++ b/apps/admin-ui/src/clients/advanced/ApplicationUrls.tsx @@ -2,7 +2,7 @@ import { FormGroup } from "@patternfly/react-core"; import { useFormContext } from "react-hook-form"; import { useTranslation } from "react-i18next"; -import { HelpItem } from "../../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import { KeycloakTextInput } from "../../components/keycloak-text-input/KeycloakTextInput"; import { convertAttributeNameToForm } from "../../util"; import { FormFields } from "../ClientDetails"; @@ -18,7 +18,7 @@ export const ApplicationUrls = () => { fieldId="logoUrl" labelIcon={ } @@ -37,7 +37,7 @@ export const ApplicationUrls = () => { fieldId="policyUrl" labelIcon={ } @@ -56,7 +56,7 @@ export const ApplicationUrls = () => { fieldId="termsOfServiceUrl" labelIcon={ } diff --git a/apps/admin-ui/src/clients/advanced/AuthenticationOverrides.tsx b/apps/admin-ui/src/clients/advanced/AuthenticationOverrides.tsx index 4e8a84431c..ca0adbac8d 100644 --- a/apps/admin-ui/src/clients/advanced/AuthenticationOverrides.tsx +++ b/apps/admin-ui/src/clients/advanced/AuthenticationOverrides.tsx @@ -12,7 +12,7 @@ import { Controller, useFormContext } from "react-hook-form"; import { useTranslation } from "react-i18next"; import { FormAccess } from "../../components/form-access/FormAccess"; -import { HelpItem } from "../../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import { useAdminClient, useFetch } from "../../context/auth/AdminClient"; type AuthenticationOverridesProps = { @@ -68,7 +68,7 @@ export const AuthenticationOverrides = ({ fieldId="browserFlow" labelIcon={ } @@ -100,7 +100,7 @@ export const AuthenticationOverrides = ({ fieldId="directGrant" labelIcon={ } diff --git a/apps/admin-ui/src/clients/advanced/ClusteringPanel.tsx b/apps/admin-ui/src/clients/advanced/ClusteringPanel.tsx index e41aba6d4b..d41dee2e90 100644 --- a/apps/admin-ui/src/clients/advanced/ClusteringPanel.tsx +++ b/apps/admin-ui/src/clients/advanced/ClusteringPanel.tsx @@ -15,7 +15,7 @@ import { useTranslation } from "react-i18next"; import { useAlerts } from "../../components/alert/Alerts"; import { useConfirmDialog } from "../../components/confirm-dialog/ConfirmDialog"; import { FormAccess } from "../../components/form-access/FormAccess"; -import { HelpItem } from "../../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import { ListEmptyState } from "../../components/list-empty-state/ListEmptyState"; import { KeycloakDataTable } from "../../components/table-toolbar/KeycloakDataTable"; import { TimeSelector } from "../../components/time-selector/TimeSelector"; @@ -87,7 +87,7 @@ export const ClusteringPanel = ({ fieldId="kc-node-reregistration-timeout" labelIcon={ } diff --git a/apps/admin-ui/src/clients/advanced/FineGrainOpenIdConnect.tsx b/apps/admin-ui/src/clients/advanced/FineGrainOpenIdConnect.tsx index ea83d20ebb..94fa6f0a02 100644 --- a/apps/admin-ui/src/clients/advanced/FineGrainOpenIdConnect.tsx +++ b/apps/admin-ui/src/clients/advanced/FineGrainOpenIdConnect.tsx @@ -11,7 +11,7 @@ import { Controller, useFormContext } from "react-hook-form"; import { useTranslation } from "react-i18next"; import { FormAccess } from "../../components/form-access/FormAccess"; -import { HelpItem } from "../../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import { MultiLineInput } from "../../components/multi-line-input/MultiLineInput"; import { useServerInfo } from "../../context/server-info/ServerInfoProvider"; import { convertAttributeNameToForm, sortProviders } from "../../util"; @@ -165,7 +165,7 @@ export const FineGrainOpenIdConnect = ({ fieldId="accessTokenSignatureAlgorithm" labelIcon={ } @@ -198,7 +198,7 @@ export const FineGrainOpenIdConnect = ({ fieldId="kc-id-token-signature" labelIcon={ } @@ -231,7 +231,7 @@ export const FineGrainOpenIdConnect = ({ fieldId="idTokenEncryptionKeyManagementAlgorithm" labelIcon={ } @@ -264,7 +264,9 @@ export const FineGrainOpenIdConnect = ({ fieldId="idTokenEncryptionContentEncryptionAlgorithm" labelIcon={ } @@ -297,7 +299,7 @@ export const FineGrainOpenIdConnect = ({ fieldId="userInfoSignedResponseAlgorithm" labelIcon={ } @@ -330,7 +332,9 @@ export const FineGrainOpenIdConnect = ({ fieldId="userInfoResponseEncryptionKeyManagementAlgorithm" labelIcon={ } @@ -363,7 +367,9 @@ export const FineGrainOpenIdConnect = ({ fieldId="userInfoResponseEncryptionContentEncryptionAlgorithm" labelIcon={ } @@ -396,7 +402,7 @@ export const FineGrainOpenIdConnect = ({ fieldId="requestObjectSignatureAlgorithm" labelIcon={ } @@ -429,7 +435,7 @@ export const FineGrainOpenIdConnect = ({ fieldId="requestObjectEncryption" labelIcon={ } @@ -462,7 +468,7 @@ export const FineGrainOpenIdConnect = ({ fieldId="requestObjectEncoding" labelIcon={ } @@ -495,7 +501,7 @@ export const FineGrainOpenIdConnect = ({ fieldId="requestObjectRequired" labelIcon={ } @@ -528,7 +534,7 @@ export const FineGrainOpenIdConnect = ({ fieldId="validRequestURIs" labelIcon={ } @@ -545,7 +551,7 @@ export const FineGrainOpenIdConnect = ({ fieldId="authorizationSignedResponseAlg" labelIcon={ } @@ -578,7 +584,7 @@ export const FineGrainOpenIdConnect = ({ fieldId="authorizationEncryptedResponseAlg" labelIcon={ } @@ -611,7 +617,7 @@ export const FineGrainOpenIdConnect = ({ fieldId="authorizationEncryptedResponseEnc" labelIcon={ } diff --git a/apps/admin-ui/src/clients/advanced/FineGrainSamlEndpointConfig.tsx b/apps/admin-ui/src/clients/advanced/FineGrainSamlEndpointConfig.tsx index 7e063f27ea..17d9fd60ea 100644 --- a/apps/admin-ui/src/clients/advanced/FineGrainSamlEndpointConfig.tsx +++ b/apps/admin-ui/src/clients/advanced/FineGrainSamlEndpointConfig.tsx @@ -3,7 +3,7 @@ import { useFormContext } from "react-hook-form"; import { useTranslation } from "react-i18next"; import { FormAccess } from "../../components/form-access/FormAccess"; -import { HelpItem } from "../../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import { KeycloakTextInput } from "../../components/keycloak-text-input/KeycloakTextInput"; import { ApplicationUrls } from "./ApplicationUrls"; @@ -26,7 +26,7 @@ export const FineGrainSamlEndpointConfig = ({ fieldId="assertionConsumerServicePostBindingURL" labelIcon={ } @@ -42,7 +42,9 @@ export const FineGrainSamlEndpointConfig = ({ fieldId="assertionConsumerServiceRedirectBindingURL" labelIcon={ } @@ -58,7 +60,7 @@ export const FineGrainSamlEndpointConfig = ({ fieldId="logoutServicePostBindingURL" labelIcon={ } @@ -74,7 +76,7 @@ export const FineGrainSamlEndpointConfig = ({ fieldId="logoutServiceRedirectBindingURL" labelIcon={ } @@ -90,7 +92,7 @@ export const FineGrainSamlEndpointConfig = ({ fieldId="logoutServiceArtifactBindingUrl" labelIcon={ } @@ -106,7 +108,7 @@ export const FineGrainSamlEndpointConfig = ({ fieldId="artifactBindingUrl" labelIcon={ } @@ -122,7 +124,7 @@ export const FineGrainSamlEndpointConfig = ({ fieldId="artifactResolutionService" labelIcon={ } diff --git a/apps/admin-ui/src/clients/advanced/OpenIdConnectCompatibilityModes.tsx b/apps/admin-ui/src/clients/advanced/OpenIdConnectCompatibilityModes.tsx index b6880c541e..fba4de7291 100644 --- a/apps/admin-ui/src/clients/advanced/OpenIdConnectCompatibilityModes.tsx +++ b/apps/admin-ui/src/clients/advanced/OpenIdConnectCompatibilityModes.tsx @@ -3,7 +3,7 @@ import { Controller, useFormContext } from "react-hook-form"; import { useTranslation } from "react-i18next"; import { FormAccess } from "../../components/form-access/FormAccess"; -import { HelpItem } from "../../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import { convertAttributeNameToForm } from "../../util"; import { FormFields } from "../ClientDetails"; @@ -32,7 +32,9 @@ export const OpenIdConnectCompatibilityModes = ({ hasNoPaddingTop labelIcon={ } @@ -61,7 +63,7 @@ export const OpenIdConnectCompatibilityModes = ({ hasNoPaddingTop labelIcon={ } @@ -90,7 +92,9 @@ export const OpenIdConnectCompatibilityModes = ({ hasNoPaddingTop labelIcon={ } @@ -119,7 +123,7 @@ export const OpenIdConnectCompatibilityModes = ({ hasNoPaddingTop labelIcon={ } diff --git a/apps/admin-ui/src/clients/advanced/RevocationPanel.tsx b/apps/admin-ui/src/clients/advanced/RevocationPanel.tsx index e879906193..2816232e21 100644 --- a/apps/admin-ui/src/clients/advanced/RevocationPanel.tsx +++ b/apps/admin-ui/src/clients/advanced/RevocationPanel.tsx @@ -13,7 +13,7 @@ import { Link } from "react-router-dom"; import { useAlerts } from "../../components/alert/Alerts"; import { FormAccess } from "../../components/form-access/FormAccess"; -import { HelpItem } from "../../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import { KeycloakTextInput } from "../../components/keycloak-text-input/KeycloakTextInput"; import { useAdminClient } from "../../context/auth/AdminClient"; import { useRealm } from "../../context/realm-context/RealmContext"; @@ -82,7 +82,7 @@ export const RevocationPanel = ({ fieldId="kc-not-before" labelIcon={ } diff --git a/apps/admin-ui/src/clients/advanced/TokenLifespan.tsx b/apps/admin-ui/src/clients/advanced/TokenLifespan.tsx index b09000ce53..859ba5dd94 100644 --- a/apps/admin-ui/src/clients/advanced/TokenLifespan.tsx +++ b/apps/admin-ui/src/clients/advanced/TokenLifespan.tsx @@ -10,7 +10,7 @@ import { useState } from "react"; import { Controller, useFormContext } from "react-hook-form"; import { useTranslation } from "react-i18next"; -import { HelpItem } from "../../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import { TimeSelector, Unit, @@ -52,7 +52,7 @@ export const TokenLifespan = ({ fieldId={id} labelIcon={ } diff --git a/apps/admin-ui/src/clients/authorization/AuthorizationEvaluate.tsx b/apps/admin-ui/src/clients/authorization/AuthorizationEvaluate.tsx index 64359141b3..a311c99fc0 100644 --- a/apps/admin-ui/src/clients/authorization/AuthorizationEvaluate.tsx +++ b/apps/admin-ui/src/clients/authorization/AuthorizationEvaluate.tsx @@ -23,7 +23,7 @@ import type ScopeRepresentation from "@keycloak/keycloak-admin-client/lib/defs/s import { ClientSelect } from "../../components/client/ClientSelect"; import { FormAccess } from "../../components/form-access/FormAccess"; -import { HelpItem } from "../../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import { keyValueToArray, KeyValueType, @@ -209,7 +209,7 @@ export const AuthorizationEvaluate = ({ client }: Props) => { { label={t("roles")} labelIcon={ } @@ -280,7 +280,7 @@ export const AuthorizationEvaluate = ({ client }: Props) => { fieldId="applyToResourceType" labelIcon={ } @@ -323,7 +323,7 @@ export const AuthorizationEvaluate = ({ client }: Props) => { isRequired labelIcon={ } @@ -341,7 +341,7 @@ export const AuthorizationEvaluate = ({ client }: Props) => { label={t("authScopes")} labelIcon={ } diff --git a/apps/admin-ui/src/clients/authorization/AuthorizationExport.tsx b/apps/admin-ui/src/clients/authorization/AuthorizationExport.tsx index d8993e861b..2bb2ad91c5 100644 --- a/apps/admin-ui/src/clients/authorization/AuthorizationExport.tsx +++ b/apps/admin-ui/src/clients/authorization/AuthorizationExport.tsx @@ -12,7 +12,7 @@ import { useTranslation } from "react-i18next"; import { useAlerts } from "../../components/alert/Alerts"; import { FormAccess } from "../../components/form-access/FormAccess"; -import { HelpItem } from "../../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import { KeycloakSpinner } from "../../components/keycloak-spinner/KeycloakSpinner"; import { KeycloakTextArea } from "../../components/keycloak-text-area/KeycloakTextArea"; import { useAdminClient, useFetch } from "../../context/auth/AdminClient"; @@ -70,7 +70,7 @@ export const AuthorizationExport = () => { label={t("authDetails")} labelIcon={ } diff --git a/apps/admin-ui/src/clients/authorization/DecisionStrategySelect.tsx b/apps/admin-ui/src/clients/authorization/DecisionStrategySelect.tsx index 431f144309..31b4893527 100644 --- a/apps/admin-ui/src/clients/authorization/DecisionStrategySelect.tsx +++ b/apps/admin-ui/src/clients/authorization/DecisionStrategySelect.tsx @@ -2,7 +2,7 @@ import { FormGroup, Radio } from "@patternfly/react-core"; import { Controller, useFormContext } from "react-hook-form"; import { useTranslation } from "react-i18next"; -import { HelpItem } from "../../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; const DECISION_STRATEGY = ["UNANIMOUS", "AFFIRMATIVE", "CONSENSUS"] as const; @@ -23,7 +23,7 @@ export const DecisionStrategySelect = ({ label={t("decisionStrategy")} labelIcon={ } diff --git a/apps/admin-ui/src/clients/authorization/ImportDialog.tsx b/apps/admin-ui/src/clients/authorization/ImportDialog.tsx index e2112d2542..f586f57dc8 100644 --- a/apps/admin-ui/src/clients/authorization/ImportDialog.tsx +++ b/apps/admin-ui/src/clients/authorization/ImportDialog.tsx @@ -14,7 +14,7 @@ import { import type ResourceServerRepresentation from "@keycloak/keycloak-admin-client/lib/defs/resourceServerRepresentation"; import { JsonFileUpload } from "../../components/json-file-upload/JsonFileUpload"; -import { HelpItem } from "../../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; type ImportDialogProps = { onConfirm: (value: ResourceServerRepresentation) => void; @@ -67,7 +67,7 @@ export const ImportDialog = ({ onConfirm, closeDialog }: ImportDialogProps) => { label={t("policyEnforcementMode")} labelIcon={ } @@ -89,7 +89,7 @@ export const ImportDialog = ({ onConfirm, closeDialog }: ImportDialogProps) => { label={t("decisionStrategy")} labelIcon={ } diff --git a/apps/admin-ui/src/clients/authorization/PermissionDetails.tsx b/apps/admin-ui/src/clients/authorization/PermissionDetails.tsx index 3730ca9d46..b180061091 100644 --- a/apps/admin-ui/src/clients/authorization/PermissionDetails.tsx +++ b/apps/admin-ui/src/clients/authorization/PermissionDetails.tsx @@ -20,7 +20,7 @@ import { Link, useNavigate } from "react-router-dom"; import { useAlerts } from "../../components/alert/Alerts"; import { useConfirmDialog } from "../../components/confirm-dialog/ConfirmDialog"; import { FormAccess } from "../../components/form-access/FormAccess"; -import { HelpItem } from "../../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import { KeycloakSpinner } from "../../components/keycloak-spinner/KeycloakSpinner"; import { KeycloakTextArea } from "../../components/keycloak-text-area/KeycloakTextArea"; import { KeycloakTextInput } from "../../components/keycloak-text-input/KeycloakTextInput"; @@ -215,7 +215,7 @@ export default function PermissionDetails() { fieldId="name" labelIcon={ } @@ -231,7 +231,7 @@ export default function PermissionDetails() { fieldId="description" labelIcon={ } @@ -254,7 +254,7 @@ export default function PermissionDetails() { fieldId="applyToResourceTypeFlag" labelIcon={ } @@ -275,7 +275,7 @@ export default function PermissionDetails() { fieldId="name" labelIcon={ } @@ -294,7 +294,7 @@ export default function PermissionDetails() { fieldId="resources" labelIcon={ } @@ -324,7 +324,7 @@ export default function PermissionDetails() { fieldId="scopes" labelIcon={ } @@ -344,7 +344,7 @@ export default function PermissionDetails() { fieldId="policies" labelIcon={ } @@ -359,7 +359,7 @@ export default function PermissionDetails() { label={t("decisionStrategy")} labelIcon={ } diff --git a/apps/admin-ui/src/clients/authorization/ResourceDetails.tsx b/apps/admin-ui/src/clients/authorization/ResourceDetails.tsx index d487e07d1e..9f30bf7253 100644 --- a/apps/admin-ui/src/clients/authorization/ResourceDetails.tsx +++ b/apps/admin-ui/src/clients/authorization/ResourceDetails.tsx @@ -21,7 +21,7 @@ import { Link, useNavigate } from "react-router-dom"; import { useAlerts } from "../../components/alert/Alerts"; import { useConfirmDialog } from "../../components/confirm-dialog/ConfirmDialog"; import { FormAccess } from "../../components/form-access/FormAccess"; -import { HelpItem } from "../../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import type { KeyValueType } from "../../components/key-value-form/key-value-convert"; import { KeyValueInput } from "../../components/key-value-form/KeyValueInput"; import { KeycloakSpinner } from "../../components/keycloak-spinner/KeycloakSpinner"; @@ -195,7 +195,7 @@ export default function ResourceDetails() { fieldId="owner" labelIcon={ } @@ -211,7 +211,7 @@ export default function ResourceDetails() { fieldId="name" labelIcon={ } @@ -236,7 +236,7 @@ export default function ResourceDetails() { fieldId="displayName" labelIcon={ } @@ -250,7 +250,10 @@ export default function ResourceDetails() { label={t("type")} fieldId="type" labelIcon={ - + } > @@ -260,7 +263,7 @@ export default function ResourceDetails() { fieldId="uris" labelIcon={ } @@ -278,7 +281,7 @@ export default function ResourceDetails() { fieldId="iconUri" labelIcon={ } @@ -294,7 +297,7 @@ export default function ResourceDetails() { label={t("ownerManagedAccess")} labelIcon={ } @@ -322,7 +325,7 @@ export default function ResourceDetails() { label={t("resourceAttribute")} labelIcon={ } diff --git a/apps/admin-ui/src/clients/authorization/ScopeDetails.tsx b/apps/admin-ui/src/clients/authorization/ScopeDetails.tsx index 948816b5bb..441f337607 100644 --- a/apps/admin-ui/src/clients/authorization/ScopeDetails.tsx +++ b/apps/admin-ui/src/clients/authorization/ScopeDetails.tsx @@ -16,7 +16,7 @@ import { Link, useNavigate } from "react-router-dom"; import { useAlerts } from "../../components/alert/Alerts"; import { FormAccess } from "../../components/form-access/FormAccess"; -import { HelpItem } from "../../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import { KeycloakTextInput } from "../../components/keycloak-text-input/KeycloakTextInput"; import { ViewHeader } from "../../components/view-header/ViewHeader"; import { useAdminClient, useFetch } from "../../context/auth/AdminClient"; @@ -134,7 +134,10 @@ export default function ScopeDetails() { label={t("common:name")} fieldId="name" labelIcon={ - + } helperTextInvalid={t("common:required")} validated={ @@ -156,7 +159,7 @@ export default function ScopeDetails() { fieldId="displayName" labelIcon={ } @@ -168,7 +171,7 @@ export default function ScopeDetails() { fieldId="iconUri" labelIcon={ } diff --git a/apps/admin-ui/src/clients/authorization/ScopePicker.tsx b/apps/admin-ui/src/clients/authorization/ScopePicker.tsx index a77eea2337..8ba378874a 100644 --- a/apps/admin-ui/src/clients/authorization/ScopePicker.tsx +++ b/apps/admin-ui/src/clients/authorization/ScopePicker.tsx @@ -10,7 +10,7 @@ import { import type ScopeRepresentation from "@keycloak/keycloak-admin-client/lib/defs/scopeRepresentation"; import { useAdminClient, useFetch } from "../../context/auth/AdminClient"; -import { HelpItem } from "../../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; type Scope = { id: string; @@ -54,7 +54,7 @@ export const ScopePicker = ({ clientId }: { clientId: string }) => { label={t("authorizationScopes")} labelIcon={ } diff --git a/apps/admin-ui/src/clients/authorization/Settings.tsx b/apps/admin-ui/src/clients/authorization/Settings.tsx index 0432ab876d..7161974cdf 100644 --- a/apps/admin-ui/src/clients/authorization/Settings.tsx +++ b/apps/admin-ui/src/clients/authorization/Settings.tsx @@ -15,7 +15,7 @@ import type ResourceServerRepresentation from "@keycloak/keycloak-admin-client/l import { KeycloakSpinner } from "../../components/keycloak-spinner/KeycloakSpinner"; import { useAdminClient, useFetch } from "../../context/auth/AdminClient"; import { FormAccess } from "../../components/form-access/FormAccess"; -import { HelpItem } from "../../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import { SaveReset } from "../advanced/SaveReset"; import { ImportDialog } from "./ImportDialog"; import useToggle from "../../utils/useToggle"; @@ -97,7 +97,7 @@ export const AuthorizationSettings = ({ clientId }: { clientId: string }) => { fieldId="import" labelIcon={ } @@ -111,7 +111,7 @@ export const AuthorizationSettings = ({ clientId }: { clientId: string }) => { label={t("policyEnforcementMode")} labelIcon={ } @@ -150,7 +150,7 @@ export const AuthorizationSettings = ({ clientId }: { clientId: string }) => { fieldId="allowRemoteResourceManagement" labelIcon={ } diff --git a/apps/admin-ui/src/clients/authorization/policy/Aggregate.tsx b/apps/admin-ui/src/clients/authorization/policy/Aggregate.tsx index 2bccaf7dc7..205ba35e16 100644 --- a/apps/admin-ui/src/clients/authorization/policy/Aggregate.tsx +++ b/apps/admin-ui/src/clients/authorization/policy/Aggregate.tsx @@ -1,7 +1,7 @@ import { FormGroup } from "@patternfly/react-core"; import { useTranslation } from "react-i18next"; -import { HelpItem } from "../../../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import { useParams } from "../../../utils/useParams"; import type { PolicyDetailsParams } from "../../routes/PolicyDetails"; import { DecisionStrategySelect } from "../DecisionStrategySelect"; @@ -18,7 +18,7 @@ export const Aggregate = () => { fieldId="policies" labelIcon={ } diff --git a/apps/admin-ui/src/clients/authorization/policy/Client.tsx b/apps/admin-ui/src/clients/authorization/policy/Client.tsx index 65fe17e2ec..42541b27a3 100644 --- a/apps/admin-ui/src/clients/authorization/policy/Client.tsx +++ b/apps/admin-ui/src/clients/authorization/policy/Client.tsx @@ -9,7 +9,7 @@ import { import type { ClientQuery } from "@keycloak/keycloak-admin-client/lib/resources/clients"; import type ClientRepresentation from "@keycloak/keycloak-admin-client/lib/defs/clientRepresentation"; -import { HelpItem } from "../../../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import { useAdminClient, useFetch } from "../../../context/auth/AdminClient"; import { useTranslation } from "react-i18next"; @@ -68,7 +68,7 @@ export const Client = () => { label={t("clients")} labelIcon={ } diff --git a/apps/admin-ui/src/clients/authorization/policy/ClientScope.tsx b/apps/admin-ui/src/clients/authorization/policy/ClientScope.tsx index 5b2de3a8a2..06b17c676c 100644 --- a/apps/admin-ui/src/clients/authorization/policy/ClientScope.tsx +++ b/apps/admin-ui/src/clients/authorization/policy/ClientScope.tsx @@ -14,7 +14,7 @@ import { import type ClientScopeRepresentation from "@keycloak/keycloak-admin-client/lib/defs/clientScopeRepresentation"; import { useAdminClient, useFetch } from "../../../context/auth/AdminClient"; -import { HelpItem } from "../../../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import { AddScopeDialog } from "../../scopes/AddScopeDialog"; import useLocaleSort, { mapByKey } from "../../../utils/useLocaleSort"; @@ -59,7 +59,7 @@ export const ClientScope = () => { label={t("clientScopes")} labelIcon={ } diff --git a/apps/admin-ui/src/clients/authorization/policy/Group.tsx b/apps/admin-ui/src/clients/authorization/policy/Group.tsx index 454cb51235..e2cad7564f 100644 --- a/apps/admin-ui/src/clients/authorization/policy/Group.tsx +++ b/apps/admin-ui/src/clients/authorization/policy/Group.tsx @@ -13,7 +13,7 @@ import { } from "@patternfly/react-table"; import type GroupRepresentation from "@keycloak/keycloak-admin-client/lib/defs/groupRepresentation"; -import { HelpItem } from "../../../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import { useAdminClient, useFetch } from "../../../context/auth/AdminClient"; import { GroupPickerDialog } from "../../../components/group/GroupPickerDialog"; import { KeycloakTextInput } from "../../../components/keycloak-text-input/KeycloakTextInput"; @@ -67,7 +67,7 @@ export const Group = () => { label={t("groupsClaim")} labelIcon={ } @@ -84,7 +84,7 @@ export const Group = () => { label={t("groups")} labelIcon={ } diff --git a/apps/admin-ui/src/clients/authorization/policy/JavaScript.tsx b/apps/admin-ui/src/clients/authorization/policy/JavaScript.tsx index e144e1d5c7..5dbb13e121 100644 --- a/apps/admin-ui/src/clients/authorization/policy/JavaScript.tsx +++ b/apps/admin-ui/src/clients/authorization/policy/JavaScript.tsx @@ -3,7 +3,7 @@ import { Controller, useFormContext } from "react-hook-form"; import { FormGroup } from "@patternfly/react-core"; import { CodeEditor, Language } from "@patternfly/react-code-editor"; -import { HelpItem } from "../../../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; export const JavaScript = () => { const { t } = useTranslation("clients"); @@ -14,7 +14,7 @@ export const JavaScript = () => { label={t("code")} labelIcon={ } diff --git a/apps/admin-ui/src/clients/authorization/policy/LogicSelector.tsx b/apps/admin-ui/src/clients/authorization/policy/LogicSelector.tsx index f7ceb1512b..e9a2ff7263 100644 --- a/apps/admin-ui/src/clients/authorization/policy/LogicSelector.tsx +++ b/apps/admin-ui/src/clients/authorization/policy/LogicSelector.tsx @@ -2,7 +2,7 @@ import { useTranslation } from "react-i18next"; import { Controller, useFormContext } from "react-hook-form"; import { FormGroup, Radio } from "@patternfly/react-core"; -import { HelpItem } from "../../../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; const LOGIC_TYPES = ["POSITIVE", "NEGATIVE"] as const; @@ -14,7 +14,10 @@ export const LogicSelector = () => { + } fieldId="logic" hasNoPaddingTop diff --git a/apps/admin-ui/src/clients/authorization/policy/NameDescription.tsx b/apps/admin-ui/src/clients/authorization/policy/NameDescription.tsx index 97deadf4bc..ee35f22bca 100644 --- a/apps/admin-ui/src/clients/authorization/policy/NameDescription.tsx +++ b/apps/admin-ui/src/clients/authorization/policy/NameDescription.tsx @@ -2,7 +2,7 @@ import { useTranslation } from "react-i18next"; import { useFormContext } from "react-hook-form"; import { FormGroup, ValidatedOptions } from "@patternfly/react-core"; -import { HelpItem } from "../../../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import { KeycloakTextInput } from "../../../components/keycloak-text-input/KeycloakTextInput"; import { KeycloakTextArea } from "../../../components/keycloak-text-area/KeycloakTextArea"; @@ -29,7 +29,7 @@ export const NameDescription = ({ prefix }: NameDescriptionProps) => { isRequired labelIcon={ } @@ -48,7 +48,7 @@ export const NameDescription = ({ prefix }: NameDescriptionProps) => { fieldId="kc-description" labelIcon={ } diff --git a/apps/admin-ui/src/clients/authorization/policy/Regex.tsx b/apps/admin-ui/src/clients/authorization/policy/Regex.tsx index 6fbfdb1caf..ea2e744254 100644 --- a/apps/admin-ui/src/clients/authorization/policy/Regex.tsx +++ b/apps/admin-ui/src/clients/authorization/policy/Regex.tsx @@ -2,7 +2,7 @@ import { useTranslation } from "react-i18next"; import { useFormContext } from "react-hook-form"; import { FormGroup } from "@patternfly/react-core"; -import { HelpItem } from "../../../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import { KeycloakTextInput } from "../../../components/keycloak-text-input/KeycloakTextInput"; export const Regex = () => { @@ -22,7 +22,7 @@ export const Regex = () => { isRequired labelIcon={ } @@ -39,7 +39,7 @@ export const Regex = () => { fieldId="pattern" labelIcon={ } diff --git a/apps/admin-ui/src/clients/authorization/policy/Role.tsx b/apps/admin-ui/src/clients/authorization/policy/Role.tsx index 577bf8cb2e..c4c6855656 100644 --- a/apps/admin-ui/src/clients/authorization/policy/Role.tsx +++ b/apps/admin-ui/src/clients/authorization/policy/Role.tsx @@ -14,7 +14,7 @@ import { import { Row, ServiceRole } from "../../../components/role-mapping/RoleMapping"; import type { RequiredIdValue } from "./ClientScope"; -import { HelpItem } from "../../../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import { useAdminClient, useFetch } from "../../../context/auth/AdminClient"; import { AddRoleMappingModal } from "../../../components/role-mapping/AddRoleMappingModal"; @@ -63,7 +63,7 @@ export const Role = () => { label={t("roles")} labelIcon={ } diff --git a/apps/admin-ui/src/clients/authorization/policy/Time.tsx b/apps/admin-ui/src/clients/authorization/policy/Time.tsx index d3b6e7f2a5..ff8fa69b4f 100644 --- a/apps/admin-ui/src/clients/authorization/policy/Time.tsx +++ b/apps/admin-ui/src/clients/authorization/policy/Time.tsx @@ -14,7 +14,7 @@ import { ValidatedOptions, } from "@patternfly/react-core"; -import { HelpItem } from "../../../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; const DATE_TIME_FORMAT = /(\d\d\d\d-\d\d-\d\d)? (\d\d?):(\d\d?)/; const padDateSegment = (value: number) => value.toString().padStart(2, "0"); @@ -134,7 +134,7 @@ const FromTo = ({ name, ...rest }: NumberControlProps) => { fieldId={name} labelIcon={ } @@ -166,7 +166,7 @@ export const Time = () => { fieldId="repeat" labelIcon={ } @@ -209,7 +209,7 @@ export const Time = () => { fieldId="notBefore" labelIcon={ } @@ -226,7 +226,7 @@ export const Time = () => { fieldId="notOnOrAfter" labelIcon={ } diff --git a/apps/admin-ui/src/clients/authorization/policy/User.tsx b/apps/admin-ui/src/clients/authorization/policy/User.tsx index bb21c0b877..0e526be7d5 100644 --- a/apps/admin-ui/src/clients/authorization/policy/User.tsx +++ b/apps/admin-ui/src/clients/authorization/policy/User.tsx @@ -1,11 +1,15 @@ +import { useTranslation } from "react-i18next"; import { UserSelect } from "../../../components/users/UserSelect"; -export const User = () => ( - -); +export const User = () => { + const { t } = useTranslation(); + return ( + + ); +}; diff --git a/apps/admin-ui/src/clients/credentials/Credentials.tsx b/apps/admin-ui/src/clients/credentials/Credentials.tsx index e45cdf5351..c6939a94e4 100644 --- a/apps/admin-ui/src/clients/credentials/Credentials.tsx +++ b/apps/admin-ui/src/clients/credentials/Credentials.tsx @@ -25,7 +25,7 @@ import { useTranslation } from "react-i18next"; import { useAlerts } from "../../components/alert/Alerts"; import { useConfirmDialog } from "../../components/confirm-dialog/ConfirmDialog"; import { FormAccess } from "../../components/form-access/FormAccess"; -import { HelpItem } from "../../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import { useAdminClient, useFetch } from "../../context/auth/AdminClient"; import { ClientSecret } from "./ClientSecret"; import { SignedJWT } from "./SignedJWT"; @@ -150,7 +150,7 @@ export const Credentials = ({ client, save, refresh }: CredentialsProps) => { fieldId="kc-client-authenticator-type" labelIcon={ } @@ -223,7 +223,7 @@ export const Credentials = ({ client, save, refresh }: CredentialsProps) => { fieldId="kc-access-token" labelIcon={ } diff --git a/apps/admin-ui/src/clients/credentials/SignedJWT.tsx b/apps/admin-ui/src/clients/credentials/SignedJWT.tsx index 1ee660aaa5..289da50676 100644 --- a/apps/admin-ui/src/clients/credentials/SignedJWT.tsx +++ b/apps/admin-ui/src/clients/credentials/SignedJWT.tsx @@ -9,7 +9,7 @@ import { } from "@patternfly/react-core"; import { useServerInfo } from "../../context/server-info/ServerInfoProvider"; -import { HelpItem } from "../../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import { convertAttributeNameToForm, sortProviders } from "../../util"; import { FormFields } from "../ClientDetails"; @@ -27,7 +27,7 @@ export const SignedJWT = () => { fieldId="kc-signature-algorithm" labelIcon={ } diff --git a/apps/admin-ui/src/clients/credentials/X509.tsx b/apps/admin-ui/src/clients/credentials/X509.tsx index 93f371d960..ebcc65ea49 100644 --- a/apps/admin-ui/src/clients/credentials/X509.tsx +++ b/apps/admin-ui/src/clients/credentials/X509.tsx @@ -1,7 +1,7 @@ import { useTranslation } from "react-i18next"; import { Controller, useFormContext } from "react-hook-form"; import { FormGroup, Switch, ValidatedOptions } from "@patternfly/react-core"; -import { HelpItem } from "../../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import { KeycloakTextInput } from "../../components/keycloak-text-input/KeycloakTextInput"; import { beerify, convertAttributeNameToForm } from "../../util"; import { FormFields } from "../ClientDetails"; @@ -19,7 +19,7 @@ export const X509 = () => { label={t("allowRegexComparison")} labelIcon={ } @@ -49,7 +49,7 @@ export const X509 = () => { fieldId="kc-subject" labelIcon={ } diff --git a/apps/admin-ui/src/clients/import/ImportForm.tsx b/apps/admin-ui/src/clients/import/ImportForm.tsx index 942a89e5a0..4376984cbb 100644 --- a/apps/admin-ui/src/clients/import/ImportForm.tsx +++ b/apps/admin-ui/src/clients/import/ImportForm.tsx @@ -116,7 +116,7 @@ export default function ImportForm() { id="realm-file" language={Language.json} extension=".json,.xml" - helpText="common-help:helpFileUploadClient" + helpText={t("common-help:helpFileUploadClient")} onChange={handleFileChange} /> diff --git a/apps/admin-ui/src/clients/initial-access/CreateInitialAccessToken.tsx b/apps/admin-ui/src/clients/initial-access/CreateInitialAccessToken.tsx index 9a7991a72e..d6199b31d4 100644 --- a/apps/admin-ui/src/clients/initial-access/CreateInitialAccessToken.tsx +++ b/apps/admin-ui/src/clients/initial-access/CreateInitialAccessToken.tsx @@ -13,7 +13,7 @@ import { import type ClientInitialAccessPresentation from "@keycloak/keycloak-admin-client/lib/defs/clientInitialAccessPresentation"; import { FormAccess } from "../../components/form-access/FormAccess"; import { ViewHeader } from "../../components/view-header/ViewHeader"; -import { HelpItem } from "../../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import { TimeSelector } from "../../components/time-selector/TimeSelector"; import { Link, useNavigate } from "react-router-dom"; import { useRealm } from "../../context/realm-context/RealmContext"; @@ -76,7 +76,7 @@ export default function CreateInitialAccessToken() { fieldId="expiration" labelIcon={ } @@ -104,7 +104,7 @@ export default function CreateInitialAccessToken() { fieldId="count" labelIcon={ } diff --git a/apps/admin-ui/src/clients/keys/Certificate.tsx b/apps/admin-ui/src/clients/keys/Certificate.tsx index e7dc7548af..64b78119e9 100644 --- a/apps/admin-ui/src/clients/keys/Certificate.tsx +++ b/apps/admin-ui/src/clients/keys/Certificate.tsx @@ -3,7 +3,7 @@ import { FormGroup } from "@patternfly/react-core"; import { useId } from "react"; import { useTranslation } from "react-i18next"; -import { HelpItem } from "../../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import { KeycloakTextArea } from "../../components/keycloak-text-area/KeycloakTextArea"; type CertificateProps = Omit & { @@ -41,7 +41,7 @@ export const Certificate = ({ keyInfo, plain = false }: CertificateProps) => { fieldId={id} labelIcon={ } diff --git a/apps/admin-ui/src/clients/keys/GenerateKeyDialog.tsx b/apps/admin-ui/src/clients/keys/GenerateKeyDialog.tsx index 61f39c2508..231c5d5f81 100644 --- a/apps/admin-ui/src/clients/keys/GenerateKeyDialog.tsx +++ b/apps/admin-ui/src/clients/keys/GenerateKeyDialog.tsx @@ -21,7 +21,7 @@ import { } from "@patternfly/react-core"; import type KeyStoreConfig from "@keycloak/keycloak-admin-client/lib/defs/keystoreConfig"; -import { HelpItem } from "../../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import { StoreSettings } from "./StoreSettings"; import { FileUpload } from "../../components/json-file-upload/patternfly/FileUpload"; import { useServerInfo } from "../../context/server-info/ServerInfoProvider"; @@ -77,7 +77,7 @@ export const KeyForm = ({ label={t("archiveFormat")} labelIcon={ } @@ -116,7 +116,7 @@ export const KeyForm = ({ label={t("importFile")} labelIcon={ } diff --git a/apps/admin-ui/src/clients/keys/ImportKeyDialog.tsx b/apps/admin-ui/src/clients/keys/ImportKeyDialog.tsx index 434e85b046..babaeca63a 100644 --- a/apps/admin-ui/src/clients/keys/ImportKeyDialog.tsx +++ b/apps/admin-ui/src/clients/keys/ImportKeyDialog.tsx @@ -14,7 +14,7 @@ import { Text, TextContent, } from "@patternfly/react-core"; -import { HelpItem } from "../../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import { StoreSettings } from "./StoreSettings"; import { FileUpload } from "../../components/json-file-upload/patternfly/FileUpload"; import { useServerInfo } from "../../context/server-info/ServerInfoProvider"; @@ -96,7 +96,7 @@ export const ImportKeyDialog = ({ label={t("archiveFormat")} labelIcon={ } diff --git a/apps/admin-ui/src/clients/keys/Keys.tsx b/apps/admin-ui/src/clients/keys/Keys.tsx index af05bed033..aa8e82f58b 100644 --- a/apps/admin-ui/src/clients/keys/Keys.tsx +++ b/apps/admin-ui/src/clients/keys/Keys.tsx @@ -21,7 +21,7 @@ import type KeyStoreConfig from "@keycloak/keycloak-admin-client/lib/defs/keysto import { Controller, useFormContext, useWatch } from "react-hook-form"; import { useAlerts } from "../../components/alert/Alerts"; import { FormAccess } from "../../components/form-access/FormAccess"; -import { HelpItem } from "../../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import { KeycloakTextInput } from "../../components/keycloak-text-input/KeycloakTextInput"; import { useAdminClient, useFetch } from "../../context/auth/AdminClient"; import { convertAttributeNameToForm } from "../../util"; @@ -144,7 +144,7 @@ export const Keys = ({ clientId, save, hasConfigureAccess }: KeysProps) => { fieldId="useJwksUrl" labelIcon={ } @@ -177,7 +177,7 @@ export const Keys = ({ clientId, save, hasConfigureAccess }: KeysProps) => { fieldId="jwksUrl" labelIcon={ } diff --git a/apps/admin-ui/src/clients/keys/SamlKeys.tsx b/apps/admin-ui/src/clients/keys/SamlKeys.tsx index 8ffaa8d1dd..117cae1e15 100644 --- a/apps/admin-ui/src/clients/keys/SamlKeys.tsx +++ b/apps/admin-ui/src/clients/keys/SamlKeys.tsx @@ -20,7 +20,7 @@ import type CertificateRepresentation from "@keycloak/keycloak-admin-client/lib/ import { useAlerts } from "../../components/alert/Alerts"; import { useConfirmDialog } from "../../components/confirm-dialog/ConfirmDialog"; import { FormAccess } from "../../components/form-access/FormAccess"; -import { HelpItem } from "../../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import { FormPanel } from "../../components/scroll-form/FormPanel"; import { useAdminClient, useFetch } from "../../context/auth/AdminClient"; import { convertAttributeNameToForm } from "../../util"; @@ -91,7 +91,7 @@ const KeySection = ({ } diff --git a/apps/admin-ui/src/clients/keys/SamlKeysDialog.tsx b/apps/admin-ui/src/clients/keys/SamlKeysDialog.tsx index e5c5ea1f90..917bc7f998 100644 --- a/apps/admin-ui/src/clients/keys/SamlKeysDialog.tsx +++ b/apps/admin-ui/src/clients/keys/SamlKeysDialog.tsx @@ -23,7 +23,7 @@ import { import type CertificateRepresentation from "@keycloak/keycloak-admin-client/lib/defs/certificateRepresentation"; import type KeyStoreConfig from "@keycloak/keycloak-admin-client/lib/defs/keystoreConfig"; import type { KeyTypes } from "./SamlKeys"; -import { HelpItem } from "../../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import { useAdminClient } from "../../context/auth/AdminClient"; import { useAlerts } from "../../components/alert/Alerts"; import { KeyForm } from "./GenerateKeyDialog"; @@ -187,7 +187,7 @@ export const SamlKeysDialog = ({ fieldId="certificate" labelIcon={ } diff --git a/apps/admin-ui/src/clients/keys/StoreSettings.tsx b/apps/admin-ui/src/clients/keys/StoreSettings.tsx index 43c6cbf766..db98aabdad 100644 --- a/apps/admin-ui/src/clients/keys/StoreSettings.tsx +++ b/apps/admin-ui/src/clients/keys/StoreSettings.tsx @@ -3,7 +3,7 @@ import { useFormContext } from "react-hook-form"; import { FormGroup } from "@patternfly/react-core"; import type KeyStoreConfig from "@keycloak/keycloak-admin-client/lib/defs/keystoreConfig"; -import { HelpItem } from "../../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import { PasswordInput } from "../../components/password-input/PasswordInput"; import { KeycloakTextInput } from "../../components/keycloak-text-input/KeycloakTextInput"; @@ -28,7 +28,7 @@ export const StoreSettings = ({ isRequired labelIcon={ } @@ -49,7 +49,7 @@ export const StoreSettings = ({ isRequired labelIcon={ } @@ -70,7 +70,7 @@ export const StoreSettings = ({ fieldId="realmCertificateAlias" labelIcon={ } @@ -88,7 +88,7 @@ export const StoreSettings = ({ isRequired labelIcon={ } diff --git a/apps/admin-ui/src/clients/registration/ClientRegistration.tsx b/apps/admin-ui/src/clients/registration/ClientRegistration.tsx index 416e1c885e..24578ecdcf 100644 --- a/apps/admin-ui/src/clients/registration/ClientRegistration.tsx +++ b/apps/admin-ui/src/clients/registration/ClientRegistration.tsx @@ -1,6 +1,6 @@ import { Tab, TabTitleText } from "@patternfly/react-core"; import { useTranslation } from "react-i18next"; -import { HelpItem } from "../../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import { RoutableTabs, useRoutableTab, @@ -34,7 +34,7 @@ export const ClientRegistration = () => { {t("anonymousAccessPolicies")}{" "} @@ -51,7 +51,7 @@ export const ClientRegistration = () => { {t("authenticatedAccessPolicies")}{" "} diff --git a/apps/admin-ui/src/clients/registration/DetailProvider.tsx b/apps/admin-ui/src/clients/registration/DetailProvider.tsx index 154b28b2fb..f6f12705ef 100644 --- a/apps/admin-ui/src/clients/registration/DetailProvider.tsx +++ b/apps/admin-ui/src/clients/registration/DetailProvider.tsx @@ -17,7 +17,7 @@ import { useAlerts } from "../../components/alert/Alerts"; import { useConfirmDialog } from "../../components/confirm-dialog/ConfirmDialog"; import { DynamicComponents } from "../../components/dynamic/DynamicComponents"; import { FormAccess } from "../../components/form-access/FormAccess"; -import { HelpItem } from "../../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import { KeycloakSpinner } from "../../components/keycloak-spinner/KeycloakSpinner"; import { KeycloakTextInput } from "../../components/keycloak-text-input/KeycloakTextInput"; import { ViewHeader } from "../../components/view-header/ViewHeader"; @@ -163,7 +163,7 @@ export default function DetailProvider() { } labelIcon={ } diff --git a/apps/admin-ui/src/clients/scopes/DecicatedScope.tsx b/apps/admin-ui/src/clients/scopes/DecicatedScope.tsx index e15bc2e994..ff28079d04 100644 --- a/apps/admin-ui/src/clients/scopes/DecicatedScope.tsx +++ b/apps/admin-ui/src/clients/scopes/DecicatedScope.tsx @@ -10,7 +10,7 @@ import { import type ClientRepresentation from "@keycloak/keycloak-admin-client/lib/defs/clientRepresentation"; import { FormAccess } from "../../components/form-access/FormAccess"; -import { HelpItem } from "../../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import { useAdminClient } from "../../context/auth/AdminClient"; import { useAlerts } from "../../components/alert/Alerts"; import { RoleMapping, Row } from "../../components/role-mapping/RoleMapping"; @@ -88,7 +88,7 @@ export const DedicatedScope = ({ label={t("fullScopeAllowed")} labelIcon={ } diff --git a/apps/admin-ui/src/clients/scopes/EvaluateScopes.tsx b/apps/admin-ui/src/clients/scopes/EvaluateScopes.tsx index 1a39374267..a135555138 100644 --- a/apps/admin-ui/src/clients/scopes/EvaluateScopes.tsx +++ b/apps/admin-ui/src/clients/scopes/EvaluateScopes.tsx @@ -26,8 +26,7 @@ import { useEffect, useRef, useState } from "react"; import { FormProvider, useForm } from "react-hook-form"; import { useTranslation } from "react-i18next"; -import { useHelp } from "../../components/help-enabler/HelpHeader"; -import { HelpItem } from "../../components/help-enabler/HelpItem"; +import { useHelp, HelpItem } from "ui-shared"; import { KeycloakDataTable } from "../../components/table-toolbar/KeycloakDataTable"; import { UserSelect } from "../../components/users/UserSelect"; import { useAdminClient, useFetch } from "../../context/auth/AdminClient"; @@ -235,7 +234,7 @@ export const EvaluateScopes = ({ clientId, protocol }: EvaluateScopesProps) => { fieldId="scopeParameter" labelIcon={ } @@ -278,7 +277,7 @@ export const EvaluateScopes = ({ clientId, protocol }: EvaluateScopesProps) => { { {t("effectiveProtocolMappers")}{" "} @@ -380,7 +379,7 @@ export const EvaluateScopes = ({ clientId, protocol }: EvaluateScopesProps) => { {t("effectiveRoleScopeMappings")}{" "} @@ -397,7 +396,7 @@ export const EvaluateScopes = ({ clientId, protocol }: EvaluateScopesProps) => { {t("generatedAccessToken")}{" "} @@ -414,7 +413,7 @@ export const EvaluateScopes = ({ clientId, protocol }: EvaluateScopesProps) => { {t("generatedIdToken")}{" "} @@ -431,7 +430,7 @@ export const EvaluateScopes = ({ clientId, protocol }: EvaluateScopesProps) => { {t("generatedUserInfo")}{" "} diff --git a/apps/admin-ui/src/components/alert/Alerts.tsx b/apps/admin-ui/src/components/alert/Alerts.tsx index b1a8fc9abf..57647bcccf 100644 --- a/apps/admin-ui/src/components/alert/Alerts.tsx +++ b/apps/admin-ui/src/components/alert/Alerts.tsx @@ -4,8 +4,7 @@ import { PropsWithChildren, useCallback, useMemo, useState } from "react"; import { useTranslation } from "react-i18next"; import { generateId } from "../../util"; -import { createNamedContext } from "../../utils/createNamedContext"; -import useRequiredContext from "../../utils/useRequiredContext"; +import { createNamedContext, useRequiredContext } from "ui-shared"; import useSetTimeout from "../../utils/useSetTimeout"; import { AlertPanel } from "./AlertPanel"; diff --git a/apps/admin-ui/src/components/client/ClientSelect.tsx b/apps/admin-ui/src/components/client/ClientSelect.tsx index edb206f08c..5b88f9b079 100644 --- a/apps/admin-ui/src/components/client/ClientSelect.tsx +++ b/apps/admin-ui/src/components/client/ClientSelect.tsx @@ -12,7 +12,7 @@ import type ClientRepresentation from "@keycloak/keycloak-admin-client/lib/defs/ import type { ClientQuery } from "@keycloak/keycloak-admin-client/lib/resources/clients"; import { useAdminClient, useFetch } from "../../context/auth/AdminClient"; import type { ComponentProps } from "../dynamic/components"; -import { HelpItem } from "../help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; type ClientSelectProps = ComponentProps & { namespace: string; diff --git a/apps/admin-ui/src/components/download-dialog/DownloadDialog.tsx b/apps/admin-ui/src/components/download-dialog/DownloadDialog.tsx index b20fd2c296..312539f131 100644 --- a/apps/admin-ui/src/components/download-dialog/DownloadDialog.tsx +++ b/apps/admin-ui/src/components/download-dialog/DownloadDialog.tsx @@ -17,8 +17,7 @@ import { useServerInfo } from "../../context/server-info/ServerInfoProvider"; import { addTrailingSlash, prettyPrintJSON } from "../../util"; import { getAuthorizationHeaders } from "../../utils/getAuthorizationHeaders"; import { ConfirmDialogModal } from "../confirm-dialog/ConfirmDialog"; -import { useHelp } from "../help-enabler/HelpHeader"; -import { HelpItem } from "../help-enabler/HelpItem"; +import { useHelp, HelpItem } from "ui-shared"; import { KeycloakTextArea } from "../keycloak-text-area/KeycloakTextArea"; type DownloadDialogProps = { diff --git a/apps/admin-ui/src/components/dynamic/BooleanComponent.tsx b/apps/admin-ui/src/components/dynamic/BooleanComponent.tsx index f1f0369d9d..63514ceb7a 100644 --- a/apps/admin-ui/src/components/dynamic/BooleanComponent.tsx +++ b/apps/admin-ui/src/components/dynamic/BooleanComponent.tsx @@ -2,7 +2,7 @@ import { FormGroup, Switch } from "@patternfly/react-core"; import { Controller, useFormContext } from "react-hook-form"; import { useTranslation } from "react-i18next"; -import { HelpItem } from "../help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import type { ComponentProps } from "./components"; import { convertToName } from "./DynamicComponents"; diff --git a/apps/admin-ui/src/components/dynamic/FileComponent.tsx b/apps/admin-ui/src/components/dynamic/FileComponent.tsx index 956c3ba983..7ef46852e6 100644 --- a/apps/admin-ui/src/components/dynamic/FileComponent.tsx +++ b/apps/admin-ui/src/components/dynamic/FileComponent.tsx @@ -3,7 +3,7 @@ import { useState } from "react"; import { Controller, useFormContext } from "react-hook-form"; import { useTranslation } from "react-i18next"; -import { HelpItem } from "../help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import { FileUpload } from "../json-file-upload/patternfly/FileUpload"; import type { ComponentProps } from "./components"; import { convertToName } from "./DynamicComponents"; diff --git a/apps/admin-ui/src/components/dynamic/GroupComponent.tsx b/apps/admin-ui/src/components/dynamic/GroupComponent.tsx index 43b82a36f0..4d82ba89e9 100644 --- a/apps/admin-ui/src/components/dynamic/GroupComponent.tsx +++ b/apps/admin-ui/src/components/dynamic/GroupComponent.tsx @@ -11,7 +11,7 @@ import { Controller, useFormContext } from "react-hook-form"; import { useTranslation } from "react-i18next"; import { GroupPickerDialog } from "../group/GroupPickerDialog"; -import { HelpItem } from "../help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import type { ComponentProps } from "./components"; import { convertToName } from "./DynamicComponents"; diff --git a/apps/admin-ui/src/components/dynamic/ListComponent.tsx b/apps/admin-ui/src/components/dynamic/ListComponent.tsx index 924969e5ef..04a7822359 100644 --- a/apps/admin-ui/src/components/dynamic/ListComponent.tsx +++ b/apps/admin-ui/src/components/dynamic/ListComponent.tsx @@ -8,7 +8,7 @@ import { useState } from "react"; import { Controller, useFormContext } from "react-hook-form"; import { useTranslation } from "react-i18next"; -import { HelpItem } from "../help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import type { ComponentProps } from "./components"; import { convertToName } from "./DynamicComponents"; diff --git a/apps/admin-ui/src/components/dynamic/MapComponent.tsx b/apps/admin-ui/src/components/dynamic/MapComponent.tsx index 0ae619123c..eee343e262 100644 --- a/apps/admin-ui/src/components/dynamic/MapComponent.tsx +++ b/apps/admin-ui/src/components/dynamic/MapComponent.tsx @@ -13,7 +13,7 @@ import { useFormContext } from "react-hook-form"; import { useTranslation } from "react-i18next"; import { generateId } from "../../util"; -import { HelpItem } from "../help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import { KeyValueType } from "../key-value-form/key-value-convert"; import type { ComponentProps } from "./components"; import { convertToName } from "./DynamicComponents"; diff --git a/apps/admin-ui/src/components/dynamic/MultivaluedListComponent.tsx b/apps/admin-ui/src/components/dynamic/MultivaluedListComponent.tsx index 92c694e7e5..f692fc20e3 100644 --- a/apps/admin-ui/src/components/dynamic/MultivaluedListComponent.tsx +++ b/apps/admin-ui/src/components/dynamic/MultivaluedListComponent.tsx @@ -8,7 +8,7 @@ import { useState } from "react"; import { Controller, useFormContext } from "react-hook-form"; import { useTranslation } from "react-i18next"; -import { HelpItem } from "../help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import type { ComponentProps } from "./components"; import { convertToName } from "./DynamicComponents"; diff --git a/apps/admin-ui/src/components/dynamic/MultivaluedStringComponent.tsx b/apps/admin-ui/src/components/dynamic/MultivaluedStringComponent.tsx index 5d52879f9a..3bbe77e65a 100644 --- a/apps/admin-ui/src/components/dynamic/MultivaluedStringComponent.tsx +++ b/apps/admin-ui/src/components/dynamic/MultivaluedStringComponent.tsx @@ -2,7 +2,7 @@ import { useTranslation } from "react-i18next"; import { FormGroup } from "@patternfly/react-core"; import type { ComponentProps } from "./components"; -import { HelpItem } from "../../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import { MultiLineInput } from "../multi-line-input/MultiLineInput"; import { convertToName } from "./DynamicComponents"; diff --git a/apps/admin-ui/src/components/dynamic/PasswordComponent.tsx b/apps/admin-ui/src/components/dynamic/PasswordComponent.tsx index f5e1582855..cac94729de 100644 --- a/apps/admin-ui/src/components/dynamic/PasswordComponent.tsx +++ b/apps/admin-ui/src/components/dynamic/PasswordComponent.tsx @@ -2,7 +2,7 @@ import { FormGroup } from "@patternfly/react-core"; import { useFormContext } from "react-hook-form"; import { useTranslation } from "react-i18next"; -import { HelpItem } from "../help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import { PasswordInput } from "../password-input/PasswordInput"; import type { ComponentProps } from "./components"; import { convertToName } from "./DynamicComponents"; diff --git a/apps/admin-ui/src/components/dynamic/RoleComponent.tsx b/apps/admin-ui/src/components/dynamic/RoleComponent.tsx index b8e72b50bc..600aa0ba11 100644 --- a/apps/admin-ui/src/components/dynamic/RoleComponent.tsx +++ b/apps/admin-ui/src/components/dynamic/RoleComponent.tsx @@ -9,7 +9,7 @@ import { Controller, useFormContext } from "react-hook-form"; import { useTranslation } from "react-i18next"; import useToggle from "../../utils/useToggle"; -import { HelpItem } from "../help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import { AddRoleMappingModal } from "../role-mapping/AddRoleMappingModal"; import { Row, ServiceRole } from "../role-mapping/RoleMapping"; import type { ComponentProps } from "./components"; diff --git a/apps/admin-ui/src/components/dynamic/ScriptComponent.tsx b/apps/admin-ui/src/components/dynamic/ScriptComponent.tsx index f2a34fd090..2733367c12 100644 --- a/apps/admin-ui/src/components/dynamic/ScriptComponent.tsx +++ b/apps/admin-ui/src/components/dynamic/ScriptComponent.tsx @@ -3,7 +3,7 @@ import { FormGroup } from "@patternfly/react-core"; import { Controller, useFormContext } from "react-hook-form"; import { useTranslation } from "react-i18next"; -import { HelpItem } from "../help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import type { ComponentProps } from "./components"; import { convertToName } from "./DynamicComponents"; diff --git a/apps/admin-ui/src/components/dynamic/StringComponent.tsx b/apps/admin-ui/src/components/dynamic/StringComponent.tsx index b313ff4d33..aac29da68c 100644 --- a/apps/admin-ui/src/components/dynamic/StringComponent.tsx +++ b/apps/admin-ui/src/components/dynamic/StringComponent.tsx @@ -2,7 +2,7 @@ import { FormGroup } from "@patternfly/react-core"; import { useFormContext } from "react-hook-form"; import { useTranslation } from "react-i18next"; -import { HelpItem } from "../help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import { KeycloakTextInput } from "../keycloak-text-input/KeycloakTextInput"; import type { ComponentProps } from "./components"; import { convertToName } from "./DynamicComponents"; diff --git a/apps/admin-ui/src/components/dynamic/TextComponent.tsx b/apps/admin-ui/src/components/dynamic/TextComponent.tsx index cdb81aa423..1cf2952165 100644 --- a/apps/admin-ui/src/components/dynamic/TextComponent.tsx +++ b/apps/admin-ui/src/components/dynamic/TextComponent.tsx @@ -2,7 +2,7 @@ import { FormGroup } from "@patternfly/react-core"; import { useFormContext } from "react-hook-form"; import { useTranslation } from "react-i18next"; -import { HelpItem } from "../help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import { KeycloakTextArea } from "../keycloak-text-area/KeycloakTextArea"; import type { ComponentProps } from "./components"; import { convertToName } from "./DynamicComponents"; diff --git a/apps/admin-ui/src/components/help-enabler/HelpHeader.tsx b/apps/admin-ui/src/components/help-enabler/HelpHeader.tsx index 25ccead3e3..7fe8eb36d7 100644 --- a/apps/admin-ui/src/components/help-enabler/HelpHeader.tsx +++ b/apps/admin-ui/src/components/help-enabler/HelpHeader.tsx @@ -9,42 +9,14 @@ import { TextContent, } from "@patternfly/react-core"; import { ExternalLinkAltIcon, HelpIcon } from "@patternfly/react-icons"; -import { PropsWithChildren, useState } from "react"; +import { useState } from "react"; import { useTranslation } from "react-i18next"; import helpUrls from "../../help-urls"; -import { createNamedContext } from "../../utils/createNamedContext"; -import useRequiredContext from "../../utils/useRequiredContext"; -import { useStoredState } from "../../utils/useStoredState"; +import { useHelp } from "ui-shared"; import "./help-header.css"; -type HelpContextProps = { - enabled: boolean; - toggleHelp: () => void; -}; - -export const HelpContext = createNamedContext( - "HelpContext", - undefined -); - -export const useHelp = () => useRequiredContext(HelpContext); - -export const Help = ({ children }: PropsWithChildren) => { - const [enabled, setHelp] = useStoredState(localStorage, "helpEnabled", true); - - function toggleHelp() { - setHelp(!enabled); - } - - return ( - - {children} - - ); -}; - export const HelpHeader = () => { const [open, setOpen] = useState(false); const help = useHelp(); diff --git a/apps/admin-ui/src/components/permission-tab/PermissionTab.tsx b/apps/admin-ui/src/components/permission-tab/PermissionTab.tsx index 5286b186c4..eab38b8c7d 100644 --- a/apps/admin-ui/src/components/permission-tab/PermissionTab.tsx +++ b/apps/admin-ui/src/components/permission-tab/PermissionTab.tsx @@ -25,7 +25,7 @@ import { useAdminClient, useFetch } from "../../context/auth/AdminClient"; import { useRealm } from "../../context/realm-context/RealmContext"; import { toPermissionDetails } from "../../clients/routes/PermissionDetails"; import { KeycloakSpinner } from "../../components/keycloak-spinner/KeycloakSpinner"; -import { HelpItem } from "../../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import useLocaleSort from "../../utils/useLocaleSort"; import { useConfirmDialog } from "../confirm-dialog/ConfirmDialog"; @@ -138,7 +138,7 @@ export const PermissionsTab = ({ id, type }: PermissionsTabProps) => { fieldId="permissionsEnabled" labelIcon={ } diff --git a/apps/admin-ui/src/components/roles-list/RolesList.tsx b/apps/admin-ui/src/components/roles-list/RolesList.tsx index 3b97c99162..8992b092b9 100644 --- a/apps/admin-ui/src/components/roles-list/RolesList.tsx +++ b/apps/admin-ui/src/components/roles-list/RolesList.tsx @@ -11,7 +11,7 @@ import { toRealmSettings } from "../../realm-settings/routes/RealmSettings"; import { emptyFormatter, upperCaseFormatter } from "../../util"; import { useAlerts } from "../alert/Alerts"; import { useConfirmDialog } from "../confirm-dialog/ConfirmDialog"; -import { HelpItem } from "../help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import { KeycloakSpinner } from "../keycloak-spinner/KeycloakSpinner"; import { ListEmptyState } from "../list-empty-state/ListEmptyState"; import { KeycloakDataTable } from "../table-toolbar/KeycloakDataTable"; @@ -69,7 +69,7 @@ export const RolesList = ({ {role.name}{" "} diff --git a/apps/admin-ui/src/components/table-toolbar/KeycloakDataTable.tsx b/apps/admin-ui/src/components/table-toolbar/KeycloakDataTable.tsx index b991813e2d..1ee368e8d4 100644 --- a/apps/admin-ui/src/components/table-toolbar/KeycloakDataTable.tsx +++ b/apps/admin-ui/src/components/table-toolbar/KeycloakDataTable.tsx @@ -26,7 +26,7 @@ import { import { useTranslation } from "react-i18next"; import { useFetch } from "../../context/auth/AdminClient"; -import { useStoredState } from "../../utils/useStoredState"; +import { useStoredState } from "ui-shared"; import { KeycloakSpinner } from "../keycloak-spinner/KeycloakSpinner"; import { ListEmptyState } from "../list-empty-state/ListEmptyState"; import { PaginatingTableToolbar } from "./PaginatingTableToolbar"; diff --git a/apps/admin-ui/src/components/users/UserSelect.tsx b/apps/admin-ui/src/components/users/UserSelect.tsx index d01a2ea58e..aec90a4e8e 100644 --- a/apps/admin-ui/src/components/users/UserSelect.tsx +++ b/apps/admin-ui/src/components/users/UserSelect.tsx @@ -14,7 +14,7 @@ import type { UserQuery } from "@keycloak/keycloak-admin-client/lib/resources/us import type { ComponentProps } from "../dynamic/components"; import { useAdminClient, useFetch } from "../../context/auth/AdminClient"; -import { HelpItem } from "../help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import useToggle from "../../utils/useToggle"; type UserSelectProps = ComponentProps & { diff --git a/apps/admin-ui/src/components/view-header/ViewHeader.tsx b/apps/admin-ui/src/components/view-header/ViewHeader.tsx index 0c4ac5b49e..1b0a6d4517 100644 --- a/apps/admin-ui/src/components/view-header/ViewHeader.tsx +++ b/apps/admin-ui/src/components/view-header/ViewHeader.tsx @@ -24,8 +24,7 @@ import { } from "react"; import { useTranslation } from "react-i18next"; import { FormattedLink } from "../external-link/FormattedLink"; -import { useHelp } from "../help-enabler/HelpHeader"; -import { HelpItem } from "../help-enabler/HelpItem"; +import { useHelp, HelpItem } from "ui-shared"; import "../../help-urls"; export type ViewHeaderProps = { diff --git a/apps/admin-ui/src/context/RealmsContext.tsx b/apps/admin-ui/src/context/RealmsContext.tsx index e8306ab570..5e3fb25e6e 100644 --- a/apps/admin-ui/src/context/RealmsContext.tsx +++ b/apps/admin-ui/src/context/RealmsContext.tsx @@ -3,8 +3,7 @@ import type RealmRepresentation from "@keycloak/keycloak-admin-client/lib/defs/r import { sortBy } from "lodash-es"; import { PropsWithChildren, useCallback, useMemo, useState } from "react"; -import { createNamedContext } from "../utils/createNamedContext"; -import useRequiredContext from "../utils/useRequiredContext"; +import { createNamedContext, useRequiredContext } from "ui-shared"; import { useAdminClient, useFetch } from "./auth/AdminClient"; type RealmsContextProps = { diff --git a/apps/admin-ui/src/context/RecentRealms.tsx b/apps/admin-ui/src/context/RecentRealms.tsx index e0b99b981c..e25f9d9eec 100644 --- a/apps/admin-ui/src/context/RecentRealms.tsx +++ b/apps/admin-ui/src/context/RecentRealms.tsx @@ -1,9 +1,11 @@ import RealmRepresentation from "@keycloak/keycloak-admin-client/lib/defs/realmRepresentation"; import { PropsWithChildren, useEffect, useMemo } from "react"; -import { createNamedContext } from "../utils/createNamedContext"; -import useRequiredContext from "../utils/useRequiredContext"; -import { useStoredState } from "../utils/useStoredState"; +import { + createNamedContext, + useRequiredContext, + useStoredState, +} from "ui-shared"; import { useRealm } from "./realm-context/RealmContext"; import { useRealms } from "./RealmsContext"; diff --git a/apps/admin-ui/src/context/access/Access.tsx b/apps/admin-ui/src/context/access/Access.tsx index 987b25bcd1..655efc9f6c 100644 --- a/apps/admin-ui/src/context/access/Access.tsx +++ b/apps/admin-ui/src/context/access/Access.tsx @@ -2,8 +2,7 @@ import type { AccessType } from "@keycloak/keycloak-admin-client/lib/defs/whoAmI import { PropsWithChildren, useEffect, useState } from "react"; import { useRealm } from "../../context/realm-context/RealmContext"; import { useWhoAmI } from "../../context/whoami/WhoAmI"; -import { createNamedContext } from "../../utils/createNamedContext"; -import useRequiredContext from "../../utils/useRequiredContext"; +import { createNamedContext, useRequiredContext } from "ui-shared"; type AccessContextProps = { hasAccess: (...types: AccessType[]) => boolean; diff --git a/apps/admin-ui/src/context/auth/AdminClient.tsx b/apps/admin-ui/src/context/auth/AdminClient.tsx index 1d3fc7a5e0..de65f1930e 100644 --- a/apps/admin-ui/src/context/auth/AdminClient.tsx +++ b/apps/admin-ui/src/context/auth/AdminClient.tsx @@ -4,8 +4,7 @@ import { DependencyList, useEffect } from "react"; import { useErrorHandler } from "react-error-boundary"; import environment from "../../environment"; -import { createNamedContext } from "../../utils/createNamedContext"; -import useRequiredContext from "../../utils/useRequiredContext"; +import { createNamedContext, useRequiredContext } from "ui-shared"; export type AdminClientProps = { keycloak: Keycloak; diff --git a/apps/admin-ui/src/context/realm-context/RealmContext.tsx b/apps/admin-ui/src/context/realm-context/RealmContext.tsx index 56e88ec9da..dfc7ee396a 100644 --- a/apps/admin-ui/src/context/realm-context/RealmContext.tsx +++ b/apps/admin-ui/src/context/realm-context/RealmContext.tsx @@ -3,8 +3,7 @@ import { useMatch } from "react-router-dom"; import { DashboardRouteWithRealm } from "../../dashboard/routes/Dashboard"; import environment from "../../environment"; -import { createNamedContext } from "../../utils/createNamedContext"; -import useRequiredContext from "../../utils/useRequiredContext"; +import { createNamedContext, useRequiredContext } from "ui-shared"; import { useAdminClient } from "../auth/AdminClient"; type RealmContextType = { diff --git a/apps/admin-ui/src/context/server-info/ServerInfoProvider.tsx b/apps/admin-ui/src/context/server-info/ServerInfoProvider.tsx index a90d61f9c5..3c89592822 100644 --- a/apps/admin-ui/src/context/server-info/ServerInfoProvider.tsx +++ b/apps/admin-ui/src/context/server-info/ServerInfoProvider.tsx @@ -2,8 +2,7 @@ import type { ServerInfoRepresentation } from "@keycloak/keycloak-admin-client/l import { PropsWithChildren, useState } from "react"; import { sortProviders } from "../../util"; -import { createNamedContext } from "../../utils/createNamedContext"; -import useRequiredContext from "../../utils/useRequiredContext"; +import { createNamedContext, useRequiredContext } from "ui-shared"; import { useAdminClient, useFetch } from "../auth/AdminClient"; export const ServerInfoContext = createNamedContext< diff --git a/apps/admin-ui/src/context/whoami/WhoAmI.tsx b/apps/admin-ui/src/context/whoami/WhoAmI.tsx index 22739ac7dd..4cf6c0a305 100644 --- a/apps/admin-ui/src/context/whoami/WhoAmI.tsx +++ b/apps/admin-ui/src/context/whoami/WhoAmI.tsx @@ -4,8 +4,7 @@ import { PropsWithChildren, useState } from "react"; import environment from "../../environment"; import i18n, { DEFAULT_LOCALE } from "../../i18n"; -import { createNamedContext } from "../../utils/createNamedContext"; -import useRequiredContext from "../../utils/useRequiredContext"; +import { createNamedContext, useRequiredContext } from "ui-shared"; import { useAdminClient, useFetch } from "../auth/AdminClient"; export class WhoAmI { diff --git a/apps/admin-ui/src/dashboard/Dashboard.tsx b/apps/admin-ui/src/dashboard/Dashboard.tsx index 247c29895e..a36bacf616 100644 --- a/apps/admin-ui/src/dashboard/Dashboard.tsx +++ b/apps/admin-ui/src/dashboard/Dashboard.tsx @@ -29,7 +29,7 @@ import { import { useRealm } from "../context/realm-context/RealmContext"; import { useServerInfo } from "../context/server-info/ServerInfoProvider"; import { toUpperCase } from "../util"; -import { HelpItem } from "../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import environment from "../environment"; import { KeycloakSpinner } from "../components/keycloak-spinner/KeycloakSpinner"; import useLocaleSort from "../utils/useLocaleSort"; @@ -207,7 +207,7 @@ const Dashboard = () => { {t("enabledFeatures")}{" "} @@ -233,7 +233,7 @@ const Dashboard = () => { {t("disabledFeatures")}{" "} diff --git a/apps/admin-ui/src/dashboard/ProviderInfo.tsx b/apps/admin-ui/src/dashboard/ProviderInfo.tsx index 53e3af19d2..b1ab22a4a7 100644 --- a/apps/admin-ui/src/dashboard/ProviderInfo.tsx +++ b/apps/admin-ui/src/dashboard/ProviderInfo.tsx @@ -12,7 +12,7 @@ import { import { useServerInfo } from "../context/server-info/ServerInfoProvider"; import { TableToolbar } from "../components/table-toolbar/TableToolbar"; -import { isDefined } from "../utils/isDefined"; +import { isDefined } from "ui-shared"; export const ProviderInfo = () => { const { t } = useTranslation("dashboard"); diff --git a/apps/admin-ui/src/groups/SubGroupsContext.tsx b/apps/admin-ui/src/groups/SubGroupsContext.tsx index e3d47cfa4a..fe023155cc 100644 --- a/apps/admin-ui/src/groups/SubGroupsContext.tsx +++ b/apps/admin-ui/src/groups/SubGroupsContext.tsx @@ -1,7 +1,6 @@ import type GroupRepresentation from "@keycloak/keycloak-admin-client/lib/defs/groupRepresentation"; import { PropsWithChildren, useState } from "react"; -import { createNamedContext } from "../utils/createNamedContext"; -import useRequiredContext from "../utils/useRequiredContext"; +import { createNamedContext, useRequiredContext } from "ui-shared"; type SubGroupsProps = { subGroups: GroupRepresentation[]; diff --git a/apps/admin-ui/src/identity-providers/add/AddMapperForm.tsx b/apps/admin-ui/src/identity-providers/add/AddMapperForm.tsx index d7ecdcdbc2..f41a86bb2b 100644 --- a/apps/admin-ui/src/identity-providers/add/AddMapperForm.tsx +++ b/apps/admin-ui/src/identity-providers/add/AddMapperForm.tsx @@ -11,7 +11,7 @@ import { useState } from "react"; import { Controller, UseFormReturn } from "react-hook-form"; import { useTranslation } from "react-i18next"; -import { HelpItem } from "../../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import { KeycloakTextInput } from "../../components/keycloak-text-input/KeycloakTextInput"; import type { IdPMapperRepresentationWithAttributes } from "./AddMapper"; @@ -51,7 +51,7 @@ export const AddMapperForm = ({ label={t("common:name")} labelIcon={ } @@ -76,7 +76,7 @@ export const AddMapperForm = ({ isRequired labelIcon={ } diff --git a/apps/admin-ui/src/identity-providers/add/AdvancedSettings.tsx b/apps/admin-ui/src/identity-providers/add/AdvancedSettings.tsx index 1465a564a9..2f77ea0fe4 100644 --- a/apps/admin-ui/src/identity-providers/add/AdvancedSettings.tsx +++ b/apps/admin-ui/src/identity-providers/add/AdvancedSettings.tsx @@ -9,7 +9,7 @@ import { Controller, useFormContext } from "react-hook-form"; import { useTranslation } from "react-i18next"; import type AuthenticationFlowRepresentation from "@keycloak/keycloak-admin-client/lib/defs/authenticationFlowRepresentation"; -import { HelpItem } from "../../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import { useAdminClient, useFetch } from "../../context/auth/AdminClient"; import type { FieldProps } from "../component/FormGroupField"; import { SwitchField } from "../component/SwitchField"; @@ -39,7 +39,7 @@ const LoginFlow = ({ label={t(label)} labelIcon={ } @@ -141,7 +141,7 @@ export const AdvancedSettings = ({ isOIDC, isSAML }: AdvancedSettingsProps) => { label={t("syncMode")} labelIcon={ } diff --git a/apps/admin-ui/src/identity-providers/add/DescriptorSettings.tsx b/apps/admin-ui/src/identity-providers/add/DescriptorSettings.tsx index 73a7dca29e..1845ce6b04 100644 --- a/apps/admin-ui/src/identity-providers/add/DescriptorSettings.tsx +++ b/apps/admin-ui/src/identity-providers/add/DescriptorSettings.tsx @@ -12,7 +12,7 @@ import { useState } from "react"; import { Controller, useFormContext, useWatch } from "react-hook-form"; import { useTranslation } from "react-i18next"; -import { HelpItem } from "../../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import { KeycloakTextArea } from "../../components/keycloak-text-area/KeycloakTextArea"; import { KeycloakTextInput } from "../../components/keycloak-text-input/KeycloakTextInput"; import { FormGroupField } from "../component/FormGroupField"; @@ -67,7 +67,7 @@ const Fields = ({ readOnly }: DescriptorSettingsProps) => { fieldId="kc-saml-service-provider-entity-id" labelIcon={ } @@ -83,7 +83,7 @@ const Fields = ({ readOnly }: DescriptorSettingsProps) => { fieldId="kc-identity-provider-entity-id" labelIcon={ } diff --git a/apps/admin-ui/src/identity-providers/add/DiscoverySettings.tsx b/apps/admin-ui/src/identity-providers/add/DiscoverySettings.tsx index 83e259ee59..23b17407bf 100644 --- a/apps/admin-ui/src/identity-providers/add/DiscoverySettings.tsx +++ b/apps/admin-ui/src/identity-providers/add/DiscoverySettings.tsx @@ -11,7 +11,7 @@ import { useState } from "react"; import { Controller, useFormContext, useWatch } from "react-hook-form"; import { useTranslation } from "react-i18next"; -import { HelpItem } from "../../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import { KeycloakTextInput } from "../../components/keycloak-text-input/KeycloakTextInput"; import { SwitchField } from "../component/SwitchField"; import { TextField } from "../component/TextField"; @@ -141,7 +141,7 @@ const Fields = ({ readOnly }: DiscoverySettingsProps) => { label={t("pkceMethod")} labelIcon={ } diff --git a/apps/admin-ui/src/identity-providers/add/ExtendedNonDiscoverySettings.tsx b/apps/admin-ui/src/identity-providers/add/ExtendedNonDiscoverySettings.tsx index da066b6f60..a076c3f3d3 100644 --- a/apps/admin-ui/src/identity-providers/add/ExtendedNonDiscoverySettings.tsx +++ b/apps/admin-ui/src/identity-providers/add/ExtendedNonDiscoverySettings.tsx @@ -11,7 +11,7 @@ import { useState } from "react"; import { Controller, useFormContext } from "react-hook-form"; import { useTranslation } from "react-i18next"; -import { HelpItem } from "../../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import { FormGroupField } from "../component/FormGroupField"; import { SwitchField } from "../component/SwitchField"; import { TextField } from "../component/TextField"; diff --git a/apps/admin-ui/src/identity-providers/add/OIDCAuthentication.tsx b/apps/admin-ui/src/identity-providers/add/OIDCAuthentication.tsx index ec0ed3c780..5d73d6e3a6 100644 --- a/apps/admin-ui/src/identity-providers/add/OIDCAuthentication.tsx +++ b/apps/admin-ui/src/identity-providers/add/OIDCAuthentication.tsx @@ -8,7 +8,7 @@ import { useState } from "react"; import { Controller, useFormContext, useWatch } from "react-hook-form"; import { useTranslation } from "react-i18next"; -import { HelpItem } from "../../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import { ClientIdSecret } from "../component/ClientIdSecret"; import { sortProviders } from "../../util"; import { useServerInfo } from "../../context/server-info/ServerInfoProvider"; @@ -39,7 +39,7 @@ export const OIDCAuthentication = ({ create = true }: { create?: boolean }) => { label={t("clientAuthentication")} labelIcon={ } @@ -84,7 +84,7 @@ export const OIDCAuthentication = ({ create = true }: { create?: boolean }) => { label={t("clientAssertionSigningAlg")} labelIcon={ } diff --git a/apps/admin-ui/src/identity-providers/add/OIDCGeneralSettings.tsx b/apps/admin-ui/src/identity-providers/add/OIDCGeneralSettings.tsx index fa0fb06408..62e79c1639 100644 --- a/apps/admin-ui/src/identity-providers/add/OIDCGeneralSettings.tsx +++ b/apps/admin-ui/src/identity-providers/add/OIDCGeneralSettings.tsx @@ -3,7 +3,7 @@ import { useFormContext } from "react-hook-form"; import { useTranslation } from "react-i18next"; import { useParams } from "react-router-dom"; -import { HelpItem } from "../../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import { KeycloakTextInput } from "../../components/keycloak-text-input/KeycloakTextInput"; import { DisplayOrder } from "../component/DisplayOrder"; import { RedirectUrl } from "../component/RedirectUrl"; @@ -27,7 +27,7 @@ export const OIDCGeneralSettings = ({ id }: { id: string }) => { label={t("alias")} labelIcon={ } diff --git a/apps/admin-ui/src/identity-providers/add/OpenIdConnectSettings.tsx b/apps/admin-ui/src/identity-providers/add/OpenIdConnectSettings.tsx index e48a38dedd..162ee9f889 100644 --- a/apps/admin-ui/src/identity-providers/add/OpenIdConnectSettings.tsx +++ b/apps/admin-ui/src/identity-providers/add/OpenIdConnectSettings.tsx @@ -2,7 +2,7 @@ import { FormGroup, Title } from "@patternfly/react-core"; import { useFormContext } from "react-hook-form"; import { useTranslation } from "react-i18next"; -import { HelpItem } from "../../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import { JsonFileUpload } from "../../components/json-file-upload/JsonFileUpload"; import { useAdminClient } from "../../context/auth/AdminClient"; import { useRealm } from "../../context/realm-context/RealmContext"; @@ -80,7 +80,7 @@ export const OpenIdConnectSettings = () => { fieldId="kc-import-config" labelIcon={ } @@ -89,7 +89,7 @@ export const OpenIdConnectSettings = () => { > { label={t("comparison")} labelIcon={ } @@ -66,7 +66,7 @@ export const ReqAuthnConstraints = () => { fieldId="kc-authnContextClassRefs" labelIcon={ } @@ -83,7 +83,7 @@ export const ReqAuthnConstraints = () => { fieldId="kc-authnContextDeclRefs" labelIcon={ } diff --git a/apps/admin-ui/src/identity-providers/add/SamlConnectSettings.tsx b/apps/admin-ui/src/identity-providers/add/SamlConnectSettings.tsx index 52f2cb269c..30062861c4 100644 --- a/apps/admin-ui/src/identity-providers/add/SamlConnectSettings.tsx +++ b/apps/admin-ui/src/identity-providers/add/SamlConnectSettings.tsx @@ -3,7 +3,7 @@ import { useFormContext } from "react-hook-form"; import type IdentityProviderRepresentation from "@keycloak/keycloak-admin-client/lib/defs/identityProviderRepresentation"; import { useTranslation } from "react-i18next"; -import { HelpItem } from "../../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import { useAdminClient } from "../../context/auth/AdminClient"; import { FileUploadForm } from "../../components/json-file-upload/FileUploadForm"; @@ -87,7 +87,7 @@ export const SamlConnectSettings = () => { fieldId="kc-service-provider-entity-id" labelIcon={ } @@ -112,7 +112,7 @@ export const SamlConnectSettings = () => { fieldId="kc-import-config" labelIcon={ } diff --git a/apps/admin-ui/src/identity-providers/add/SamlGeneralSettings.tsx b/apps/admin-ui/src/identity-providers/add/SamlGeneralSettings.tsx index 98ab857512..e2736073bc 100644 --- a/apps/admin-ui/src/identity-providers/add/SamlGeneralSettings.tsx +++ b/apps/admin-ui/src/identity-providers/add/SamlGeneralSettings.tsx @@ -3,7 +3,7 @@ import { useFormContext } from "react-hook-form"; import { useTranslation } from "react-i18next"; import { FormattedLink } from "../../components/external-link/FormattedLink"; -import { HelpItem } from "../../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import { KeycloakTextInput } from "../../components/keycloak-text-input/KeycloakTextInput"; import { useRealm } from "../../context/realm-context/RealmContext"; import environment from "../../environment"; @@ -41,7 +41,7 @@ export const SamlGeneralSettings = ({ label={t("alias")} labelIcon={ } @@ -75,7 +75,7 @@ export const SamlGeneralSettings = ({ fieldId="endpoints" labelIcon={ } diff --git a/apps/admin-ui/src/identity-providers/component/ClientIdSecret.tsx b/apps/admin-ui/src/identity-providers/component/ClientIdSecret.tsx index 1894dea4a3..96dd4cb683 100644 --- a/apps/admin-ui/src/identity-providers/component/ClientIdSecret.tsx +++ b/apps/admin-ui/src/identity-providers/component/ClientIdSecret.tsx @@ -3,7 +3,7 @@ import { FormGroup, ValidatedOptions } from "@patternfly/react-core"; import { useFormContext } from "react-hook-form"; import { useTranslation } from "react-i18next"; -import { HelpItem } from "../../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import { KeycloakTextInput } from "../../components/keycloak-text-input/KeycloakTextInput"; import { PasswordInput } from "../../components/password-input/PasswordInput"; @@ -27,7 +27,7 @@ export const ClientIdSecret = ({ label={t("clientId")} labelIcon={ } @@ -51,7 +51,7 @@ export const ClientIdSecret = ({ label={t("clientSecret")} labelIcon={ } diff --git a/apps/admin-ui/src/identity-providers/component/DiscoveryEndpointField.tsx b/apps/admin-ui/src/identity-providers/component/DiscoveryEndpointField.tsx index aece7dac2d..d92c4d5bfb 100644 --- a/apps/admin-ui/src/identity-providers/component/DiscoveryEndpointField.tsx +++ b/apps/admin-ui/src/identity-providers/component/DiscoveryEndpointField.tsx @@ -3,7 +3,7 @@ import { ReactNode, useEffect, useState } from "react"; import { useFormContext } from "react-hook-form"; import { useTranslation } from "react-i18next"; -import { HelpItem } from "../../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import { KeycloakTextInput } from "../../components/keycloak-text-input/KeycloakTextInput"; import { useAdminClient } from "../../context/auth/AdminClient"; import environment from "../../environment"; diff --git a/apps/admin-ui/src/identity-providers/component/DisplayOrder.tsx b/apps/admin-ui/src/identity-providers/component/DisplayOrder.tsx index 9e97cc8013..d219d282c4 100644 --- a/apps/admin-ui/src/identity-providers/component/DisplayOrder.tsx +++ b/apps/admin-ui/src/identity-providers/component/DisplayOrder.tsx @@ -2,7 +2,7 @@ import { FormGroup, TextInput } from "@patternfly/react-core"; import { Controller, useFormContext } from "react-hook-form"; import { useTranslation } from "react-i18next"; -import { HelpItem } from "../../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; export const DisplayOrder = () => { const { t } = useTranslation("identity-providers"); @@ -14,7 +14,7 @@ export const DisplayOrder = () => { label={t("displayOrder")} labelIcon={ } diff --git a/apps/admin-ui/src/identity-providers/component/ExtendedFieldsForm.tsx b/apps/admin-ui/src/identity-providers/component/ExtendedFieldsForm.tsx index 3a78a49e9c..a514e239fd 100644 --- a/apps/admin-ui/src/identity-providers/component/ExtendedFieldsForm.tsx +++ b/apps/admin-ui/src/identity-providers/component/ExtendedFieldsForm.tsx @@ -3,7 +3,7 @@ import { FormGroup, Switch, ValidatedOptions } from "@patternfly/react-core"; import { Controller, useFormContext } from "react-hook-form"; import { useTranslation } from "react-i18next"; -import { HelpItem } from "../../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import { KeycloakTextInput } from "../../components/keycloak-text-input/KeycloakTextInput"; type ExtendedFieldsFormProps = { @@ -41,7 +41,7 @@ const FacebookFields = () => { label={t("facebook.fetchedFields")} labelIcon={ } @@ -65,7 +65,7 @@ const GithubFields = () => { label={t("baseUrl")} labelIcon={ } @@ -81,7 +81,7 @@ const GithubFields = () => { label={t("apiUrl")} labelIcon={ } @@ -107,7 +107,7 @@ const GoogleFields = () => { label={t("google.hostedDomain")} labelIcon={ } @@ -122,7 +122,7 @@ const GoogleFields = () => { label={t("google.userIp")} labelIcon={ } @@ -148,7 +148,7 @@ const GoogleFields = () => { label={t("google.offlineAccess")} labelIcon={ } @@ -186,7 +186,7 @@ const OpenshiftFields = () => { label={t("baseUrl")} labelIcon={ } @@ -218,7 +218,7 @@ const PaypalFields = () => { label={t("paypal.sandbox")} labelIcon={ } @@ -255,7 +255,7 @@ const StackoverflowFields = () => { label={t("stackoverflow.key")} labelIcon={ } @@ -284,7 +284,7 @@ const LinkedInFields = () => { label={t("linkedin.profileProjection")} labelIcon={ } diff --git a/apps/admin-ui/src/identity-providers/component/FormGroupField.tsx b/apps/admin-ui/src/identity-providers/component/FormGroupField.tsx index 5f425b9d23..f552146254 100644 --- a/apps/admin-ui/src/identity-providers/component/FormGroupField.tsx +++ b/apps/admin-ui/src/identity-providers/component/FormGroupField.tsx @@ -2,7 +2,7 @@ import { FormGroup } from "@patternfly/react-core"; import { PropsWithChildren } from "react"; import { useTranslation } from "react-i18next"; -import { HelpItem } from "../../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; export type FieldProps = { label: string; field: string; isReadOnly?: boolean }; export type FormGroupFieldProps = { label: string }; @@ -18,7 +18,7 @@ export const FormGroupField = ({ fieldId={label} labelIcon={ } diff --git a/apps/admin-ui/src/identity-providers/component/RedirectUrl.tsx b/apps/admin-ui/src/identity-providers/component/RedirectUrl.tsx index 4b720219a0..cf23e2524a 100644 --- a/apps/admin-ui/src/identity-providers/component/RedirectUrl.tsx +++ b/apps/admin-ui/src/identity-providers/component/RedirectUrl.tsx @@ -1,7 +1,7 @@ import { useTranslation } from "react-i18next"; import { ClipboardCopy, FormGroup } from "@patternfly/react-core"; -import { HelpItem } from "../../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import { useRealm } from "../../context/realm-context/RealmContext"; import { useAdminClient } from "../../context/auth/AdminClient"; import { addTrailingSlash } from "../../util"; @@ -20,7 +20,7 @@ export const RedirectUrl = ({ id }: { id: string }) => { label={t("redirectURI")} labelIcon={ } diff --git a/apps/admin-ui/src/index.css b/apps/admin-ui/src/index.css index db29cefbfa..b50f8c4283 100644 --- a/apps/admin-ui/src/index.css +++ b/apps/admin-ui/src/index.css @@ -13,17 +13,6 @@ input[type="checkbox"] { vertical-align: baseline; } -.pf-c-select__toggle:before { - border-top: var(--pf-c-select__toggle--before--BorderTopWidth) solid - var(--pf-c-select__toggle--before--BorderTopColor); - border-right: var(--pf-c-select__toggle--before--BorderRightWidth) solid - var(--pf-c-select__toggle--before--BorderRightColor); - border-bottom: var(--pf-c-select__toggle--before--BorderBottomWidth) solid - var(--pf-c-select__toggle--before--BorderBottomColor); - border-left: var(--pf-c-select__toggle--before--BorderLeftWidth) solid - var(--pf-c-select__toggle--before--BorderLeftColor); -} - .keycloak__form_actions { position: fixed; bottom: 0px; @@ -36,27 +25,6 @@ input[type="checkbox"] { margin-left: calc(-1 * var(--pf-global--spacer--lg)); } -.keycloak-empty-state-card:hover { - cursor: pointer; -} - -td.pf-c-table__check > input[type="checkbox"] { - vertical-align: text-bottom; -} - -.pf-c-table.tbody.pf-c-table__check > input { - margin-top: var(--pf-c-table__check--input--MarginTop); - vertical-align: baseline; -} - -.pf-c-pagination.pf-m-bottom.pf-m-compact { - padding: 0px; -} - -.kc-time-select-dropdown { - min-width: 170px; -} - .keycloak__section_intro__help { padding: var(--pf-global--spacer--md) 0 var(--pf-global--spacer--lg); color: var(--pf-global--primary-color--100); diff --git a/apps/admin-ui/src/realm-roles/UsersInRoleTab.tsx b/apps/admin-ui/src/realm-roles/UsersInRoleTab.tsx index a2b50382fc..da099f5b26 100644 --- a/apps/admin-ui/src/realm-roles/UsersInRoleTab.tsx +++ b/apps/admin-ui/src/realm-roles/UsersInRoleTab.tsx @@ -4,7 +4,7 @@ import { useTranslation } from "react-i18next"; import { useNavigate } from "react-router-dom"; import type { ClientRoleParams } from "../clients/routes/ClientRole"; -import { useHelp } from "../components/help-enabler/HelpHeader"; +import { useHelp } from "ui-shared"; import { ListEmptyState } from "../components/list-empty-state/ListEmptyState"; import { KeycloakDataTable } from "../components/table-toolbar/KeycloakDataTable"; import { useAdminClient } from "../context/auth/AdminClient"; diff --git a/apps/admin-ui/src/realm-settings/ClientProfileForm.tsx b/apps/admin-ui/src/realm-settings/ClientProfileForm.tsx index 8ebaba2912..4fb4209065 100644 --- a/apps/admin-ui/src/realm-settings/ClientProfileForm.tsx +++ b/apps/admin-ui/src/realm-settings/ClientProfileForm.tsx @@ -30,7 +30,7 @@ import { Link, useNavigate } from "react-router-dom"; import { useAlerts } from "../components/alert/Alerts"; import { useConfirmDialog } from "../components/confirm-dialog/ConfirmDialog"; import { FormAccess } from "../components/form-access/FormAccess"; -import { HelpItem } from "../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import { KeycloakSpinner } from "../components/keycloak-spinner/KeycloakSpinner"; import { KeycloakTextArea } from "../components/keycloak-text-area/KeycloakTextArea"; import { KeycloakTextInput } from "../components/keycloak-text-input/KeycloakTextInput"; @@ -293,7 +293,7 @@ export default function ClientProfileForm() { {t("executors")} diff --git a/apps/admin-ui/src/realm-settings/DefaultGroupsTab.tsx b/apps/admin-ui/src/realm-settings/DefaultGroupsTab.tsx index d717685625..cf6e4b95c6 100644 --- a/apps/admin-ui/src/realm-settings/DefaultGroupsTab.tsx +++ b/apps/admin-ui/src/realm-settings/DefaultGroupsTab.tsx @@ -26,7 +26,7 @@ import { toUserFederation } from "../user-federation/routes/UserFederation"; import { useRealm } from "../context/realm-context/RealmContext"; import { GroupPickerDialog } from "../components/group/GroupPickerDialog"; import { KeycloakSpinner } from "../components/keycloak-spinner/KeycloakSpinner"; -import { useHelp } from "../components/help-enabler/HelpHeader"; +import { useHelp } from "ui-shared"; export const DefaultsGroupsTab = () => { const { t } = useTranslation("realm-settings"); diff --git a/apps/admin-ui/src/realm-settings/EmailTab.tsx b/apps/admin-ui/src/realm-settings/EmailTab.tsx index 87193464dc..119e0c78ea 100644 --- a/apps/admin-ui/src/realm-settings/EmailTab.tsx +++ b/apps/admin-ui/src/realm-settings/EmailTab.tsx @@ -18,7 +18,7 @@ import { Link } from "react-router-dom"; import { useAlerts } from "../components/alert/Alerts"; import { FormAccess } from "../components/form-access/FormAccess"; -import { HelpItem } from "../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import { KeycloakTextInput } from "../components/keycloak-text-input/KeycloakTextInput"; import { PasswordInput } from "../components/password-input/PasswordInput"; import { FormPanel } from "../components/scroll-form/FormPanel"; @@ -146,7 +146,7 @@ export const RealmSettingsEmailTab = ({ fieldId="kc-from-display-name" labelIcon={ } @@ -179,7 +179,7 @@ export const RealmSettingsEmailTab = ({ fieldId="kc-reply-to-display-name" labelIcon={ } @@ -195,7 +195,7 @@ export const RealmSettingsEmailTab = ({ fieldId="kc-envelope-from" labelIcon={ } @@ -318,7 +318,7 @@ export const RealmSettingsEmailTab = ({ helperTextInvalid={t("common:required")} labelIcon={ } diff --git a/apps/admin-ui/src/realm-settings/ExecutorForm.tsx b/apps/admin-ui/src/realm-settings/ExecutorForm.tsx index 41bd8a47b6..a8db2c7fcc 100644 --- a/apps/admin-ui/src/realm-settings/ExecutorForm.tsx +++ b/apps/admin-ui/src/realm-settings/ExecutorForm.tsx @@ -19,7 +19,7 @@ import { Link, useNavigate } from "react-router-dom"; import { useAlerts } from "../components/alert/Alerts"; import { DynamicComponents } from "../components/dynamic/DynamicComponents"; import { FormAccess } from "../components/form-access/FormAccess"; -import { HelpItem } from "../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import { ViewHeader } from "../components/view-header/ViewHeader"; import { useAdminClient, useFetch } from "../context/auth/AdminClient"; import { useServerInfo } from "../context/server-info/ServerInfoProvider"; diff --git a/apps/admin-ui/src/realm-settings/GeneralTab.tsx b/apps/admin-ui/src/realm-settings/GeneralTab.tsx index f80a0f88e7..c5ebb78159 100644 --- a/apps/admin-ui/src/realm-settings/GeneralTab.tsx +++ b/apps/admin-ui/src/realm-settings/GeneralTab.tsx @@ -18,7 +18,7 @@ import { useTranslation } from "react-i18next"; import { FormattedLink } from "../components/external-link/FormattedLink"; import { FormAccess } from "../components/form-access/FormAccess"; -import { HelpItem } from "../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import { KeyValueInput } from "../components/key-value-form/KeyValueInput"; import { KeycloakTextInput } from "../components/keycloak-text-input/KeycloakTextInput"; import { useAdminClient } from "../context/auth/AdminClient"; @@ -121,7 +121,7 @@ export const RealmSettingsGeneralTab = ({ fieldId="kc-frontend-url" labelIcon={ } @@ -137,7 +137,7 @@ export const RealmSettingsGeneralTab = ({ fieldId="kc-require-ssl" labelIcon={ } @@ -177,7 +177,7 @@ export const RealmSettingsGeneralTab = ({ fieldId="acrToLoAMapping" labelIcon={ } @@ -193,7 +193,7 @@ export const RealmSettingsGeneralTab = ({ label={t("userManagedAccess")} labelIcon={ } @@ -222,7 +222,7 @@ export const RealmSettingsGeneralTab = ({ label={t("userProfileEnabled")} labelIcon={ } @@ -254,7 +254,7 @@ export const RealmSettingsGeneralTab = ({ label={t("endpoints")} labelIcon={ } diff --git a/apps/admin-ui/src/realm-settings/LocalizationTab.tsx b/apps/admin-ui/src/realm-settings/LocalizationTab.tsx index 6fd6327b6a..9aa9246f6b 100644 --- a/apps/admin-ui/src/realm-settings/LocalizationTab.tsx +++ b/apps/admin-ui/src/realm-settings/LocalizationTab.tsx @@ -37,7 +37,7 @@ import { useTranslation } from "react-i18next"; import { useAlerts } from "../components/alert/Alerts"; import { FormAccess } from "../components/form-access/FormAccess"; -import { HelpItem } from "../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import type { KeyValueType } from "../components/key-value-form/key-value-convert"; import { ListEmptyState } from "../components/list-empty-state/ListEmptyState"; import { FormPanel } from "../components/scroll-form/FormPanel"; @@ -365,7 +365,7 @@ export const LocalizationTab = ({ save, realm }: LocalizationTabProps) => { fieldId="kc-internationalization" labelIcon={ } diff --git a/apps/admin-ui/src/realm-settings/LoginTab.tsx b/apps/admin-ui/src/realm-settings/LoginTab.tsx index ee7ecd8964..590c74767b 100644 --- a/apps/admin-ui/src/realm-settings/LoginTab.tsx +++ b/apps/admin-ui/src/realm-settings/LoginTab.tsx @@ -1,7 +1,7 @@ import { useTranslation } from "react-i18next"; import { FormGroup, PageSection, Switch } from "@patternfly/react-core"; import { FormAccess } from "../components/form-access/FormAccess"; -import { HelpItem } from "../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import { FormPanel } from "../components/scroll-form/FormPanel"; import type RealmRepresentation from "@keycloak/keycloak-admin-client/lib/defs/realmRepresentation"; import { useAdminClient } from "../context/auth/AdminClient"; @@ -82,7 +82,7 @@ export const RealmSettingsLoginTab = ({ fieldId="kc-forgot-pw" labelIcon={ } @@ -107,7 +107,7 @@ export const RealmSettingsLoginTab = ({ fieldId="kc-remember-me" labelIcon={ } @@ -135,7 +135,7 @@ export const RealmSettingsLoginTab = ({ fieldId="kc-email-as-username" labelIcon={ } @@ -166,7 +166,7 @@ export const RealmSettingsLoginTab = ({ fieldId="kc-login-with-email" labelIcon={ } @@ -195,7 +195,7 @@ export const RealmSettingsLoginTab = ({ fieldId="kc-duplicate-emails" labelIcon={ } @@ -227,7 +227,7 @@ export const RealmSettingsLoginTab = ({ fieldId="kc-verify-email" labelIcon={ } @@ -259,7 +259,7 @@ export const RealmSettingsLoginTab = ({ fieldId="kc-edit-username" labelIcon={ } diff --git a/apps/admin-ui/src/realm-settings/NewClientPolicyCondition.tsx b/apps/admin-ui/src/realm-settings/NewClientPolicyCondition.tsx index acbf1b5519..feb5e00398 100644 --- a/apps/admin-ui/src/realm-settings/NewClientPolicyCondition.tsx +++ b/apps/admin-ui/src/realm-settings/NewClientPolicyCondition.tsx @@ -21,7 +21,7 @@ import { useNavigate, useParams } from "react-router-dom"; import { useAlerts } from "../components/alert/Alerts"; import { DynamicComponents } from "../components/dynamic/DynamicComponents"; import { FormAccess } from "../components/form-access/FormAccess"; -import { HelpItem } from "../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import { FormPanel } from "../components/scroll-form/FormPanel"; import { useAdminClient, useFetch } from "../context/auth/AdminClient"; import { useRealm } from "../context/realm-context/RealmContext"; diff --git a/apps/admin-ui/src/realm-settings/NewClientPolicyForm.tsx b/apps/admin-ui/src/realm-settings/NewClientPolicyForm.tsx index c81754844f..50328a00c7 100644 --- a/apps/admin-ui/src/realm-settings/NewClientPolicyForm.tsx +++ b/apps/admin-ui/src/realm-settings/NewClientPolicyForm.tsx @@ -29,7 +29,7 @@ import { Link, useNavigate } from "react-router-dom"; import { useAlerts } from "../components/alert/Alerts"; import { useConfirmDialog } from "../components/confirm-dialog/ConfirmDialog"; import { FormAccess } from "../components/form-access/FormAccess"; -import { HelpItem } from "../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import { KeycloakSpinner } from "../components/keycloak-spinner/KeycloakSpinner"; import { KeycloakTextArea } from "../components/keycloak-text-area/KeycloakTextArea"; import { KeycloakTextInput } from "../components/keycloak-text-input/KeycloakTextInput"; @@ -532,7 +532,7 @@ export default function NewClientPolicyForm() { {t("conditions")} @@ -649,7 +649,7 @@ export default function NewClientPolicyForm() { > {t("clientProfiles")} diff --git a/apps/admin-ui/src/realm-settings/SessionsTab.tsx b/apps/admin-ui/src/realm-settings/SessionsTab.tsx index e2b02a763f..91410b6907 100644 --- a/apps/admin-ui/src/realm-settings/SessionsTab.tsx +++ b/apps/admin-ui/src/realm-settings/SessionsTab.tsx @@ -11,7 +11,7 @@ import { Controller, useForm, useWatch } from "react-hook-form"; import { useTranslation } from "react-i18next"; import { FormAccess } from "../components/form-access/FormAccess"; -import { HelpItem } from "../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import { FormPanel } from "../components/scroll-form/FormPanel"; import { TimeSelector } from "../components/time-selector/TimeSelector"; import { convertToFormValues } from "../util"; @@ -59,7 +59,7 @@ export const RealmSettingsSessionsTab = ({ fieldId="SSOSessionIdle" labelIcon={ } @@ -85,7 +85,7 @@ export const RealmSettingsSessionsTab = ({ fieldId="SSOSessionMax" labelIcon={ } @@ -110,7 +110,7 @@ export const RealmSettingsSessionsTab = ({ fieldId="SSOSessionIdleRememberMe" labelIcon={ } @@ -135,7 +135,7 @@ export const RealmSettingsSessionsTab = ({ fieldId="SSOSessionMaxRememberMe" labelIcon={ } @@ -171,7 +171,7 @@ export const RealmSettingsSessionsTab = ({ fieldId="clientSessionIdle" labelIcon={ } @@ -196,7 +196,7 @@ export const RealmSettingsSessionsTab = ({ fieldId="clientSessionMax" labelIcon={ } @@ -232,7 +232,7 @@ export const RealmSettingsSessionsTab = ({ fieldId="offlineSessionIdle" labelIcon={ } @@ -259,7 +259,7 @@ export const RealmSettingsSessionsTab = ({ fieldId="kc-offlineSessionMaxLimited" labelIcon={ } @@ -288,7 +288,7 @@ export const RealmSettingsSessionsTab = ({ id="offline-session-max-label" labelIcon={ } @@ -326,7 +326,7 @@ export const RealmSettingsSessionsTab = ({ fieldId="offlineSessionIdle" labelIcon={ } @@ -352,7 +352,7 @@ export const RealmSettingsSessionsTab = ({ id="login-action-timeout-label" labelIcon={ } diff --git a/apps/admin-ui/src/realm-settings/ThemesTab.tsx b/apps/admin-ui/src/realm-settings/ThemesTab.tsx index 6853f09b38..46f6ae8222 100644 --- a/apps/admin-ui/src/realm-settings/ThemesTab.tsx +++ b/apps/admin-ui/src/realm-settings/ThemesTab.tsx @@ -13,7 +13,7 @@ import { Controller, useForm } from "react-hook-form"; import { useTranslation } from "react-i18next"; import { FormAccess } from "../components/form-access/FormAccess"; -import { HelpItem } from "../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import { useServerInfo } from "../context/server-info/ServerInfoProvider"; import { convertToFormValues } from "../util"; @@ -54,7 +54,7 @@ export const RealmSettingsThemesTab = ({ fieldId="kc-login-theme" labelIcon={ } @@ -96,7 +96,7 @@ export const RealmSettingsThemesTab = ({ fieldId="kc-account-theme" labelIcon={ } @@ -138,7 +138,7 @@ export const RealmSettingsThemesTab = ({ fieldId="kc-admin-ui-theme" labelIcon={ } @@ -180,7 +180,7 @@ export const RealmSettingsThemesTab = ({ fieldId="kc-email-theme" labelIcon={ } diff --git a/apps/admin-ui/src/realm-settings/TokensTab.tsx b/apps/admin-ui/src/realm-settings/TokensTab.tsx index e864158126..553a336e37 100644 --- a/apps/admin-ui/src/realm-settings/TokensTab.tsx +++ b/apps/admin-ui/src/realm-settings/TokensTab.tsx @@ -17,7 +17,7 @@ import { Controller, useForm, useWatch } from "react-hook-form"; import { useTranslation } from "react-i18next"; import { FormAccess } from "../components/form-access/FormAccess"; -import { HelpItem } from "../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import { KeycloakTextInput } from "../components/keycloak-text-input/KeycloakTextInput"; import { FormPanel } from "../components/scroll-form/FormPanel"; import { @@ -103,7 +103,7 @@ export const RealmSettingsTokensTab = ({ fieldId="kc-default-signature-algorithm" labelIcon={ } @@ -145,7 +145,7 @@ export const RealmSettingsTokensTab = ({ fieldId="oAuthDeviceCodeLifespan" labelIcon={ } @@ -170,7 +170,7 @@ export const RealmSettingsTokensTab = ({ fieldId="oAuthDevicePollingInterval" labelIcon={ } @@ -200,7 +200,7 @@ export const RealmSettingsTokensTab = ({ fieldId="shortVerificationUri" labelIcon={ } @@ -229,7 +229,7 @@ export const RealmSettingsTokensTab = ({ fieldId="kc-revoke-refresh-token" labelIcon={ } @@ -256,7 +256,7 @@ export const RealmSettingsTokensTab = ({ label={t("refreshTokenMaxReuse")} labelIcon={ } @@ -303,7 +303,7 @@ export const RealmSettingsTokensTab = ({ })} labelIcon={ } @@ -334,7 +334,9 @@ export const RealmSettingsTokensTab = ({ fieldId="accessTokenLifespanImplicitFlow" labelIcon={ } @@ -358,7 +360,7 @@ export const RealmSettingsTokensTab = ({ fieldId="clientLoginTimeout" labelIcon={ } @@ -386,7 +388,7 @@ export const RealmSettingsTokensTab = ({ id="offline-session-max-label" labelIcon={ } @@ -424,7 +426,7 @@ export const RealmSettingsTokensTab = ({ fieldId="userInitiatedActionLifespan" labelIcon={ } @@ -450,7 +452,9 @@ export const RealmSettingsTokensTab = ({ id="default-admin-initiated-label" labelIcon={ } diff --git a/apps/admin-ui/src/realm-settings/event-config/EventConfigForm.tsx b/apps/admin-ui/src/realm-settings/event-config/EventConfigForm.tsx index 150c5f2017..43658fb56f 100644 --- a/apps/admin-ui/src/realm-settings/event-config/EventConfigForm.tsx +++ b/apps/admin-ui/src/realm-settings/event-config/EventConfigForm.tsx @@ -9,7 +9,7 @@ import { Controller, UseFormReturn } from "react-hook-form"; import { useTranslation } from "react-i18next"; import { useConfirmDialog } from "../../components/confirm-dialog/ConfirmDialog"; -import { HelpItem } from "../../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import { TimeSelector } from "../../components/time-selector/TimeSelector"; export type EventsType = "admin" | "user"; @@ -53,7 +53,7 @@ export const EventConfigForm = ({ fieldId={eventKey} labelIcon={ } @@ -90,7 +90,7 @@ export const EventConfigForm = ({ fieldId="includeRepresentation" labelIcon={ } @@ -118,7 +118,7 @@ export const EventConfigForm = ({ fieldId="expiration" labelIcon={ } @@ -160,7 +160,7 @@ export const EventConfigForm = ({ fieldId={`clear-${type}-events`} labelIcon={ } diff --git a/apps/admin-ui/src/realm-settings/event-config/EventListenersForm.tsx b/apps/admin-ui/src/realm-settings/event-config/EventListenersForm.tsx index 6c9e8c3784..44129ad864 100644 --- a/apps/admin-ui/src/realm-settings/event-config/EventListenersForm.tsx +++ b/apps/admin-ui/src/realm-settings/event-config/EventListenersForm.tsx @@ -10,7 +10,7 @@ import { useState } from "react"; import { Controller, UseFormReturn } from "react-hook-form"; import { useTranslation } from "react-i18next"; -import { HelpItem } from "../../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import { useServerInfo } from "../../context/server-info/ServerInfoProvider"; type EventListenersFormProps = { diff --git a/apps/admin-ui/src/realm-settings/keys/key-providers/KeyProviderForm.tsx b/apps/admin-ui/src/realm-settings/keys/key-providers/KeyProviderForm.tsx index ddb43b8f8f..baf9469d4f 100644 --- a/apps/admin-ui/src/realm-settings/keys/key-providers/KeyProviderForm.tsx +++ b/apps/admin-ui/src/realm-settings/keys/key-providers/KeyProviderForm.tsx @@ -15,7 +15,7 @@ import { useNavigate } from "react-router-dom"; import { useAlerts } from "../../../components/alert/Alerts"; import { DynamicComponents } from "../../../components/dynamic/DynamicComponents"; import { FormAccess } from "../../../components/form-access/FormAccess"; -import { HelpItem } from "../../../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import { KeycloakTextInput } from "../../../components/keycloak-text-input/KeycloakTextInput"; import { ViewHeader } from "../../../components/view-header/ViewHeader"; import { useAdminClient, useFetch } from "../../../context/auth/AdminClient"; @@ -104,7 +104,7 @@ export const KeyProviderForm = ({ label={t("providerId")} labelIcon={ } @@ -123,7 +123,7 @@ export const KeyProviderForm = ({ label={t("common:name")} labelIcon={ } diff --git a/apps/admin-ui/src/realm-settings/security-defences/BruteForceDetection.tsx b/apps/admin-ui/src/realm-settings/security-defences/BruteForceDetection.tsx index 99eebc9246..de04006ec8 100644 --- a/apps/admin-ui/src/realm-settings/security-defences/BruteForceDetection.tsx +++ b/apps/admin-ui/src/realm-settings/security-defences/BruteForceDetection.tsx @@ -11,7 +11,7 @@ import { Controller, FormProvider, useForm, useWatch } from "react-hook-form"; import { useTranslation } from "react-i18next"; import { FormAccess } from "../../components/form-access/FormAccess"; -import { HelpItem } from "../../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import { convertToFormValues } from "../../util"; import { Time } from "./Time"; @@ -79,7 +79,7 @@ export const BruteForceDetection = ({ label={t("failureFactor")} labelIcon={ } @@ -140,7 +140,9 @@ export const BruteForceDetection = ({ label={t("quickLoginCheckMilliSeconds")} labelIcon={ } diff --git a/apps/admin-ui/src/realm-settings/security-defences/HelpLinkTextInput.tsx b/apps/admin-ui/src/realm-settings/security-defences/HelpLinkTextInput.tsx index bfac437ce9..c5b025e28c 100644 --- a/apps/admin-ui/src/realm-settings/security-defences/HelpLinkTextInput.tsx +++ b/apps/admin-ui/src/realm-settings/security-defences/HelpLinkTextInput.tsx @@ -3,7 +3,7 @@ import { useFormContext } from "react-hook-form"; import { Trans, useTranslation } from "react-i18next"; import { FormattedLink } from "../../components/external-link/FormattedLink"; -import { HelpItem } from "../../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import { KeycloakTextInput } from "../../components/keycloak-text-input/KeycloakTextInput"; type HelpLinkTextInputProps = { diff --git a/apps/admin-ui/src/realm-settings/security-defences/Time.tsx b/apps/admin-ui/src/realm-settings/security-defences/Time.tsx index 714d7b0371..55179e62a3 100644 --- a/apps/admin-ui/src/realm-settings/security-defences/Time.tsx +++ b/apps/admin-ui/src/realm-settings/security-defences/Time.tsx @@ -3,7 +3,7 @@ import { CSSProperties } from "react"; import { Controller, useFormContext } from "react-hook-form"; import { useTranslation } from "react-i18next"; -import { HelpItem } from "../../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import { TimeSelector } from "../../components/time-selector/TimeSelector"; export const Time = ({ @@ -25,7 +25,7 @@ export const Time = ({ fieldId={name} labelIcon={ } diff --git a/apps/admin-ui/src/realm-settings/user-profile/AttributesGroupForm.tsx b/apps/admin-ui/src/realm-settings/user-profile/AttributesGroupForm.tsx index 786332d870..9a7671b900 100644 --- a/apps/admin-ui/src/realm-settings/user-profile/AttributesGroupForm.tsx +++ b/apps/admin-ui/src/realm-settings/user-profile/AttributesGroupForm.tsx @@ -13,7 +13,7 @@ import { useTranslation } from "react-i18next"; import { Link, useNavigate, useParams } from "react-router-dom"; import { FormAccess } from "../../components/form-access/FormAccess"; -import { HelpItem } from "../../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import type { KeyValueType } from "../../components/key-value-form/key-value-convert"; import { KeyValueInput } from "../../components/key-value-form/KeyValueInput"; import { KeycloakTextInput } from "../../components/keycloak-text-input/KeycloakTextInput"; @@ -124,7 +124,7 @@ export default function AttributesGroupForm() { validated={form.formState.errors.name ? "error" : "default"} labelIcon={ } @@ -143,7 +143,7 @@ export default function AttributesGroupForm() { fieldId="kc-display-header" labelIcon={ } @@ -158,7 +158,7 @@ export default function AttributesGroupForm() { fieldId="kc-display-description" labelIcon={ } diff --git a/apps/admin-ui/src/realm-settings/user-profile/UserProfileContext.tsx b/apps/admin-ui/src/realm-settings/user-profile/UserProfileContext.tsx index 00902b3f6e..10133a7309 100644 --- a/apps/admin-ui/src/realm-settings/user-profile/UserProfileContext.tsx +++ b/apps/admin-ui/src/realm-settings/user-profile/UserProfileContext.tsx @@ -6,8 +6,7 @@ import { useTranslation } from "react-i18next"; import { useAlerts } from "../../components/alert/Alerts"; import { useAdminClient, useFetch } from "../../context/auth/AdminClient"; import { useRealm } from "../../context/realm-context/RealmContext"; -import { createNamedContext } from "../../utils/createNamedContext"; -import useRequiredContext from "../../utils/useRequiredContext"; +import { createNamedContext, useRequiredContext } from "ui-shared"; type UserProfileProps = { config: UserProfileConfig | null; diff --git a/apps/admin-ui/src/realm-settings/user-profile/attribute/AttributeGeneralSettings.tsx b/apps/admin-ui/src/realm-settings/user-profile/attribute/AttributeGeneralSettings.tsx index 3167389420..2401e076dc 100644 --- a/apps/admin-ui/src/realm-settings/user-profile/attribute/AttributeGeneralSettings.tsx +++ b/apps/admin-ui/src/realm-settings/user-profile/attribute/AttributeGeneralSettings.tsx @@ -15,7 +15,7 @@ import { Controller, useFormContext, useWatch } from "react-hook-form"; import { useTranslation } from "react-i18next"; import { FormAccess } from "../../../components/form-access/FormAccess"; -import { HelpItem } from "../../../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import { KeycloakSpinner } from "../../../components/keycloak-spinner/KeycloakSpinner"; import { KeycloakTextInput } from "../../../components/keycloak-text-input/KeycloakTextInput"; import { useAdminClient, useFetch } from "../../../context/auth/AdminClient"; @@ -75,7 +75,7 @@ export const AttributeGeneralSettings = () => { label={t("attributeName")} labelIcon={ } @@ -98,7 +98,7 @@ export const AttributeGeneralSettings = () => { label={t("attributeDisplayName")} labelIcon={ } @@ -115,7 +115,7 @@ export const AttributeGeneralSettings = () => { label={t("attributeGroup")} labelIcon={ } @@ -250,7 +250,7 @@ export const AttributeGeneralSettings = () => { label={t("required")} labelIcon={ } diff --git a/apps/admin-ui/src/realm-settings/user-profile/attribute/AttributePermission.tsx b/apps/admin-ui/src/realm-settings/user-profile/attribute/AttributePermission.tsx index 1c1b668e4f..fea4d9a4f6 100644 --- a/apps/admin-ui/src/realm-settings/user-profile/attribute/AttributePermission.tsx +++ b/apps/admin-ui/src/realm-settings/user-profile/attribute/AttributePermission.tsx @@ -3,7 +3,7 @@ import { Controller, useFormContext } from "react-hook-form"; import { useTranslation } from "react-i18next"; import { FormAccess } from "../../../components/form-access/FormAccess"; -import { HelpItem } from "../../../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import "../../realm-settings-section.css"; @@ -70,7 +70,7 @@ export const AttributePermission = () => { label={t("whoCanEdit")} labelIcon={ } @@ -83,7 +83,7 @@ export const AttributePermission = () => { label={t("whoCanView")} labelIcon={ } diff --git a/apps/admin-ui/src/user-federation/custom/CustomProviderSettings.tsx b/apps/admin-ui/src/user-federation/custom/CustomProviderSettings.tsx index acc1367680..9cf025b90b 100644 --- a/apps/admin-ui/src/user-federation/custom/CustomProviderSettings.tsx +++ b/apps/admin-ui/src/user-federation/custom/CustomProviderSettings.tsx @@ -14,7 +14,7 @@ import { Link, useNavigate } from "react-router-dom"; import { useAlerts } from "../../components/alert/Alerts"; import { DynamicComponents } from "../../components/dynamic/DynamicComponents"; import { FormAccess } from "../../components/form-access/FormAccess"; -import { HelpItem } from "../../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import { KeycloakTextInput } from "../../components/keycloak-text-input/KeycloakTextInput"; import { useAdminClient, useFetch } from "../../context/auth/AdminClient"; import { useRealm } from "../../context/realm-context/RealmContext"; @@ -123,7 +123,7 @@ export default function CustomProviderSettings() { label={t("uiDisplayName")} labelIcon={ } diff --git a/apps/admin-ui/src/user-federation/custom/SyncSettings.tsx b/apps/admin-ui/src/user-federation/custom/SyncSettings.tsx index 14e89e25f3..48a66fb0ce 100644 --- a/apps/admin-ui/src/user-federation/custom/SyncSettings.tsx +++ b/apps/admin-ui/src/user-federation/custom/SyncSettings.tsx @@ -2,7 +2,7 @@ import { FormGroup, Switch } from "@patternfly/react-core"; import { Controller, useFormContext } from "react-hook-form"; import { useTranslation } from "react-i18next"; -import { HelpItem } from "../../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import { KeycloakTextInput } from "../../components/keycloak-text-input/KeycloakTextInput"; export const SyncSettings = () => { @@ -17,7 +17,7 @@ export const SyncSettings = () => { label={t("periodicFullSync")} labelIcon={ } @@ -49,7 +49,7 @@ export const SyncSettings = () => { label={t("fullSyncPeriod")} labelIcon={ } @@ -69,7 +69,7 @@ export const SyncSettings = () => { label={t("periodicChangedUsersSync")} labelIcon={ } @@ -100,7 +100,7 @@ export const SyncSettings = () => { label={t("changedUsersSyncPeriod")} labelIcon={ } diff --git a/apps/admin-ui/src/user-federation/kerberos/KerberosSettingsRequired.tsx b/apps/admin-ui/src/user-federation/kerberos/KerberosSettingsRequired.tsx index 0b7ac26b7f..9ddcca8851 100644 --- a/apps/admin-ui/src/user-federation/kerberos/KerberosSettingsRequired.tsx +++ b/apps/admin-ui/src/user-federation/kerberos/KerberosSettingsRequired.tsx @@ -12,7 +12,7 @@ import { Controller, UseFormReturn, useWatch } from "react-hook-form"; import { useTranslation } from "react-i18next"; import { FormAccess } from "../../components/form-access/FormAccess"; -import { HelpItem } from "../../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import { KeycloakTextInput } from "../../components/keycloak-text-input/KeycloakTextInput"; import { WizardSectionHeader } from "../../components/wizard-section-header/WizardSectionHeader"; import { useAdminClient, useFetch } from "../../context/auth/AdminClient"; @@ -64,7 +64,7 @@ export const KerberosSettingsRequired = ({ label={t("uiDisplayName")} labelIcon={ } @@ -112,7 +112,7 @@ export const KerberosSettingsRequired = ({ label={t("kerberosRealm")} labelIcon={ } @@ -149,7 +149,7 @@ export const KerberosSettingsRequired = ({ label={t("serverPrincipal")} labelIcon={ } @@ -186,7 +186,7 @@ export const KerberosSettingsRequired = ({ label={t("keyTab")} labelIcon={ } @@ -217,7 +217,7 @@ export const KerberosSettingsRequired = ({ label={t("debug")} labelIcon={ } @@ -247,7 +247,9 @@ export const KerberosSettingsRequired = ({ label={t("allowPasswordAuthentication")} labelIcon={ } @@ -277,7 +279,7 @@ export const KerberosSettingsRequired = ({ label={t("editMode")} labelIcon={ } @@ -317,7 +319,7 @@ export const KerberosSettingsRequired = ({ label={t("updateFirstLogin")} labelIcon={ } diff --git a/apps/admin-ui/src/user-federation/ldap/LdapSettingsAdvanced.tsx b/apps/admin-ui/src/user-federation/ldap/LdapSettingsAdvanced.tsx index 5ac3c201ba..ef0d89d00e 100644 --- a/apps/admin-ui/src/user-federation/ldap/LdapSettingsAdvanced.tsx +++ b/apps/admin-ui/src/user-federation/ldap/LdapSettingsAdvanced.tsx @@ -4,7 +4,7 @@ import { useTranslation } from "react-i18next"; import { useAlerts } from "../../components/alert/Alerts"; import { FormAccess } from "../../components/form-access/FormAccess"; -import { HelpItem } from "../../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import { WizardSectionHeader } from "../../components/wizard-section-header/WizardSectionHeader"; import { useAdminClient } from "../../context/auth/AdminClient"; import { useRealm } from "../../context/realm-context/RealmContext"; @@ -67,7 +67,7 @@ export const LdapSettingsAdvanced = ({ label={t("enableLdapv3Password")} labelIcon={ } @@ -97,7 +97,7 @@ export const LdapSettingsAdvanced = ({ label={t("validatePasswordPolicy")} labelIcon={ } @@ -127,7 +127,7 @@ export const LdapSettingsAdvanced = ({ label={t("trustEmail")} labelIcon={ } diff --git a/apps/admin-ui/src/user-federation/ldap/LdapSettingsConnection.tsx b/apps/admin-ui/src/user-federation/ldap/LdapSettingsConnection.tsx index 076c6975dc..0f6c6c5284 100644 --- a/apps/admin-ui/src/user-federation/ldap/LdapSettingsConnection.tsx +++ b/apps/admin-ui/src/user-federation/ldap/LdapSettingsConnection.tsx @@ -17,7 +17,7 @@ import { useTranslation } from "react-i18next"; import { useAlerts } from "../../components/alert/Alerts"; import { FormAccess } from "../../components/form-access/FormAccess"; -import { HelpItem } from "../../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import { KeycloakTextInput } from "../../components/keycloak-text-input/KeycloakTextInput"; import { PasswordInput } from "../../components/password-input/PasswordInput"; import { WizardSectionHeader } from "../../components/wizard-section-header/WizardSectionHeader"; @@ -107,7 +107,9 @@ export const LdapSettingsConnection = ({ label={t("connectionURL")} labelIcon={ } @@ -144,7 +146,7 @@ export const LdapSettingsConnection = ({ label={t("enableStartTls")} labelIcon={ } @@ -174,7 +176,7 @@ export const LdapSettingsConnection = ({ label={t("useTruststoreSpi")} labelIcon={ } @@ -208,7 +210,7 @@ export const LdapSettingsConnection = ({ label={t("connectionPooling")} labelIcon={ } @@ -237,7 +239,7 @@ export const LdapSettingsConnection = ({ label={t("connectionTimeout")} labelIcon={ } @@ -265,7 +267,7 @@ export const LdapSettingsConnection = ({ label={t("bindType")} labelIcon={ } @@ -305,7 +307,7 @@ export const LdapSettingsConnection = ({ label={t("bindDn")} labelIcon={ } @@ -334,7 +336,7 @@ export const LdapSettingsConnection = ({ label={t("bindCredentials")} labelIcon={ } diff --git a/apps/admin-ui/src/user-federation/ldap/LdapSettingsGeneral.tsx b/apps/admin-ui/src/user-federation/ldap/LdapSettingsGeneral.tsx index f041249584..032c9ae023 100644 --- a/apps/admin-ui/src/user-federation/ldap/LdapSettingsGeneral.tsx +++ b/apps/admin-ui/src/user-federation/ldap/LdapSettingsGeneral.tsx @@ -10,7 +10,7 @@ import { Controller, UseFormReturn } from "react-hook-form"; import { useTranslation } from "react-i18next"; import { FormAccess } from "../../components/form-access/FormAccess"; -import { HelpItem } from "../../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import { KeycloakTextInput } from "../../components/keycloak-text-input/KeycloakTextInput"; import { WizardSectionHeader } from "../../components/wizard-section-header/WizardSectionHeader"; import { useAdminClient, useFetch } from "../../context/auth/AdminClient"; @@ -108,7 +108,7 @@ export const LdapSettingsGeneral = ({ label={t("uiDisplayName")} labelIcon={ } @@ -154,7 +154,7 @@ export const LdapSettingsGeneral = ({ label={t("vendor")} labelIcon={ } diff --git a/apps/admin-ui/src/user-federation/ldap/LdapSettingsKerberosIntegration.tsx b/apps/admin-ui/src/user-federation/ldap/LdapSettingsKerberosIntegration.tsx index 20380cf2b2..56bff3e649 100644 --- a/apps/admin-ui/src/user-federation/ldap/LdapSettingsKerberosIntegration.tsx +++ b/apps/admin-ui/src/user-federation/ldap/LdapSettingsKerberosIntegration.tsx @@ -4,7 +4,7 @@ import { Controller, UseFormReturn, useWatch } from "react-hook-form"; import { useTranslation } from "react-i18next"; import { FormAccess } from "../../components/form-access/FormAccess"; -import { HelpItem } from "../../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import { KeycloakTextInput } from "../../components/keycloak-text-input/KeycloakTextInput"; import { WizardSectionHeader } from "../../components/wizard-section-header/WizardSectionHeader"; @@ -43,7 +43,9 @@ export const LdapSettingsKerberosIntegration = ({ label={t("allowKerberosAuthentication")} labelIcon={ } @@ -75,7 +77,7 @@ export const LdapSettingsKerberosIntegration = ({ label={t("kerberosRealm")} labelIcon={ } @@ -112,7 +114,7 @@ export const LdapSettingsKerberosIntegration = ({ label={t("serverPrincipal")} labelIcon={ } @@ -149,7 +151,7 @@ export const LdapSettingsKerberosIntegration = ({ label={t("keyTab")} labelIcon={ } @@ -184,7 +186,7 @@ export const LdapSettingsKerberosIntegration = ({ label={t("debug")} labelIcon={ } @@ -216,7 +218,9 @@ export const LdapSettingsKerberosIntegration = ({ label={t("useKerberosForPasswordAuthentication")} labelIcon={ } diff --git a/apps/admin-ui/src/user-federation/ldap/LdapSettingsSearching.tsx b/apps/admin-ui/src/user-federation/ldap/LdapSettingsSearching.tsx index a852223842..7026acac59 100644 --- a/apps/admin-ui/src/user-federation/ldap/LdapSettingsSearching.tsx +++ b/apps/admin-ui/src/user-federation/ldap/LdapSettingsSearching.tsx @@ -11,7 +11,7 @@ import { Controller, UseFormReturn } from "react-hook-form"; import { useTranslation } from "react-i18next"; import { FormAccess } from "../../components/form-access/FormAccess"; -import { HelpItem } from "../../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import { KeycloakTextInput } from "../../components/keycloak-text-input/KeycloakTextInput"; import { WizardSectionHeader } from "../../components/wizard-section-header/WizardSectionHeader"; @@ -48,7 +48,7 @@ export const LdapSettingsSearching = ({ label={t("editMode")} labelIcon={ } @@ -100,7 +100,7 @@ export const LdapSettingsSearching = ({ label={t("usersDN")} labelIcon={ } @@ -131,7 +131,7 @@ export const LdapSettingsSearching = ({ label={t("usernameLdapAttribute")} labelIcon={ } @@ -168,7 +168,7 @@ export const LdapSettingsSearching = ({ label={t("rdnLdapAttribute")} labelIcon={ } @@ -205,7 +205,7 @@ export const LdapSettingsSearching = ({ label={t("uuidLdapAttribute")} labelIcon={ } @@ -242,7 +242,7 @@ export const LdapSettingsSearching = ({ label={t("userObjectClasses")} labelIcon={ } @@ -279,7 +279,7 @@ export const LdapSettingsSearching = ({ label={t("userLdapFilter")} labelIcon={ } @@ -314,7 +314,7 @@ export const LdapSettingsSearching = ({ label={t("searchScope")} labelIcon={ } @@ -353,7 +353,7 @@ export const LdapSettingsSearching = ({ label={t("readTimeout")} labelIcon={ } @@ -371,7 +371,7 @@ export const LdapSettingsSearching = ({ label={t("pagination")} labelIcon={ } diff --git a/apps/admin-ui/src/user-federation/ldap/LdapSettingsSynchronization.tsx b/apps/admin-ui/src/user-federation/ldap/LdapSettingsSynchronization.tsx index 5f5bcd9ea9..ba54db4525 100644 --- a/apps/admin-ui/src/user-federation/ldap/LdapSettingsSynchronization.tsx +++ b/apps/admin-ui/src/user-federation/ldap/LdapSettingsSynchronization.tsx @@ -3,7 +3,7 @@ import { Controller, UseFormReturn } from "react-hook-form"; import { useTranslation } from "react-i18next"; import { FormAccess } from "../../components/form-access/FormAccess"; -import { HelpItem } from "../../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import { KeycloakTextInput } from "../../components/keycloak-text-input/KeycloakTextInput"; import { WizardSectionHeader } from "../../components/wizard-section-header/WizardSectionHeader"; @@ -39,7 +39,7 @@ export const LdapSettingsSynchronization = ({ label={t("importUsers")} labelIcon={ } @@ -69,7 +69,7 @@ export const LdapSettingsSynchronization = ({ label={t("syncRegistrations")} labelIcon={ } @@ -96,7 +96,7 @@ export const LdapSettingsSynchronization = ({ label={t("batchSize")} labelIcon={ } @@ -114,7 +114,7 @@ export const LdapSettingsSynchronization = ({ label={t("periodicFullSync")} labelIcon={ } @@ -145,7 +145,7 @@ export const LdapSettingsSynchronization = ({ label={t("fullSyncPeriod")} labelIcon={ } @@ -165,7 +165,7 @@ export const LdapSettingsSynchronization = ({ label={t("periodicChangedUsersSync")} labelIcon={ } @@ -195,7 +195,7 @@ export const LdapSettingsSynchronization = ({ label={t("changedUsersSyncPeriod")} labelIcon={ } diff --git a/apps/admin-ui/src/user-federation/ldap/mappers/LdapMapperDetails.tsx b/apps/admin-ui/src/user-federation/ldap/mappers/LdapMapperDetails.tsx index 3df2e84717..b3f7c40bfa 100644 --- a/apps/admin-ui/src/user-federation/ldap/mappers/LdapMapperDetails.tsx +++ b/apps/admin-ui/src/user-federation/ldap/mappers/LdapMapperDetails.tsx @@ -24,7 +24,7 @@ import { useAlerts } from "../../../components/alert/Alerts"; import { useConfirmDialog } from "../../../components/confirm-dialog/ConfirmDialog"; import { DynamicComponents } from "../../../components/dynamic/DynamicComponents"; import { FormAccess } from "../../../components/form-access/FormAccess"; -import { HelpItem } from "../../../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import { KeycloakSpinner } from "../../../components/keycloak-spinner/KeycloakSpinner"; import { KeycloakTextInput } from "../../../components/keycloak-text-input/KeycloakTextInput"; import { ViewHeader } from "../../../components/view-header/ViewHeader"; @@ -219,7 +219,7 @@ export default function LdapMapperDetails() { label={t("common:name")} labelIcon={ } diff --git a/apps/admin-ui/src/user-federation/shared/SettingsCache.tsx b/apps/admin-ui/src/user-federation/shared/SettingsCache.tsx index 975c21de6a..e50764f857 100644 --- a/apps/admin-ui/src/user-federation/shared/SettingsCache.tsx +++ b/apps/admin-ui/src/user-federation/shared/SettingsCache.tsx @@ -10,7 +10,7 @@ import { Controller, UseFormReturn, useWatch } from "react-hook-form"; import { useTranslation } from "react-i18next"; import { FormAccess } from "../../components/form-access/FormAccess"; -import { HelpItem } from "../../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import { WizardSectionHeader } from "../../components/wizard-section-header/WizardSectionHeader"; import useToggle from "../../utils/useToggle"; @@ -79,7 +79,7 @@ const CacheFields = ({ form }: { form: UseFormReturn }) => { label={t("cachePolicy")} labelIcon={ } @@ -117,7 +117,7 @@ const CacheFields = ({ form }: { form: UseFormReturn }) => { label={t("evictionDay")} labelIcon={ } @@ -175,7 +175,7 @@ const CacheFields = ({ form }: { form: UseFormReturn }) => { label={t("evictionHour")} labelIcon={ } @@ -207,7 +207,7 @@ const CacheFields = ({ form }: { form: UseFormReturn }) => { label={t("evictionMinute")} labelIcon={ } @@ -242,7 +242,7 @@ const CacheFields = ({ form }: { form: UseFormReturn }) => { label={t("maxLifespan")} labelIcon={ } diff --git a/apps/admin-ui/src/user/UserCredentials.tsx b/apps/admin-ui/src/user/UserCredentials.tsx index 8f7bccb7d4..a4d2d4c2bd 100644 --- a/apps/admin-ui/src/user/UserCredentials.tsx +++ b/apps/admin-ui/src/user/UserCredentials.tsx @@ -26,7 +26,7 @@ import { useTranslation } from "react-i18next"; import { useAlerts } from "../components/alert/Alerts"; import { ListEmptyState } from "../components/list-empty-state/ListEmptyState"; import { useAdminClient, useFetch } from "../context/auth/AdminClient"; -import { HelpItem } from "../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import { useConfirmDialog } from "../components/confirm-dialog/ConfirmDialog"; import type CredentialRepresentation from "@keycloak/keycloak-admin-client/lib/defs/credentialRepresentation"; import { ResetPasswordDialog } from "./user-credentials/ResetPasswordDialog"; @@ -380,7 +380,7 @@ export const UserCredentials = ({ user }: UserCredentialsProps) => { diff --git a/apps/admin-ui/src/user/UserForm.tsx b/apps/admin-ui/src/user/UserForm.tsx index ff70301757..af9f6a7a9e 100644 --- a/apps/admin-ui/src/user/UserForm.tsx +++ b/apps/admin-ui/src/user/UserForm.tsx @@ -22,7 +22,7 @@ import { useNavigate } from "react-router-dom"; import { useAlerts } from "../components/alert/Alerts"; import { FormAccess } from "../components/form-access/FormAccess"; import { GroupPickerDialog } from "../components/group/GroupPickerDialog"; -import { HelpItem } from "../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import { KeycloakTextInput } from "../components/keycloak-text-input/KeycloakTextInput"; import { useAccess } from "../context/access/Access"; import { useAdminClient, useFetch } from "../context/auth/AdminClient"; @@ -55,7 +55,7 @@ const EmailVerified = () => { helperTextInvalid={t("common:required")} labelIcon={ } @@ -240,7 +240,7 @@ export const UserForm = ({ helperTextInvalid={t("common:required")} labelIcon={ } @@ -288,7 +288,7 @@ export const UserForm = ({ label={t("federationLink")} labelIcon={ } @@ -366,7 +366,7 @@ export const UserForm = ({ fieldId="temporaryLocked" labelIcon={ } @@ -392,7 +392,7 @@ export const UserForm = ({ validated={errors.requiredActions ? "error" : "default"} helperTextInvalid={t("common:required")} labelIcon={ - + } > { @@ -34,7 +34,7 @@ export const CredentialsResetActionMultiSelect = () => { label={t("resetActions")} labelIcon={ } diff --git a/apps/admin-ui/src/user/user-credentials/LifespanField.tsx b/apps/admin-ui/src/user/user-credentials/LifespanField.tsx index 1a6f28d7c0..44b0ee817d 100644 --- a/apps/admin-ui/src/user/user-credentials/LifespanField.tsx +++ b/apps/admin-ui/src/user/user-credentials/LifespanField.tsx @@ -2,7 +2,7 @@ import { FormGroup } from "@patternfly/react-core"; import { Controller, useFormContext } from "react-hook-form"; import { useTranslation } from "react-i18next"; -import { HelpItem } from "../../components/help-enabler/HelpItem"; +import { HelpItem } from "ui-shared"; import { TimeSelector } from "../../components/time-selector/TimeSelector"; import { credResetFormDefaultValues } from "./ResetCredentialDialog"; @@ -16,7 +16,10 @@ export const LifespanField = () => { label={t("lifespan")} isStack labelIcon={ - + } > } diff --git a/libs/ui-shared/src/context/HelpContext.tsx b/libs/ui-shared/src/context/HelpContext.tsx new file mode 100644 index 0000000000..dd84c13995 --- /dev/null +++ b/libs/ui-shared/src/context/HelpContext.tsx @@ -0,0 +1,30 @@ +import { PropsWithChildren } from "react"; +import { createNamedContext } from "../utils/createNamedContext"; +import { useRequiredContext } from "../utils/useRequiredContext"; +import { useStoredState } from "../utils/useStoredState"; + +type HelpContextProps = { + enabled: boolean; + toggleHelp: () => void; +}; + +export const HelpContext = createNamedContext( + "HelpContext", + undefined +); + +export const useHelp = () => useRequiredContext(HelpContext); + +export const Help = ({ children }: PropsWithChildren) => { + const [enabled, setHelp] = useStoredState(localStorage, "helpEnabled", true); + + function toggleHelp() { + setHelp(!enabled); + } + + return ( + + {children} + + ); +}; diff --git a/apps/admin-ui/src/components/help-enabler/HelpItem.tsx b/libs/ui-shared/src/controls/HelpItem.tsx similarity index 62% rename from apps/admin-ui/src/components/help-enabler/HelpItem.tsx rename to libs/ui-shared/src/controls/HelpItem.tsx index f6276ca598..823ea39357 100644 --- a/apps/admin-ui/src/components/help-enabler/HelpItem.tsx +++ b/libs/ui-shared/src/controls/HelpItem.tsx @@ -1,8 +1,7 @@ import { Popover } from "@patternfly/react-core"; import { HelpIcon } from "@patternfly/react-icons"; -import { isValidElement, ReactNode } from "react"; -import { useTranslation } from "react-i18next"; -import { useHelp } from "./HelpHeader"; +import { ReactNode } from "react"; +import { useHelp } from "../context/HelpContext"; type HelpItemProps = { helpText: string | ReactNode; @@ -17,19 +16,14 @@ export const HelpItem = ({ noVerticalAlign = true, unWrap = false, }: HelpItemProps) => { - const { t } = useTranslation(); const { enabled } = useHelp(); return enabled ? ( - + <> {!unWrap && (