diff --git a/Components/Breadcrumbs.jsx b/Components/Breadcrumbs.jsx
new file mode 100644
index 0000000..187a3e5
--- /dev/null
+++ b/Components/Breadcrumbs.jsx
@@ -0,0 +1,7 @@
+import {spacing} from "@material-ui/system";
+import styled from "styled-components";
+import {Breadcrumbs as MuiBreadcrumbs} from "@material-ui/core";
+
+export const Breadcrumbs = styled(MuiBreadcrumbs)(spacing);
+
+export default Breadcrumbs;
diff --git a/Components/Divider.jsx b/Components/Divider.jsx
new file mode 100644
index 0000000..b283ac7
--- /dev/null
+++ b/Components/Divider.jsx
@@ -0,0 +1,7 @@
+import {spacing} from "@material-ui/system";
+import {Divider as MuiDivider} from "@material-ui/core";
+import styled from "styled-components";
+
+export const Divider = styled(MuiDivider)(spacing);
+
+export default Divider;
diff --git a/Components/Paper.jsx b/Components/Paper.jsx
new file mode 100644
index 0000000..d156053
--- /dev/null
+++ b/Components/Paper.jsx
@@ -0,0 +1,7 @@
+import styled from "styled-components";
+import {Paper as MuiPaper} from "@material-ui/core";
+import {spacing} from "@material-ui/system";
+
+export const Paper = styled(MuiPaper)(spacing);
+
+export default Paper;
diff --git a/Components/index.js b/Components/index.js
new file mode 100644
index 0000000..5731b77
--- /dev/null
+++ b/Components/index.js
@@ -0,0 +1,3 @@
+export {default as Paper} from "./Paper";
+export {default as Divider} from "./Divider";
+export {default as Breadcrumbs} from "./Breadcrumbs";
diff --git a/RepositoryDetails.js b/RepositoryDetails.js
deleted file mode 100644
index c8842b6..0000000
--- a/RepositoryDetails.js
+++ /dev/null
@@ -1,110 +0,0 @@
-import React from "react";
-import styled from "styled-components";
-
-import Helmet from 'react-helmet';
-
-import MuiPaper from "@material-ui/core/Paper";
-
-import {
- Breadcrumbs as MuiBreadcrumbs,
- Divider as MuiDivider,
- Grid,
- Link,
- Table,
- TableBody,
- TableCell,
- TableRow,
- Typography
-} from "@material-ui/core";
-
-import {spacing} from "@material-ui/system";
-import {Link as RouterLink, useParams} from "react-router-dom";
-import SupersetChart from "../components/superset/SupersetChart";
-import {person_languages_url} from "../../utils/superset";
-import {useOne} from "../../context/OneContext";
-import {useProjectsRepositoriesRead} from "../../api-client/one-api";
-
-const Paper = styled(MuiPaper)(spacing);
-
-const TableCellLabel = styled(TableCell)`
- width: 200px;
- text-align: right;
-`;
-
-
-const Divider = styled(MuiDivider)(spacing);
-
-const Breadcrumbs = styled(MuiBreadcrumbs)(spacing);
-
-const RepositoryInfo = ({repository}) => {
-
- return (
-
-
-
-
- Name
-
-
- {repository.name}
-
-
-
-
- )
-}
-
-const RepositoryDetails = () => {
- const {selectedProject} = useOne();
- let {id: repositoryId} = useParams();
-
- const {data: repository, refetch: reloadRepository} = useProjectsRepositoriesRead({
- project_pk: selectedProject ? selectedProject.id : undefined,
- repository_pk: repositoryId,
- lazy: !Boolean(selectedProject)
- });
-
- const chartUrl = repository ?
- person_languages_url('repository', repository.name)
- :
- undefined
-
- return (
-
-
-
- Repository: {repository && repository.name}
-
-
-
-
- Repositories
-
-
- {repository && repository.name}
-
-
-
-
-
-
-
- Repository info
- {repository && (
-
- )}
-
-
-
-
- Languages
-
-
-
-
-
- );
-}
-
-export default RepositoryDetails;
diff --git a/RepositoryDetails/Layout.jsx b/RepositoryDetails/Layout.jsx
new file mode 100644
index 0000000..1a812ef
--- /dev/null
+++ b/RepositoryDetails/Layout.jsx
@@ -0,0 +1,50 @@
+import {Grid, Link, Typography} from "@material-ui/core";
+import {Helmet} from "react-helmet";
+import {Link as RouterLink} from "react-router-dom";
+import {Breadcrumbs, Divider, Paper} from "../Components";
+import RepositoryInfo from "./RepositoryInfo";
+import SupersetChart from "../components/superset/SupersetChart";
+import SkeletonLoading from "./SkeletonLoading";
+
+const Layout = ({repository, selectedProject, reloadRepository, chartUrl}) => {
+ if (!repository) return ;
+ return (
+ <>
+
+
+ Repository: {repository.name}
+
+
+
+
+ Repositories
+
+
+ {repository.name}
+
+
+
+
+
+
+
+ Repository info
+
+
+
+
+
+ Languages
+
+
+
+
+ >
+ );
+};
+
+export default Layout;
diff --git a/RepositoryDetails/RepositoryDetails.js b/RepositoryDetails/RepositoryDetails.js
new file mode 100644
index 0000000..f09e5fb
--- /dev/null
+++ b/RepositoryDetails/RepositoryDetails.js
@@ -0,0 +1,33 @@
+import React from "react";
+import {useParams} from "react-router-dom";
+import {person_languages_url} from "../../utils/superset";
+import {useOne} from "../../context/OneContext";
+import {useProjectsRepositoriesRead} from "../../api-client/one-api";
+import Layout from "./Layout";
+
+const RepositoryDetails = () => {
+ const {selectedProject} = useOne();
+ const {id: repositoryId} = useParams();
+
+ const {data: repository, refetch: reloadRepository} =
+ useProjectsRepositoriesRead({
+ project_pk: selectedProject?.id,
+ repository_pk: repositoryId,
+ lazy: !selectedProject,
+ });
+
+ const chartUrl = repository
+ ? person_languages_url("repository", repository.name)
+ : undefined;
+
+ return (
+
+ );
+};
+
+export default RepositoryDetails;
diff --git a/RepositoryDetails/RepositoryInfo.jsx b/RepositoryDetails/RepositoryInfo.jsx
new file mode 100644
index 0000000..fded9ed
--- /dev/null
+++ b/RepositoryDetails/RepositoryInfo.jsx
@@ -0,0 +1,20 @@
+import {Table, TableBody, TableCell, TableRow} from "@material-ui/core";
+import styled from "styled-components";
+
+const TableCellLabel = styled(TableCell)`
+ width: 200px;
+ text-align: right;
+`;
+
+const RepositoryInfo = ({repository}) => (
+
+
+
+ Name
+ {repository.name}
+
+
+
+);
+
+export default RepositoryInfo;
diff --git a/RepositoryDetails/SkeletonLoading.jsx b/RepositoryDetails/SkeletonLoading.jsx
new file mode 100644
index 0000000..4885647
--- /dev/null
+++ b/RepositoryDetails/SkeletonLoading.jsx
@@ -0,0 +1,6 @@
+//TODO: Skeleton loading to be implemented
+const SkeletonLoading = () => {
+ return <>Here will be skeleton loading for the repository details...>;
+};
+
+export default SkeletonLoading;
diff --git a/RepositoryDetails/index.js b/RepositoryDetails/index.js
new file mode 100644
index 0000000..b59d2c6
--- /dev/null
+++ b/RepositoryDetails/index.js
@@ -0,0 +1,3 @@
+import RepositoryDetails from "./RepositoryDetails";
+
+export default RepositoryDetails;