Skip to content
This repository has been archived by the owner on Dec 16, 2024. It is now read-only.

Commit

Permalink
Modules and Verbs detail pages (#13)
Browse files Browse the repository at this point in the history
  • Loading branch information
wesbillman authored May 1, 2023
1 parent a998131 commit e2e3672
Show file tree
Hide file tree
Showing 18 changed files with 420 additions and 189 deletions.
19 changes: 10 additions & 9 deletions console/.eslintrc.cjs
Original file line number Diff line number Diff line change
@@ -1,14 +1,15 @@
module.exports = {
env: { browser: true, es2020: true, node: true },
extends: [
"eslint:recommended",
"plugin:@typescript-eslint/recommended",
"plugin:react-hooks/recommended",
'eslint:recommended',
'plugin:@typescript-eslint/recommended',
'plugin:react-hooks/recommended'
],
parser: "@typescript-eslint/parser",
parserOptions: { ecmaVersion: "latest", sourceType: "module" },
plugins: ["react-refresh"],
parser: '@typescript-eslint/parser',
parserOptions: { ecmaVersion: 'latest', sourceType: 'module' },
plugins: ['react-refresh'],
rules: {
"react-refresh/only-export-components": "warn",
},
};
'react-refresh/only-export-components': 'warn',
semi: ['error', 'never']
}
}
7 changes: 7 additions & 0 deletions console/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -30,5 +30,12 @@
"tailwindcss": "^3.3.2",
"typescript": "^5.0.2",
"vite": "^4.3.2"
},
"prettier": {
"semi": false,
"singleQuote": true,
"trailingComma": "none",
"arrowParens": "avoid",
"endOfLine": "auto"
}
}
6 changes: 3 additions & 3 deletions console/postcss.config.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
export default {
plugins: {
tailwindcss: {},
autoprefixer: {},
},
};
autoprefixer: {}
}
}
25 changes: 17 additions & 8 deletions console/src/App.tsx
Original file line number Diff line number Diff line change
@@ -1,19 +1,28 @@
import { Route, Routes } from "react-router-dom";
import Modules from "./components/Modules";
import Logs from "./components/Logs";
import Layout from "./components/Layout";
import { Navigate, Route, Routes } from 'react-router-dom'
import Logs from './components/Logs'
import Layout from './components/Layout'
import Module from './components/Module'
import Navigation from './components/Navigation'
import ModuleList from './components/ModuleList'
import Verb from './components/Verb'

function App() {
return (
<>
<Navigation />
<Routes>
<Route path="/" element={<Layout />}>
<Route index element={<Modules />} />
<Route element={<Layout />}>
<Route path="/" element={<Navigate to="/modules" replace />} />
<Route path="modules">
<Route index element={<ModuleList />} />
<Route path={':id'} element={<Module />} />
<Route path={':moduleId/verbs/:id'} element={<Verb />} />
</Route>
<Route path="logs" element={<Logs />} />
</Route>
</Routes>
</>
);
)
}

export default App;
export default App
10 changes: 4 additions & 6 deletions console/src/components/Layout.tsx
Original file line number Diff line number Diff line change
@@ -1,15 +1,13 @@
import Navigation from "./Navigation";
import { Outlet } from "react-router-dom";
import { Outlet } from 'react-router-dom'
const Layout = () => {
return (
<div className="min-h-full">
<Navigation />
<main>
<div className="mx-auto max-w-7xl py-6 sm:px-6 lg:px-8">
<Outlet />
</div>
</main>
</div>
);
};
export default Layout;
)
}
export default Layout
150 changes: 74 additions & 76 deletions console/src/components/Logs.tsx
Original file line number Diff line number Diff line change
@@ -1,117 +1,115 @@
import { classNames } from '../utils'

const statuses = {
Completed: "text-green-400 bg-green-400/10",
Error: "text-rose-400 bg-rose-400/10",
};
Completed: 'text-green-400 bg-green-400/10',
Error: 'text-rose-400 bg-rose-400/10'
}
const activityItems = [
{
user: {
name: "Michael Foster",
name: 'Michael Foster',
imageUrl:
"https://images.unsplash.com/photo-1519244703995-f4e0f30006d5?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80",
'https://images.unsplash.com/photo-1519244703995-f4e0f30006d5?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80'
},
commit: "2d89f0c8",
branch: "main",
status: "Completed",
duration: "25s",
date: "45 minutes ago",
dateTime: "2023-01-23T11:00",
commit: '2d89f0c8',
branch: 'main',
status: 'Completed',
duration: '25s',
date: '45 minutes ago',
dateTime: '2023-01-23T11:00'
},
{
user: {
name: "Lindsay Walton",
name: 'Lindsay Walton',
imageUrl:
"https://images.unsplash.com/photo-1517841905240-472988babdf9?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80",
'https://images.unsplash.com/photo-1517841905240-472988babdf9?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80'
},
commit: "249df660",
branch: "main",
status: "Completed",
duration: "1m 32s",
date: "3 hours ago",
dateTime: "2023-01-23T09:00",
commit: '249df660',
branch: 'main',
status: 'Completed',
duration: '1m 32s',
date: '3 hours ago',
dateTime: '2023-01-23T09:00'
},
{
user: {
name: "Courtney Henry",
name: 'Courtney Henry',
imageUrl:
"https://images.unsplash.com/photo-1438761681033-6461ffad8d80?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80",
'https://images.unsplash.com/photo-1438761681033-6461ffad8d80?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80'
},
commit: "11464223",
branch: "main",
status: "Error",
duration: "1m 4s",
date: "12 hours ago",
dateTime: "2023-01-23T00:00",
commit: '11464223',
branch: 'main',
status: 'Error',
duration: '1m 4s',
date: '12 hours ago',
dateTime: '2023-01-23T00:00'
},
{
user: {
name: "Courtney Henry",
name: 'Courtney Henry',
imageUrl:
"https://images.unsplash.com/photo-1438761681033-6461ffad8d80?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80",
'https://images.unsplash.com/photo-1438761681033-6461ffad8d80?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80'
},
commit: "dad28e95",
branch: "main",
status: "Completed",
duration: "2m 15s",
date: "2 days ago",
dateTime: "2023-01-21T13:00",
commit: 'dad28e95',
branch: 'main',
status: 'Completed',
duration: '2m 15s',
date: '2 days ago',
dateTime: '2023-01-21T13:00'
},
{
user: {
name: "Michael Foster",
name: 'Michael Foster',
imageUrl:
"https://images.unsplash.com/photo-1519244703995-f4e0f30006d5?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80",
'https://images.unsplash.com/photo-1519244703995-f4e0f30006d5?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80'
},
commit: "624bc94c",
branch: "main",
status: "Completed",
duration: "1m 12s",
date: "5 days ago",
dateTime: "2023-01-18T12:34",
commit: '624bc94c',
branch: 'main',
status: 'Completed',
duration: '1m 12s',
date: '5 days ago',
dateTime: '2023-01-18T12:34'
},
{
user: {
name: "Courtney Henry",
name: 'Courtney Henry',
imageUrl:
"https://images.unsplash.com/photo-1438761681033-6461ffad8d80?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80",
'https://images.unsplash.com/photo-1438761681033-6461ffad8d80?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80'
},
commit: "e111f80e",
branch: "main",
status: "Completed",
duration: "1m 56s",
date: "1 week ago",
dateTime: "2023-01-16T15:54",
commit: 'e111f80e',
branch: 'main',
status: 'Completed',
duration: '1m 56s',
date: '1 week ago',
dateTime: '2023-01-16T15:54'
},
{
user: {
name: "Michael Foster",
name: 'Michael Foster',
imageUrl:
"https://images.unsplash.com/photo-1519244703995-f4e0f30006d5?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80",
'https://images.unsplash.com/photo-1519244703995-f4e0f30006d5?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80'
},
commit: "5e136005",
branch: "main",
status: "Completed",
duration: "3m 45s",
date: "1 week ago",
dateTime: "2023-01-16T11:31",
commit: '5e136005',
branch: 'main',
status: 'Completed',
duration: '3m 45s',
date: '1 week ago',
dateTime: '2023-01-16T11:31'
},
{
user: {
name: "Whitney Francis",
name: 'Whitney Francis',
imageUrl:
"https://images.unsplash.com/photo-1517365830460-955ce3ccd263?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80",
'https://images.unsplash.com/photo-1517365830460-955ce3ccd263?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80'
},
commit: "5c1fd07f",
branch: "main",
status: "Completed",
duration: "37s",
date: "2 weeks ago",
dateTime: "2023-01-09T08:45",
},
];

function classNames(...classes) {
return classes.filter(Boolean).join(" ");
}
commit: '5c1fd07f',
branch: 'main',
status: 'Completed',
duration: '37s',
date: '2 weeks ago',
dateTime: '2023-01-09T08:45'
}
]

export default function Logs() {
return (
Expand Down Expand Up @@ -160,7 +158,7 @@ export default function Logs() {
</tr>
</thead>
<tbody className="divide-y divide-white/5">
{activityItems.map((item) => (
{activityItems.map(item => (
<tr key={item.commit}>
<td className="py-4 pl-4 pr-8 sm:pl-6 lg:pl-8">
<div className="flex items-center gap-x-4">
Expand Down Expand Up @@ -195,7 +193,7 @@ export default function Logs() {
<div
className={classNames(
statuses[item.status],
"flex-none rounded-full p-1"
'flex-none rounded-full p-1'
)}
>
<div className="h-1.5 w-1.5 rounded-full bg-current" />
Expand All @@ -216,5 +214,5 @@ export default function Logs() {
</tbody>
</table>
</div>
);
)
}
62 changes: 62 additions & 0 deletions console/src/components/Module.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
import { useParams } from 'react-router-dom'
import { modules } from '../data/Modules'
import { classNames } from '../utils'
import { environments, statuses } from '../data/Types'
import VerbList from './VerbList'
import ModuleNotFound from './ModuleNotFound'

export default function Module() {
const { id } = useParams()
const module = modules.find(module => module.id === id?.toLocaleLowerCase())

if (module === undefined) {
return <ModuleNotFound id={id} />
}

return (
<>
<div className="relative flex items-center space-x-4 py-4">
<div className="min-w-0 flex-auto">
<div className="flex items-center gap-x-3">
<div
className={classNames(
statuses[module.status],
'flex-none rounded-full p-1'
)}
>
<div className="h-2 w-2 rounded-full bg-current" />
</div>
<h2 className="min-w-0 text-sm font-semibold leading-6 text-gray-900 dark:text-white">
<div className="flex gap-x-2">
<span className="truncate">{module.name}</span>
<span className="text-gray-400">/</span>
<span className="whitespace-nowrap">{module.language}</span>
<span className="absolute inset-0" />
</div>
</h2>
</div>
<div className="mt-3 flex items-center gap-x-2.5 text-xs leading-5 text-gray-400">
<p className="truncate">{module.description}</p>
<svg
viewBox="0 0 2 2"
className="h-0.5 w-0.5 flex-none fill-gray-300"
>
<circle cx={1} cy={1} r={1} />
</svg>
<p className="whitespace-nowrap">{module.statusText}</p>
</div>
</div>
<div
className={classNames(
environments[module.environment],
'rounded-full flex-none py-1 px-2 text-xs font-medium ring-1 ring-inset'
)}
>
{module.environment}
</div>
</div>
<h2 className="text-base font-semibold dark:text-white py-4">Verbs</h2>
<VerbList module={module} />
</>
)
}
Loading

0 comments on commit e2e3672

Please sign in to comment.