added ui elements
This commit is contained in:
		
							parent
							
								
									09e6deb019
								
							
						
					
					
						commit
						dc73b6d991
					
				| @ -7,7 +7,7 @@ | |||||||
|     <meta name="theme-color" content="#000000" /> |     <meta name="theme-color" content="#000000" /> | ||||||
|     <meta |     <meta | ||||||
|       name="description" |       name="description" | ||||||
|       content="Web site created using create-react-app" |       content="Doorlock Management" | ||||||
|     /> |     /> | ||||||
|     |     | ||||||
|     <title>Doorlock</title> |     <title>Doorlock</title> | ||||||
|  | |||||||
| @ -4,7 +4,7 @@ import { | |||||||
|   Route, |   Route, | ||||||
| } from "react-router-dom"; | } from "react-router-dom"; | ||||||
| import { ThemeProvider } from "styled-components"; | import { ThemeProvider } from "styled-components"; | ||||||
| import {CreateUserWidget, RecentActivityWidget, SystemStatusWidget} from './components' | import {CreateUserWidget, RecentActivityWidget, SystemStatusWidget, ColourPalette} from './components' | ||||||
| import {AccountManager, AdminUI, Logs, System} from './views' | import {AccountManager, AdminUI, Logs, System} from './views' | ||||||
| import theme from './theme'; | import theme from './theme'; | ||||||
| function App() { | function App() { | ||||||
| @ -14,7 +14,8 @@ function App() { | |||||||
|       <AdminUI> |       <AdminUI> | ||||||
|         <Switch> |         <Switch> | ||||||
|           <Route path="/" exact> |           <Route path="/" exact> | ||||||
|             <CreateUserWidget /> |              | ||||||
|  |             <CreateUserWidget />   | ||||||
|             <RecentActivityWidget /> |             <RecentActivityWidget /> | ||||||
|             <SystemStatusWidget /> |             <SystemStatusWidget /> | ||||||
|           </Route> |           </Route> | ||||||
|  | |||||||
							
								
								
									
										22
									
								
								web/src/components/Button.jsx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								web/src/components/Button.jsx
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,22 @@ | |||||||
|  | import styled from 'styled-components' | ||||||
|  | 
 | ||||||
|  | const Button = styled.button` | ||||||
|  | font-size: 1em; | ||||||
|  | font-weight: bold; | ||||||
|  | color: ${props=>props.disabled?props.theme.colours.color1:props.theme.colours.color3}; | ||||||
|  | display: inline-block; | ||||||
|  | padding: 0.3em 0.5em; | ||||||
|  | border: solid .1em ${props=>props.disabled?props.theme.colours.color7:props.theme.colours.color3}; | ||||||
|  | background: ${props=>props.disabled?props.theme.colours.color9:props.theme.colours.color4}; | ||||||
|  | transition: ease-in-out 225ms; | ||||||
|  | &:hover{ | ||||||
|  |     background-color: ${props=>props.disabled?props.theme.colours.color9:props.theme.colours.color3}; | ||||||
|  |     color: ${props=>props.disabled?props.theme.colours.color1:props.theme.colours.color6}; | ||||||
|  |     border: solid .1em ${props=>props.disabled?props.theme.colours.color7:props.theme.colours.color10}; | ||||||
|  |     text-shadow: 0 0  .2em  ${props=>props.disabled?"transparent":props.theme.colours.color9}; | ||||||
|  | } | ||||||
|  | `; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | export default Button | ||||||
| @ -7,6 +7,8 @@ background: ${props=>props.theme.colours.color1}; | |||||||
| border-radius: 1em; | border-radius: 1em; | ||||||
| padding: 1em; | padding: 1em; | ||||||
| margin: 1em; | margin: 1em; | ||||||
|  | display: block; | ||||||
|  | flex-direction: column; | ||||||
| h4 { | h4 { | ||||||
|   margin: 0; |   margin: 0; | ||||||
| } | } | ||||||
|  | |||||||
							
								
								
									
										50
									
								
								web/src/components/Checkbox.jsx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										50
									
								
								web/src/components/Checkbox.jsx
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,50 @@ | |||||||
|  | import styled from "styled-components"; | ||||||
|  | import Hook from './Checkbox.svg' | ||||||
|  | const CheckboxOrigin = styled.input.attrs({ type: 'checkbox' })` | ||||||
|  |   visibility: hidden; | ||||||
|  | `; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | const CheckboxStyled = styled.div` | ||||||
|  | position: absolute; | ||||||
|  | top: 0; | ||||||
|  | right: 0; | ||||||
|  | font-size: 1em; | ||||||
|  | width: 1em; | ||||||
|  | height: 1em; | ||||||
|  | font-weight: bold; | ||||||
|  | color: ${props => props.disabled ? props.theme.colours.color1 : props.theme.colours.color3}; | ||||||
|  | border: solid .1em ${props => props.disabled ? props.theme.colours.color7 : props.theme.colours.color3}; | ||||||
|  | background: ${props => props.disabled ? props.theme.colours.color9 : props.theme.colours.color4}; | ||||||
|  | transition: ease-in-out 125ms; | ||||||
|  | 
 | ||||||
|  | ${CheckboxOrigin}:checked  +&{ | ||||||
|  |     border: solid .1em ${props => props.disabled ? props.theme.colours.color7 : props.theme.colours.color3}; | ||||||
|  |     background-color: ${props => props.disabled ? props.theme.colours.color9 : props.theme.colours.color3}; | ||||||
|  |     color: ${props => props.disabled ? props.theme.colours.color1 : props.theme.colours.color6}; | ||||||
|  |     background-image: url(${Hook}); | ||||||
|  |     background-position: center; | ||||||
|  |     background-repeat: no-repeat; | ||||||
|  | } | ||||||
|  | ${CheckboxOrigin}:hover  +&{ | ||||||
|  |     background-color: ${props => props.disabled ? props.theme.colours.color9 : props.theme.colours.color3}; | ||||||
|  |     color: ${props => props.disabled ? props.theme.colours.color1 : props.theme.colours.color6}; | ||||||
|  |     border: solid .1em ${props => props.disabled ? props.theme.colours.color7 : props.theme.colours.color10}; | ||||||
|  |      | ||||||
|  | } | ||||||
|  | `; | ||||||
|  | const CheckboxWrapper = styled.label` | ||||||
|  |     position: relative; | ||||||
|  |     display: inline-block; | ||||||
|  |     vertical-align: middle; | ||||||
|  | `; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | const Checkbox = ({ className, checked, ...props }) => ( | ||||||
|  |     <CheckboxWrapper className={className}> | ||||||
|  |         <CheckboxOrigin checked={checked} {...props} /> | ||||||
|  |         <CheckboxStyled checked={checked} /> | ||||||
|  |     </CheckboxWrapper> | ||||||
|  | 
 | ||||||
|  | ); | ||||||
|  | export default Checkbox; | ||||||
							
								
								
									
										11
									
								
								web/src/components/Checkbox.svg
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								web/src/components/Checkbox.svg
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,11 @@ | |||||||
|  | <?xml version="1.0" encoding="utf-8"?> | ||||||
|  | <!-- Generator: Adobe Illustrator 25.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  --> | ||||||
|  | <svg version="1.1" id="Ebene_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" | ||||||
|  | 	 viewBox="0 0 500 500" style="enable-background:new 0 0 500 500;" xml:space="preserve"> | ||||||
|  | <style type="text/css"> | ||||||
|  | 	.st0{fill:#FFFFFF;stroke:#000000;stroke-miterlimit:10;} | ||||||
|  | </style> | ||||||
|  | <path class="st0" d="M26.66,289.39l138.79,155.55c7.35,8.24,20.27,8.1,27.45-0.28l278.92-325.86c5.17-6.04,5.83-14.73,1.63-21.48 | ||||||
|  | 	l-27.59-44.36c-6.48-10.41-21.18-11.59-29.23-2.34L214.5,282.9c-7.55,8.67-21.14,8.28-28.17-0.82l-89.7-116.01 | ||||||
|  | 	c-8.54-11.05-25.83-8.78-31.23,4.1L23.45,270.2C20.73,276.68,21.98,284.14,26.66,289.39z"/> | ||||||
|  | </svg> | ||||||
| After Width: | Height: | Size: 770 B | 
							
								
								
									
										25
									
								
								web/src/components/ColourPalette.jsx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								web/src/components/ColourPalette.jsx
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,25 @@ | |||||||
|  | import React from 'react' | ||||||
|  | import styled from 'styled-components' | ||||||
|  | import { useContext } from 'react'; | ||||||
|  | import { ThemeContext } from 'styled-components'; | ||||||
|  | const Element = styled.div` | ||||||
|  | //width: 1em; | ||||||
|  | height: 2em; | ||||||
|  | display: block; | ||||||
|  | background: ${props=> props.bg}; | ||||||
|  | color: #707070; | ||||||
|  | padding: .5em; | ||||||
|  | 
 | ||||||
|  | `; | ||||||
|  | export default function ColourPalette() { | ||||||
|  |     var colours = useContext(ThemeContext).colours; | ||||||
|  |     return ( | ||||||
|  |         <div> | ||||||
|  |          | ||||||
|  |    | ||||||
|  |         {Object.keys(colours).map((name, index) => ( | ||||||
|  |                 <Element bg={colours[name]}>{name}</Element> | ||||||
|  |         ))} | ||||||
|  |         </div> | ||||||
|  |     ) | ||||||
|  | } | ||||||
| @ -1,6 +1,7 @@ | |||||||
| import React, { Component } from 'react' | import React, { Component } from 'react' | ||||||
| import TextInput from './TextInput' | import TextInput from './TextInput' | ||||||
| import Card from './Card' | import Card from './Card' | ||||||
|  | import Button from './Button' | ||||||
| export class CreateUserWidget extends Component { | export class CreateUserWidget extends Component { | ||||||
|     render() { |     render() { | ||||||
|         return ( |         return ( | ||||||
| @ -13,7 +14,7 @@ export class CreateUserWidget extends Component { | |||||||
|                 <TextInput id="pin" label="PIN" /> |                 <TextInput id="pin" label="PIN" /> | ||||||
|                 <TextInput id="rfid" disabled label="RFID" button="Scan" value="Scanning RFID" onClick={(e)=>{console.log("Button Pressed",e)}}/> |                 <TextInput id="rfid" disabled label="RFID" button="Scan" value="Scanning RFID" onClick={(e)=>{console.log("Button Pressed",e)}}/> | ||||||
|                 <TextInput id="Expire_Date" label="Expire Date" type="date" /> |                 <TextInput id="Expire_Date" label="Expire Date" type="date" /> | ||||||
|                 <button>Add</button> |                 <Button>Create User</Button><Button disabled>Disabled</Button> | ||||||
|                 </Card> |                 </Card> | ||||||
|         ) |         ) | ||||||
|     } |     } | ||||||
|  | |||||||
| @ -9,7 +9,7 @@ export class SearchBox extends Component { | |||||||
|             border-radius: .5rem; |             border-radius: .5rem; | ||||||
|             display: inline-flex; |             display: inline-flex; | ||||||
|             white-space: nowrap; |             white-space: nowrap; | ||||||
|             margin-left: auto; |             //margin-left: auto; | ||||||
|             transition: ease-in-out all 500ms; |             transition: ease-in-out all 500ms; | ||||||
|             flex-grow: 0; |             flex-grow: 0; | ||||||
|             max-width: 20em; |             max-width: 20em; | ||||||
| @ -28,7 +28,7 @@ export class SearchBox extends Component { | |||||||
|                 background: ${this.props.theme.colours.color3}; |                 background: ${this.props.theme.colours.color3}; | ||||||
|                 border: none; |                 border: none; | ||||||
|                 outline: none; |                 outline: none; | ||||||
|                 color: ${this.props.theme.colours.color6}; |                 color: ${this.props.theme.colours.color10}; | ||||||
|                 flex-grow: 0; |                 flex-grow: 0; | ||||||
|                 margin-left: auto; |                 margin-left: auto; | ||||||
|                 width: 100%; |                 width: 100%; | ||||||
| @ -41,6 +41,7 @@ export class SearchBox extends Component { | |||||||
|                 + button{ |                 + button{ | ||||||
|                     height: 2rem; |                     height: 2rem; | ||||||
|                     border: none; |                     border: none; | ||||||
|  |                     transition: ease-in-out all 100ms; | ||||||
|                     color: ${this.props.theme.colours.color6}; |                     color: ${this.props.theme.colours.color6}; | ||||||
|                     border-radius: 0 .5rem .5rem 0; |                     border-radius: 0 .5rem .5rem 0; | ||||||
|                     display: inline-flex; |                     display: inline-flex; | ||||||
|  | |||||||
							
								
								
									
										22
									
								
								web/src/components/Select.jsx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								web/src/components/Select.jsx
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,22 @@ | |||||||
|  | import styled from "styled-components"; | ||||||
|  | 
 | ||||||
|  | const Select = styled.select` | ||||||
|  | font-size: 1em; | ||||||
|  | font-weight: bold; | ||||||
|  | color: ${props=>props.disabled?props.theme.colours.color1:props.theme.colours.color3}; | ||||||
|  | display: inline-block; | ||||||
|  | padding: 0.3em 0.5em; | ||||||
|  | border: solid .1em ${props=>props.disabled?props.theme.colours.color7:props.theme.colours.color3}; | ||||||
|  | background: ${props=>props.disabled?props.theme.colours.color9:props.theme.colours.color4}; | ||||||
|  | transition: ease-in-out 225ms; | ||||||
|  | 
 | ||||||
|  | option { | ||||||
|  |     background-color: ${props=>props.disabled?props.theme.colours.color9:props.theme.colours.color3}; | ||||||
|  |     color: ${props=>props.disabled?props.theme.colours.color1:props.theme.colours.color6}; | ||||||
|  |     border: solid .1em ${props=>props.disabled?props.theme.colours.color7:props.theme.colours.color10}; | ||||||
|  |     text-shadow: 0 0  .2em  ${props=>props.disabled?"transparent":props.theme.colours.color9}; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | `; | ||||||
|  | 
 | ||||||
|  | export default Select; | ||||||
							
								
								
									
										21
									
								
								web/src/components/Table.jsx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								web/src/components/Table.jsx
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,21 @@ | |||||||
|  | import styled from "styled-components"; | ||||||
|  | const Table = styled.table` | ||||||
|  | width: 100%; | ||||||
|  | border-spacing: 0; | ||||||
|  | border-collapse: collapse; | ||||||
|  | thead{ | ||||||
|  |     background-color: ${props=>props.theme.colours.color9}; | ||||||
|  |     font-weight: bold; | ||||||
|  |      | ||||||
|  | } | ||||||
|  | tbody tr:not(:last-child){ | ||||||
|  |     border-bottom: 1px solid ${props=>props.theme.colours.color9}; | ||||||
|  | } | ||||||
|  | tr:nth-child(2){ | ||||||
|  |     background-color: ${props=>props.theme.colours.color1}; | ||||||
|  | } | ||||||
|  | td{ | ||||||
|  |     padding: 0.5em 1em; | ||||||
|  | } | ||||||
|  | `; | ||||||
|  | export default Table; | ||||||
| @ -99,7 +99,7 @@ export class TextInput extends Component { | |||||||
|         `; |         `; | ||||||
|         return ( |         return ( | ||||||
|             <InputWrapper> |             <InputWrapper> | ||||||
|                 <input id={this.props.id} placeholder="" type={this.props.type ? this.props.type : "text"} value={this.props.value} disabled={this.props.disabled} /> |                 <input id={this.props.id} placeholder=" " type={this.props.type ? this.props.type : "text"} value={this.props.value} disabled={this.props.disabled} /> | ||||||
|                 {this.props.label != null ? <label htmlFor={this.props.id}>{this.props.label}</label> : ""} |                 {this.props.label != null ? <label htmlFor={this.props.id}>{this.props.label}</label> : ""} | ||||||
|                 {this.props.button != null ? <button onClick={this.props.onClick}>{this.props.button}</button> : ""} |                 {this.props.button != null ? <button onClick={this.props.onClick}>{this.props.button}</button> : ""} | ||||||
|             </InputWrapper> |             </InputWrapper> | ||||||
|  | |||||||
| @ -2,4 +2,11 @@ import CreateUserWidget from "./CreateUserWidget"; | |||||||
| import RecentActivityWidget from "./RecentActivityWidget"; | import RecentActivityWidget from "./RecentActivityWidget"; | ||||||
| import SystemStatusWidget from "./SystemStatusWidget"; | import SystemStatusWidget from "./SystemStatusWidget"; | ||||||
| import SearchBox from "./SearchBox"; | import SearchBox from "./SearchBox"; | ||||||
| export { CreateUserWidget, RecentActivityWidget, SystemStatusWidget, SearchBox } | import Card from "./Card"; | ||||||
|  | import TextInput from "./TextInput"; | ||||||
|  | import Button from "./Button"; | ||||||
|  | import Select from "./Select"; | ||||||
|  | import Checkbox from "./Checkbox"; | ||||||
|  | import ColourPalette from "./ColourPalette"; | ||||||
|  | import Table from "./Table"; | ||||||
|  | export { CreateUserWidget, RecentActivityWidget, SystemStatusWidget, SearchBox, Card, TextInput, Button, Select, Checkbox, Table, ColourPalette} | ||||||
| @ -13,7 +13,7 @@ const colours1 = { | |||||||
| const colours2 = { | const colours2 = { | ||||||
|     color1: "#1e2e2e", |     color1: "#1e2e2e", | ||||||
|     color2: "#273a37", |     color2: "#273a37", | ||||||
|     color3: "#43f48d", |     color3: "#18cb64", | ||||||
|     color4: "#012400be", |     color4: "#012400be", | ||||||
|     color5: "#254904c6", |     color5: "#254904c6", | ||||||
|     color6: "#daebd9bf", |     color6: "#daebd9bf", | ||||||
|  | |||||||
							
								
								
									
										13
									
								
								web/src/views/AccountEdit.jsx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								web/src/views/AccountEdit.jsx
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,13 @@ | |||||||
|  | import React, { Component } from 'react' | ||||||
|  | 
 | ||||||
|  | export class AccountEdit extends Component { | ||||||
|  |     render() { | ||||||
|  |         return ( | ||||||
|  |             <div> | ||||||
|  |                  | ||||||
|  |             </div> | ||||||
|  |         ) | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | export default AccountEdit | ||||||
| @ -1,15 +1,72 @@ | |||||||
| import React, { Component } from 'react' | import React, { Component } from 'react' | ||||||
| import Card from '../components/Card' | import Card from '../components/Card' | ||||||
|  | import styled, { withTheme } from 'styled-components' | ||||||
|  | import { Button, Table, Select, Checkbox } from '../components'; | ||||||
|  | 
 | ||||||
| export class AccountManager extends Component { | export class AccountManager extends Component { | ||||||
|     render() { |     render() { | ||||||
|  |         const ActionSelect = styled.div` | ||||||
|  |         width: 100%; | ||||||
|  |          | ||||||
|  |         display: flex; | ||||||
|  |         justify-content: flex-end;         | ||||||
|  |         `; | ||||||
|  | 
 | ||||||
|         return ( |         return ( | ||||||
|             <Card> |             <> | ||||||
|                 <h4>Account Manager</h4> |      | ||||||
|                 <hr/> |                 <h3>Account Manager</h3> | ||||||
|                 Hello World |                 <Table> | ||||||
|             </Card> |                     <thead> | ||||||
|  |                         <tr> | ||||||
|  |                             <td>UserID</td> | ||||||
|  |                             <td>First Name</td> | ||||||
|  |                             <td>Last Name</td> | ||||||
|  |                             <td>Last Access</td> | ||||||
|  |                             <td></td> | ||||||
|  |                             <td></td> | ||||||
|  |                         </tr> | ||||||
|  |                     </thead> | ||||||
|  |                     <tbody> | ||||||
|  |                         <tr> | ||||||
|  |                             <td>001</td> | ||||||
|  |                             <td>Anton</td> | ||||||
|  |                             <td>Stigloher</td> | ||||||
|  |                             <td>06.10.2021</td> | ||||||
|  |                             <td><Button>More</Button></td> | ||||||
|  |                             <td><ActionSelect><Checkbox/></ActionSelect></td> | ||||||
|  |                         </tr> | ||||||
|  |                         <tr> | ||||||
|  |                             <td>002</td> | ||||||
|  |                             <td>Max</td> | ||||||
|  |                             <td>Mustermann</td> | ||||||
|  |                             <td>07.10.2021</td> | ||||||
|  |                             <td><Button>More</Button></td> | ||||||
|  |                             <td><ActionSelect><Checkbox/></ActionSelect></td> | ||||||
|  |                         </tr> | ||||||
|  |                         <tr> | ||||||
|  |                             <td>003</td> | ||||||
|  |                             <td>Peter</td> | ||||||
|  |                             <td>Lustig</td> | ||||||
|  |                             <td>08.10.2021</td> | ||||||
|  |                             <td><Button>More</Button></td> | ||||||
|  |                             <td><ActionSelect><Checkbox/></ActionSelect></td> | ||||||
|  |                         </tr> | ||||||
|  |                     </tbody> | ||||||
|  | 
 | ||||||
|  |                 </Table> | ||||||
|  |                 <ActionSelect><Select> | ||||||
|  |                         <option>Extend</option> | ||||||
|  |                         <option>Enable</option> | ||||||
|  |                         <option>Disable</option> | ||||||
|  |                         <option>Delete</option> | ||||||
|  |                     </Select> | ||||||
|  |                     <Button>Apply</Button> | ||||||
|  |                     </ActionSelect> | ||||||
|  | 
 | ||||||
|  |             </> | ||||||
|         ) |         ) | ||||||
|     } |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| export default AccountManager | export default withTheme(AccountManager) | ||||||
|  | |||||||
| @ -30,37 +30,28 @@ export class AdminUI extends Component { | |||||||
|             -ms-grid-column: 1; |             -ms-grid-column: 1; | ||||||
|             -ms-grid-column-span: 3; |             -ms-grid-column-span: 3; | ||||||
|             grid-area: header; |             grid-area: header; | ||||||
|             display: -webkit-inline-box; | 
 | ||||||
|             display: -ms-inline-flexbox; |  | ||||||
|             display: inline-flex; |             display: inline-flex; | ||||||
|             -ms-flex-wrap: wrap; |             flex-wrap: wrap; | ||||||
|                 flex-wrap: wrap; |             flex-direction: row; | ||||||
|             -webkit-box-orient: horizontal; |  | ||||||
|             -webkit-box-direction: normal; |  | ||||||
|                 -ms-flex-direction: row; |  | ||||||
|                     flex-direction: row; |  | ||||||
|             min-height: auto; |             min-height: auto; | ||||||
|             padding: .5em; |             padding: .5em; | ||||||
|             -webkit-box-pack: end; |             justify-content: space-between; | ||||||
|                 -ms-flex-pack: end; |             align-items: center; | ||||||
|                     justify-content: flex-end; |  | ||||||
|             -webkit-box-align: center; |  | ||||||
|                 -ms-flex-align: center; |  | ||||||
|                     align-items: center; |  | ||||||
|             background: ${this.props.theme.colours.color1}; |             background: ${this.props.theme.colours.color1}; | ||||||
|             color: ${this.props.theme.colours.color7}; |             color: ${this.props.theme.colours.color7}; | ||||||
|             h1 { |             h1 { | ||||||
|             -ms-flex-wrap: nowrap; |             -ms-flex-wrap: nowrap; | ||||||
|             flex-wrap: nowrap; |             flex-wrap: nowrap; | ||||||
|             white-space: nowrap; |             white-space: nowrap; | ||||||
|             display: -webkit-inline-box; |  | ||||||
|             display: -ms-inline-flexbox; |  | ||||||
|             display: inline-flex; |             display: inline-flex; | ||||||
|             font-size: 1.5em; |             font-size: 1.5em; | ||||||
|  |             margin: .5em; | ||||||
|  |             margin-right: auto; | ||||||
|  |             padding-right: 2em; | ||||||
|             } |             } | ||||||
| 
 | 
 | ||||||
|             &::after { |             &::after { | ||||||
|             -ms-grid-column-align: start; |  | ||||||
|             justify-self: start; |             justify-self: start; | ||||||
|             position: absolute; |             position: absolute; | ||||||
|             display: block; |             display: block; | ||||||
| @ -73,6 +64,7 @@ export class AdminUI extends Component { | |||||||
|             z-index: 1; |             z-index: 1; | ||||||
|             } |             } | ||||||
|             nav{ |             nav{ | ||||||
|  |                 margin-left: auto; | ||||||
|                 display: inline-flex; |                 display: inline-flex; | ||||||
|                 flex-wrap: nowrap; |                 flex-wrap: nowrap; | ||||||
|                 flex-shrink: 1; |                 flex-shrink: 1; | ||||||
| @ -207,6 +199,7 @@ export class AdminUI extends Component { | |||||||
|             align-items: flex-start; |             align-items: flex-start; | ||||||
|             flex-wrap: wrap; |             flex-wrap: wrap; | ||||||
|             padding: 1em; |             padding: 1em; | ||||||
|  |             color: ${props=>props.theme.colours.color6}; | ||||||
|             background: ${this.props.theme.colours.color2}; |             background: ${this.props.theme.colours.color2}; | ||||||
|         `; |         `; | ||||||
|         return ( |         return ( | ||||||
| @ -217,7 +210,7 @@ export class AdminUI extends Component { | |||||||
|                     <SearchBox /> |                     <SearchBox /> | ||||||
|                     <nav> |                     <nav> | ||||||
|                         <ul> |                         <ul> | ||||||
|                             <li><Link to="/user_cp">User Settings</Link></li> |                             <li><Link to="/user_cp">Admin Settings</Link></li> | ||||||
|                             <li><Link to="/logout">Logout</Link></li> |                             <li><Link to="/logout">Logout</Link></li> | ||||||
|                         </ul> |                         </ul> | ||||||
|                     </nav> |                     </nav> | ||||||
| @ -225,9 +218,9 @@ export class AdminUI extends Component { | |||||||
|                 <Menu> |                 <Menu> | ||||||
|                     <h3>Menu{props => this.props.theme}</h3> |                     <h3>Menu{props => this.props.theme}</h3> | ||||||
|                     <ul> |                     <ul> | ||||||
|                         <li><NavLink activeClassName="menu__active" exact to="/">Status</NavLink></li> |                         <li><NavLink activeClassName="menu__active" exact to="/">Dashboard</NavLink></li> | ||||||
|                         <li><NavLink activeClassName="menu__active" to="/accounts">Account</NavLink></li> |                         <li><NavLink activeClassName="menu__active" to="/accounts">Accounts</NavLink></li> | ||||||
|                         <li><NavLink activeClassName="menu__active" to="/log">Log</NavLink></li> |                         <li><NavLink activeClassName="menu__active" to="/log">Logs</NavLink></li> | ||||||
|                         <li><NavLink activeClassName="menu__active" to="/system">System</NavLink></li> |                         <li><NavLink activeClassName="menu__active" to="/system">System</NavLink></li> | ||||||
|                     </ul> |                     </ul> | ||||||
|                 </Menu> |                 </Menu> | ||||||
|  | |||||||
| @ -1,15 +1,42 @@ | |||||||
| import React, { Component } from 'react' | import React, { Component } from 'react' | ||||||
|  | import styled, {withTheme} from 'styled-components' | ||||||
|  | import { Table, Button } from '../components' | ||||||
| import Card from '../components/Card' | import Card from '../components/Card' | ||||||
| export class Logs extends Component { | export class Logs extends Component { | ||||||
|     render() { |     render() { | ||||||
|         return ( |         return ( | ||||||
|             <Card> |             <> | ||||||
|                 <h4>Logs</h4> |                 <h3>Logs</h3> | ||||||
|                 <hr/> |                 <Table> | ||||||
|                 Hello World |                     <thead> | ||||||
|             </Card> |                         <tr> | ||||||
|  |                             <td>Time</td> | ||||||
|  |                             <td>Type</td> | ||||||
|  |                             <td>Info</td> | ||||||
|  |                         </tr> | ||||||
|  |                     </thead> | ||||||
|  |                     <tbody> | ||||||
|  |                         <tr> | ||||||
|  |                             <td>12.12.12 08:12</td> | ||||||
|  |                             <td>Authentication</td> | ||||||
|  |                             <td>[NFC] Max Mustermann</td> | ||||||
|  |                         </tr> | ||||||
|  |                         <tr> | ||||||
|  |                             <td>12.12.12 08:12</td> | ||||||
|  |                             <td>Authentication Error</td> | ||||||
|  |                             <td>[NFC] 92:23:c3:32</td> | ||||||
|  |                         </tr> | ||||||
|  |                         <tr> | ||||||
|  |                             <td>12.12.12 08:12</td> | ||||||
|  |                             <td>Admin Login</td> | ||||||
|  |                             <td>Toni Stigloher</td> | ||||||
|  |                         </tr> | ||||||
|  |                     </tbody> | ||||||
|  |                 </Table> | ||||||
|  |                 <Button>Download full Logfile</Button> | ||||||
|  |             </> | ||||||
|         ) |         ) | ||||||
|     } |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| export default Logs | export default withTheme(Logs) | ||||||
|  | |||||||
							
								
								
									
										41
									
								
								web/src/views/Overlay.jsx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								web/src/views/Overlay.jsx
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,41 @@ | |||||||
|  | import React, { Children, Component } from 'react' | ||||||
|  | import styled, {withTheme, createGlobalStyle} from 'styled-components' | ||||||
|  | 
 | ||||||
|  | export class Overlay extends Component { | ||||||
|  |     render() { | ||||||
|  |         const GlobalStyle = createGlobalStyle` | ||||||
|  |         #root{ | ||||||
|  |            overflow : hidden ; | ||||||
|  |            //pointer-events:none; | ||||||
|  |            //user-select: none; | ||||||
|  |         } | ||||||
|  |         `; | ||||||
|  |         const OverlayWrapper = styled.div` | ||||||
|  |         user-select: all; | ||||||
|  |         pointer-events: all; | ||||||
|  |         filter: blur(0); | ||||||
|  |         position: fixed; | ||||||
|  |         top: 0; | ||||||
|  |         left: 0; | ||||||
|  |         width: calc(100vw - 4em); | ||||||
|  |         margin: 2em; | ||||||
|  |         height: calc(100vh - 4em); | ||||||
|  |         z-index: 2; | ||||||
|  |         border-radius: 1em; | ||||||
|  |         padding: 1em; | ||||||
|  |         color: ${this.props.theme.colours.color3}; | ||||||
|  |         background: ${this.props.theme.colours.color9}; | ||||||
|  |         box-shadow: 0 0 2em ${this.props.theme.colours.color3}; | ||||||
|  |         border: 1px solid ${this.props.theme.colours.color3}; | ||||||
|  |         overflow: auto; | ||||||
|  |     `; | ||||||
|  |         return ( | ||||||
|  |             <OverlayWrapper> | ||||||
|  |                 <GlobalStyle/> | ||||||
|  |                 {this.props.children} | ||||||
|  |             </OverlayWrapper> | ||||||
|  |         ) | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | export default withTheme(Overlay) | ||||||
| @ -1,6 +1,6 @@ | |||||||
| import React, { Component } from 'react' | import React, { Component } from 'react' | ||||||
| import Card from '../components/Card' | import styled, {withTheme} from 'styled-components' | ||||||
| import TextInput from '../components/TextInput' | import {Button, Card, TextInput} from '../components' | ||||||
| export class System extends Component { | export class System extends Component { | ||||||
|     render() { |     render() { | ||||||
|         return ( |         return ( | ||||||
| @ -15,7 +15,7 @@ export class System extends Component { | |||||||
|                 <hr /> |                 <hr /> | ||||||
|                 <TextInput label="SSID"/> |                 <TextInput label="SSID"/> | ||||||
|                 <TextInput label="Password" type="password"/> |                 <TextInput label="Password" type="password"/> | ||||||
|                 <TextInput type="button" value="SAVE"/> |                 <Button >Save</Button> | ||||||
|             </Card> |             </Card> | ||||||
|          |          | ||||||
|             </> |             </> | ||||||
| @ -23,4 +23,4 @@ export class System extends Component { | |||||||
|     } |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| export default System | export default withTheme(System) | ||||||
|  | |||||||
| @ -2,4 +2,5 @@ import AdminUI from "./AdminUI"; | |||||||
| import AccountManager from "./AccountManager"; | import AccountManager from "./AccountManager"; | ||||||
| import Logs from "./Logs"; | import Logs from "./Logs"; | ||||||
| import System from "./System"; | import System from "./System"; | ||||||
| export {AccountManager, AdminUI, Logs, System} | import Overlay from "./Overlay"; | ||||||
|  | export {AccountManager, AdminUI, Logs, System, Overlay} | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user