Compare commits

...

7 commits

23 changed files with 102 additions and 35 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5 KiB

View file

@ -2,14 +2,14 @@
<html lang="en">
<head>
<meta charset="utf-8" />
<link rel="icon" href="%PUBLIC_URL%/favicon.ico" />
<link rel="icon" href="%PUBLIC_URL%/assets/lit_logos/favicon_lit_transp.ico" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="theme-color" content="#000000" />
<meta
name="description"
content="Web site created using create-react-app"
/>
<link rel="apple-touch-icon" href="%PUBLIC_URL%/logo192.png" />
<link rel="apple-touch-icon" href="%PUBLIC_URL%/assets/lit_logos/lit_transp_192x192.png" />
<!--
manifest.json provides metadata used when your web app is installed on a
user's mobile device or desktop. See https://developers.google.com/web/fundamentals/web-app-manifest/

View file

@ -3,17 +3,17 @@
"name": "Create React App Sample",
"icons": [
{
"src": "favicon.ico",
"src": "assets/lit_logos/favicon_lit_transp.ico",
"sizes": "64x64 32x32 24x24 16x16",
"type": "image/x-icon"
},
{
"src": "logo192.png",
"src": "assets/lit_logos/lit_transp_192x192.png",
"type": "image/png",
"sizes": "192x192"
},
{
"src": "logo512.png",
"src": "assets/lit_logos/lit_transp_512x512.png",
"type": "image/png",
"sizes": "512x512"
}

View file

@ -16,9 +16,9 @@ function App() {
<Helmet>
<title>Colli</title>
<meta name="description" content="Stackspin" />
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png" />
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png" />
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png" />
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon_lit_transp.png" />
<link rel="icon" type="image/png" sizes="32x32" href="/assets/lit_logos/lit_transp_32x32.png" />
<link rel="icon" type="image/png" sizes="16x16" href="/assets/lit_logos/lit_transp_16x16" />
<link rel="manifest" href="/site.webmanifest" />
<meta name="msapplication-TileColor" content="#da532c" />
<meta name="theme-color" content="#ffffff" />

View file

@ -3,12 +3,7 @@ import { Disclosure } from '@headlessui/react';
import { MenuIcon, XIcon } from '@heroicons/react/outline';
import clsx from 'clsx';
import { Link, useLocation } from 'react-router-dom';
const navigation = [
{ name: 'Dashboard', to: '/dashboard', requiresAdmin: false },
{ name: 'Dateiablage', to: '/files', requiresAdmin: false },
{ name: 'Projekte', to: '/projects', requiresAdmin: false },
];
import { DASHBOARD_APPS } from 'src/modules/dashboard/consts';
// eslint-disable-next-line @typescript-eslint/no-empty-interface
interface HeaderProps {}
@ -18,14 +13,14 @@ const Header: React.FC<HeaderProps> = () => {
return (
<>
<Disclosure as="nav" className="bg-white shadow relative z-10">
<Disclosure as="nav" className="bg-light shadow relative z-10">
{({ open }) => (
<div className="relative">
<div className="max-w-7xl mx-auto px-2 sm:px-6 lg:px-8">
<div className="relative flex justify-between h-16">
<div className="absolute inset-y-0 left-0 flex items-center sm:hidden">
{/* Mobile menu button */}
<Disclosure.Button className="inline-flex items-center justify-center p-2 rounded-md text-gray-400 hover:text-gray-500 hover:bg-gray-100 focus:outline-none focus:ring-2 focus:ring-inset focus:ring-primary-500">
<Disclosure.Button className="inline-flex items-center justify-center p-2 rounded-md text-gray-400 hover:text-gray-500 focus:outline-none focus:ring-2 focus:ring-inset focus:ring-primary-500">
<span className="sr-only">Open main menu</span>
{open ? (
<XIcon className="block h-6 w-6" aria-hidden="true" />
@ -36,24 +31,24 @@ const Header: React.FC<HeaderProps> = () => {
</div>
<div className="flex-1 flex items-center justify-center sm:items-stretch sm:justify-start">
<Link to="/" className="flex-shrink-0 flex items-center">
<img className="block lg:hidden" src="/assets/logo-small.svg" alt="Stackspin" />
<img className="hidden lg:block" src="/assets/logo.svg" alt="Stackspin" />
<img className="block lg:hidden" src="/assets/lit_logos/lit_transp_title_96.png" alt="Local-IT" />
<img className="hidden lg:block" src="/assets/lit_logos/lit_transp_title_96.png" alt="Local-IT" />
</Link>
<div className="hidden sm:ml-6 sm:flex sm:space-x-8">
{/* Current: "border-primary-500 text-gray-900", Default: "border-transparent text-gray-500 hover:border-gray-300 hover:text-gray-700" */}
{navigation.map((item) => (
{DASHBOARD_APPS('').map((app) => (
<Link
key={item.name}
to={item.to}
key={app.name}
to={app.internalUrl}
className={clsx(
'border-primary-50 text-gray-900 inline-flex items-center px-1 pt-1 border-b-2 text-sm font-medium',
'border-primary-50 inline-flex items-center px-1 pt-1 border-b-2 text-sm font-medium litbutton',
{
'border-primary-500 text-gray-500 hover:border-gray-300 hover:text-gray-700 inline-flex items-center px-1 pt-1 text-sm font-medium':
pathname.includes(item.to),
'border-primary-500 litbutton-active hover:border-gray-300 inline-flex items-center px-1 pt-1 text-sm font-medium':
pathname.includes(app.internalUrl),
},
)}
>
{item.name}
{app.name}
</Link>
))}
</div>
@ -63,20 +58,18 @@ const Header: React.FC<HeaderProps> = () => {
<Disclosure.Panel className="sm:hidden">
<div className="pt-2 pb-4 space-y-1">
{navigation.map((item) => (
{DASHBOARD_APPS('').map((app) => (
<Link
key={item.name}
to={item.to}
key={app.name}
to={app.internalUrl}
className={clsx(
'border-transparent text-gray-500 hover:text-gray-700 block pl-3 pr-4 py-2 border-l-4 text-base font-medium',
'border-transparent litbutton block pl-3 pr-4 py-2 border-l-4 litbutton text-base font-medium',
{
'bg-primary-50 border-primary-400 text-primary-700 block pl-3 pr-4 py-2': pathname.includes(
item.to,
),
'litbutton-active border-primary-400 block pl-3 pr-4 py-2': pathname.includes(app.internalUrl),
},
)}
>
{item.name}
{app.name}
</Link>
))}
</div>

1
src/index.css vendored
View file

@ -1,6 +1,7 @@
@tailwind base;
@tailwind components;
@tailwind utilities;
@import "./lit_navigation_style.css";
div[tabindex] {
flex: 1;

57
src/lit_navigation_style.css vendored Normal file
View file

@ -0,0 +1,57 @@
.litbutton{
color: #755d86;
text-transform: uppercase;
}
.litbutton-card{
color: #755d86;
}
.litbutton-card:before,
.litbutton:before {
content: "[";
display: inline-block;
opacity: 0;
-webkit-transform: translateX(20px);
-moz-transform: translateX(20px);
transform: translateX(20px);
-webkit-transition: -webkit-transform 0.3s, opacity 0.2s;
-moz-transition: -moz-transform 0.3s, opacity 0.2s;
transition: transform 0.3s, opacity 0.2s;
}
.litbutton:before{
margin-right: 10px;
}
.litbutton-card:after,
.litbutton:after {
content: "]";
display: inline-block;
opacity: 0;
-webkit-transition: -webkit-transform 0.3s, opacity 0.2s;
-moz-transition: -moz-transform 0.3s, opacity 0.2s;
transition: transform 0.3s, opacity 0.2s;
-webkit-transform: translateX(-20px);
-moz-transform: translateX(-20px);
transform: translateX(-20px);
}
.litbutton:after{
margin-left: 10px;
}
.litbutton-card:hover,
.litbutton:hover{
color: #3a97a3;
}
.litbutton-card:active,
.litbutton-active{
color: #3a97a3;
}
.litbutton-card:hover:before,
.litbutton-card:hover:after,
.litbutton:hover:before,
.litbutton:hover:after {
color: #3a97a3;
opacity: 1;
-webkit-transform: translateX(0px);
-moz-transform: translateX(0px);
transform: translateX(0px);
}

View file

@ -4,7 +4,7 @@ import Iframe from 'react-iframe';
export const AppIframe: React.FC<any> = ({ app }: { app: any }) => {
return (
<div className="relative">
<div className="min-h-screen">
<div style={{ minHeight: '90vh' }}>
<Iframe
height="100%"
width="100%"

View file

@ -39,7 +39,7 @@ export const DashboardCard: React.FC<any> = ({ app }: { app: any }) => {
/>
<div>
<h2 className="text-xl leading-8 font-bold">{app.name}</h2>
<h2 className="text-xl litbutton-card leading-8 font-bold">{app.name}</h2>
</div>
</div>
</div>

View file

@ -17,6 +17,14 @@ export const DASHBOARD_APPS = (rootDomain: string) => [
internalUrl: `projects`,
externalUrl: `https://board.${rootDomain}`,
},
{
id: 3,
name: 'Secrets',
assetSrc: '/assets/nextcloud.svg',
markdownSrc: '/markdown/nextcloud.md',
internalUrl: `vikunja`,
externalUrl: `https://cloud.${rootDomain}`,
},
];
export const DASHBOARD_QUICK_ACCESS = () => [

8
tailwind.config.js vendored
View file

@ -19,6 +19,14 @@ module.exports = {
DEFAULT: '#54C6CC',
dark: '#1E8290',
},
logo: {
bluegray: '#3f607d',
yellow: '#f5bd1c',
lightviolet: '#a587bf',
darkviolet: '#755d86',
azure: '#3a97a3',
lightazure: ' #b4e0e4',
},
},
},
},