diff --git a/.changeset/thin-pianos-smell.md b/.changeset/thin-pianos-smell.md new file mode 100644 index 00000000000..4e5e3d84656 --- /dev/null +++ b/.changeset/thin-pianos-smell.md @@ -0,0 +1,5 @@ +--- +"@wso2is/admin.applications.v1": patch +--- + +Add UI support for configuring discoverable groups for an application diff --git a/features/admin.applications.v1/components/forms/application-audience.tsx b/features/admin.applications.v1/components/forms/application-audience.tsx new file mode 100644 index 00000000000..a4599661386 --- /dev/null +++ b/features/admin.applications.v1/components/forms/application-audience.tsx @@ -0,0 +1,305 @@ +/** + * Copyright (c) 2024, WSO2 LLC. (https://www.wso2.com). + * + * WSO2 LLC. licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +import AddCircleOutlineIcon from "@mui/icons-material/AddCircleOutline"; +import DeleteIcon from "@mui/icons-material/Delete"; +import { + Autocomplete, + Chip, + Grid, + IconButton, + MenuItem, + Select, + SelectChangeEvent, + TextField, + Typography +} from "@mui/material"; +import { ApplicationManagementConstants, UserStoreProperty, getAUserStore } from "@wso2is/admin.core.v1"; +import { userstoresConfig } from "@wso2is/admin.extensions.v1"; +import { useGroupList } from "@wso2is/admin.groups.v1/api/groups"; +import { GroupsInterface } from "@wso2is/admin.groups.v1/models/groups"; +import { useUserStores } from "@wso2is/admin.userstores.v1/api"; +import { RemoteUserStoreManagerType } from "@wso2is/admin.userstores.v1/constants"; +import { UserStoreItem, UserStoreListItem, UserStorePostData } from "@wso2is/admin.userstores.v1/models/user-stores"; +import { AlertLevels, IdentifiableComponentInterface } from "@wso2is/core/models"; +import { addAlert } from "@wso2is/core/store"; +import { Hint, useDocumentation } from "@wso2is/react-components"; +import React, { useEffect, useMemo } from "react"; +import { Trans } from "react-i18next"; +import { ApplicationInterface, DiscoverableGroup } from "../../models/application"; + +interface GroupAssignmentProps extends IdentifiableComponentInterface { + application: ApplicationInterface, + discoverableGroups: DiscoverableGroup[], + setDiscoverableGroups: React.Dispatch> +} + +const GroupAssignmentRow = ({ + index, + discoverableGroup, + userStoreOptions, + handleGroupChange, + handleUserStoreChange, + handleAddRow, + handleDeleteRow, + discoverableGroups +}: { + index: number; + discoverableGroup: DiscoverableGroup; + userStoreOptions: any; + handleGroupChange: any; + handleUserStoreChange: any; + handleAddRow: any; + handleDeleteRow: any; + discoverableGroups: any +}) => { + const { + data: groupList, + isLoading: isGroupListFetchRequestLoading, + error: groupListFetchError + } = useGroupList(discoverableGroup.userStore); + + useEffect(() => { + if (!isGroupListFetchRequestLoading && groupListFetchError) { + addAlert({ + description: "Error occurred while getting user groups", + message: "Something went wrong!", + type: AlertLevels.ERROR + }); + } + }, [ isGroupListFetchRequestLoading, groupListFetchError ]); + + return ( + <> + + + + + + group.displayName) || [] } + value={ discoverableGroup.groups } + onChange={ + ( + event: React.SyntheticEvent, + newValue: any + ) => handleGroupChange(index, newValue) + } + renderTags={ (value, getTagProps) => + value.map((option, i) => ( + + )) + } + renderInput={ (params) => ( + + ) } + /> + + + + handleDeleteRow(index) } + > + + + { index === discoverableGroups.length - 1 && ( + + + + ) } + + + ); +}; + +export default function GroupAssignment({ + application, + discoverableGroups, + setDiscoverableGroups, + ["data-componentid"]: componentId = "application-audience" +}: GroupAssignmentProps) { + const { getLink } = useDocumentation(); + + const { + data: userStoreList, + isLoading: isUserStoreListFetchRequestLoading, + error: userStoreFetchError + } = useUserStores({ + filter: null, + limit: null, + offset: null, + sort: null + }); + + const userStoreOptions: UserStoreItem[] = useMemo(() => { + const storeOptions: UserStoreItem[] = [ + { + key: -1, + text: userstoresConfig.primaryUserstoreName, + value: userstoresConfig.primaryUserstoreName + } + ]; + + if (userStoreList?.length > 0) { + userStoreList.map((store: UserStoreListItem, index: number) => { + if (store.name.toUpperCase() !== userstoresConfig.primaryUserstoreName) { + getAUserStore(store.id).then((response: UserStorePostData) => { + const isDisabled: boolean = response.properties.find( + (property: UserStoreProperty) => property.name === "Disabled")?.value === "true"; + + if (!isDisabled) { + const storeOption: UserStoreItem = { + disabled: store.typeName === RemoteUserStoreManagerType.RemoteUserStoreManager, + key: index, + text: store.name, + value: store.name + }; + + storeOptions.push(storeOption); + } + }); + } + }); + } + + return storeOptions; + }, [ userStoreList ]); + + useEffect(() => { + if (!isUserStoreListFetchRequestLoading && userStoreFetchError) { + addAlert({ + description: "Error when getting the user stores", + level: AlertLevels.ERROR, + message: "Something went wrong!" + }); + } + }, [ isUserStoreListFetchRequestLoading, userStoreFetchError ]); + + const handleAddRow = () => { + setDiscoverableGroups([ ...discoverableGroups, { groups: [], userStore: "" } ]); + }; + + const handleDeleteRow = (index: number) => { + const updatedRows: DiscoverableGroup[] = discoverableGroups.filter( + (_: DiscoverableGroup, i: number) => i !== index); + + setDiscoverableGroups(updatedRows); + }; + + const handleGroupChange = (index: number, newGroups: string[]) => { + const updatedRows: DiscoverableGroup[] = [ ...discoverableGroups ]; + + updatedRows[index].groups = newGroups; + setDiscoverableGroups(updatedRows); + }; + + const handleUserStoreChange = (index: number, value: string) => { + const updatedRows: DiscoverableGroup[] = [ ...discoverableGroups ]; + + updatedRows[index].userStore = value; + setDiscoverableGroups(updatedRows); + }; + + return ( +
+ Application audience + + + { " " } + { getLink( + "develop.applications.managementApplication.selfServicePortal" + ) === undefined + ? ( + + My Account + + ) + : ( + window.open( + getLink( + "develop.applications.managementApplication" + + ".selfServicePortal" + ), + "_blank" + ) + } + > + My Account + + ) + } + + + + + + User store + + + Groups + + + + { discoverableGroups.map((discoverableGroup: DiscoverableGroup, index: number) => ( + + )) } + +
+ ); +} diff --git a/features/admin.applications.v1/components/forms/general-details-form.tsx b/features/admin.applications.v1/components/forms/general-details-form.tsx index c5f050f7fc2..7214d1c00f9 100644 --- a/features/admin.applications.v1/components/forms/general-details-form.tsx +++ b/features/admin.applications.v1/components/forms/general-details-form.tsx @@ -22,7 +22,7 @@ import { PaletteIcon } from "@oxygen-ui/react-icons"; import { ApplicationTabComponentsFilter } from "@wso2is/admin.application-templates.v1/components/application-tab-components-filter"; import { AppConstants, AppState, UIConfigInterface, history } from "@wso2is/admin.core.v1"; -import { ApplicationTabIDs, applicationConfig } from "@wso2is/admin.extensions.v1"; +import { ApplicationTabIDs, applicationConfig, userstoresConfig } from "@wso2is/admin.extensions.v1"; import { FeatureStatusLabel } from "@wso2is/admin.feature-gate.v1/models/feature-status"; import { OrganizationType } from "@wso2is/admin.organizations.v1/constants"; import { TestableComponentInterface } from "@wso2is/core/models"; @@ -42,9 +42,10 @@ import React, { FunctionComponent, ReactElement, useEffect, useMemo, useState } import { Trans, useTranslation } from "react-i18next"; import { useSelector } from "react-redux"; import { Divider, Grid } from "semantic-ui-react"; +import GroupAssignment from "./application-audience"; import { useMyAccountStatus } from "../../api/application"; import { ApplicationManagementConstants } from "../../constants/application-management"; -import { ApplicationInterface } from "../../models/application"; +import { ApplicationInterface, DiscoverableGroup } from "../../models/application"; /** * Proptypes for the applications general details form component. @@ -182,6 +183,10 @@ export const GeneralDetailsForm: FunctionComponent(discoverability); + const [ discoverableGroups, setDiscoverableGroups ] = useState([ + { groups: [], userStore: userstoresConfig.primaryUserstoreId } + ]); + const [ isMyAccountEnabled, setMyAccountStatus ] = useState(AppConstants.DEFAULT_MY_ACCOUNT_STATUS); const [ isM2MApplication, setM2MApplication ] = useState(false); @@ -223,7 +228,8 @@ export const GeneralDetailsForm: FunctionComponent - - + + + setDiscoverability(value) } - hint={ ( - setDiscoverability(value) } + hint={ ( + - { " " } - { getLink( - "develop.applications.managementApplication.selfServicePortal" - ) === undefined - ? ( - + } + tOptions={ { myAccount: "My Account" } } + > + { " " } + { getLink( + "develop.applications.managementApplication.selfServicePortal" + ) === undefined + ? ( + My Account - - ) - : ( - window.open( - getLink( - "develop.applications.managementApplication" + + ) + : ( + window.open( + getLink( + "develop.applications.managementApplication" + ".selfServicePortal" - ), - "_blank" - ) - } - > + ), + "_blank" + ) + } + > My Account - - ) - } - - ) } - width={ 16 } - /> - - + + ) + } + + ) } + width={ 16 } + /> + + + { isDiscoverable && ( + + + + + + ) } + ) : null } { diff --git a/features/admin.applications.v1/models/application.ts b/features/admin.applications.v1/models/application.ts index c97efb32c65..56f725130e6 100644 --- a/features/admin.applications.v1/models/application.ts +++ b/features/admin.applications.v1/models/application.ts @@ -263,12 +263,31 @@ export interface ApplicationAdvancedConfigurationsViewInterface { androidAttestationServiceCredentials?: string; } +/** + * Type for defining the discoverable groups for a userstore + */ +export interface DiscoverableGroup { + /** + * Userstore name + */ + userStore: string; + /** + * Groups assigned from the userstore for discoverability + */ + groups: string[]; +} + /** * Captures application related configuration. */ export interface AdvancedConfigurationsInterface { saas?: boolean; discoverableByEndUsers?: boolean; + /** + * List of groups the application is discoverable to. + * values are sent in the format "userstoreId/groupId" + */ + discoverableGroups?: DiscoverableGroup[]; certificate?: CertificateInterface; skipLoginConsent?: boolean; skipLogoutConsent?: boolean; diff --git a/features/admin.applications.v1/package.json b/features/admin.applications.v1/package.json index d16827597df..8d7a8bfb6f4 100644 --- a/features/admin.applications.v1/package.json +++ b/features/admin.applications.v1/package.json @@ -27,6 +27,7 @@ "@wso2is/admin.core.v1": "^2.35.5", "@wso2is/admin.extensions.v1": "^2.35.26", "@wso2is/admin.feature-gate.v1": "^1.4.67", + "@wso2is/admin.groups.v1": "^2.26.25", "@wso2is/admin.identity-providers.v1": "^2.26.67", "@wso2is/admin.login-flow.ai.v1": "^2.26.67", "@wso2is/admin.oidc-scopes.v1": "^2.25.67", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9dcd6de9d94..01cd2f12f83 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -2631,6 +2631,9 @@ importers: '@wso2is/admin.feature-gate.v1': specifier: ^1.4.67 version: link:../admin.feature-gate.v1 + '@wso2is/admin.groups.v1': + specifier: ^2.26.25 + version: link:../admin.groups.v1 '@wso2is/admin.identity-providers.v1': specifier: ^2.26.67 version: link:../admin.identity-providers.v1 @@ -34805,10 +34808,10 @@ snapshots: '@babel/helpers': 7.26.0 '@babel/parser': 7.26.2 '@babel/template': 7.25.9 - '@babel/traverse': 7.25.9 + '@babel/traverse': 7.25.9(supports-color@5.5.0) '@babel/types': 7.26.0 convert-source-map: 1.9.0 - debug: 4.3.7(supports-color@6.1.0) + debug: 4.3.7(supports-color@5.5.0) gensync: 1.0.0-beta.2 json5: 2.2.3 lodash: 4.17.21 @@ -34828,10 +34831,10 @@ snapshots: '@babel/helpers': 7.26.0 '@babel/parser': 7.26.2 '@babel/template': 7.25.9 - '@babel/traverse': 7.25.9 + '@babel/traverse': 7.25.9(supports-color@5.5.0) '@babel/types': 7.26.0 convert-source-map: 2.0.0 - debug: 4.3.7(supports-color@6.1.0) + debug: 4.3.7(supports-color@5.5.0) gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 @@ -34852,7 +34855,7 @@ snapshots: '@babel/helper-builder-binary-assignment-operator-visitor@7.25.9': dependencies: - '@babel/traverse': 7.25.9 + '@babel/traverse': 7.25.9(supports-color@5.5.0) '@babel/types': 7.26.0 transitivePeerDependencies: - supports-color @@ -34873,7 +34876,7 @@ snapshots: '@babel/helper-optimise-call-expression': 7.25.9 '@babel/helper-replace-supers': 7.25.9(@babel/core@7.26.0) '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 - '@babel/traverse': 7.25.9 + '@babel/traverse': 7.25.9(supports-color@5.5.0) semver: 6.3.1 transitivePeerDependencies: - supports-color @@ -34889,10 +34892,10 @@ snapshots: dependencies: '@babel/core': 7.26.0 '@babel/helper-compilation-targets': 7.25.9 - '@babel/helper-module-imports': 7.25.9 + '@babel/helper-module-imports': 7.25.9(supports-color@5.5.0) '@babel/helper-plugin-utils': 7.25.9 - '@babel/traverse': 7.25.9 - debug: 4.3.7(supports-color@6.1.0) + '@babel/traverse': 7.25.9(supports-color@5.5.0) + debug: 4.3.7(supports-color@5.5.0) lodash.debounce: 4.0.8 resolve: 1.22.8 semver: 6.3.1 @@ -34904,7 +34907,7 @@ snapshots: '@babel/core': 7.26.0 '@babel/helper-compilation-targets': 7.25.9 '@babel/helper-plugin-utils': 7.25.9 - debug: 4.3.7(supports-color@6.1.0) + debug: 4.3.7(supports-color@5.5.0) lodash.debounce: 4.0.8 resolve: 1.22.8 transitivePeerDependencies: @@ -34912,14 +34915,7 @@ snapshots: '@babel/helper-member-expression-to-functions@7.25.9': dependencies: - '@babel/traverse': 7.25.9 - '@babel/types': 7.26.0 - transitivePeerDependencies: - - supports-color - - '@babel/helper-module-imports@7.25.9': - dependencies: - '@babel/traverse': 7.25.9 + '@babel/traverse': 7.25.9(supports-color@5.5.0) '@babel/types': 7.26.0 transitivePeerDependencies: - supports-color @@ -34934,18 +34930,18 @@ snapshots: '@babel/helper-module-transforms@7.26.0(@babel/core@7.12.9)': dependencies: '@babel/core': 7.12.9 - '@babel/helper-module-imports': 7.25.9 + '@babel/helper-module-imports': 7.25.9(supports-color@5.5.0) '@babel/helper-validator-identifier': 7.25.9 - '@babel/traverse': 7.25.9 + '@babel/traverse': 7.25.9(supports-color@5.5.0) transitivePeerDependencies: - supports-color '@babel/helper-module-transforms@7.26.0(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-module-imports': 7.25.9 + '@babel/helper-module-imports': 7.25.9(supports-color@5.5.0) '@babel/helper-validator-identifier': 7.25.9 - '@babel/traverse': 7.25.9 + '@babel/traverse': 7.25.9(supports-color@5.5.0) transitivePeerDependencies: - supports-color @@ -34962,7 +34958,7 @@ snapshots: '@babel/core': 7.26.0 '@babel/helper-annotate-as-pure': 7.25.9 '@babel/helper-wrap-function': 7.25.9 - '@babel/traverse': 7.25.9 + '@babel/traverse': 7.25.9(supports-color@5.5.0) transitivePeerDependencies: - supports-color @@ -34971,20 +34967,20 @@ snapshots: '@babel/core': 7.26.0 '@babel/helper-member-expression-to-functions': 7.25.9 '@babel/helper-optimise-call-expression': 7.25.9 - '@babel/traverse': 7.25.9 + '@babel/traverse': 7.25.9(supports-color@5.5.0) transitivePeerDependencies: - supports-color '@babel/helper-simple-access@7.25.9': dependencies: - '@babel/traverse': 7.25.9 + '@babel/traverse': 7.25.9(supports-color@5.5.0) '@babel/types': 7.26.0 transitivePeerDependencies: - supports-color '@babel/helper-skip-transparent-expression-wrappers@7.25.9': dependencies: - '@babel/traverse': 7.25.9 + '@babel/traverse': 7.25.9(supports-color@5.5.0) '@babel/types': 7.26.0 transitivePeerDependencies: - supports-color @@ -34998,7 +34994,7 @@ snapshots: '@babel/helper-wrap-function@7.25.9': dependencies: '@babel/template': 7.25.9 - '@babel/traverse': 7.25.9 + '@babel/traverse': 7.25.9(supports-color@5.5.0) '@babel/types': 7.26.0 transitivePeerDependencies: - supports-color @@ -35023,7 +35019,7 @@ snapshots: dependencies: '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.25.9 - '@babel/traverse': 7.25.9 + '@babel/traverse': 7.25.9(supports-color@5.5.0) transitivePeerDependencies: - supports-color @@ -35050,7 +35046,7 @@ snapshots: dependencies: '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.25.9 - '@babel/traverse': 7.25.9 + '@babel/traverse': 7.25.9(supports-color@5.5.0) transitivePeerDependencies: - supports-color @@ -35260,14 +35256,14 @@ snapshots: '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.25.9 '@babel/helper-remap-async-to-generator': 7.25.9(@babel/core@7.26.0) - '@babel/traverse': 7.25.9 + '@babel/traverse': 7.25.9(supports-color@5.5.0) transitivePeerDependencies: - supports-color '@babel/plugin-transform-async-to-generator@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-module-imports': 7.25.9 + '@babel/helper-module-imports': 7.25.9(supports-color@5.5.0) '@babel/helper-plugin-utils': 7.25.9 '@babel/helper-remap-async-to-generator': 7.25.9(@babel/core@7.26.0) transitivePeerDependencies: @@ -35306,7 +35302,7 @@ snapshots: '@babel/helper-compilation-targets': 7.25.9 '@babel/helper-plugin-utils': 7.25.9 '@babel/helper-replace-supers': 7.25.9(@babel/core@7.26.0) - '@babel/traverse': 7.25.9 + '@babel/traverse': 7.25.9(supports-color@5.5.0) globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -35376,7 +35372,7 @@ snapshots: '@babel/core': 7.26.0 '@babel/helper-compilation-targets': 7.25.9 '@babel/helper-plugin-utils': 7.25.9 - '@babel/traverse': 7.25.9 + '@babel/traverse': 7.25.9(supports-color@5.5.0) transitivePeerDependencies: - supports-color @@ -35423,7 +35419,7 @@ snapshots: '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) '@babel/helper-plugin-utils': 7.25.9 '@babel/helper-validator-identifier': 7.25.9 - '@babel/traverse': 7.25.9 + '@babel/traverse': 7.25.9(supports-color@5.5.0) transitivePeerDependencies: - supports-color @@ -35537,7 +35533,7 @@ snapshots: dependencies: '@babel/core': 7.26.0 '@babel/helper-annotate-as-pure': 7.25.9 - '@babel/helper-module-imports': 7.25.9 + '@babel/helper-module-imports': 7.25.9(supports-color@5.5.0) '@babel/helper-plugin-utils': 7.25.9 '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.0) '@babel/types': 7.26.0 @@ -35570,7 +35566,7 @@ snapshots: '@babel/plugin-transform-runtime@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-module-imports': 7.25.9 + '@babel/helper-module-imports': 7.25.9(supports-color@5.5.0) '@babel/helper-plugin-utils': 7.25.9 babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.26.0) babel-plugin-polyfill-corejs3: 0.10.6(@babel/core@7.26.0) @@ -35782,18 +35778,6 @@ snapshots: '@babel/parser': 7.26.2 '@babel/types': 7.26.0 - '@babel/traverse@7.25.9': - dependencies: - '@babel/code-frame': 7.26.2 - '@babel/generator': 7.26.2 - '@babel/parser': 7.26.2 - '@babel/template': 7.25.9 - '@babel/types': 7.26.0 - debug: 4.3.7(supports-color@6.1.0) - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - '@babel/traverse@7.25.9(supports-color@5.5.0)': dependencies: '@babel/code-frame': 7.26.2 @@ -35992,7 +35976,7 @@ snapshots: '@emotion/babel-plugin@11.12.0': dependencies: - '@babel/helper-module-imports': 7.25.9 + '@babel/helper-module-imports': 7.25.9(supports-color@5.5.0) '@babel/runtime': 7.26.0 '@emotion/hash': 0.9.2 '@emotion/memoize': 0.9.0 @@ -36162,7 +36146,7 @@ snapshots: '@eslint/eslintrc@0.4.3': dependencies: ajv: 6.12.6 - debug: 4.3.7(supports-color@6.1.0) + debug: 4.3.7(supports-color@5.5.0) espree: 7.3.1 globals: 13.24.0 ignore: 4.0.6 @@ -36176,7 +36160,7 @@ snapshots: '@eslint/eslintrc@2.1.4': dependencies: ajv: 6.12.6 - debug: 4.3.7(supports-color@6.1.0) + debug: 4.3.7(supports-color@5.5.0) espree: 9.6.1 globals: 13.24.0 ignore: 5.3.2 @@ -36219,7 +36203,7 @@ snapshots: '@humanwhocodes/config-array@0.11.14': dependencies: '@humanwhocodes/object-schema': 2.0.3 - debug: 4.3.7(supports-color@6.1.0) + debug: 4.3.7(supports-color@5.5.0) minimatch: 3.1.2 transitivePeerDependencies: - supports-color @@ -36227,7 +36211,7 @@ snapshots: '@humanwhocodes/config-array@0.5.0': dependencies: '@humanwhocodes/object-schema': 1.2.1 - debug: 4.3.7(supports-color@6.1.0) + debug: 4.3.7(supports-color@5.5.0) minimatch: 3.1.2 transitivePeerDependencies: - supports-color @@ -37521,7 +37505,7 @@ snapshots: dependencies: '@open-draft/until': 1.0.3 '@xmldom/xmldom': 0.7.13 - debug: 4.3.7(supports-color@6.1.0) + debug: 4.3.7(supports-color@5.5.0) headers-utils: 3.0.2 outvariant: 1.4.3 strict-event-emitter: 0.2.8 @@ -38789,7 +38773,7 @@ snapshots: '@rollup/plugin-babel@5.3.1(@babel/core@7.26.0)(@types/babel__core@7.20.5)(rollup@2.79.2)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-module-imports': 7.25.9 + '@babel/helper-module-imports': 7.25.9(supports-color@5.5.0) '@rollup/pluginutils': 3.1.0(rollup@2.79.2) rollup: 2.79.2 optionalDependencies: @@ -39951,7 +39935,7 @@ snapshots: '@babel/parser': 7.26.2 '@babel/plugin-transform-react-jsx': 7.25.9(@babel/core@7.26.0) '@babel/preset-env': 7.26.0(@babel/core@7.26.0) - '@babel/traverse': 7.25.9 + '@babel/traverse': 7.25.9(supports-color@5.5.0) '@babel/types': 7.26.0 '@storybook/csf': 0.0.2--canary.4566f4d.1 '@storybook/mdx1-csf': 0.0.1(@babel/core@7.26.0) @@ -39967,7 +39951,7 @@ snapshots: dependencies: '@babel/generator': 7.26.2 '@babel/parser': 7.26.2 - '@babel/traverse': 7.25.9 + '@babel/traverse': 7.25.9(supports-color@5.5.0) '@babel/types': 7.26.0 '@storybook/csf': 0.1.11 '@storybook/types': 7.6.9 @@ -40228,7 +40212,7 @@ snapshots: '@storybook/react-docgen-typescript-plugin@1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0(typescript@4.9.5)(webpack@5.84.1(@swc/core@1.3.99(@swc/helpers@0.5.9))(esbuild@0.18.20)(webpack-cli@4.10.0))': dependencies: - debug: 4.3.7(supports-color@6.1.0) + debug: 4.3.7(supports-color@5.5.0) endent: 2.1.0 find-cache-dir: 3.3.2 flat-cache: 3.2.0 @@ -40242,7 +40226,7 @@ snapshots: '@storybook/react-docgen-typescript-plugin@1.0.6--canary.9.0c3f3b7.0(typescript@5.1.6)(webpack@5.84.1)': dependencies: - debug: 4.3.7(supports-color@6.1.0) + debug: 4.3.7(supports-color@5.5.0) endent: 2.1.0 find-cache-dir: 3.3.2 flat-cache: 3.2.0 @@ -40834,7 +40818,7 @@ snapshots: '@swc-node/sourcemap-support': 0.3.0 '@swc/core': 1.3.99(@swc/helpers@0.5.9) colorette: 2.0.20 - debug: 4.3.7(supports-color@6.1.0) + debug: 4.3.7(supports-color@5.5.0) pirates: 4.0.6 tslib: 2.8.0 typescript: 5.1.6 @@ -41598,7 +41582,7 @@ snapshots: '@typescript-eslint/type-utils': 6.5.0(eslint@7.32.0)(typescript@5.1.6) '@typescript-eslint/utils': 6.5.0(eslint@7.32.0)(typescript@5.1.6) '@typescript-eslint/visitor-keys': 6.5.0 - debug: 4.3.7(supports-color@6.1.0) + debug: 4.3.7(supports-color@5.5.0) eslint: 7.32.0 graphemer: 1.4.0 ignore: 5.3.2 @@ -41618,7 +41602,7 @@ snapshots: '@typescript-eslint/type-utils': 6.5.0(eslint@8.46.0)(typescript@4.9.5) '@typescript-eslint/utils': 6.5.0(eslint@8.46.0)(typescript@4.9.5) '@typescript-eslint/visitor-keys': 6.5.0 - debug: 4.3.7(supports-color@6.1.0) + debug: 4.3.7(supports-color@5.5.0) eslint: 8.46.0 graphemer: 1.4.0 ignore: 5.3.2 @@ -41638,7 +41622,7 @@ snapshots: '@typescript-eslint/type-utils': 6.5.0(eslint@8.46.0)(typescript@5.1.6) '@typescript-eslint/utils': 6.5.0(eslint@8.46.0)(typescript@5.1.6) '@typescript-eslint/visitor-keys': 6.5.0 - debug: 4.3.7(supports-color@6.1.0) + debug: 4.3.7(supports-color@5.5.0) eslint: 8.46.0 graphemer: 1.4.0 ignore: 5.3.2 @@ -41656,7 +41640,7 @@ snapshots: '@typescript-eslint/types': 6.5.0 '@typescript-eslint/typescript-estree': 6.5.0(typescript@5.1.6) '@typescript-eslint/visitor-keys': 6.5.0 - debug: 4.3.7(supports-color@6.1.0) + debug: 4.3.7(supports-color@5.5.0) eslint: 7.32.0 optionalDependencies: typescript: 5.1.6 @@ -41669,7 +41653,7 @@ snapshots: '@typescript-eslint/types': 6.5.0 '@typescript-eslint/typescript-estree': 6.5.0(typescript@4.9.5) '@typescript-eslint/visitor-keys': 6.5.0 - debug: 4.3.7(supports-color@6.1.0) + debug: 4.3.7(supports-color@5.5.0) eslint: 8.46.0 optionalDependencies: typescript: 4.9.5 @@ -41682,7 +41666,7 @@ snapshots: '@typescript-eslint/types': 6.5.0 '@typescript-eslint/typescript-estree': 6.5.0(typescript@5.1.6) '@typescript-eslint/visitor-keys': 6.5.0 - debug: 4.3.7(supports-color@6.1.0) + debug: 4.3.7(supports-color@5.5.0) eslint: 8.46.0 optionalDependencies: typescript: 5.1.6 @@ -41703,7 +41687,7 @@ snapshots: dependencies: '@typescript-eslint/typescript-estree': 6.5.0(typescript@5.1.6) '@typescript-eslint/utils': 6.5.0(eslint@7.32.0)(typescript@5.1.6) - debug: 4.3.7(supports-color@6.1.0) + debug: 4.3.7(supports-color@5.5.0) eslint: 7.32.0 ts-api-utils: 1.4.0(typescript@5.1.6) optionalDependencies: @@ -41715,7 +41699,7 @@ snapshots: dependencies: '@typescript-eslint/typescript-estree': 6.5.0(typescript@4.9.5) '@typescript-eslint/utils': 6.5.0(eslint@8.46.0)(typescript@4.9.5) - debug: 4.3.7(supports-color@6.1.0) + debug: 4.3.7(supports-color@5.5.0) eslint: 8.46.0 ts-api-utils: 1.4.0(typescript@4.9.5) optionalDependencies: @@ -41727,7 +41711,7 @@ snapshots: dependencies: '@typescript-eslint/typescript-estree': 6.5.0(typescript@5.1.6) '@typescript-eslint/utils': 6.5.0(eslint@8.46.0)(typescript@5.1.6) - debug: 4.3.7(supports-color@6.1.0) + debug: 4.3.7(supports-color@5.5.0) eslint: 8.46.0 ts-api-utils: 1.4.0(typescript@5.1.6) optionalDependencies: @@ -41743,7 +41727,7 @@ snapshots: dependencies: '@typescript-eslint/types': 5.62.0 '@typescript-eslint/visitor-keys': 5.62.0 - debug: 4.3.7(supports-color@6.1.0) + debug: 4.3.7(supports-color@5.5.0) globby: 11.1.0 is-glob: 4.0.3 semver: 7.6.3 @@ -41757,7 +41741,7 @@ snapshots: dependencies: '@typescript-eslint/types': 6.5.0 '@typescript-eslint/visitor-keys': 6.5.0 - debug: 4.3.7(supports-color@6.1.0) + debug: 4.3.7(supports-color@5.5.0) globby: 11.1.0 is-glob: 4.0.3 semver: 7.6.3 @@ -41771,7 +41755,7 @@ snapshots: dependencies: '@typescript-eslint/types': 6.5.0 '@typescript-eslint/visitor-keys': 6.5.0 - debug: 4.3.7(supports-color@6.1.0) + debug: 4.3.7(supports-color@5.5.0) globby: 11.1.0 is-glob: 4.0.3 semver: 7.6.3 @@ -42040,7 +42024,7 @@ snapshots: agent-base@6.0.2: dependencies: - debug: 4.3.7(supports-color@6.1.0) + debug: 4.3.7(supports-color@5.5.0) transitivePeerDependencies: - supports-color @@ -42491,7 +42475,7 @@ snapshots: '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.25.9 '@babel/plugin-syntax-typescript': 7.25.9(@babel/core@7.26.0) - '@babel/traverse': 7.25.9 + '@babel/traverse': 7.25.9(supports-color@5.5.0) transitivePeerDependencies: - supports-color @@ -42614,7 +42598,7 @@ snapshots: '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.25.9 optionalDependencies: - '@babel/traverse': 7.25.9 + '@babel/traverse': 7.25.9(supports-color@5.5.0) babel-polyfill@6.26.0: dependencies: @@ -44282,7 +44266,7 @@ snapshots: detect-port@1.6.1: dependencies: address: 1.2.2 - debug: 4.3.7(supports-color@6.1.0) + debug: 4.3.7(supports-color@5.5.0) transitivePeerDependencies: - supports-color @@ -44663,7 +44647,7 @@ snapshots: esbuild-register@3.6.0(esbuild@0.18.20): dependencies: - debug: 4.3.7(supports-color@6.1.0) + debug: 4.3.7(supports-color@5.5.0) esbuild: 0.18.20 transitivePeerDependencies: - supports-color @@ -45024,7 +45008,7 @@ snapshots: ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 - debug: 4.3.7(supports-color@6.1.0) + debug: 4.3.7(supports-color@5.5.0) doctrine: 3.0.0 enquirer: 2.4.1 escape-string-regexp: 4.0.0 @@ -45073,7 +45057,7 @@ snapshots: ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 - debug: 4.3.7(supports-color@6.1.0) + debug: 4.3.7(supports-color@5.5.0) doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.2.2 @@ -45138,7 +45122,7 @@ snapshots: estree-to-babel@3.2.1: dependencies: - '@babel/traverse': 7.25.9 + '@babel/traverse': 7.25.9(supports-color@5.5.0) '@babel/types': 7.26.0 c8: 7.14.0 transitivePeerDependencies: @@ -46477,7 +46461,7 @@ snapshots: dependencies: '@tootallnate/once': 1.1.2 agent-base: 6.0.2 - debug: 4.3.7(supports-color@6.1.0) + debug: 4.3.7(supports-color@5.5.0) transitivePeerDependencies: - supports-color @@ -46485,7 +46469,7 @@ snapshots: dependencies: '@tootallnate/once': 2.0.0 agent-base: 6.0.2 - debug: 4.3.7(supports-color@6.1.0) + debug: 4.3.7(supports-color@5.5.0) transitivePeerDependencies: - supports-color @@ -46546,14 +46530,14 @@ snapshots: https-proxy-agent@4.0.0: dependencies: agent-base: 5.1.1 - debug: 4.3.7(supports-color@6.1.0) + debug: 4.3.7(supports-color@5.5.0) transitivePeerDependencies: - supports-color https-proxy-agent@5.0.1: dependencies: agent-base: 6.0.2 - debug: 4.3.7(supports-color@6.1.0) + debug: 4.3.7(supports-color@5.5.0) transitivePeerDependencies: - supports-color @@ -47129,7 +47113,7 @@ snapshots: istanbul-lib-source-maps@4.0.1: dependencies: - debug: 4.3.7(supports-color@6.1.0) + debug: 4.3.7(supports-color@5.5.0) istanbul-lib-coverage: 3.2.2 source-map: 0.6.1 transitivePeerDependencies: @@ -47708,7 +47692,7 @@ snapshots: jest-jasmine2@26.6.3(ts-node@10.9.1(@swc/core@1.3.99(@swc/helpers@0.5.9))(@types/node@13.13.52)(typescript@4.9.5)): dependencies: - '@babel/traverse': 7.25.9 + '@babel/traverse': 7.25.9(supports-color@5.5.0) '@jest/environment': 26.6.2 '@jest/source-map': 26.6.2 '@jest/test-result': 26.6.2 @@ -47735,7 +47719,7 @@ snapshots: jest-jasmine2@26.6.3(ts-node@10.9.1(@swc/core@1.3.99(@swc/helpers@0.5.9))(@types/node@18.11.9)(typescript@4.9.5)): dependencies: - '@babel/traverse': 7.25.9 + '@babel/traverse': 7.25.9(supports-color@5.5.0) '@jest/environment': 26.6.2 '@jest/source-map': 26.6.2 '@jest/test-result': 26.6.2 @@ -48848,7 +48832,7 @@ snapshots: log4js@4.5.1: dependencies: date-format: 2.1.0 - debug: 4.3.7(supports-color@6.1.0) + debug: 4.3.7(supports-color@5.5.0) flatted: 2.0.2 rfdc: 1.4.1 streamroller: 1.0.6 @@ -49304,7 +49288,7 @@ snapshots: micromark@4.0.0: dependencies: '@types/debug': 4.1.12 - debug: 4.3.7(supports-color@6.1.0) + debug: 4.3.7(supports-color@5.5.0) decode-named-character-reference: 1.0.2 devlop: 1.1.0 micromark-core-commonmark: 2.0.1 @@ -51119,7 +51103,7 @@ snapshots: puppeteer-core@2.1.1: dependencies: '@types/mime-types': 2.1.4 - debug: 4.3.7(supports-color@6.1.0) + debug: 4.3.7(supports-color@5.5.0) extract-zip: 1.7.0 https-proxy-agent: 4.0.0 mime: 2.6.0 @@ -51314,7 +51298,7 @@ snapshots: react-docgen@7.1.0: dependencies: '@babel/core': 7.26.0 - '@babel/traverse': 7.25.9 + '@babel/traverse': 7.25.9(supports-color@5.5.0) '@babel/types': 7.26.0 '@types/babel__core': 7.20.5 '@types/babel__traverse': 7.20.6 @@ -52519,7 +52503,7 @@ snapshots: simple-git@1.132.0: dependencies: - debug: 4.3.7(supports-color@6.1.0) + debug: 4.3.7(supports-color@5.5.0) transitivePeerDependencies: - supports-color @@ -52596,7 +52580,7 @@ snapshots: socks-proxy-agent@7.0.0: dependencies: agent-base: 6.0.2 - debug: 4.3.7(supports-color@6.1.0) + debug: 4.3.7(supports-color@5.5.0) socks: 2.8.3 transitivePeerDependencies: - supports-color @@ -52703,6 +52687,17 @@ snapshots: spdx-license-ids@3.0.20: {} + spdy-transport@3.0.0: + dependencies: + debug: 4.3.7(supports-color@5.5.0) + detect-node: 2.1.0 + hpack.js: 2.1.6 + obuf: 1.1.2 + readable-stream: 3.6.2 + wbuf: 1.7.3 + transitivePeerDependencies: + - supports-color + spdy-transport@3.0.0(supports-color@6.1.0): dependencies: debug: 4.3.7(supports-color@6.1.0) @@ -52714,6 +52709,16 @@ snapshots: transitivePeerDependencies: - supports-color + spdy@4.0.2: + dependencies: + debug: 4.3.7(supports-color@5.5.0) + handle-thing: 2.0.1 + http-deceiver: 1.2.7 + select-hose: 2.0.0 + spdy-transport: 3.0.0 + transitivePeerDependencies: + - supports-color + spdy@4.0.2(supports-color@6.1.0): dependencies: debug: 4.3.7(supports-color@6.1.0) @@ -53067,7 +53072,7 @@ snapshots: stylus@0.59.0: dependencies: '@adobe/css-tools': 4.4.0 - debug: 4.3.7(supports-color@6.1.0) + debug: 4.3.7(supports-color@5.5.0) glob: 7.2.3 sax: 1.2.4 source-map: 0.7.4 @@ -54328,7 +54333,7 @@ snapshots: selfsigned: 2.4.1 serve-index: 1.9.1(supports-color@6.1.0) sockjs: 0.3.24 - spdy: 4.0.2(supports-color@6.1.0) + spdy: 4.0.2 webpack-dev-middleware: 5.3.4(webpack@5.84.1(@swc/core@1.3.99(@swc/helpers@0.5.9))(esbuild@0.18.20)(webpack-cli@4.10.0)) ws: 8.18.0 optionalDependencies: