initial base app
This commit is contained in:
parent
d21033824f
commit
d2c20c74d5
@ -10,6 +10,7 @@
|
||||
"react": "^18.2.0",
|
||||
"react-dom": "^18.2.0",
|
||||
"react-scripts": "5.0.1",
|
||||
"sass": "^1.52.3",
|
||||
"web-vitals": "^2.1.4"
|
||||
},
|
||||
"scripts": {
|
||||
|
93
pkg/ui/public/assets/fonts/OFL.txt
Normal file
93
pkg/ui/public/assets/fonts/OFL.txt
Normal file
@ -0,0 +1,93 @@
|
||||
Copyright 2010, 2012, 2014 Adobe Systems Incorporated (http://www.adobe.com/), with Reserved Font Name ‘Source’.
|
||||
|
||||
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
||||
This license is copied below, and is also available with a FAQ at:
|
||||
http://scripts.sil.org/OFL
|
||||
|
||||
|
||||
-----------------------------------------------------------
|
||||
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
||||
-----------------------------------------------------------
|
||||
|
||||
PREAMBLE
|
||||
The goals of the Open Font License (OFL) are to stimulate worldwide
|
||||
development of collaborative font projects, to support the font creation
|
||||
efforts of academic and linguistic communities, and to provide a free and
|
||||
open framework in which fonts may be shared and improved in partnership
|
||||
with others.
|
||||
|
||||
The OFL allows the licensed fonts to be used, studied, modified and
|
||||
redistributed freely as long as they are not sold by themselves. The
|
||||
fonts, including any derivative works, can be bundled, embedded,
|
||||
redistributed and/or sold with any software provided that any reserved
|
||||
names are not used by derivative works. The fonts and derivatives,
|
||||
however, cannot be released under any other type of license. The
|
||||
requirement for fonts to remain under this license does not apply
|
||||
to any document created using the fonts or their derivatives.
|
||||
|
||||
DEFINITIONS
|
||||
"Font Software" refers to the set of files released by the Copyright
|
||||
Holder(s) under this license and clearly marked as such. This may
|
||||
include source files, build scripts and documentation.
|
||||
|
||||
"Reserved Font Name" refers to any names specified as such after the
|
||||
copyright statement(s).
|
||||
|
||||
"Original Version" refers to the collection of Font Software components as
|
||||
distributed by the Copyright Holder(s).
|
||||
|
||||
"Modified Version" refers to any derivative made by adding to, deleting,
|
||||
or substituting -- in part or in whole -- any of the components of the
|
||||
Original Version, by changing formats or by porting the Font Software to a
|
||||
new environment.
|
||||
|
||||
"Author" refers to any designer, engineer, programmer, technical
|
||||
writer or other person who contributed to the Font Software.
|
||||
|
||||
PERMISSION & CONDITIONS
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
||||
redistribute, and sell modified and unmodified copies of the Font
|
||||
Software, subject to the following conditions:
|
||||
|
||||
1) Neither the Font Software nor any of its individual components,
|
||||
in Original or Modified Versions, may be sold by itself.
|
||||
|
||||
2) Original or Modified Versions of the Font Software may be bundled,
|
||||
redistributed and/or sold with any software, provided that each copy
|
||||
contains the above copyright notice and this license. These can be
|
||||
included either as stand-alone text files, human-readable headers or
|
||||
in the appropriate machine-readable metadata fields within text or
|
||||
binary files as long as those fields can be easily viewed by the user.
|
||||
|
||||
3) No Modified Version of the Font Software may use the Reserved Font
|
||||
Name(s) unless explicit written permission is granted by the corresponding
|
||||
Copyright Holder. This restriction only applies to the primary font name as
|
||||
presented to the users.
|
||||
|
||||
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
||||
Software shall not be used to promote, endorse or advertise any
|
||||
Modified Version, except to acknowledge the contribution(s) of the
|
||||
Copyright Holder(s) and the Author(s) or with their explicit written
|
||||
permission.
|
||||
|
||||
5) The Font Software, modified or unmodified, in part or in whole,
|
||||
must be distributed entirely under this license, and must not be
|
||||
distributed under any other license. The requirement for fonts to
|
||||
remain under this license does not apply to any document created
|
||||
using the Font Software.
|
||||
|
||||
TERMINATION
|
||||
This license becomes null and void if any of the above conditions are
|
||||
not met.
|
||||
|
||||
DISCLAIMER
|
||||
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
||||
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
||||
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
||||
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
||||
OTHER DEALINGS IN THE FONT SOFTWARE.
|
BIN
pkg/ui/public/assets/fonts/SourceSansPro-Black.ttf
Normal file
BIN
pkg/ui/public/assets/fonts/SourceSansPro-Black.ttf
Normal file
Binary file not shown.
BIN
pkg/ui/public/assets/fonts/SourceSansPro-BlackItalic.ttf
Normal file
BIN
pkg/ui/public/assets/fonts/SourceSansPro-BlackItalic.ttf
Normal file
Binary file not shown.
BIN
pkg/ui/public/assets/fonts/SourceSansPro-Bold.ttf
Normal file
BIN
pkg/ui/public/assets/fonts/SourceSansPro-Bold.ttf
Normal file
Binary file not shown.
BIN
pkg/ui/public/assets/fonts/SourceSansPro-BoldItalic.ttf
Normal file
BIN
pkg/ui/public/assets/fonts/SourceSansPro-BoldItalic.ttf
Normal file
Binary file not shown.
BIN
pkg/ui/public/assets/fonts/SourceSansPro-ExtraLight.ttf
Normal file
BIN
pkg/ui/public/assets/fonts/SourceSansPro-ExtraLight.ttf
Normal file
Binary file not shown.
BIN
pkg/ui/public/assets/fonts/SourceSansPro-ExtraLightItalic.ttf
Normal file
BIN
pkg/ui/public/assets/fonts/SourceSansPro-ExtraLightItalic.ttf
Normal file
Binary file not shown.
BIN
pkg/ui/public/assets/fonts/SourceSansPro-Italic.ttf
Normal file
BIN
pkg/ui/public/assets/fonts/SourceSansPro-Italic.ttf
Normal file
Binary file not shown.
BIN
pkg/ui/public/assets/fonts/SourceSansPro-Light.ttf
Normal file
BIN
pkg/ui/public/assets/fonts/SourceSansPro-Light.ttf
Normal file
Binary file not shown.
BIN
pkg/ui/public/assets/fonts/SourceSansPro-LightItalic.ttf
Normal file
BIN
pkg/ui/public/assets/fonts/SourceSansPro-LightItalic.ttf
Normal file
Binary file not shown.
BIN
pkg/ui/public/assets/fonts/SourceSansPro-Regular.ttf
Normal file
BIN
pkg/ui/public/assets/fonts/SourceSansPro-Regular.ttf
Normal file
Binary file not shown.
BIN
pkg/ui/public/assets/fonts/SourceSansPro-SemiBold.ttf
Normal file
BIN
pkg/ui/public/assets/fonts/SourceSansPro-SemiBold.ttf
Normal file
Binary file not shown.
BIN
pkg/ui/public/assets/fonts/SourceSansPro-SemiBoldItalic.ttf
Normal file
BIN
pkg/ui/public/assets/fonts/SourceSansPro-SemiBoldItalic.ttf
Normal file
Binary file not shown.
23
pkg/ui/public/assets/fonts/source-sans-pro.css
Normal file
23
pkg/ui/public/assets/fonts/source-sans-pro.css
Normal file
@ -0,0 +1,23 @@
|
||||
@font-face {
|
||||
font-family: 'Source Sans Pro';
|
||||
font-style: normal;
|
||||
font-weight: 300;
|
||||
src: local('Source Sans Pro Light'), local('SourceSansPro-Light'),
|
||||
url(SourceSansPro-Light.ttf) format('truetype');
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'Source Sans Pro';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
src: local('Source Sans Pro Regular'),
|
||||
local('SourceSansPro-Regular'),
|
||||
url(SourceSansPro-Regular.ttf) format('truetype');
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'Source Sans Pro';
|
||||
font-style: normal;
|
||||
font-weight: 700;
|
||||
src: local('Source Sans Pro Bold'),
|
||||
local('SourceSansPro-Bold'),
|
||||
url(SourceSansPro-Bold.ttf) format('truetype');
|
||||
}
|
Binary file not shown.
Before Width: | Height: | Size: 3.8 KiB |
@ -3,6 +3,7 @@
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<link rel="icon" href="%PUBLIC_URL%/favicon.ico" />
|
||||
<link rel="stylesheet" href="%PUBLIC_URL%/assets/fonts/source-sans-pro.css" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<meta name="theme-color" content="#000000" />
|
||||
<meta
|
||||
@ -24,20 +25,10 @@
|
||||
work correctly both with client-side routing and a non-root public URL.
|
||||
Learn how to configure a non-root public URL by running `npm run build`.
|
||||
-->
|
||||
<title>React App</title>
|
||||
<title>Alice BGP Looking Glass</title>
|
||||
</head>
|
||||
<body>
|
||||
<noscript>You need to enable JavaScript to run this app.</noscript>
|
||||
<div id="root"></div>
|
||||
<!--
|
||||
This HTML file is a template.
|
||||
If you open it directly in the browser, you will see an empty page.
|
||||
|
||||
You can add webfonts, meta tags, or analytics to this file.
|
||||
The build step will place the bundled scripts into the <body> tag.
|
||||
|
||||
To begin the development, run `npm start` or `yarn start`.
|
||||
To create a production bundle, use `npm run build` or `yarn build`.
|
||||
-->
|
||||
</body>
|
||||
</html>
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 5.2 KiB |
Binary file not shown.
Before Width: | Height: | Size: 9.4 KiB |
25
pkg/ui/public/manifest-icons.json
Normal file
25
pkg/ui/public/manifest-icons.json
Normal file
@ -0,0 +1,25 @@
|
||||
{
|
||||
"short_name": "AliceLG",
|
||||
"name": "Alice BGP Looking Glass",
|
||||
"icons": [
|
||||
{
|
||||
"src": "favicon.ico",
|
||||
"sizes": "64x64 32x32 24x24 16x16",
|
||||
"type": "image/x-icon"
|
||||
},
|
||||
{
|
||||
"src": "logo192.png",
|
||||
"type": "image/png",
|
||||
"sizes": "192x192"
|
||||
},
|
||||
{
|
||||
"src": "logo512.png",
|
||||
"type": "image/png",
|
||||
"sizes": "512x512"
|
||||
}
|
||||
],
|
||||
"start_url": ".",
|
||||
"display": "standalone",
|
||||
"theme_color": "#000000",
|
||||
"background_color": "#ffffff"
|
||||
}
|
@ -1,23 +1,6 @@
|
||||
{
|
||||
"short_name": "React App",
|
||||
"name": "Create React App Sample",
|
||||
"icons": [
|
||||
{
|
||||
"src": "favicon.ico",
|
||||
"sizes": "64x64 32x32 24x24 16x16",
|
||||
"type": "image/x-icon"
|
||||
},
|
||||
{
|
||||
"src": "logo192.png",
|
||||
"type": "image/png",
|
||||
"sizes": "192x192"
|
||||
},
|
||||
{
|
||||
"src": "logo512.png",
|
||||
"type": "image/png",
|
||||
"sizes": "512x512"
|
||||
}
|
||||
],
|
||||
"short_name": "AliceLG",
|
||||
"name": "Alice BGP Looking Glass",
|
||||
"start_url": ".",
|
||||
"display": "standalone",
|
||||
"theme_color": "#000000",
|
||||
|
@ -1,38 +0,0 @@
|
||||
.App {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.App-logo {
|
||||
height: 40vmin;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
@media (prefers-reduced-motion: no-preference) {
|
||||
.App-logo {
|
||||
animation: App-logo-spin infinite 20s linear;
|
||||
}
|
||||
}
|
||||
|
||||
.App-header {
|
||||
background-color: #282c34;
|
||||
min-height: 100vh;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
font-size: calc(10px + 2vmin);
|
||||
color: white;
|
||||
}
|
||||
|
||||
.App-link {
|
||||
color: #61dafb;
|
||||
}
|
||||
|
||||
@keyframes App-logo-spin {
|
||||
from {
|
||||
transform: rotate(0deg);
|
||||
}
|
||||
to {
|
||||
transform: rotate(360deg);
|
||||
}
|
||||
}
|
@ -1,25 +0,0 @@
|
||||
import logo from './logo.svg';
|
||||
import './App.css';
|
||||
|
||||
function App() {
|
||||
return (
|
||||
<div className="App">
|
||||
<header className="App-header">
|
||||
<img src={logo} className="App-logo" alt="logo" />
|
||||
<p>
|
||||
Edit <code>src/App.js</code> and save to reload.
|
||||
</p>
|
||||
<a
|
||||
className="App-link"
|
||||
href="https://reactjs.org"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
>
|
||||
Learn React
|
||||
</a>
|
||||
</header>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default App;
|
@ -1,8 +0,0 @@
|
||||
import { render, screen } from '@testing-library/react';
|
||||
import App from './App';
|
||||
|
||||
test('renders learn react link', () => {
|
||||
render(<App />);
|
||||
const linkElement = screen.getByText(/learn react/i);
|
||||
expect(linkElement).toBeInTheDocument();
|
||||
});
|
18
pkg/ui/src/app/App.js
Normal file
18
pkg/ui/src/app/App.js
Normal file
@ -0,0 +1,18 @@
|
||||
|
||||
|
||||
/**
|
||||
* Alice (formerly known as Birdseye) UI
|
||||
* -------------------------------------
|
||||
*
|
||||
* @author Annika Hannig <annika@hannig.cc>
|
||||
*/
|
||||
|
||||
|
||||
const App = () => {
|
||||
return (
|
||||
<p>hej there</p>
|
||||
);
|
||||
}
|
||||
|
||||
export default App;
|
||||
|
BIN
pkg/ui/src/img/alicebg-lg.png
Normal file
BIN
pkg/ui/src/img/alicebg-lg.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 89 KiB |
BIN
pkg/ui/src/img/alicebg.png
Normal file
BIN
pkg/ui/src/img/alicebg.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 34 KiB |
@ -1,13 +0,0 @@
|
||||
body {
|
||||
margin: 0;
|
||||
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',
|
||||
'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',
|
||||
sans-serif;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
}
|
||||
|
||||
code {
|
||||
font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New',
|
||||
monospace;
|
||||
}
|
@ -1,9 +1,11 @@
|
||||
import React from 'react';
|
||||
import ReactDOM from 'react-dom';
|
||||
import './index.css';
|
||||
import App from './App';
|
||||
import reportWebVitals from './reportWebVitals';
|
||||
|
||||
import './scss/main.scss';
|
||||
|
||||
import App from './app/App';
|
||||
|
||||
ReactDOM.render(
|
||||
<React.StrictMode>
|
||||
<App />
|
||||
|
@ -1 +0,0 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 841.9 595.3"><g fill="#61DAFB"><path d="M666.3 296.5c0-32.5-40.7-63.3-103.1-82.4 14.4-63.6 8-114.2-20.2-130.4-6.5-3.8-14.1-5.6-22.4-5.6v22.3c4.6 0 8.3.9 11.4 2.6 13.6 7.8 19.5 37.5 14.9 75.7-1.1 9.4-2.9 19.3-5.1 29.4-19.6-4.8-41-8.5-63.5-10.9-13.5-18.5-27.5-35.3-41.6-50 32.6-30.3 63.2-46.9 84-46.9V78c-27.5 0-63.5 19.6-99.9 53.6-36.4-33.8-72.4-53.2-99.9-53.2v22.3c20.7 0 51.4 16.5 84 46.6-14 14.7-28 31.4-41.3 49.9-22.6 2.4-44 6.1-63.6 11-2.3-10-4-19.7-5.2-29-4.7-38.2 1.1-67.9 14.6-75.8 3-1.8 6.9-2.6 11.5-2.6V78.5c-8.4 0-16 1.8-22.6 5.6-28.1 16.2-34.4 66.7-19.9 130.1-62.2 19.2-102.7 49.9-102.7 82.3 0 32.5 40.7 63.3 103.1 82.4-14.4 63.6-8 114.2 20.2 130.4 6.5 3.8 14.1 5.6 22.5 5.6 27.5 0 63.5-19.6 99.9-53.6 36.4 33.8 72.4 53.2 99.9 53.2 8.4 0 16-1.8 22.6-5.6 28.1-16.2 34.4-66.7 19.9-130.1 62-19.1 102.5-49.9 102.5-82.3zm-130.2-66.7c-3.7 12.9-8.3 26.2-13.5 39.5-4.1-8-8.4-16-13.1-24-4.6-8-9.5-15.8-14.4-23.4 14.2 2.1 27.9 4.7 41 7.9zm-45.8 106.5c-7.8 13.5-15.8 26.3-24.1 38.2-14.9 1.3-30 2-45.2 2-15.1 0-30.2-.7-45-1.9-8.3-11.9-16.4-24.6-24.2-38-7.6-13.1-14.5-26.4-20.8-39.8 6.2-13.4 13.2-26.8 20.7-39.9 7.8-13.5 15.8-26.3 24.1-38.2 14.9-1.3 30-2 45.2-2 15.1 0 30.2.7 45 1.9 8.3 11.9 16.4 24.6 24.2 38 7.6 13.1 14.5 26.4 20.8 39.8-6.3 13.4-13.2 26.8-20.7 39.9zm32.3-13c5.4 13.4 10 26.8 13.8 39.8-13.1 3.2-26.9 5.9-41.2 8 4.9-7.7 9.8-15.6 14.4-23.7 4.6-8 8.9-16.1 13-24.1zM421.2 430c-9.3-9.6-18.6-20.3-27.8-32 9 .4 18.2.7 27.5.7 9.4 0 18.7-.2 27.8-.7-9 11.7-18.3 22.4-27.5 32zm-74.4-58.9c-14.2-2.1-27.9-4.7-41-7.9 3.7-12.9 8.3-26.2 13.5-39.5 4.1 8 8.4 16 13.1 24 4.7 8 9.5 15.8 14.4 23.4zM420.7 163c9.3 9.6 18.6 20.3 27.8 32-9-.4-18.2-.7-27.5-.7-9.4 0-18.7.2-27.8.7 9-11.7 18.3-22.4 27.5-32zm-74 58.9c-4.9 7.7-9.8 15.6-14.4 23.7-4.6 8-8.9 16-13 24-5.4-13.4-10-26.8-13.8-39.8 13.1-3.1 26.9-5.8 41.2-7.9zm-90.5 125.2c-35.4-15.1-58.3-34.9-58.3-50.6 0-15.7 22.9-35.6 58.3-50.6 8.6-3.7 18-7 27.7-10.1 5.7 19.6 13.2 40 22.5 60.9-9.2 20.8-16.6 41.1-22.2 60.6-9.9-3.1-19.3-6.5-28-10.2zM310 490c-13.6-7.8-19.5-37.5-14.9-75.7 1.1-9.4 2.9-19.3 5.1-29.4 19.6 4.8 41 8.5 63.5 10.9 13.5 18.5 27.5 35.3 41.6 50-32.6 30.3-63.2 46.9-84 46.9-4.5-.1-8.3-1-11.3-2.7zm237.2-76.2c4.7 38.2-1.1 67.9-14.6 75.8-3 1.8-6.9 2.6-11.5 2.6-20.7 0-51.4-16.5-84-46.6 14-14.7 28-31.4 41.3-49.9 22.6-2.4 44-6.1 63.6-11 2.3 10.1 4.1 19.8 5.2 29.1zm38.5-66.7c-8.6 3.7-18 7-27.7 10.1-5.7-19.6-13.2-40-22.5-60.9 9.2-20.8 16.6-41.1 22.2-60.6 9.9 3.1 19.3 6.5 28.1 10.2 35.4 15.1 58.3 34.9 58.3 50.6-.1 15.7-23 35.6-58.4 50.6zM320.8 78.4z"/><circle cx="420.9" cy="296.5" r="45.7"/><path d="M520.5 78.1z"/></g></svg>
|
Before Width: | Height: | Size: 2.6 KiB |
14
pkg/ui/src/scss/components/card.scss
Normal file
14
pkg/ui/src/scss/components/card.scss
Normal file
@ -0,0 +1,14 @@
|
||||
|
||||
.card {
|
||||
position: relative;
|
||||
background: white;
|
||||
margin: 20px 0px 20px 0px;
|
||||
border-radius: 2px;
|
||||
box-shadow: 0px 1px 3px #cccccc;
|
||||
padding: 15px;
|
||||
}
|
||||
|
||||
.card-header {
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
15
pkg/ui/src/scss/components/communities.scss
Normal file
15
pkg/ui/src/scss/components/communities.scss
Normal file
@ -0,0 +1,15 @@
|
||||
|
||||
// BGP Communities Labels
|
||||
|
||||
|
||||
.label-bgp-community {
|
||||
margin-right: 5px;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.label-bgp-unknown {
|
||||
color: #333;
|
||||
background-color: #ddd;
|
||||
}
|
||||
|
||||
|
42
pkg/ui/src/scss/components/error.scss
Normal file
42
pkg/ui/src/scss/components/error.scss
Normal file
@ -0,0 +1,42 @@
|
||||
.error-notify {
|
||||
width: 420px;
|
||||
border-bottom: 7px solid #7c0002;
|
||||
background-color: rgba(255,0,0,0.8);
|
||||
color: #fff;
|
||||
border-radius: 2px;
|
||||
padding: 16px;
|
||||
position: fixed;
|
||||
display: table;
|
||||
z-index: 999;
|
||||
right: 30px;
|
||||
top: 20px;
|
||||
|
||||
.error-icon {
|
||||
display: table-cell;
|
||||
width: 60px;
|
||||
padding: 8px 10px 0 10px;
|
||||
text-align: center;
|
||||
vertical-align: top;
|
||||
|
||||
> i {
|
||||
font-size: 3em;
|
||||
border-radius: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
.error-message{
|
||||
display: table-cell;
|
||||
|
||||
> p {
|
||||
line-height: 1.2;
|
||||
margin-top: 6px;
|
||||
}
|
||||
}
|
||||
|
||||
.error-dismiss {
|
||||
position: absolute;
|
||||
right: 5px;
|
||||
top: 0px;
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
59
pkg/ui/src/scss/components/filter-editor.scss
Normal file
59
pkg/ui/src/scss/components/filter-editor.scss
Normal file
@ -0,0 +1,59 @@
|
||||
|
||||
/*
|
||||
* Filters
|
||||
*/
|
||||
|
||||
.lookup-filters-editor {
|
||||
h2 {
|
||||
color: #555;
|
||||
font-weight: bold;
|
||||
|
||||
margin-top: 8px;
|
||||
margin-bottom: 5px;
|
||||
|
||||
font-size: 12px;
|
||||
|
||||
text-transform: uppercase;
|
||||
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
|
||||
// Select Control
|
||||
.select-ctrl {
|
||||
width: 100%;
|
||||
.select-container {
|
||||
width: 100%;
|
||||
}
|
||||
select {
|
||||
padding: 0px;
|
||||
width: 100%;
|
||||
}
|
||||
td {
|
||||
padding-bottom: 5px;
|
||||
vertical-align: middle;
|
||||
}
|
||||
.btn {
|
||||
margin-left: 3px;
|
||||
border-radius: 100px;
|
||||
padding: 3px 5px;
|
||||
font-size: 10px;
|
||||
line-height: 10px;
|
||||
color: #337ab7;
|
||||
}
|
||||
.btn-remove {
|
||||
color: #aa0000;
|
||||
}
|
||||
|
||||
.options-title {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.label {
|
||||
text-align: left;
|
||||
white-space: normal;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
42
pkg/ui/src/scss/components/lookup.scss
Normal file
42
pkg/ui/src/scss/components/lookup.scss
Normal file
@ -0,0 +1,42 @@
|
||||
|
||||
.lookup-container {
|
||||
h2 {
|
||||
text-transform: uppercase;
|
||||
color: #337ab7;
|
||||
font-size: 14px;
|
||||
line-height: 1;
|
||||
margin-top: 0px;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
.lookup-result-summary {
|
||||
ul {
|
||||
list-style: none;
|
||||
padding: 0px;
|
||||
margin: 0px;
|
||||
}
|
||||
|
||||
li {
|
||||
padding: 5px 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
.lookup-help {
|
||||
margin: 30px 20px;
|
||||
|
||||
h3 {
|
||||
font-weight: normal;
|
||||
font-style: italic;
|
||||
color: #337ab7;
|
||||
margin-top: 15px;
|
||||
font-size: 14px;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
b {
|
||||
|
||||
}
|
||||
}
|
||||
|
45
pkg/ui/src/scss/components/modal.scss
Normal file
45
pkg/ui/src/scss/components/modal.scss
Normal file
@ -0,0 +1,45 @@
|
||||
|
||||
/**
|
||||
* Show Modal
|
||||
*/
|
||||
|
||||
.modal-show {
|
||||
display: block;
|
||||
|
||||
.modal-content {
|
||||
border-radius: 3px;
|
||||
}
|
||||
}
|
||||
|
||||
.modal-dialog {
|
||||
.modal-body {
|
||||
max-height: 70vh;
|
||||
overflow-y: auto;
|
||||
}
|
||||
}
|
||||
|
||||
.bgp-attributes-modal {
|
||||
.modal-header {
|
||||
p {
|
||||
margin: 0px;
|
||||
font-size: 10px;
|
||||
}
|
||||
h4 {
|
||||
font-size: 14px;
|
||||
margin: 0px;
|
||||
}
|
||||
}
|
||||
|
||||
table {
|
||||
th {
|
||||
width: 142px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.table-nolines {
|
||||
td, th {
|
||||
border: none !important;
|
||||
}
|
||||
}
|
||||
|
56
pkg/ui/src/scss/components/neighbors.scss
Normal file
56
pkg/ui/src/scss/components/neighbors.scss
Normal file
@ -0,0 +1,56 @@
|
||||
|
||||
.col-neighbor-attr {
|
||||
white-space: nowrap;
|
||||
a, a:link, a:active {
|
||||
color: #333;
|
||||
}
|
||||
|
||||
i.fa {
|
||||
color: #333;
|
||||
}
|
||||
}
|
||||
|
||||
.col-neighbor-active {
|
||||
font-weight: bold;
|
||||
color: #2e6da4;
|
||||
}
|
||||
|
||||
.neighbors-quick-links {
|
||||
margin: -0.75em 0;
|
||||
text-align: right;
|
||||
span {
|
||||
color: #888;
|
||||
}
|
||||
|
||||
ul {
|
||||
padding: 0px;
|
||||
margin: 0px;
|
||||
display: inline-block;
|
||||
}
|
||||
li {
|
||||
display: inline-block;
|
||||
padding: 0px 4px;
|
||||
margin: 0px 0px 0px 8px;
|
||||
background: white;
|
||||
border-radius: 3px;
|
||||
|
||||
&.established a {
|
||||
color: green;
|
||||
}
|
||||
|
||||
&.down a {
|
||||
color: red;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.card-header-neighbors {
|
||||
&.established {
|
||||
color: green;
|
||||
}
|
||||
|
||||
&.down {
|
||||
color: red;
|
||||
}
|
||||
}
|
||||
|
48
pkg/ui/src/scss/components/pagination.scss
Normal file
48
pkg/ui/src/scss/components/pagination.scss
Normal file
@ -0,0 +1,48 @@
|
||||
|
||||
/*
|
||||
Pagination is handled pretty well by bootstrap.
|
||||
We add some minor extensions, like a breakable paginator.
|
||||
*/
|
||||
|
||||
.pagination {
|
||||
li.break {
|
||||
a {
|
||||
border: none;
|
||||
border-left: 1px solid #ddd;
|
||||
|
||||
&:hover {
|
||||
background: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.pagination-select {
|
||||
width: auto;
|
||||
position: relative;
|
||||
float: left;
|
||||
padding: 6px 12px;
|
||||
margin-left: -1px;
|
||||
line-height: 1.42857143;
|
||||
color: #337ab7;
|
||||
text-decoration: none;
|
||||
|
||||
background-color: #fff;
|
||||
border: 1px solid #ddd;
|
||||
border-radius: 3px;
|
||||
border-top-left-radius: 0px;
|
||||
border-bottom-left-radius: 0px;
|
||||
|
||||
cursor: pointer;
|
||||
|
||||
-moz-appearance: none;
|
||||
-webkit-appearance: none
|
||||
}
|
||||
|
||||
li.active {
|
||||
.pagination-select {
|
||||
background-color: #337ab7;
|
||||
color: #fff;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
410
pkg/ui/src/scss/components/routes.scss
Normal file
410
pkg/ui/src/scss/components/routes.scss
Normal file
@ -0,0 +1,410 @@
|
||||
|
||||
$labelOffsetStart: -90px;
|
||||
$labelOffsetEnd: -70px;
|
||||
|
||||
|
||||
@-webkit-keyframes fadeSmooth {
|
||||
from {
|
||||
opacity: 0;
|
||||
left: $labelOffsetStart;
|
||||
}
|
||||
|
||||
to {
|
||||
opacity: 1;
|
||||
left: $labelOffsetEnd;
|
||||
}
|
||||
}
|
||||
@keyframes fadeSmooth {
|
||||
from {
|
||||
opacity: 0;
|
||||
left: $labelOffsetStart;
|
||||
}
|
||||
|
||||
to {
|
||||
opacity: 1;
|
||||
left: $labelOffsetEnd;
|
||||
}
|
||||
}
|
||||
|
||||
.fadeIn {
|
||||
}
|
||||
|
||||
|
||||
.table-routes {
|
||||
tr {
|
||||
position: relative; // anchor
|
||||
}
|
||||
|
||||
td {
|
||||
color: #337ab7;
|
||||
text-decoration: none;
|
||||
|
||||
span:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
span {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
.noexport-reason,
|
||||
.reject-reason {
|
||||
font-size: 90%;
|
||||
color: #333;
|
||||
margin-bottom: 1px;
|
||||
|
||||
a {
|
||||
color: #aa0000;
|
||||
}
|
||||
}
|
||||
|
||||
.col-route-flags {
|
||||
// padding: 7px 0px;
|
||||
padding-left: 2px;
|
||||
width: auto;
|
||||
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.col-route-network {
|
||||
// padding: 8px 0px;
|
||||
// padding-left: 3px;
|
||||
|
||||
}
|
||||
|
||||
.route-prefix-flags {
|
||||
.primary-route {
|
||||
color: #efb208;
|
||||
}
|
||||
|
||||
.rpki-valid {
|
||||
color: #009900;
|
||||
}
|
||||
|
||||
.rpki-invalid {
|
||||
color: #d80000;
|
||||
}
|
||||
|
||||
.rpki-unknown {
|
||||
color: #2e6da4;
|
||||
}
|
||||
|
||||
.rpki-not-checked {
|
||||
color: #2e6da4;
|
||||
}
|
||||
|
||||
.reject-candidate-route {
|
||||
color: #d80000;
|
||||
}
|
||||
}
|
||||
|
||||
.route-prefix-flags {
|
||||
}
|
||||
|
||||
.route-prefix-flag {
|
||||
color: #555;
|
||||
text-decoration: none;
|
||||
border: none;
|
||||
|
||||
font-size: 10px;
|
||||
|
||||
cursor: default;
|
||||
|
||||
padding-left: 3px;
|
||||
|
||||
div {
|
||||
font-size: 12px;
|
||||
display: none;
|
||||
// top: -5px;
|
||||
left: $labelOffsetStart;
|
||||
background: rgba(0, 0, 0, 0.45);
|
||||
color: white;
|
||||
position: absolute;
|
||||
padding: 5px;
|
||||
margin-top: -22px;
|
||||
border-radius: 3px;
|
||||
font-weight: bold;
|
||||
|
||||
-webkit-animation-name: fadeSmooth;
|
||||
animation-name: fadeSmooth;
|
||||
}
|
||||
|
||||
&:hover {
|
||||
text-decoration: none;
|
||||
div {
|
||||
display: block;
|
||||
|
||||
-webkit-animation-duration: 0.5s;
|
||||
animation-duration: 0.5s;
|
||||
-webkit-animation-fill-mode: both;
|
||||
animation-fill-mode: both;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
.route-network {
|
||||
display: inline-block;
|
||||
position: relative;
|
||||
width: 100%;
|
||||
white-space: nowrap;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
.table-protocols {
|
||||
.date-since {
|
||||
white-space: nowrap;
|
||||
}
|
||||
background: white;
|
||||
}
|
||||
|
||||
|
||||
.routes-loading.card {
|
||||
p {
|
||||
font-family: monospace;
|
||||
font-size: 12px;
|
||||
}
|
||||
}
|
||||
|
||||
.routes-header-container {
|
||||
text-decoration: none;
|
||||
|
||||
a:hover {
|
||||
text-decoration: none;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
.routes-quick-links {
|
||||
margin: -0.75em 0;
|
||||
|
||||
text-align: right;
|
||||
span {
|
||||
color: #888;
|
||||
}
|
||||
|
||||
ul {
|
||||
padding: 0px;
|
||||
margin: 0px;
|
||||
display: inline-block;
|
||||
}
|
||||
li {
|
||||
display: inline-block;
|
||||
padding: 0px 4px;
|
||||
margin: 0px 0px 0px 8px;
|
||||
background: white;
|
||||
border-radius: 3px;
|
||||
|
||||
&.filtered a {
|
||||
color: orange;
|
||||
}
|
||||
|
||||
&.received a {
|
||||
color: green;
|
||||
}
|
||||
|
||||
&.not-exported a {
|
||||
color: red;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Related Peers
|
||||
*/
|
||||
.related-peers {
|
||||
$tabHeight: 23px;
|
||||
$shadowOffset: 3px;
|
||||
|
||||
display: block;
|
||||
position: absolute;
|
||||
overflow: hidden;
|
||||
|
||||
padding: $shadowOffset $shadowOffset 0px $shadowOffset;
|
||||
margin: 0px;
|
||||
|
||||
list-style: none;
|
||||
|
||||
top: -$tabHeight - $shadowOffset;
|
||||
|
||||
li {
|
||||
height: $tabHeight;
|
||||
line-height: $tabHeight;
|
||||
|
||||
display: inline-block;
|
||||
|
||||
padding: 0px 5px;
|
||||
margin: 0px 10px 0px 0px;
|
||||
|
||||
border-bottom: 1px solid #ffffff;
|
||||
background: #ffffff;
|
||||
border-top-left-radius: 2px;
|
||||
border-top-right-radius: 2px;
|
||||
|
||||
box-shadow: 0px 1px 3px #aaa;
|
||||
|
||||
&.active {
|
||||
font-weight: bold;
|
||||
a {
|
||||
color: #222;
|
||||
}
|
||||
}
|
||||
|
||||
a, a:hover {
|
||||
text-decoration: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.has-related-peers {
|
||||
.details-main {
|
||||
padding-top: 21px;
|
||||
}
|
||||
}
|
||||
|
||||
.card-header-routes {
|
||||
&.received {
|
||||
color: green;
|
||||
}
|
||||
&.filtered {
|
||||
color: orange;
|
||||
}
|
||||
&.not-exported {
|
||||
color: red;
|
||||
}
|
||||
}
|
||||
|
||||
.routes-view {
|
||||
&.routes-filtered {
|
||||
.route-prefix-flag {
|
||||
&.reject-candidate-route {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&.routes-received {
|
||||
.table-routes {
|
||||
.reject-reason {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Responsive tweaks: The awkward inbetween.
|
||||
@media (min-width: 1200px) and (max-width: 1258px) {
|
||||
.details-main {
|
||||
> .col-main {
|
||||
width: 80%;
|
||||
float: left;
|
||||
}
|
||||
> .col-aside-details {
|
||||
width: 20%;
|
||||
float: left;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Related Peers Box
|
||||
.card-related-peers {
|
||||
h2 {
|
||||
color: #555;
|
||||
font-weight: bold;
|
||||
|
||||
margin-top: 8px;
|
||||
margin-bottom: 5px;
|
||||
|
||||
font-size: 12px;
|
||||
|
||||
text-transform: uppercase;
|
||||
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-size: 14px;
|
||||
margin: 10px 0px 0px 0px;
|
||||
padding-bottom: 2px;
|
||||
border-bottom: 1px solid #ccc;
|
||||
color: black;
|
||||
}
|
||||
|
||||
.related-peers-rs-peer {
|
||||
margin: 5px 0px;
|
||||
width: 100%;
|
||||
td {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
.card-related-peers {
|
||||
table {
|
||||
width: 100%;
|
||||
}
|
||||
.uptime {
|
||||
text-align: right;
|
||||
}
|
||||
.peer-stats {
|
||||
text-align: center;
|
||||
cursor: default;
|
||||
.routes-received {
|
||||
color: green;
|
||||
}
|
||||
.routes-accepted {
|
||||
color: green;
|
||||
}
|
||||
.routes-filtered {
|
||||
color: orange;
|
||||
}
|
||||
.routes-exported {
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
.atooltip {
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
cursor: default;
|
||||
}
|
||||
.atooltip i {
|
||||
position: absolute;
|
||||
font-style: normal;
|
||||
width:140px;
|
||||
color: #ffffff;
|
||||
background: #000000;
|
||||
height: 30px;
|
||||
line-height: 30px;
|
||||
text-align: center;
|
||||
visibility: hidden;
|
||||
border-radius: 6px;
|
||||
}
|
||||
.atooltip i:after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
top: 100%;
|
||||
left: 50%;
|
||||
margin-left: -8px;
|
||||
width: 0; height: 0;
|
||||
border-top: 8px solid #000000;
|
||||
border-right: 8px solid transparent;
|
||||
border-left: 8px solid transparent;
|
||||
}
|
||||
.atooltip:hover i {
|
||||
visibility: visible;
|
||||
opacity: 0.8;
|
||||
bottom: 30px;
|
||||
left: 50%;
|
||||
margin-left: -76px;
|
||||
z-index: 999;
|
||||
}
|
||||
|
||||
|
145
pkg/ui/src/scss/components/sidebar.scss
Normal file
145
pkg/ui/src/scss/components/sidebar.scss
Normal file
@ -0,0 +1,145 @@
|
||||
|
||||
/*
|
||||
* HEADER
|
||||
*/
|
||||
|
||||
.page-sidebar {
|
||||
color: #f0f0f0;
|
||||
|
||||
h2 {
|
||||
color: #b0b0b0;
|
||||
margin-top: 15px;
|
||||
font-size: 12px;
|
||||
|
||||
text-transform: uppercase;
|
||||
|
||||
padding-left: 15px;
|
||||
}
|
||||
|
||||
|
||||
.sidebar-header {
|
||||
color: #f0f0f0;
|
||||
|
||||
padding: 5px;
|
||||
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
|
||||
background: #222;
|
||||
.logo {
|
||||
flex: 0 0 45px;
|
||||
padding: 10px 8px;
|
||||
|
||||
i {
|
||||
font-size: 28px;
|
||||
}
|
||||
}
|
||||
|
||||
.title {
|
||||
flex: 1;
|
||||
|
||||
h1 {
|
||||
margin: 7px 0px 0px 0px;
|
||||
padding: 3px 0px;
|
||||
font-size: 13px;
|
||||
color: #f0f0f0;
|
||||
}
|
||||
p {
|
||||
font-size: 10px;
|
||||
color: #f0f0f0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
.routeservers-list {
|
||||
margin-top: 40px;
|
||||
|
||||
> ul {
|
||||
list-style: none;
|
||||
padding: 0px;
|
||||
margin: 0px;
|
||||
li {
|
||||
padding: 8px;
|
||||
padding-left: 15px;
|
||||
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
li.active {
|
||||
}
|
||||
}
|
||||
|
||||
.routeserver-id {
|
||||
font-size: 13px;
|
||||
display: block;
|
||||
}
|
||||
|
||||
a.routeserver-id {
|
||||
text-decoration: none;
|
||||
|
||||
&:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
}
|
||||
|
||||
.routeserver-status {
|
||||
.bird-version {
|
||||
font-size: 10px;
|
||||
color: #888888;
|
||||
}
|
||||
|
||||
.api-error {
|
||||
font-size: 10px;
|
||||
color: #aa0000;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
.routeservers-groups-select {
|
||||
display: block;
|
||||
padding: 0px 15px;
|
||||
.btn-select {
|
||||
display: block;
|
||||
width: 100%;
|
||||
background: #222;
|
||||
border: #222;
|
||||
text-align: left;
|
||||
color: white;
|
||||
text-shadow: none;
|
||||
|
||||
.caret {
|
||||
float: right;
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
&:focus,
|
||||
&:hover {
|
||||
background: #222;
|
||||
color: white;
|
||||
text-shadow: none;
|
||||
}
|
||||
|
||||
&:focus {
|
||||
box-shadow: 0px 1px 0px #555;
|
||||
}
|
||||
}
|
||||
|
||||
.btn-option {
|
||||
display: block;
|
||||
text-align: left;
|
||||
color: #222;
|
||||
width: 100%;
|
||||
padding: 2px 10px;
|
||||
|
||||
&:hover {
|
||||
background: #ccc;
|
||||
text-decoration: none;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
34
pkg/ui/src/scss/components/status.scss
Normal file
34
pkg/ui/src/scss/components/status.scss
Normal file
@ -0,0 +1,34 @@
|
||||
|
||||
|
||||
|
||||
.page-header {
|
||||
padding: 0px 20px;
|
||||
|
||||
.status-name {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.status-protocol {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.spacer {
|
||||
font-weight: bold;
|
||||
padding: 0px 8px;
|
||||
}
|
||||
}
|
||||
|
||||
.routeserver-status {
|
||||
margin: 0px;
|
||||
padding: 0px;
|
||||
td {
|
||||
vertical-align: top;
|
||||
padding: 4px;
|
||||
|
||||
i {
|
||||
width: 15px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
8
pkg/ui/src/scss/components/welcome.scss
Normal file
8
pkg/ui/src/scss/components/welcome.scss
Normal file
@ -0,0 +1,8 @@
|
||||
|
||||
.welcome-page {
|
||||
.jumbotron {
|
||||
padding: 20px;
|
||||
}
|
||||
}
|
||||
|
||||
|
127
pkg/ui/src/scss/layouts/main.scss
Normal file
127
pkg/ui/src/scss/layouts/main.scss
Normal file
@ -0,0 +1,127 @@
|
||||
/**
|
||||
* Main Layout Scss File
|
||||
*/
|
||||
|
||||
|
||||
body, html {
|
||||
font-family: "Source Sans Pro";
|
||||
margin: 0px;
|
||||
padding: 0px;
|
||||
}
|
||||
|
||||
body,
|
||||
.page {
|
||||
display: flex;
|
||||
min-height: 100vh;
|
||||
flex-direction: row;
|
||||
|
||||
}
|
||||
|
||||
#app {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.page header {
|
||||
margin-top: 50px;
|
||||
}
|
||||
|
||||
.page-body {
|
||||
display: flex;
|
||||
flex: 1;
|
||||
}
|
||||
|
||||
.page-content {
|
||||
display: flex;
|
||||
flex: 1 0;
|
||||
flex-direction: column;
|
||||
background: #f4f5f7;
|
||||
background-image: url('../../img/alicebg.png');
|
||||
background-position: 90% 100%;
|
||||
background-attachment: fixed;
|
||||
background-repeat: no-repeat;
|
||||
padding: 0px;
|
||||
margin: 0px;
|
||||
}
|
||||
|
||||
.main-content-wrapper {
|
||||
flex: 1;
|
||||
}
|
||||
|
||||
.page-footer {
|
||||
flex: 0 1;
|
||||
padding: 3px;
|
||||
|
||||
a {
|
||||
font-size: 12px;
|
||||
text-decoration: none;
|
||||
}
|
||||
}
|
||||
|
||||
.page-nav {
|
||||
flex: 0 0 250px;
|
||||
order: -1;
|
||||
background: #f8f8f8;
|
||||
// border-right: 1px solid #ccc;
|
||||
}
|
||||
|
||||
.page-sidebar {
|
||||
flex: 0 0 195px;
|
||||
background: #272634;
|
||||
// border-left: 1px solid #ccc;
|
||||
}
|
||||
|
||||
@media (min-width: 1300px) {
|
||||
.page-sidebar {
|
||||
flex: 0 0 230px;
|
||||
background: #272634;
|
||||
}
|
||||
}
|
||||
|
||||
header {
|
||||
flex: none;
|
||||
}
|
||||
|
||||
.navbar {
|
||||
box-shadow: none;
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
|
||||
.page-header {
|
||||
line-height: 59px;
|
||||
background: white;
|
||||
margin: 0px;
|
||||
height: 59px;
|
||||
|
||||
box-shadow: 0px 1px 4px #eee;
|
||||
}
|
||||
|
||||
.table-protocols {
|
||||
.protocol-state-error {
|
||||
display: block;
|
||||
font-size: 11px;
|
||||
color: orange;
|
||||
}
|
||||
}
|
||||
|
||||
.loading-indicator {
|
||||
text-align: center;
|
||||
width: 50px;
|
||||
margin: 0px auto;
|
||||
}
|
||||
|
||||
.details-main {
|
||||
.help-block {
|
||||
margin: 20px;
|
||||
padding: 10px 5px;
|
||||
}
|
||||
|
||||
margin-right: 0px;
|
||||
margin-top: 20px;
|
||||
|
||||
&.row {
|
||||
margin: 0px;
|
||||
}
|
||||
}
|
||||
|
||||
|
17
pkg/ui/src/scss/main.scss
Normal file
17
pkg/ui/src/scss/main.scss
Normal file
@ -0,0 +1,17 @@
|
||||
// @import 'node_modules/font-awesome/css/font-awesome.css';
|
||||
|
||||
@import 'layouts/main';
|
||||
|
||||
@import 'components/welcome';
|
||||
@import 'components/sidebar';
|
||||
@import 'components/status';
|
||||
@import 'components/card';
|
||||
@import 'components/modal';
|
||||
@import 'components/neighbors';
|
||||
@import 'components/routes';
|
||||
@import 'components/error';
|
||||
@import 'components/lookup';
|
||||
@import 'components/pagination';
|
||||
@import 'components/communities';
|
||||
@import 'components/filter-editor';
|
||||
|
@ -2959,7 +2959,7 @@ check-types@^11.1.1:
|
||||
resolved "https://registry.yarnpkg.com/check-types/-/check-types-11.1.2.tgz#86a7c12bf5539f6324eb0e70ca8896c0e38f3e2f"
|
||||
integrity sha512-tzWzvgePgLORb9/3a0YenggReLKAIb2owL03H2Xdoe5pKcUyWRSEQ8xfCar8t2SIAuEDwtmx2da1YB52YuHQMQ==
|
||||
|
||||
chokidar@^3.4.2, chokidar@^3.5.3:
|
||||
"chokidar@>=3.0.0 <4.0.0", chokidar@^3.4.2, chokidar@^3.5.3:
|
||||
version "3.5.3"
|
||||
resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd"
|
||||
integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==
|
||||
@ -4819,6 +4819,11 @@ immer@^9.0.7:
|
||||
resolved "https://registry.yarnpkg.com/immer/-/immer-9.0.15.tgz#0b9169e5b1d22137aba7d43f8a81a495dd1b62dc"
|
||||
integrity sha512-2eB/sswms9AEUSkOm4SbV5Y7Vmt/bKRwByd52jfLkW4OLYeaTP3EEiJ9agqU0O/tq6Dk62Zfj+TJSqfm1rLVGQ==
|
||||
|
||||
immutable@^4.0.0:
|
||||
version "4.1.0"
|
||||
resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.1.0.tgz#f795787f0db780183307b9eb2091fcac1f6fafef"
|
||||
integrity sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ==
|
||||
|
||||
import-fresh@^3.0.0, import-fresh@^3.1.0, import-fresh@^3.2.1:
|
||||
version "3.3.0"
|
||||
resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b"
|
||||
@ -7551,6 +7556,15 @@ sass-loader@^12.3.0:
|
||||
klona "^2.0.4"
|
||||
neo-async "^2.6.2"
|
||||
|
||||
sass@^1.52.3:
|
||||
version "1.52.3"
|
||||
resolved "https://registry.yarnpkg.com/sass/-/sass-1.52.3.tgz#b7cc7ffea2341ccc9a0c4fd372bf1b3f9be1b6cb"
|
||||
integrity sha512-LNNPJ9lafx+j1ArtA7GyEJm9eawXN8KlA1+5dF6IZyoONg1Tyo/g+muOsENWJH/2Q1FHbbV4UwliU0cXMa/VIA==
|
||||
dependencies:
|
||||
chokidar ">=3.0.0 <4.0.0"
|
||||
immutable "^4.0.0"
|
||||
source-map-js ">=0.6.2 <2.0.0"
|
||||
|
||||
sax@~1.2.4:
|
||||
version "1.2.4"
|
||||
resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
|
||||
@ -7762,7 +7776,7 @@ source-list-map@^2.0.0, source-list-map@^2.0.1:
|
||||
resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34"
|
||||
integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==
|
||||
|
||||
source-map-js@^1.0.1, source-map-js@^1.0.2:
|
||||
"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.0.1, source-map-js@^1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c"
|
||||
integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==
|
||||
|
Loading…
x
Reference in New Issue
Block a user