blob: 2d6fd1400da4a38fa0461ecf9a68e2d299301ba3 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
import React from 'react';
import Paper from '../components/Paper';
import Button from '../components/Button';
import { Action } from '../lib/ServiceContext';
interface Props {
title?: string;
actions?: Action[];
filters?: JSX.Element;
isValidating?: boolean;
className?: string;
}
const style = 'mb-2 flex justify-between md:flex-row md:items-center';
const Spinner: React.FC = () => <> O</>; // TODO: replace with spinner
const Page: React.FC<Props> = ({ title, actions, filters, isValidating, className, children }) => (
<Paper className="xl:m-5 overflow-x-auto">
<div className={`${style} flex-col items-start`}>
<span className="text-2xl font-bold">
{title}
{isValidating && <Spinner />}
</span>
<div className="flex">
{filters}
{actions?.map(action => (<Button {...action} key={action.name} size="sm">{action.name}</Button>))}
</div>
</div>
<div className={className}>
{children}
</div>
</Paper>
);
export default Page;
|