diff --git a/js/CODING_GUIDELINES.md b/js/CODING_GUIDELINES.md index 7196ee6317..fbe3def221 100644 --- a/js/CODING_GUIDELINES.md +++ b/js/CODING_GUIDELINES.md @@ -141,28 +141,28 @@ For the Admin UI, we modify the PatternFly convention to namespace the classes a **Example of a CSS custom property** ```css // Modify the height of the brand image ---keycloak-admin--brand--Height: var(--pf-global--spacer--xl); +--keycloak-admin--brand--Height: var(--pf-v5-global--spacer--xl); ``` **Example** ```css // Don’t increase specificity // Don’t use pixel values -.keycloak-admin--manage-columns__modal .pf-c-dropdown { +.keycloak-admin--manage-columns__modal .pf-v5-c-dropdown { margin-bottom: 24px } // Do use a new class // Do use a PatternFly global spacer variable .keycloak-admin--manage-columns__dropdown { - margin-bottom: var(--pf-global--spacer--xl); + margin-bottom: var(--pf-v5-global--spacer--xl); } ``` ### Using utility classes Utility classes can be used to add specific styling to a component, such as margin-bottom or padding. However, their use should be limited to one-off styling needs. -For example, instead of using the utility class for margin-right multiple times, we should define a new Admin UI class that adds this *margin-right: var(--pf-global--spacer--sm);* and in this example, the new class can set the color appropriately as well. +For example, instead of using the utility class for margin-right multiple times, we should define a new Admin UI class that adds this *margin-right: var(--pf-v5-global--spacer--sm);* and in this example, the new class can set the color appropriately as well. **Using a utility class ** ```css @@ -171,8 +171,8 @@ switch (titleStatus) { return ( <> {" "} {titleText}{" "} @@ -181,8 +181,8 @@ switch (titleStatus) { return ( <> {" "} {titleText}{" "} diff --git a/js/apps/account-ui/package.json b/js/apps/account-ui/package.json index e1763f4fa2..25f03839e9 100644 --- a/js/apps/account-ui/package.json +++ b/js/apps/account-ui/package.json @@ -17,10 +17,10 @@ "test": "wireit" }, "dependencies": { - "@patternfly/patternfly": "^4.224.5", - "@patternfly/react-core": "^4.278.0", - "@patternfly/react-icons": "^4.93.7", - "@patternfly/react-table": "^4.113.6", + "@patternfly/patternfly": "^5.2.1", + "@patternfly/react-core": "^5.2.3", + "@patternfly/react-icons": "^5.2.1", + "@patternfly/react-table": "^5.2.4", "i18next": "^23.10.1", "i18next-http-backend": "^2.5.0", "keycloak-js": "workspace:*", diff --git a/js/apps/account-ui/src/account-security/AccountRow.tsx b/js/apps/account-ui/src/account-security/AccountRow.tsx index aa2bd1b56e..b8d7c67889 100644 --- a/js/apps/account-ui/src/account-security/AccountRow.tsx +++ b/js/apps/account-ui/src/account-security/AccountRow.tsx @@ -5,6 +5,7 @@ import { DataListItem, DataListItemCells, DataListItemRow, + Icon, Label, Split, SplitItem, @@ -12,6 +13,7 @@ import { import { LinkIcon, UnlinkIcon } from "@patternfly/react-icons"; import { useTranslation } from "react-i18next"; import { IconMapper, useAlerts } from "ui-shared"; + import { linkAccount, unLinkAccount } from "../api/methods"; import { LinkedAccountRepresentation } from "../api/representations"; import { useEnvironment } from "../root/KeycloakContext"; @@ -64,10 +66,10 @@ export const AccountRow = ({ dataListCells={[ - + - + {account.displayName} @@ -76,7 +78,7 @@ export const AccountRow = ({ , - + , - + {account.linkedUsername} @@ -107,7 +109,10 @@ export const AccountRow = ({ variant="link" onClick={() => unLink(account)} > - {t("unLink")} + + + {" "} + {t("unLink")} )} {!isLinked && ( @@ -116,7 +121,10 @@ export const AccountRow = ({ variant="link" onClick={() => link(account)} > - {t("link")} + + + {" "} + {t("link")} )} diff --git a/js/apps/account-ui/src/account-security/DeviceActivity.tsx b/js/apps/account-ui/src/account-security/DeviceActivity.tsx index fa333a3c5b..70795611dc 100644 --- a/js/apps/account-ui/src/account-security/DeviceActivity.tsx +++ b/js/apps/account-ui/src/account-security/DeviceActivity.tsx @@ -110,7 +110,7 @@ export const DeviceActivity = () => { title={t("deviceActivity")} description={t("signedInDevicesExplanation")} > - + {t("signedInDevices")} @@ -149,14 +149,14 @@ export const DeviceActivity = () => { <DataListItemRow key={device.id} data-testid={`row-${index}`}> <DataListContent aria-label="device-sessions-content" - className="pf-u-flex-grow-1" + className="pf-v5-u-flex-grow-1" > <Grid hasGutter> <GridItem span={1} rowSpan={2}> {device.mobile ? <MobileAltIcon /> : <DesktopIcon />} </GridItem> <GridItem sm={8} md={9} span={10}> - <span className="pf-u-mr-md session-title"> + <span className="pf-v5-u-mr-md session-title"> {device.os.toLowerCase().includes("unknown") ? t("unknownOperatingSystem") : device.os}{" "} @@ -169,7 +169,7 @@ export const DeviceActivity = () => { )} </GridItem> <GridItem - className="pf-u-text-align-right" + className="pf-v5-u-text-align-right" sm={3} md={2} span={1} diff --git a/js/apps/account-ui/src/account-security/LinkedAccounts.tsx b/js/apps/account-ui/src/account-security/LinkedAccounts.tsx index bae3068d69..b526f8f4f6 100644 --- a/js/apps/account-ui/src/account-security/LinkedAccounts.tsx +++ b/js/apps/account-ui/src/account-security/LinkedAccounts.tsx @@ -38,7 +38,7 @@ export const LinkedAccounts = () => { > <Stack hasGutter> <StackItem> - <Title headingLevel="h2" className="pf-u-mb-lg" size="xl"> + <Title headingLevel="h2" className="pf-v5-u-mb-lg" size="xl"> {t("linkedLoginProviders")} @@ -57,7 +57,11 @@ export const LinkedAccounts = () => { - + <Title + headingLevel="h2" + className="pf-v5-u-mt-xl pf-v5-u-mb-lg" + size="xl" + > {t("unlinkedLoginProviders")} diff --git a/js/apps/account-ui/src/account-security/SigningIn.tsx b/js/apps/account-ui/src/account-security/SigningIn.tsx index b49e75ddec..81a9ceba30 100644 --- a/js/apps/account-ui/src/account-security/SigningIn.tsx +++ b/js/apps/account-ui/src/account-security/SigningIn.tsx @@ -6,15 +6,17 @@ import { DataListItem, DataListItemCells, DataListItemRow, - Dropdown, - DropdownItem, - KebabToggle, PageSection, Spinner, Split, SplitItem, Title, } from "@patternfly/react-core"; +import { + Dropdown, + DropdownItem, + KebabToggle, +} from "@patternfly/react-core/deprecated"; import { CSSProperties, useState } from "react"; import { Trans, useTranslation } from "react-i18next"; import { ContinueCancelModal, useAlerts } from "ui-shared"; @@ -44,8 +46,8 @@ const MobileLink = ({ title, onClick, testid }: MobileLinkProps) => { } - className="pf-u-display-none-on-lg" + toggle={ setOpen(val)} />} + className="pf-v5-u-display-none-on-lg" isOpen={open} dropdownItems={[ @@ -56,7 +58,7 @@ const MobileLink = ({ title, onClick, testid }: MobileLinkProps) => { + {error && } ); }; diff --git a/js/apps/admin-ui/src/authentication/policies/WebauthnPolicy.tsx b/js/apps/admin-ui/src/authentication/policies/WebauthnPolicy.tsx index 5f2ccf3d70..b7c912524c 100644 --- a/js/apps/admin-ui/src/authentication/policies/WebauthnPolicy.tsx +++ b/js/apps/admin-ui/src/authentication/policies/WebauthnPolicy.tsx @@ -7,10 +7,10 @@ import { FormGroup, PageSection, Popover, - SelectVariant, Text, TextContent, } from "@patternfly/react-core"; +import { SelectVariant } from "@patternfly/react-core/deprecated"; import { QuestionCircleIcon } from "@patternfly/react-icons"; import { useEffect } from "react"; import { FormProvider, useForm } from "react-hook-form"; diff --git a/js/apps/admin-ui/src/authentication/policies/otp-policy.css b/js/apps/admin-ui/src/authentication/policies/otp-policy.css index 7d38a7cd03..f7be442f4b 100644 --- a/js/apps/admin-ui/src/authentication/policies/otp-policy.css +++ b/js/apps/admin-ui/src/authentication/policies/otp-policy.css @@ -1,15 +1,15 @@ .keycloak__otp_policies_authentication__policy-type { display: inline-grid; - padding-right: var(--pf-global--spacer--lg); + padding-right: var(--pf-v5-global--spacer--lg); } .keycloak__otp_policies_authentication__number-of-digits { display: inline-grid; - padding-right: var(--pf-global--spacer--lg); + padding-right: var(--pf-v5-global--spacer--lg); } @media (min-width: 768px) { - .keycloak__otp_policies_authentication__form .pf-c-form__group { - --pf-c-form--m-horizontal__group-label--md--GridColumnWidth: 11rem; + .keycloak__otp_policies_authentication__form .pf-v5-c-form__group { + --pf-v5-c-form--m-horizontal__group-label--md--GridColumnWidth: 11rem; } } diff --git a/js/apps/admin-ui/src/authentication/policies/policy-row.css b/js/apps/admin-ui/src/authentication/policies/policy-row.css index 4fe6830c73..e1d7550d7a 100644 --- a/js/apps/admin-ui/src/authentication/policies/policy-row.css +++ b/js/apps/admin-ui/src/authentication/policies/policy-row.css @@ -1,12 +1,12 @@ @media (min-width: 768px) { - .keycloak__policies_authentication__form .pf-c-form__group { - --pf-c-form--m-horizontal__group-label--md--GridColumnWidth: 10rem; + .keycloak__policies_authentication__form .pf-v5-c-form__group { + --pf-v5-c-form--m-horizontal__group-label--md--GridColumnWidth: 10rem; } } .keycloak__policies_authentication__minus-icon svg { - color: var(--pf-c-button--m-plain--Color); + color: var(--pf-v5-c-button--m-plain--Color); } .keycloak__policies_authentication__number-field { - --pf-c-number-input--c-form-control--Width: 10ch; + --pf-v5-c-number-input--c-form-control--Width: 10ch; } \ No newline at end of file diff --git a/js/apps/admin-ui/src/authentication/policies/webauthn-policy.css b/js/apps/admin-ui/src/authentication/policies/webauthn-policy.css index 0251c0016c..479ebf670d 100644 --- a/js/apps/admin-ui/src/authentication/policies/webauthn-policy.css +++ b/js/apps/admin-ui/src/authentication/policies/webauthn-policy.css @@ -1,5 +1,5 @@ @media (min-width: 768px) { - .keycloak__webauthn_policies_authentication__form .pf-c-form__group { - --pf-c-form--m-horizontal__group-label--md--GridColumnWidth: 10rem; + .keycloak__webauthn_policies_authentication__form .pf-v5-c-form__group { + --pf-v5-c-form--m-horizontal__group-label--md--GridColumnWidth: 10rem; } } diff --git a/js/apps/admin-ui/src/client-scopes/ChangeTypeDropdown.tsx b/js/apps/admin-ui/src/client-scopes/ChangeTypeDropdown.tsx index 840c6a0319..63cab6264a 100644 --- a/js/apps/admin-ui/src/client-scopes/ChangeTypeDropdown.tsx +++ b/js/apps/admin-ui/src/client-scopes/ChangeTypeDropdown.tsx @@ -1,4 +1,5 @@ -import { AlertVariant, Select } from "@patternfly/react-core"; +import { AlertVariant } from "@patternfly/react-core"; +import { Select } from "@patternfly/react-core/deprecated"; import { useState } from "react"; import { useTranslation } from "react-i18next"; @@ -36,7 +37,7 @@ export const ChangeTypeDropdown = ({ selections={[]} isDisabled={selectedRows.length === 0} placeholderText={t("changeTypeTo")} - onToggle={setOpen} + onToggle={(_event, val) => setOpen(val)} onSelect={async (_, value) => { try { await Promise.all( diff --git a/js/apps/admin-ui/src/client-scopes/ClientScopesSection.tsx b/js/apps/admin-ui/src/client-scopes/ClientScopesSection.tsx index dffc8605b5..1d49d6ca9b 100644 --- a/js/apps/admin-ui/src/client-scopes/ClientScopesSection.tsx +++ b/js/apps/admin-ui/src/client-scopes/ClientScopesSection.tsx @@ -2,12 +2,14 @@ import { AlertVariant, Button, ButtonVariant, - Dropdown, - DropdownItem, - KebabToggle, PageSection, ToolbarItem, } from "@patternfly/react-core"; +import { + Dropdown, + DropdownItem, + KebabToggle, +} from "@patternfly/react-core/deprecated"; import { cellWidth } from "@patternfly/react-table"; import { useState } from "react"; import { useTranslation } from "react-i18next"; @@ -191,7 +193,7 @@ export default function ClientScopesSection() { subKey="clientScopeExplain" helpUrl={helpUrls.clientScopesUrl} /> - + } + toggle={ + setKebabOpen(val)} + /> + } isOpen={kebabOpen} isPlain dropdownItems={[ diff --git a/js/apps/admin-ui/src/client-scopes/CreateClientScope.tsx b/js/apps/admin-ui/src/client-scopes/CreateClientScope.tsx index 982cad98d4..715e1e228b 100644 --- a/js/apps/admin-ui/src/client-scopes/CreateClientScope.tsx +++ b/js/apps/admin-ui/src/client-scopes/CreateClientScope.tsx @@ -56,7 +56,7 @@ export default function CreateClientScope() { return ( <> - + diff --git a/js/apps/admin-ui/src/client-scopes/EditClientScope.tsx b/js/apps/admin-ui/src/client-scopes/EditClientScope.tsx index d0f88137e7..d9a5ea319d 100644 --- a/js/apps/admin-ui/src/client-scopes/EditClientScope.tsx +++ b/js/apps/admin-ui/src/client-scopes/EditClientScope.tsx @@ -6,11 +6,11 @@ import { Alert, AlertVariant, ButtonVariant, - DropdownItem, PageSection, Tab, TabTitleText, } from "@patternfly/react-core"; +import { DropdownItem } from "@patternfly/react-core/deprecated"; import { useState } from "react"; import { useTranslation } from "react-i18next"; import { useNavigate } from "react-router-dom"; @@ -234,7 +234,7 @@ export default function EditClientScope() { divider={false} /> - + { > {!isBuiltIn && ( { + onSelectDataListItem={(_event, id) => { const mapper = protocolMappers.find((mapper) => mapper.id === id); props.onConfirm(mapper!); props.toggleDialog(); diff --git a/js/apps/admin-ui/src/client-scopes/details/MapperList.tsx b/js/apps/admin-ui/src/client-scopes/details/MapperList.tsx index 9cf04cb05d..2fd6f6ef48 100644 --- a/js/apps/admin-ui/src/client-scopes/details/MapperList.tsx +++ b/js/apps/admin-ui/src/client-scopes/details/MapperList.tsx @@ -2,7 +2,11 @@ import { useEffect, useState } from "react"; import { useTranslation } from "react-i18next"; import type { Path } from "react-router-dom"; import { Link } from "react-router-dom"; -import { Dropdown, DropdownItem, DropdownToggle } from "@patternfly/react-core"; +import { + Dropdown, + DropdownItem, + DropdownToggle, +} from "@patternfly/react-core/deprecated"; import { CaretDownIcon } from "@patternfly/react-icons"; import type ClientRepresentation from "@keycloak/keycloak-admin-client/lib/defs/clientRepresentation"; @@ -112,7 +116,7 @@ export const MapperList = ({ onSelect={() => setMapperAction(false)} toggle={ setMapperAction(!mapperAction)} toggleIndicator={CaretDownIcon} diff --git a/js/apps/admin-ui/src/client-scopes/details/MappingDetails.tsx b/js/apps/admin-ui/src/client-scopes/details/MappingDetails.tsx index d372ef76e4..f25cbc875b 100644 --- a/js/apps/admin-ui/src/client-scopes/details/MappingDetails.tsx +++ b/js/apps/admin-ui/src/client-scopes/details/MappingDetails.tsx @@ -5,15 +5,16 @@ import { AlertVariant, Button, ButtonVariant, - DropdownItem, FormGroup, PageSection, + TextInput, } from "@patternfly/react-core"; +import { DropdownItem } from "@patternfly/react-core/deprecated"; import { useState } from "react"; import { FormProvider, useForm } from "react-hook-form"; import { useTranslation } from "react-i18next"; import { Link, useMatch, useNavigate } from "react-router-dom"; -import { KeycloakTextInput, TextControl } from "ui-shared"; +import { TextControl } from "ui-shared"; import { adminClient } from "../../admin-client"; import { toClient } from "../../clients/routes/Client"; @@ -200,7 +201,7 @@ export default function MappingDetails() { role="manage-clients" > - { )} label={t("dynamicScope")} labelIcon={t("dynamicScopeHelp")} - onChange={(value) => { + onChange={(event, value) => { setDynamicRegex( value ? form.getValues("name") || "" : "", value, diff --git a/js/apps/admin-ui/src/client-scopes/details/SearchFilter.tsx b/js/apps/admin-ui/src/client-scopes/details/SearchFilter.tsx index 787ed7924d..0c9bd2b6fb 100644 --- a/js/apps/admin-ui/src/client-scopes/details/SearchFilter.tsx +++ b/js/apps/admin-ui/src/client-scopes/details/SearchFilter.tsx @@ -1,13 +1,13 @@ import { useState } from "react"; import { useTranslation } from "react-i18next"; +import { ToolbarItem } from "@patternfly/react-core"; import { Dropdown, DropdownItem, DropdownToggle, Select, SelectOption, - ToolbarItem, -} from "@patternfly/react-core"; +} from "@patternfly/react-core/deprecated"; import { FilterIcon } from "@patternfly/react-icons"; import { @@ -72,7 +72,10 @@ export const SearchDropdown = ({ + setSearchToggle(val)} + > {t(`clientScopeSearch.${searchType}`)} } @@ -107,7 +110,7 @@ export const SearchToolbar = ({ setOpen(val)} isOpen={open} selections={[t(`protocolTypes.${protocol}`)]} onSelect={(_, value) => { diff --git a/js/apps/admin-ui/src/clients/AdvancedTab.tsx b/js/apps/admin-ui/src/clients/AdvancedTab.tsx index d6ca87b14f..69f6c0f22d 100644 --- a/js/apps/admin-ui/src/clients/AdvancedTab.tsx +++ b/js/apps/admin-ui/src/clients/AdvancedTab.tsx @@ -70,7 +70,7 @@ export const AdvancedTab = ({ save, client }: AdvancedProps) => { }; return ( - + { isHidden: protocol !== openIdConnect, panel: ( <> - + {t("fineGrainOpenIdConnectConfigurationHelp")} { isHidden: protocol !== openIdConnect, panel: ( <> - + {t("openIdConnectCompatibilityModesHelp")} { isHidden: protocol === openIdConnect, panel: ( <> - + {t("fineGrainSamlEndpointConfigHelp")} { title: t("advancedSettings"), panel: ( <> - + {t("advancedSettings" + toUpperCase(protocol || ""))} { title: t("authenticationOverrides"), panel: ( <> - + {t("authenticationOverridesHelp")} )} /> - + { }; return ( - + { return ( { > {client.clientId} {!client.enabled && ( - + {t("disabled")} )} @@ -172,7 +172,7 @@ export default function ClientsSection() { helpUrl={helpUrls.clientsUrl} divider={false} /> - + { + onChange={(_event, value) => { field.onChange(!value); if (!value) { setValue("authorizationServicesEnabled", false); @@ -104,7 +105,7 @@ export const CapabilityConfig = ({ label={t("on")} labelOff={t("off")} isChecked={field.value && !clientAuthentication} - onChange={(value) => { + onChange={(_event, value) => { field.onChange(value); if (value) { setValue("serviceAccountsEnabled", true); @@ -129,17 +130,21 @@ export const CapabilityConfig = ({ control={control} render={({ field }) => ( - - + + + + + + )} /> @@ -151,17 +156,21 @@ export const CapabilityConfig = ({ control={control} render={({ field }) => ( - - + + + + + + )} /> @@ -173,17 +182,21 @@ export const CapabilityConfig = ({ control={control} render={({ field }) => ( - - + + + + + + )} /> @@ -195,24 +208,28 @@ export const CapabilityConfig = ({ control={control} render={({ field }) => ( - - + + + + + + )} /> @@ -227,18 +244,22 @@ export const CapabilityConfig = ({ control={control} render={({ field }) => ( - - + + + + + + )} /> @@ -253,19 +274,23 @@ export const CapabilityConfig = ({ control={control} render={({ field }) => ( - - + + + + + + )} /> diff --git a/js/apps/admin-ui/src/clients/add/LogoutPanel.tsx b/js/apps/admin-ui/src/clients/add/LogoutPanel.tsx index 689b67345a..632554be42 100644 --- a/js/apps/admin-ui/src/clients/add/LogoutPanel.tsx +++ b/js/apps/admin-ui/src/clients/add/LogoutPanel.tsx @@ -116,7 +116,7 @@ export const LogoutPanel = ({ label={t("on")} labelOff={t("off")} isChecked={field.value === "true"} - onChange={(value) => field.onChange(value.toString())} + onChange={(_event, value) => field.onChange(value.toString())} aria-label={t("backchannelLogoutSessionRequired")} /> )} @@ -145,7 +145,7 @@ export const LogoutPanel = ({ label={t("on")} labelOff={t("off")} isChecked={field.value === "true"} - onChange={(value) => field.onChange(value.toString())} + onChange={(_event, value) => field.onChange(value.toString())} aria-label={t("backchannelLogoutRevokeOfflineSessions")} /> )} diff --git a/js/apps/admin-ui/src/clients/add/NewClientForm.tsx b/js/apps/admin-ui/src/clients/add/NewClientForm.tsx index 25e40397f7..98ccf315c5 100644 --- a/js/apps/admin-ui/src/clients/add/NewClientForm.tsx +++ b/js/apps/admin-ui/src/clients/add/NewClientForm.tsx @@ -1,11 +1,9 @@ +import { AlertVariant, Button, PageSection } from "@patternfly/react-core"; import { - AlertVariant, - Button, - PageSection, Wizard, WizardContextConsumer, WizardFooter, -} from "@patternfly/react-core"; +} from "@patternfly/react-core/deprecated"; import { useState } from "react"; import { FormProvider, useForm } from "react-hook-form"; import { useTranslation } from "react-i18next"; diff --git a/js/apps/admin-ui/src/clients/advanced/AdvancedSettings.tsx b/js/apps/admin-ui/src/clients/advanced/AdvancedSettings.tsx index bca33c9eb9..0e7a42b9bc 100644 --- a/js/apps/admin-ui/src/clients/advanced/AdvancedSettings.tsx +++ b/js/apps/admin-ui/src/clients/advanced/AdvancedSettings.tsx @@ -1,12 +1,10 @@ import RealmRepresentation from "@keycloak/keycloak-admin-client/lib/defs/realmRepresentation"; +import { ActionGroup, Button, FormGroup } from "@patternfly/react-core"; import { - ActionGroup, - Button, - FormGroup, Select, SelectOption, SelectVariant, -} from "@patternfly/react-core"; +} from "@patternfly/react-core/deprecated"; import { useState } from "react"; import { Controller, useFormContext } from "react-hook-form"; import { useTranslation } from "react-i18next"; @@ -160,7 +158,7 @@ export const AdvancedSettings = ({ setOpen(val)} isOpen={open} onSelect={(_, value) => { field.onChange(value); diff --git a/js/apps/admin-ui/src/clients/authorization/AuthorizationDataModal.tsx b/js/apps/admin-ui/src/clients/authorization/AuthorizationDataModal.tsx index 59897bebe3..2e0222df2c 100644 --- a/js/apps/admin-ui/src/clients/authorization/AuthorizationDataModal.tsx +++ b/js/apps/admin-ui/src/clients/authorization/AuthorizationDataModal.tsx @@ -1,17 +1,17 @@ -import { useTranslation } from "react-i18next"; +import type AccessTokenRepresentation from "@keycloak/keycloak-admin-client/lib/defs/accessTokenRepresentation"; import { Button, Modal, ModalVariant, - TextContent, Text, + TextArea, + TextContent, TextVariants, } from "@patternfly/react-core"; +import { useTranslation } from "react-i18next"; -import type AccessTokenRepresentation from "@keycloak/keycloak-admin-client/lib/defs/accessTokenRepresentation"; -import { KeycloakTextArea } from "../../components/keycloak-text-area/KeycloakTextArea"; -import useToggle from "../../utils/useToggle"; import { prettyPrintJSON } from "../../util"; +import useToggle from "../../utils/useToggle"; type AuthorizationDataModalProps = { data: AccessTokenRepresentation; @@ -54,7 +54,7 @@ export const AuthorizationDataModal = ({ , ]} > - +