diff --git a/packages/strapi-admin/admin/src/components/Roles/CollectionTypesPermissions/index.js b/packages/strapi-admin/admin/src/components/Roles/CollectionTypesPermissions/index.js
new file mode 100644
index 0000000000..231b5caf0e
--- /dev/null
+++ b/packages/strapi-admin/admin/src/components/Roles/CollectionTypesPermissions/index.js
@@ -0,0 +1,12 @@
+import React from 'react';
+import { Padded, Flex } from '@buffetjs/core';
+
+const CollectionTypesPermissions = () => (
+
+
+ COLLECTION TYPES PERMISSIONS COMMING SOON
+
+
+);
+
+export default CollectionTypesPermissions;
diff --git a/packages/strapi-admin/admin/src/components/Roles/PluginsPermissions/index.js b/packages/strapi-admin/admin/src/components/Roles/PluginsPermissions/index.js
new file mode 100644
index 0000000000..f9489f508d
--- /dev/null
+++ b/packages/strapi-admin/admin/src/components/Roles/PluginsPermissions/index.js
@@ -0,0 +1,12 @@
+import React from 'react';
+import { Padded, Flex } from '@buffetjs/core';
+
+const PluginsPermissions = () => (
+
+
+ PLUGINS PERMISSIONS COMMING SOON
+
+
+);
+
+export default PluginsPermissions;
diff --git a/packages/strapi-admin/admin/src/components/Roles/SettingsPermissions/index.js b/packages/strapi-admin/admin/src/components/Roles/SettingsPermissions/index.js
new file mode 100644
index 0000000000..726f428d3f
--- /dev/null
+++ b/packages/strapi-admin/admin/src/components/Roles/SettingsPermissions/index.js
@@ -0,0 +1,12 @@
+import React from 'react';
+import { Padded, Flex } from '@buffetjs/core';
+
+const SettingsPermissions = () => (
+
+
+ SETTINGS PERMISSIONS COMMING SOON
+
+
+);
+
+export default SettingsPermissions;
diff --git a/packages/strapi-admin/admin/src/components/Roles/SingleTypesPermissions/index.js b/packages/strapi-admin/admin/src/components/Roles/SingleTypesPermissions/index.js
new file mode 100644
index 0000000000..f3c01edeea
--- /dev/null
+++ b/packages/strapi-admin/admin/src/components/Roles/SingleTypesPermissions/index.js
@@ -0,0 +1,12 @@
+import React from 'react';
+import { Padded, Flex } from '@buffetjs/core';
+
+const SingleTypesPermissions = () => (
+
+
+ SINGLE TYPES PERMISSIONS COMMING SOON
+
+
+);
+
+export default SingleTypesPermissions;
diff --git a/packages/strapi-admin/admin/src/components/Roles/Tabs/Tab.js b/packages/strapi-admin/admin/src/components/Roles/Tabs/Tab.js
new file mode 100644
index 0000000000..bf874e24d7
--- /dev/null
+++ b/packages/strapi-admin/admin/src/components/Roles/Tabs/Tab.js
@@ -0,0 +1,19 @@
+import styled from 'styled-components';
+
+const Tab = styled.div`
+ flex: 1;
+ padding: 1rem;
+ text-align: center;
+ ${({ isActive, theme }) =>
+ isActive
+ ? {
+ borderTop: `2px solid ${theme.main.colors.blue}`,
+ backgroundColor: theme.main.colors.white,
+ }
+ : {
+ backgroundColor: '#f2f3f4',
+ cursor: 'pointer',
+ }}
+`;
+
+export default Tab;
diff --git a/packages/strapi-admin/admin/src/components/Roles/Tabs/TabsWrapper.js b/packages/strapi-admin/admin/src/components/Roles/Tabs/TabsWrapper.js
new file mode 100644
index 0000000000..d91e491929
--- /dev/null
+++ b/packages/strapi-admin/admin/src/components/Roles/Tabs/TabsWrapper.js
@@ -0,0 +1,9 @@
+import styled from 'styled-components';
+
+const TabsWrapper = styled.div`
+ display: block;
+ border-radius: ${({ theme }) => theme.main.sizes.borderRadius};
+ box-shadow: ${({ theme }) => `0px 2px 4px 0px ${theme.main.colors.darkGrey}`};
+`;
+
+export default TabsWrapper;
diff --git a/packages/strapi-admin/admin/src/components/Roles/Tabs/index.js b/packages/strapi-admin/admin/src/components/Roles/Tabs/index.js
new file mode 100644
index 0000000000..20065ee117
--- /dev/null
+++ b/packages/strapi-admin/admin/src/components/Roles/Tabs/index.js
@@ -0,0 +1,41 @@
+import React, { useState } from 'react';
+import { Flex, Text } from '@buffetjs/core';
+import PropTypes from 'prop-types';
+
+import TabsWrapper from './TabsWrapper';
+import Tab from './Tab';
+
+const Tabs = ({ children, tabsLabel }) => {
+ const [selectedTabIndex, setSelectedTabIndex] = useState(0);
+
+ const handleSelectedTab = index => {
+ if (index !== selectedTabIndex) {
+ setSelectedTabIndex(index);
+ }
+ };
+
+ return (
+
+
+ {tabsLabel.map((tab, index) => (
+ handleSelectedTab(index)}
+ isActive={index === selectedTabIndex}
+ >
+ {tab}
+
+ ))}
+
+ {children && children[selectedTabIndex]}
+
+ );
+};
+
+Tabs.propTypes = {
+ children: PropTypes.node.isRequired,
+ tabsLabel: PropTypes.array.isRequired,
+};
+
+export default Tabs;
diff --git a/packages/strapi-admin/admin/src/components/Roles/index.js b/packages/strapi-admin/admin/src/components/Roles/index.js
index cd7f6d8a8c..21322175ef 100644
--- a/packages/strapi-admin/admin/src/components/Roles/index.js
+++ b/packages/strapi-admin/admin/src/components/Roles/index.js
@@ -1,3 +1,8 @@
export { default as RoleDescription } from './RoleDescription';
export { default as RoleListWrapper } from './RoleListWrapper';
export { default as RoleRow } from './RoleRow';
+export { default as Tabs } from './Tabs';
+export { default as SingleTypesPermissions } from './SingleTypesPermissions';
+export { default as CollectionTypesPermissions } from './CollectionTypesPermissions';
+export { default as PluginsPermissions } from './PluginsPermissions';
+export { default as SettingsPermissions } from './SettingsPermissions';
diff --git a/packages/strapi-admin/admin/src/containers/Roles/CreatePage/index.js b/packages/strapi-admin/admin/src/containers/Roles/CreatePage/index.js
index 350ded3ca2..127150443a 100644
--- a/packages/strapi-admin/admin/src/containers/Roles/CreatePage/index.js
+++ b/packages/strapi-admin/admin/src/containers/Roles/CreatePage/index.js
@@ -8,6 +8,13 @@ import FormCard from './FormCard';
import ButtonWithNumber from './ButtonWithNumber';
import InputWrapper from './InputWrapper';
import schema from './utils/schema';
+import {
+ Tabs,
+ CollectionTypesPermissions,
+ SingleTypesPermissions,
+ PluginsPermissions,
+ SettingsPermissions,
+} from '../../../components/Roles';
const CreatePage = () => {
const { formatMessage } = useIntl();
@@ -106,6 +113,15 @@ const CreatePage = () => {
+
+
+
+
+
+
+
+
+
>
)}