diff --git a/src/components/sw360/SearchMainLicenses/MainLicensesDialog.tsx b/src/components/sw360/SearchMainLicenses/MainLicensesDialog.tsx
new file mode 100644
index 00000000..4b887e33
--- /dev/null
+++ b/src/components/sw360/SearchMainLicenses/MainLicensesDialog.tsx
@@ -0,0 +1,138 @@
+// Copyright (C) TOSHIBA CORPORATION, 2023. Part of the SW360 Frontend Project.
+// Copyright (C) Toshiba Software Development (Vietnam) Co., Ltd., 2023. Part of the SW360 Frontend Project.
+
+// This program and the accompanying materials are made
+// available under the terms of the Eclipse Public License 2.0
+// which is available at https://www.eclipse.org/legal/epl-2.0/
+
+// SPDX-License-Identifier: EPL-2.0
+// License-Filename: LICENSE
+
+'use client'
+import Modal from 'react-bootstrap/Modal'
+import Button from 'react-bootstrap/Button'
+import { Session } from '@/object-types/Session'
+import ApiUtils from '@/utils/api/api.util'
+import HttpStatus from '@/object-types/enums/HttpStatus'
+import { useCallback, useEffect, useState } from 'react'
+import CommonUtils from '@/utils/common.utils'
+import { useTranslations } from 'next-intl'
+import { COMMON_NAMESPACE } from '@/object-types/Constants'
+import Licenses from '@/object-types/Licenses'
+import SelectTableMainLicenses from './SelectTableMainLicenses'
+import { LicensesType } from '@/object-types/LicensesType'
+
+interface Props {
+ show?: boolean
+ setShow?: React.Dispatch>
+ session?: Session
+ selectLicenses?: LicensesType
+}
+
+const MainLicensesDiaglog = ({ show, setShow, session, selectLicenses }: Props) => {
+ const t = useTranslations(COMMON_NAMESPACE)
+ const [data, setData] = useState([])
+ const [licenses, setLicenses] = useState([])
+ const [licensesResponse, setLicensesResponse] = useState()
+ const [licenseDatas, setLicenseDatas] = useState([])
+
+ const handleCloseDialog = () => {
+ setShow(!show)
+ }
+
+ const searchVendor = () => {
+ setLicenseDatas(data)
+ }
+
+ const fetchData: any = useCallback(async (url: string) => {
+ const response = await ApiUtils.GET(url, session.user.access_token)
+ if (response.status == HttpStatus.OK) {
+ const data = await response.json()
+ return data
+ } else {
+ return []
+ }
+ }, [])
+
+ useEffect(() => {
+ fetchData(`licenses`).then((licenses: any) => {
+ if(typeof licenses == "undefined") {
+ setData([]);
+ return;
+ }
+ if (
+ !CommonUtils.isNullOrUndefined(licenses['_embedded']) &&
+ !CommonUtils.isNullOrUndefined(licenses['_embedded']['sw360:licenses'])
+ ){
+ const data = licenses['_embedded']['sw360:licenses'].map((item: any) => [
+ item,
+ item.fullName,
+ ])
+ setData(data)
+ }
+ })
+ }, [])
+
+ const handleClickSelectModerators = () => {
+ selectLicenses(licensesResponse)
+ setShow(!show)
+ }
+
+ const getLicenses: LicensesType = useCallback((licenses: Licenses) => setLicensesResponse(licenses), [])
+
+ return (
+
+
+ {t('Search Licenses')}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ )
+}
+
+export default MainLicensesDiaglog
diff --git a/src/components/sw360/SearchMainLicenses/MainLicensesTable.tsx b/src/components/sw360/SearchMainLicenses/MainLicensesTable.tsx
new file mode 100644
index 00000000..d9fc0d86
--- /dev/null
+++ b/src/components/sw360/SearchMainLicenses/MainLicensesTable.tsx
@@ -0,0 +1,28 @@
+// Copyright (C) TOSHIBA CORPORATION, 2023. Part of the SW360 Frontend Project.
+// Copyright (C) Toshiba Software Development (Vietnam) Co., Ltd., 2023. Part of the SW360 Frontend Project.
+
+// This program and the accompanying materials are made
+// available under the terms of the Eclipse Public License 2.0
+// which is available at https://www.eclipse.org/legal/epl-2.0/
+
+// SPDX-License-Identifier: EPL-2.0
+// License-Filename: LICENSE
+
+import { memo } from 'react'
+import Table from '../Table/Table'
+
+
+interface Props {
+ data: any
+ columns: any
+}
+
+const compare = (preState: any, nextState: any) => {
+ return Object.entries(preState.data).sort().toString() === Object.entries(nextState.data).sort().toString()
+}
+
+const MainLicensesTable = memo(function LicensesTable({ columns, data }: Props) {
+ return
+}, compare)
+
+export default MainLicensesTable
diff --git a/src/components/sw360/SearchMainLicenses/SelectTableMainLicenses.tsx b/src/components/sw360/SearchMainLicenses/SelectTableMainLicenses.tsx
new file mode 100644
index 00000000..39c73ef9
--- /dev/null
+++ b/src/components/sw360/SearchMainLicenses/SelectTableMainLicenses.tsx
@@ -0,0 +1,85 @@
+// Copyright (C) TOSHIBA CORPORATION, 2023. Part of the SW360 Frontend Project.
+// Copyright (C) Toshiba Software Development (Vietnam) Co., Ltd., 2023. Part of the SW360 Frontend Project.
+
+// This program and the accompanying materials are made
+// available under the terms of the Eclipse Public License 2.0
+// which is available at https://www.eclipse.org/legal/epl-2.0/
+
+// SPDX-License-Identifier: EPL-2.0
+// License-Filename: LICENSE
+
+'use client'
+
+import { Form } from 'react-bootstrap'
+import React from 'react'
+import { Table, _ } from '@/components/sw360'
+import LicensesTable from './MainLicensesTable'
+import Licenses from '@/object-types/Licenses'
+import { LicensesType } from '@/object-types/LicensesType'
+
+interface Props {
+ licenseDatas?: any[]
+ setLicenses?: LicensesType
+ fullnames?: any[]
+}
+
+const SelectTableMainLicenses = ({ licenseDatas, setLicenses, fullnames }: Props) => {
+ const handlerRadioButton = (item: any) => {
+ if (fullnames.includes(item)) {
+ const index = fullnames.indexOf(item)
+ fullnames.splice(index, 1)
+ } else {
+ fullnames.push(item)
+ }
+ const fullNameLicenses: string[] = []
+ const licensesId: string[] = []
+ fullnames.forEach((item) => {
+ fullNameLicenses.push(item.fullName)
+ licensesId.push(handleId(item._links.self.href))
+ })
+ const licensesName: string = fullNameLicenses.join(' , ')
+ const licensesResponse: Licenses = {
+ fullName: licensesName,
+ id: licensesId,
+ }
+ setLicenses(licensesResponse)
+ }
+
+ const handleId = (id: string): string => {
+ return id.split('/').at(-1)
+ }
+
+ const columns = [
+ {
+ id: 'licenseId',
+ name: '',
+ formatter: (item: string) =>
+ _(
+ {
+ handlerRadioButton(item)
+ }}
+ >
+ ),
+ width: '5%'
+ },
+ {
+ id: 'license',
+ name: 'License',
+ sort: true,
+ width: '95%'
+ },
+ ]
+
+ return (
+ <>
+
+
+
+ >
+ )
+}
+
+export default React.memo(SelectTableMainLicenses)
diff --git a/src/object-types/LicensesType.ts b/src/object-types/LicensesType.ts
new file mode 100644
index 00000000..0f9307f4
--- /dev/null
+++ b/src/object-types/LicensesType.ts
@@ -0,0 +1,13 @@
+// Copyright (C) TOSHIBA CORPORATION, 2023. Part of the SW360 Frontend Project.
+// Copyright (C) Toshiba Software Development (Vietnam) Co., Ltd., 2023. Part of the SW360 Frontend Project.
+
+// This program and the accompanying materials are made
+// available under the terms of the Eclipse Public License 2.0
+// which is available at https://www.eclipse.org/legal/epl-2.0/
+
+// SPDX-License-Identifier: EPL-2.0
+// License-Filename: LICENSE
+
+import Licenses from "./Licenses";
+
+export type LicensesType = (licenses: Licenses) => void