feat(frontend): added frontend
- Router: client side route handling with client side rendering - Toast: rought Toast handling for better UX and messaging - Auth: single point of truth for the Logged in user This commit doesnt not include the openapi generated code
This commit is contained in:
parent
0db41a440d
commit
08c910c193
28 changed files with 1994 additions and 0 deletions
104
frontend/src/carousel/carousel.css
Normal file
104
frontend/src/carousel/carousel.css
Normal file
|
|
@ -0,0 +1,104 @@
|
|||
.flip-btn {
|
||||
position: relative;
|
||||
width: 60px;
|
||||
height: 40px;
|
||||
border: none;
|
||||
background: #333;
|
||||
color: white;
|
||||
font-size: 1.5rem;
|
||||
border-radius: 8px;
|
||||
cursor: pointer;
|
||||
perspective: 600px;
|
||||
/* Enables 3D effect */
|
||||
}
|
||||
|
||||
.arrow {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
transform: translate(-50%, -50%);
|
||||
transition: transform 0.5s;
|
||||
backface-visibility: hidden;
|
||||
/* Hide the back when rotated */
|
||||
}
|
||||
|
||||
.front {
|
||||
transform: translate(-50%, -50%) rotateY(0deg);
|
||||
}
|
||||
|
||||
.back {
|
||||
transform: translate(-50%, -50%) rotateY(180deg);
|
||||
}
|
||||
|
||||
.flip-btn.flipped .front {
|
||||
transform: translate(-50%, -50%) rotateY(180deg);
|
||||
}
|
||||
|
||||
.flip-btn.flipped .back {
|
||||
transform: translate(-50%, -50%) rotateY(360deg);
|
||||
}
|
||||
|
||||
|
||||
@import 'tailwindcss';
|
||||
|
||||
:root {
|
||||
font-family: system-ui, Avenir, Helvetica, Arial, sans-serif;
|
||||
line-height: 1.5;
|
||||
font-weight: 400;
|
||||
|
||||
color-scheme: light dark;
|
||||
color: rgba(255, 255, 255, 0.87);
|
||||
background-color: #242424;
|
||||
|
||||
font-synthesis: none;
|
||||
text-rendering: optimizeLegibility;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
}
|
||||
|
||||
a {
|
||||
font-weight: 500;
|
||||
color: #646cff;
|
||||
text-decoration: inherit;
|
||||
}
|
||||
a:hover {
|
||||
color: #535bf2;
|
||||
}
|
||||
|
||||
body {
|
||||
margin: 0;
|
||||
display: flex;
|
||||
place-items: center;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: 3.2em;
|
||||
line-height: 1.1;
|
||||
}
|
||||
|
||||
#app {
|
||||
max-width: 1280px;
|
||||
margin: 0 auto;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.logo {
|
||||
height: 6em;
|
||||
padding: 1.5em;
|
||||
will-change: filter;
|
||||
transition: filter 300ms;
|
||||
}
|
||||
.logo:hover {
|
||||
filter: drop-shadow(0 0 2em #646cffaa);
|
||||
}
|
||||
.logo.vanilla:hover {
|
||||
filter: drop-shadow(0 0 2em #3178c6aa);
|
||||
}
|
||||
|
||||
.card {
|
||||
padding: 2em;
|
||||
}
|
||||
|
||||
.read-the-docs {
|
||||
color: #888;
|
||||
}
|
||||
17
frontend/src/carousel/index.ts
Normal file
17
frontend/src/carousel/index.ts
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
import './carousel.css'
|
||||
|
||||
const menuBtn = document.querySelector<HTMLButtonElement>('#menuBtn')!;
|
||||
const sidebar = document.querySelector('#sidebar')!;
|
||||
const overlay = document.querySelector('#overlay')!;
|
||||
|
||||
menuBtn.addEventListener('click', () => {
|
||||
sidebar.classList.toggle('-translate-x-full')
|
||||
overlay.classList.toggle('opacity-0');
|
||||
overlay.classList.toggle('pointer-events-none');
|
||||
menuBtn.classList.toggle('flipped');
|
||||
});
|
||||
|
||||
overlay.addEventListener('click', () => {
|
||||
sidebar.classList.add('-translate-x-full');
|
||||
overlay.classList.add('opacity-0', 'pointer-events-none');
|
||||
});
|
||||
Loading…
Add table
Add a link
Reference in a new issue