Add Sidebar
This commit is contained in:
parent
1c322cd7bd
commit
64e05d875f
1 changed files with 148 additions and 0 deletions
148
src/Sidebar.astro
Normal file
148
src/Sidebar.astro
Normal file
|
@ -0,0 +1,148 @@
|
||||||
|
---
|
||||||
|
// Properties
|
||||||
|
const { ShowHeader, LogoPath, ShowVersion, FooterLinks, Size } = Astro.props;
|
||||||
|
|
||||||
|
// Components
|
||||||
|
import { Image } from "astro:assets";
|
||||||
|
---
|
||||||
|
|
||||||
|
<div class="fl-sidebar">
|
||||||
|
<div class="fl-sidebar-top">
|
||||||
|
{
|
||||||
|
ShowHeader ? (
|
||||||
|
<div class="fl-sidebar-header">
|
||||||
|
<Image
|
||||||
|
src={LogoPath}
|
||||||
|
alt="Logo"
|
||||||
|
inferSize={true}
|
||||||
|
format="webp"
|
||||||
|
/>
|
||||||
|
<div>
|
||||||
|
<slot name="header-items" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
) : null
|
||||||
|
}
|
||||||
|
<div class="fl-sidebar-items">
|
||||||
|
<slot name="top-items" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="fl-sidebar-bottom">
|
||||||
|
<div class="fl-sidebar-items">
|
||||||
|
<slot name="bottom-items" />
|
||||||
|
</div>
|
||||||
|
<div class="fl-sidebar-footer">
|
||||||
|
{ShowVersion ? <p id="fl-your-version">v2025.05.16</p> : null}
|
||||||
|
{
|
||||||
|
FooterLinks ? (
|
||||||
|
<div>
|
||||||
|
<slot name="footer-items" />
|
||||||
|
</div>
|
||||||
|
) : null
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<style lang="scss" is:global>
|
||||||
|
.fl-sidebar {
|
||||||
|
background: #121212;
|
||||||
|
color: white;
|
||||||
|
max-width: 240px;
|
||||||
|
position: fixed;
|
||||||
|
top: 0px;
|
||||||
|
left: 0px;
|
||||||
|
height: 100%;
|
||||||
|
width: 100%;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
justify-content: space-between;
|
||||||
|
padding: 0px 12px;
|
||||||
|
.fl-sidebar-items {
|
||||||
|
display: grid;
|
||||||
|
gap: 6px;
|
||||||
|
h2 {
|
||||||
|
font-size: 16px;
|
||||||
|
color: gray;
|
||||||
|
font-weight: normal;
|
||||||
|
padding-left: 12px;
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
hr {
|
||||||
|
width: calc(100% - 24px);
|
||||||
|
border: none;
|
||||||
|
background: #363636;
|
||||||
|
height: 3px;
|
||||||
|
border-radius: 1rem;
|
||||||
|
margin: 6px 0px;
|
||||||
|
}
|
||||||
|
a {
|
||||||
|
color: white;
|
||||||
|
text-decoration: none;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 12px;
|
||||||
|
border-radius: 6px;
|
||||||
|
padding: 6px 12px;
|
||||||
|
cursor: pointer;
|
||||||
|
font-size: 14px;
|
||||||
|
border: 1px transparent solid;
|
||||||
|
&:hover {
|
||||||
|
background: #3c3c3c;
|
||||||
|
border: 1px #5c5c5c solid;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.fl-sidebar-top {
|
||||||
|
.fl-sidebar-header {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
|
padding: 0px 12px;
|
||||||
|
img {
|
||||||
|
width: 64px;
|
||||||
|
height: 64px;
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
a {
|
||||||
|
color: white;
|
||||||
|
text-decoration: none;
|
||||||
|
border-radius: 6px;
|
||||||
|
cursor: pointer;
|
||||||
|
border: 1px transparent solid;
|
||||||
|
padding: 8px;
|
||||||
|
svg {
|
||||||
|
transform: translate(0px, 6px);
|
||||||
|
}
|
||||||
|
&:hover {
|
||||||
|
background: #3c3c3c;
|
||||||
|
border: 1px #5c5c5c solid;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.fl-sidebar-footer {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
|
padding: 24px 12px;
|
||||||
|
* {margin: 0px}
|
||||||
|
a {
|
||||||
|
color: white;
|
||||||
|
text-decoration: none;
|
||||||
|
border-radius: 6px;
|
||||||
|
cursor: pointer;
|
||||||
|
border: 1px transparent solid;
|
||||||
|
padding: 8px 6px;
|
||||||
|
aspect-ratio: 1;
|
||||||
|
svg {
|
||||||
|
transform: translate(0px, 6px);
|
||||||
|
}
|
||||||
|
&:hover {
|
||||||
|
background: #3c3c3c;
|
||||||
|
border: 1px #5c5c5c solid;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
Loading…
Reference in a new issue