diff --git a/src/App.jsx b/src/App.jsx
index c516cb81a..9611bdde2 100644
--- a/src/App.jsx
+++ b/src/App.jsx
@@ -1,44 +1,47 @@
-import React from 'react';
+import React, { useState } from 'react';
import 'bulma/css/bulma.css';
import '@fortawesome/fontawesome-free/css/all.css';
import './App.scss';
+import { Tabs } from './components/Tabs/Tabs';
+
export const tabs = [
{ id: 'tab-1', title: 'Tab 1', content: 'Some text 1' },
{ id: 'tab-2', title: 'Tab 2', content: 'Some text 2' },
{ id: 'tab-3', title: 'Tab 3', content: 'Some text 3' },
];
-export const App = () => (
-
-
Selected tab is Tab 1
-
-
-
-
-
- Some text 1
-
+function getSelectedTabTitle(tabsList, tabId) {
+ const getTabTitle = tabsList.find(tab => tab.id === tabId);
+
+ return getTabTitle.title;
+}
+
+export const App = () => {
+ const [activeTabId, setActiveTabId] = useState(tabs[0].id);
+ const selectedTab = getSelectedTabTitle(tabs, activeTabId);
+
+ function setNewActiveTab(tabId) {
+ const isInTabs = tabs.find(tab => tab.id === tabId);
+
+ if (isInTabs === undefined) {
+ setActiveTabId(tabs[0].id);
+
+ return;
+ }
+
+ setActiveTabId(tabId);
+ }
+
+ return (
+
+
Selected tab is {selectedTab}
+
+ setNewActiveTab(tabId)}
+ />
-
-);
+ );
+};
diff --git a/src/components/Tab/Tab.jsx b/src/components/Tab/Tab.jsx
new file mode 100644
index 000000000..c603195c5
--- /dev/null
+++ b/src/components/Tab/Tab.jsx
@@ -0,0 +1,22 @@
+import classNames from 'classnames';
+
+export const Tab = ({ tab, activeTabId, onTabSelected }) => {
+ return (
+
+ {
+ if (activeTabId !== tab.id) {
+ onTabSelected(tab.id);
+ }
+ }}
+ data-cy="TabLink"
+ >
+ {tab.title}
+
+
+ );
+};
diff --git a/src/components/Tab/index.js b/src/components/Tab/index.js
new file mode 100644
index 000000000..2e2986cb5
--- /dev/null
+++ b/src/components/Tab/index.js
@@ -0,0 +1 @@
+export * from './Tab';
diff --git a/src/components/Tabs/Tabs.jsx b/src/components/Tabs/Tabs.jsx
index 4b321a091..9a3dce9ec 100644
--- a/src/components/Tabs/Tabs.jsx
+++ b/src/components/Tabs/Tabs.jsx
@@ -1 +1,46 @@
-export const Tabs = () => {};
+import { Tab } from '../Tab';
+
+export const Tabs = ({ tabs, activeTabId, onTabSelected }) => {
+ const getSelectedTabContent = (tabsList, tabId) => {
+ const getTabContent = tabsList.find(tab => tab.id === tabId);
+
+ return getTabContent.content;
+ };
+
+ function checkAvailableTabId(id) {
+ const isInTabs = tabs.find(tab => tab.id === id);
+
+ if (isInTabs === undefined) {
+ return tabs[0].id;
+ }
+
+ return id;
+ }
+
+ const selectedTabContent = getSelectedTabContent(
+ tabs,
+ checkAvailableTabId(activeTabId),
+ );
+
+ return (
+
+
+
+ {tabs.map(tab => (
+
+ ))}
+
+
+
+
+ {selectedTabContent}
+
+
+ );
+};