diff --git a/webui/.eslintrc.js b/webui/.eslintrc.js index 7adbb8d5..2dfa7543 100644 --- a/webui/.eslintrc.js +++ b/webui/.eslintrc.js @@ -29,9 +29,13 @@ module.exports = { position: 'after', }, ], - groups: [['builtin', 'external'], 'parent', ['sibling', 'index']], + pathGroupsExcludedImportTypes: ["builtin"], + groups: [['builtin', 'external'], ['internal', 'parent'], ['sibling', 'index']], 'newlines-between': 'always', }, ], }, + settings: { + 'import/internal-regex': '^src/', + }, }; diff --git a/webui/src/App.tsx b/webui/src/App.tsx index 6f66a6ec..16663870 100644 --- a/webui/src/App.tsx +++ b/webui/src/App.tsx @@ -1,68 +1,17 @@ -import AppBar from '@material-ui/core/AppBar'; -import CssBaseline from '@material-ui/core/CssBaseline'; -import Toolbar from '@material-ui/core/Toolbar'; -import { - createMuiTheme, - ThemeProvider, - makeStyles, -} from '@material-ui/core/styles'; import React from 'react'; import { Route, Switch } from 'react-router'; -import { Link } from 'react-router-dom'; -import CurrentIdentity from './CurrentIdentity'; -import BugQuery from './bug/BugQuery'; -import ListQuery from './list/ListQuery'; - -const theme = createMuiTheme({ - palette: { - primary: { - main: '#263238', - }, - }, -}); - -const useStyles = makeStyles(theme => ({ - offset: { - ...theme.mixins.toolbar, - }, - filler: { - flexGrow: 1, - }, - appTitle: { - ...theme.typography.h6, - color: 'white', - textDecoration: 'none', - display: 'flex', - alignItems: 'center', - }, - logo: { - height: '42px', - marginRight: theme.spacing(2), - }, -})); +import Layout from './layout'; +import BugPage from './pages/bug'; +import ListPage from './pages/list'; export default function App() { - const classes = useStyles(); - return ( - - - - - - git-bug - git-bug - -
- -
-
-
+ - - + + - + ); } diff --git a/webui/src/__tests__/query.ts b/webui/src/__tests__/query.ts index 5f4b58eb..2f04817c 100644 --- a/webui/src/__tests__/query.ts +++ b/webui/src/__tests__/query.ts @@ -1,4 +1,4 @@ -import { parse, stringify, quote } from '../list/Filter'; +import { parse, stringify, quote } from 'src/pages/list/Filter'; it('parses a simple query', () => { expect(parse('foo:bar')).toEqual({ diff --git a/webui/src/apollo.ts b/webui/src/apollo.ts new file mode 100644 index 00000000..785f0e7f --- /dev/null +++ b/webui/src/apollo.ts @@ -0,0 +1,18 @@ +import ApolloClient from 'apollo-boost'; +import { + IntrospectionFragmentMatcher, + InMemoryCache, +} from 'apollo-cache-inmemory'; + +import introspectionQueryResultData from './fragmentTypes'; + +const client = new ApolloClient({ + uri: '/graphql', + cache: new InMemoryCache({ + fragmentMatcher: new IntrospectionFragmentMatcher({ + introspectionQueryResultData, + }), + }), +}); + +export default client; diff --git a/webui/src/components/Author.tsx b/webui/src/components/Author.tsx index 43fd108e..9ac1da52 100644 --- a/webui/src/components/Author.tsx +++ b/webui/src/components/Author.tsx @@ -1,6 +1,7 @@ +import React from 'react'; + import MAvatar from '@material-ui/core/Avatar'; import Tooltip from '@material-ui/core/Tooltip/Tooltip'; -import React from 'react'; import { AuthoredFragment } from './fragments.generated'; diff --git a/webui/src/components/Content/ImageTag.tsx b/webui/src/components/Content/ImageTag.tsx index bdb36873..70ee1bc0 100644 --- a/webui/src/components/Content/ImageTag.tsx +++ b/webui/src/components/Content/ImageTag.tsx @@ -1,6 +1,7 @@ -import { makeStyles } from '@material-ui/styles'; import React from 'react'; +import { makeStyles } from '@material-ui/styles'; + const useStyles = makeStyles({ tag: { maxWidth: '100%', diff --git a/webui/src/components/Content/PreTag.tsx b/webui/src/components/Content/PreTag.tsx index d3b4c273..5256ab12 100644 --- a/webui/src/components/Content/PreTag.tsx +++ b/webui/src/components/Content/PreTag.tsx @@ -1,6 +1,7 @@ -import { makeStyles } from '@material-ui/styles'; import React from 'react'; +import { makeStyles } from '@material-ui/styles'; + const useStyles = makeStyles({ tag: { maxWidth: '100%', diff --git a/webui/src/components/Date.tsx b/webui/src/components/Date.tsx index a830546c..be0f5835 100644 --- a/webui/src/components/Date.tsx +++ b/webui/src/components/Date.tsx @@ -1,8 +1,9 @@ -import Tooltip from '@material-ui/core/Tooltip/Tooltip'; import moment from 'moment'; import React from 'react'; import Moment from 'react-moment'; +import Tooltip from '@material-ui/core/Tooltip/Tooltip'; + const HOUR = 1000 * 3600; const DAY = 24 * HOUR; const WEEK = 7 * DAY; diff --git a/webui/src/components/Label.tsx b/webui/src/components/Label.tsx index 48c20096..1fb8caea 100644 --- a/webui/src/components/Label.tsx +++ b/webui/src/components/Label.tsx @@ -1,13 +1,15 @@ +import React from 'react'; + import { common } from '@material-ui/core/colors'; import { makeStyles } from '@material-ui/core/styles'; import { getContrastRatio, darken, } from '@material-ui/core/styles/colorManipulator'; -import React from 'react'; + +import { Color } from 'src/gqlTypes'; import { LabelFragment } from './fragments.generated'; -import { Color } from '../gqlTypes'; // Minimum contrast between the background and the text color const contrastThreshold = 2.5; diff --git a/webui/src/index.tsx b/webui/src/index.tsx index c64daf0c..9bdaddca 100644 --- a/webui/src/index.tsx +++ b/webui/src/index.tsx @@ -1,36 +1,19 @@ -import { createMuiTheme } from '@material-ui/core/styles'; -import ThemeProvider from '@material-ui/styles/ThemeProvider'; -import ApolloClient from 'apollo-boost'; -import { - IntrospectionFragmentMatcher, - InMemoryCache, -} from 'apollo-cache-inmemory'; import React from 'react'; import { ApolloProvider } from 'react-apollo'; import ReactDOM from 'react-dom'; import { BrowserRouter } from 'react-router-dom'; +import ThemeProvider from '@material-ui/styles/ThemeProvider'; + import App from './App'; -import introspectionQueryResultData from './fragmentTypes'; - -const theme = createMuiTheme(); - -const client = new ApolloClient({ - uri: '/graphql', - cache: new InMemoryCache({ - fragmentMatcher: new IntrospectionFragmentMatcher({ - introspectionQueryResultData, - }), - }), -}); +import apolloClient from './apollo'; +import theme from './theme'; ReactDOM.render( - + - - - + , diff --git a/webui/src/CurrentIdentity.graphql b/webui/src/layout/CurrentIdentity.graphql similarity index 100% rename from webui/src/CurrentIdentity.graphql rename to webui/src/layout/CurrentIdentity.graphql diff --git a/webui/src/CurrentIdentity.tsx b/webui/src/layout/CurrentIdentity.tsx similarity index 99% rename from webui/src/CurrentIdentity.tsx rename to webui/src/layout/CurrentIdentity.tsx index 256f44c4..21f489ef 100644 --- a/webui/src/CurrentIdentity.tsx +++ b/webui/src/layout/CurrentIdentity.tsx @@ -1,6 +1,7 @@ +import React from 'react'; + import Avatar from '@material-ui/core/Avatar'; import { makeStyles } from '@material-ui/core/styles'; -import React from 'react'; import { useCurrentIdentityQuery } from './CurrentIdentity.generated'; diff --git a/webui/src/layout/Header.tsx b/webui/src/layout/Header.tsx new file mode 100644 index 00000000..317d3e23 --- /dev/null +++ b/webui/src/layout/Header.tsx @@ -0,0 +1,50 @@ +import React from 'react'; +import { Link } from 'react-router-dom'; + +import AppBar from '@material-ui/core/AppBar'; +import Toolbar from '@material-ui/core/Toolbar'; +import { makeStyles } from '@material-ui/core/styles'; + +import CurrentIdentity from './CurrentIdentity'; + +const useStyles = makeStyles(theme => ({ + offset: { + ...theme.mixins.toolbar, + }, + filler: { + flexGrow: 1, + }, + appTitle: { + ...theme.typography.h6, + color: 'white', + textDecoration: 'none', + display: 'flex', + alignItems: 'center', + }, + logo: { + height: '42px', + marginRight: theme.spacing(2), + }, +})); + +function Header() { + const classes = useStyles(); + + return ( + <> + + + + git-bug + git-bug + +
+ +
+
+
+ + ); +} + +export default Header; diff --git a/webui/src/layout/index.tsx b/webui/src/layout/index.tsx new file mode 100644 index 00000000..42a0cfc1 --- /dev/null +++ b/webui/src/layout/index.tsx @@ -0,0 +1,18 @@ +import React from 'react'; + +import CssBaseline from '@material-ui/core/CssBaseline'; + +import Header from './Header'; + +type Props = { children: React.ReactNode }; +function Layout({ children }: Props) { + return ( + <> + +
+ {children} + + ); +} + +export default Layout; diff --git a/webui/src/bug/Bug.graphql b/webui/src/pages/bug/Bug.graphql similarity index 100% rename from webui/src/bug/Bug.graphql rename to webui/src/pages/bug/Bug.graphql diff --git a/webui/src/bug/Bug.tsx b/webui/src/pages/bug/Bug.tsx similarity index 94% rename from webui/src/bug/Bug.tsx rename to webui/src/pages/bug/Bug.tsx index 0e53e447..998c9528 100644 --- a/webui/src/bug/Bug.tsx +++ b/webui/src/pages/bug/Bug.tsx @@ -1,10 +1,11 @@ -import Typography from '@material-ui/core/Typography/Typography'; -import { makeStyles } from '@material-ui/core/styles'; import React from 'react'; -import Author from '../components/Author'; -import Date from '../components/Date'; -import Label from '../components/Label'; +import Typography from '@material-ui/core/Typography/Typography'; +import { makeStyles } from '@material-ui/core/styles'; + +import Author from 'src/components/Author'; +import Date from 'src/components/Date'; +import Label from 'src/components/Label'; import { BugFragment } from './Bug.generated'; import CommentForm from './CommentForm'; diff --git a/webui/src/bug/BugQuery.graphql b/webui/src/pages/bug/BugQuery.graphql similarity index 100% rename from webui/src/bug/BugQuery.graphql rename to webui/src/pages/bug/BugQuery.graphql diff --git a/webui/src/bug/BugQuery.tsx b/webui/src/pages/bug/BugQuery.tsx similarity index 99% rename from webui/src/bug/BugQuery.tsx rename to webui/src/pages/bug/BugQuery.tsx index 2ecf718c..2a70a2f8 100644 --- a/webui/src/bug/BugQuery.tsx +++ b/webui/src/pages/bug/BugQuery.tsx @@ -1,7 +1,8 @@ -import CircularProgress from '@material-ui/core/CircularProgress'; import React from 'react'; import { RouteComponentProps } from 'react-router-dom'; +import CircularProgress from '@material-ui/core/CircularProgress'; + import Bug from './Bug'; import { useGetBugQuery } from './BugQuery.generated'; diff --git a/webui/src/bug/CommentForm.graphql b/webui/src/pages/bug/CommentForm.graphql similarity index 100% rename from webui/src/bug/CommentForm.graphql rename to webui/src/pages/bug/CommentForm.graphql diff --git a/webui/src/bug/CommentForm.tsx b/webui/src/pages/bug/CommentForm.tsx similarity index 98% rename from webui/src/bug/CommentForm.tsx rename to webui/src/pages/bug/CommentForm.tsx index a915ecf0..3724baf0 100644 --- a/webui/src/bug/CommentForm.tsx +++ b/webui/src/pages/bug/CommentForm.tsx @@ -1,12 +1,13 @@ +import React, { useState, useRef } from 'react'; + import Button from '@material-ui/core/Button'; import Paper from '@material-ui/core/Paper'; import Tab from '@material-ui/core/Tab'; import Tabs from '@material-ui/core/Tabs'; import TextField from '@material-ui/core/TextField'; import { makeStyles, Theme } from '@material-ui/core/styles'; -import React, { useState, useRef } from 'react'; -import Content from '../components/Content'; +import Content from 'src/components/Content'; import { useAddCommentMutation } from './CommentForm.generated'; import { TimelineDocument } from './TimelineQuery.generated'; diff --git a/webui/src/bug/LabelChange.tsx b/webui/src/pages/bug/LabelChange.tsx similarity index 89% rename from webui/src/bug/LabelChange.tsx rename to webui/src/pages/bug/LabelChange.tsx index a3950524..764947ee 100644 --- a/webui/src/bug/LabelChange.tsx +++ b/webui/src/pages/bug/LabelChange.tsx @@ -1,9 +1,10 @@ -import { makeStyles } from '@material-ui/core/styles'; import React from 'react'; -import Author from '../components/Author'; -import Date from '../components/Date'; -import Label from '../components/Label'; +import { makeStyles } from '@material-ui/core/styles'; + +import Author from 'src/components/Author'; +import Date from 'src/components/Date'; +import Label from 'src/components/Label'; import { LabelChangeFragment } from './LabelChangeFragment.generated'; diff --git a/webui/src/bug/LabelChangeFragment.graphql b/webui/src/pages/bug/LabelChangeFragment.graphql similarity index 74% rename from webui/src/bug/LabelChangeFragment.graphql rename to webui/src/pages/bug/LabelChangeFragment.graphql index 01b94a98..82d41235 100644 --- a/webui/src/bug/LabelChangeFragment.graphql +++ b/webui/src/pages/bug/LabelChangeFragment.graphql @@ -1,4 +1,4 @@ -#import "../components/fragments.graphql" +#import "../../components/fragments.graphql" fragment LabelChange on LabelChangeTimelineItem { date diff --git a/webui/src/bug/Message.tsx b/webui/src/pages/bug/Message.tsx similarity index 92% rename from webui/src/bug/Message.tsx rename to webui/src/pages/bug/Message.tsx index a61ed3f2..ebb42f6b 100644 --- a/webui/src/bug/Message.tsx +++ b/webui/src/pages/bug/Message.tsx @@ -1,10 +1,11 @@ -import Paper from '@material-ui/core/Paper'; -import { makeStyles } from '@material-ui/core/styles'; import React from 'react'; -import Author, { Avatar } from '../components/Author'; -import Date from '../components/Date'; -import Content from '../components/Content'; +import Paper from '@material-ui/core/Paper'; +import { makeStyles } from '@material-ui/core/styles'; + +import Author, { Avatar } from 'src/components/Author'; +import Content from 'src/components/Content'; +import Date from 'src/components/Date'; import { AddCommentFragment } from './MessageCommentFragment.generated'; import { CreateFragment } from './MessageCreateFragment.generated'; diff --git a/webui/src/bug/MessageCommentFragment.graphql b/webui/src/pages/bug/MessageCommentFragment.graphql similarity index 68% rename from webui/src/bug/MessageCommentFragment.graphql rename to webui/src/pages/bug/MessageCommentFragment.graphql index 61156fee..00f8342d 100644 --- a/webui/src/bug/MessageCommentFragment.graphql +++ b/webui/src/pages/bug/MessageCommentFragment.graphql @@ -1,4 +1,4 @@ -#import "../components/fragments.graphql" +#import "../../components/fragments.graphql" fragment AddComment on AddCommentTimelineItem { createdAt diff --git a/webui/src/bug/MessageCreateFragment.graphql b/webui/src/pages/bug/MessageCreateFragment.graphql similarity index 66% rename from webui/src/bug/MessageCreateFragment.graphql rename to webui/src/pages/bug/MessageCreateFragment.graphql index e371b9dc..4cae819d 100644 --- a/webui/src/bug/MessageCreateFragment.graphql +++ b/webui/src/pages/bug/MessageCreateFragment.graphql @@ -1,4 +1,4 @@ -#import "../components/fragments.graphql" +#import "../../components/fragments.graphql" fragment Create on CreateTimelineItem { createdAt diff --git a/webui/src/bug/SetStatus.tsx b/webui/src/pages/bug/SetStatus.tsx similarity index 87% rename from webui/src/bug/SetStatus.tsx rename to webui/src/pages/bug/SetStatus.tsx index 86105c8a..251abf69 100644 --- a/webui/src/bug/SetStatus.tsx +++ b/webui/src/pages/bug/SetStatus.tsx @@ -1,8 +1,9 @@ -import { makeStyles } from '@material-ui/core/styles'; import React from 'react'; -import Author from '../components/Author'; -import Date from '../components/Date'; +import { makeStyles } from '@material-ui/core/styles'; + +import Author from 'src/components/Author'; +import Date from 'src/components/Date'; import { SetStatusFragment } from './SetStatusFragment.generated'; diff --git a/webui/src/bug/SetStatusFragment.graphql b/webui/src/pages/bug/SetStatusFragment.graphql similarity index 63% rename from webui/src/bug/SetStatusFragment.graphql rename to webui/src/pages/bug/SetStatusFragment.graphql index 5a3986d0..d8380409 100644 --- a/webui/src/bug/SetStatusFragment.graphql +++ b/webui/src/pages/bug/SetStatusFragment.graphql @@ -1,4 +1,4 @@ -#import "../components/fragments.graphql" +#import "../../components/fragments.graphql" fragment SetStatus on SetStatusTimelineItem { date diff --git a/webui/src/bug/SetTitle.tsx b/webui/src/pages/bug/SetTitle.tsx similarity index 90% rename from webui/src/bug/SetTitle.tsx rename to webui/src/pages/bug/SetTitle.tsx index e57aaafb..304fd2e2 100644 --- a/webui/src/bug/SetTitle.tsx +++ b/webui/src/pages/bug/SetTitle.tsx @@ -1,8 +1,9 @@ -import { makeStyles } from '@material-ui/core/styles'; import React from 'react'; -import Author from '../components/Author'; -import Date from '../components/Date'; +import { makeStyles } from '@material-ui/core/styles'; + +import Author from 'src/components/Author'; +import Date from 'src/components/Date'; import { SetTitleFragment } from './SetTitleFragment.generated'; diff --git a/webui/src/bug/SetTitleFragment.graphql b/webui/src/pages/bug/SetTitleFragment.graphql similarity index 64% rename from webui/src/bug/SetTitleFragment.graphql rename to webui/src/pages/bug/SetTitleFragment.graphql index 22d2185c..2225dfd3 100644 --- a/webui/src/bug/SetTitleFragment.graphql +++ b/webui/src/pages/bug/SetTitleFragment.graphql @@ -1,4 +1,4 @@ -#import "../components/fragments.graphql" +#import "../../components/fragments.graphql" fragment SetTitle on SetTitleTimelineItem { date diff --git a/webui/src/bug/Timeline.tsx b/webui/src/pages/bug/Timeline.tsx similarity index 99% rename from webui/src/bug/Timeline.tsx rename to webui/src/pages/bug/Timeline.tsx index ba0f9fc7..73c88cdf 100644 --- a/webui/src/bug/Timeline.tsx +++ b/webui/src/pages/bug/Timeline.tsx @@ -1,6 +1,7 @@ -import { makeStyles } from '@material-ui/core/styles'; import React from 'react'; +import { makeStyles } from '@material-ui/core/styles'; + import LabelChange from './LabelChange'; import Message from './Message'; import SetStatus from './SetStatus'; diff --git a/webui/src/bug/TimelineQuery.graphql b/webui/src/pages/bug/TimelineQuery.graphql similarity index 100% rename from webui/src/bug/TimelineQuery.graphql rename to webui/src/pages/bug/TimelineQuery.graphql diff --git a/webui/src/bug/TimelineQuery.tsx b/webui/src/pages/bug/TimelineQuery.tsx similarity index 99% rename from webui/src/bug/TimelineQuery.tsx rename to webui/src/pages/bug/TimelineQuery.tsx index 9c4cf183..74eed52b 100644 --- a/webui/src/bug/TimelineQuery.tsx +++ b/webui/src/pages/bug/TimelineQuery.tsx @@ -1,6 +1,7 @@ -import CircularProgress from '@material-ui/core/CircularProgress'; import React from 'react'; +import CircularProgress from '@material-ui/core/CircularProgress'; + import Timeline from './Timeline'; import { useTimelineQuery } from './TimelineQuery.generated'; diff --git a/webui/src/pages/bug/index.tsx b/webui/src/pages/bug/index.tsx new file mode 100644 index 00000000..a3bbcea4 --- /dev/null +++ b/webui/src/pages/bug/index.tsx @@ -0,0 +1 @@ +export { default } from './BugQuery'; diff --git a/webui/src/list/BugRow.graphql b/webui/src/pages/list/BugRow.graphql similarity index 71% rename from webui/src/list/BugRow.graphql rename to webui/src/pages/list/BugRow.graphql index c2966f10..547c09d8 100644 --- a/webui/src/list/BugRow.graphql +++ b/webui/src/pages/list/BugRow.graphql @@ -1,4 +1,4 @@ -#import "../components/fragments.graphql" +#import "../../components/fragments.graphql" fragment BugRow on Bug { id diff --git a/webui/src/list/BugRow.tsx b/webui/src/pages/list/BugRow.tsx similarity index 95% rename from webui/src/list/BugRow.tsx rename to webui/src/pages/list/BugRow.tsx index 181aec2e..829877ef 100644 --- a/webui/src/list/BugRow.tsx +++ b/webui/src/pages/list/BugRow.tsx @@ -1,15 +1,16 @@ +import React from 'react'; +import { Link } from 'react-router-dom'; + import TableCell from '@material-ui/core/TableCell/TableCell'; import TableRow from '@material-ui/core/TableRow/TableRow'; import Tooltip from '@material-ui/core/Tooltip/Tooltip'; import { makeStyles } from '@material-ui/core/styles'; import CheckCircleOutline from '@material-ui/icons/CheckCircleOutline'; import ErrorOutline from '@material-ui/icons/ErrorOutline'; -import React from 'react'; -import { Link } from 'react-router-dom'; -import Date from '../components/Date'; -import Label from '../components/Label'; -import { Status } from '../gqlTypes'; +import Date from 'src/components/Date'; +import Label from 'src/components/Label'; +import { Status } from 'src/gqlTypes'; import { BugRowFragment } from './BugRow.generated'; diff --git a/webui/src/list/Filter.tsx b/webui/src/pages/list/Filter.tsx similarity index 99% rename from webui/src/list/Filter.tsx rename to webui/src/pages/list/Filter.tsx index 30b52de8..1a3cdd6b 100644 --- a/webui/src/list/Filter.tsx +++ b/webui/src/pages/list/Filter.tsx @@ -1,12 +1,13 @@ +import clsx from 'clsx'; +import { LocationDescriptor } from 'history'; +import React, { useState, useRef } from 'react'; +import { Link } from 'react-router-dom'; + import Menu from '@material-ui/core/Menu'; import MenuItem from '@material-ui/core/MenuItem'; import { SvgIconProps } from '@material-ui/core/SvgIcon'; import { makeStyles } from '@material-ui/core/styles'; import ArrowDropDown from '@material-ui/icons/ArrowDropDown'; -import clsx from 'clsx'; -import { LocationDescriptor } from 'history'; -import React, { useState, useRef } from 'react'; -import { Link } from 'react-router-dom'; export type Query = { [key: string]: Array }; diff --git a/webui/src/list/FilterToolbar.graphql b/webui/src/pages/list/FilterToolbar.graphql similarity index 100% rename from webui/src/list/FilterToolbar.graphql rename to webui/src/pages/list/FilterToolbar.graphql diff --git a/webui/src/list/FilterToolbar.tsx b/webui/src/pages/list/FilterToolbar.tsx similarity index 99% rename from webui/src/list/FilterToolbar.tsx rename to webui/src/pages/list/FilterToolbar.tsx index b95b10bc..825a9dee 100644 --- a/webui/src/list/FilterToolbar.tsx +++ b/webui/src/pages/list/FilterToolbar.tsx @@ -1,10 +1,11 @@ import { pipe } from '@arrows/composition'; +import { LocationDescriptor } from 'history'; +import React from 'react'; + import Toolbar from '@material-ui/core/Toolbar'; import { makeStyles } from '@material-ui/core/styles'; import CheckCircleOutline from '@material-ui/icons/CheckCircleOutline'; import ErrorOutline from '@material-ui/icons/ErrorOutline'; -import { LocationDescriptor } from 'history'; -import React from 'react'; import { FilterDropdown, diff --git a/webui/src/list/List.tsx b/webui/src/pages/list/List.tsx similarity index 99% rename from webui/src/list/List.tsx rename to webui/src/pages/list/List.tsx index cebd13f2..c1cae122 100644 --- a/webui/src/list/List.tsx +++ b/webui/src/pages/list/List.tsx @@ -1,6 +1,7 @@ +import React from 'react'; + import Table from '@material-ui/core/Table/Table'; import TableBody from '@material-ui/core/TableBody/TableBody'; -import React from 'react'; import BugRow from './BugRow'; import { BugListFragment } from './ListQuery.generated'; diff --git a/webui/src/list/ListQuery.graphql b/webui/src/pages/list/ListQuery.graphql similarity index 100% rename from webui/src/list/ListQuery.graphql rename to webui/src/pages/list/ListQuery.graphql diff --git a/webui/src/list/ListQuery.tsx b/webui/src/pages/list/ListQuery.tsx similarity index 99% rename from webui/src/list/ListQuery.tsx rename to webui/src/pages/list/ListQuery.tsx index 84b72431..6858b6c6 100644 --- a/webui/src/list/ListQuery.tsx +++ b/webui/src/pages/list/ListQuery.tsx @@ -1,3 +1,7 @@ +import { ApolloError } from 'apollo-boost'; +import React, { useState, useEffect, useRef } from 'react'; +import { useLocation, useHistory, Link } from 'react-router-dom'; + import IconButton from '@material-ui/core/IconButton'; import InputBase from '@material-ui/core/InputBase'; import Paper from '@material-ui/core/Paper'; @@ -6,9 +10,6 @@ import ErrorOutline from '@material-ui/icons/ErrorOutline'; import KeyboardArrowLeft from '@material-ui/icons/KeyboardArrowLeft'; import KeyboardArrowRight from '@material-ui/icons/KeyboardArrowRight'; import Skeleton from '@material-ui/lab/Skeleton'; -import { ApolloError } from 'apollo-boost'; -import React, { useState, useEffect, useRef } from 'react'; -import { useLocation, useHistory, Link } from 'react-router-dom'; import FilterToolbar from './FilterToolbar'; import List from './List'; diff --git a/webui/src/pages/list/index.ts b/webui/src/pages/list/index.ts new file mode 100644 index 00000000..8a91ce70 --- /dev/null +++ b/webui/src/pages/list/index.ts @@ -0,0 +1 @@ +export { default } from './ListQuery'; diff --git a/webui/src/theme.ts b/webui/src/theme.ts new file mode 100644 index 00000000..d41cd731 --- /dev/null +++ b/webui/src/theme.ts @@ -0,0 +1,11 @@ +import { createMuiTheme } from '@material-ui/core/styles'; + +const theme = createMuiTheme({ + palette: { + primary: { + main: '#263238', + }, + }, +}); + +export default theme; diff --git a/webui/tsconfig.json b/webui/tsconfig.json index 30ba544b..4e83eef3 100644 --- a/webui/tsconfig.json +++ b/webui/tsconfig.json @@ -1,7 +1,11 @@ { "compilerOptions": { "target": "es5", - "lib": ["dom", "dom.iterable", "esnext"], + "lib": [ + "dom", + "dom.iterable", + "esnext" + ], "allowJs": true, "skipLibCheck": true, "esModuleInterop": true, @@ -14,7 +18,13 @@ "isolatedModules": true, "noEmit": true, "jsx": "react", - "typeRoots": ["node_modules/@types/", "types/"] + "typeRoots": [ + "node_modules/@types/", + "types/" + ], + "baseUrl": "." }, - "include": ["src"] + "include": [ + "src" + ] }