sidebar organised
This commit is contained in:
parent
efdda2e18b
commit
0a26a8b4a8
@ -14,11 +14,51 @@ hs-accordion-toggle w-full text-start flex items-center gap-x-3.5 py-2 px-2.5 te
|
||||
}
|
||||
|
||||
|
||||
.sidebar-btn {
|
||||
@apply flex items-center gap-x-3.5 py-2 px-2.5 text-sm rounded-lg focus:outline-none text-gray-800 hover:bg-gray-100 focus:bg-gray-100 dark:bg-neutral-800 dark:hover:bg-neutral-700 dark:focus:bg-neutral-700 dark:text-neutral-200;
|
||||
/* Sidebar Components */
|
||||
|
||||
.mobile-sidebar-header {
|
||||
@apply
|
||||
sticky
|
||||
top-0
|
||||
inset-x-0
|
||||
z-20
|
||||
lg:hidden;
|
||||
}
|
||||
|
||||
.layout-sidebar-main {
|
||||
.mobile-sidebar-header .mobile-sidebar-nav {
|
||||
@apply
|
||||
flex
|
||||
p-4
|
||||
sm:px-6
|
||||
border-b
|
||||
bg-white
|
||||
dark:bg-neutral-800
|
||||
dark:border-neutral-700;
|
||||
}
|
||||
|
||||
.mobile-sidebar-header .mobile-sidebar-nav .mobile-sidebar-brand {
|
||||
@apply text-xl font-semibold;
|
||||
}
|
||||
|
||||
.sidebar-aside {
|
||||
@apply
|
||||
/* Position and Display */
|
||||
transform
|
||||
w-64
|
||||
h-full
|
||||
fixed
|
||||
top-0
|
||||
bottom-0
|
||||
|
||||
/* Colours and Border */
|
||||
bg-white
|
||||
border-e
|
||||
border-gray-200
|
||||
dark:bg-neutral-800
|
||||
dark:border-neutral-700;
|
||||
}
|
||||
|
||||
.sidebar-aside.sidebar-main {
|
||||
@apply
|
||||
[--auto-close:lg]
|
||||
lg:block
|
||||
@ -29,30 +69,14 @@ hs-accordion-toggle w-full text-start flex items-center gap-x-3.5 py-2 px-2.5 te
|
||||
transition-all
|
||||
duration-200
|
||||
ease-in
|
||||
|
||||
/* Position and Display */
|
||||
transform
|
||||
w-64
|
||||
h-full
|
||||
fixed
|
||||
top-0
|
||||
start-0
|
||||
bottom-0
|
||||
z-[60]
|
||||
|
||||
/* Colours and Border */
|
||||
bg-white
|
||||
border-e
|
||||
border-gray-200
|
||||
dark:bg-neutral-800
|
||||
dark:border-neutral-700;
|
||||
}
|
||||
|
||||
.layout-sidebar-guilds {
|
||||
.sidebar-aside.guild-sidebar {
|
||||
@apply
|
||||
[--auto-close:lg]
|
||||
lg:block
|
||||
/* lg:translate-x-0 */
|
||||
lg:end-auto
|
||||
lg:bottom-0
|
||||
-translate-x-full
|
||||
@ -60,30 +84,92 @@ hs-accordion-toggle w-full text-start flex items-center gap-x-3.5 py-2 px-2.5 te
|
||||
duration-200
|
||||
lg:duration-100
|
||||
ease-in
|
||||
|
||||
/* Position and Display */
|
||||
transform
|
||||
w-64
|
||||
h-full
|
||||
fixed
|
||||
top-0
|
||||
lg:start-64
|
||||
start-0
|
||||
bottom-0
|
||||
start-64
|
||||
z-[59]
|
||||
|
||||
/* Colours and Border */
|
||||
bg-white
|
||||
border-e
|
||||
border-gray-200
|
||||
dark:bg-neutral-800
|
||||
dark:border-neutral-700;
|
||||
}
|
||||
|
||||
.sidebar-aside .sidebar-container {
|
||||
@apply
|
||||
relative
|
||||
flex
|
||||
flex-col
|
||||
h-full
|
||||
max-h-full;
|
||||
}
|
||||
|
||||
.sidebar-aside .sidebar-container .sidebar-header {
|
||||
@apply
|
||||
px-6
|
||||
pt-4
|
||||
flex
|
||||
justify-between
|
||||
items-center;
|
||||
}
|
||||
|
||||
.sidebar-aside .sidebar-container .sidebar-header .sidebar-brand {
|
||||
@apply
|
||||
flex-none
|
||||
rounded-xl
|
||||
text-xl
|
||||
inline-block
|
||||
font-semibold
|
||||
focus:outline-none
|
||||
focus:opacity-80;
|
||||
}
|
||||
|
||||
.sidebar-aside .sidebar-container .sidebar-content {
|
||||
@apply
|
||||
h-full
|
||||
overflow-y-auto
|
||||
[&::-webkit-scrollbar]:w-2
|
||||
[&::-webkit-scrollbar-thumb]:rounded-full
|
||||
[&::-webkit-scrollbar-track]:bg-gray-100
|
||||
[&::-webkit-scrollbar-thumb]:bg-gray-300
|
||||
dark:[&::-webkit-scrollbar-track]:bg-neutral-700
|
||||
dark:[&::-webkit-scrollbar-thumb]:bg-neutral-500
|
||||
}
|
||||
|
||||
.sidebar-aside .sidebar-container .sidebar-content .sidebar-nav {
|
||||
@apply
|
||||
px-4
|
||||
py-6
|
||||
w-full
|
||||
h-full
|
||||
flex
|
||||
flex-col
|
||||
flex-wrap;
|
||||
}
|
||||
|
||||
.sidebar-nav .sidebar-btn {
|
||||
@apply
|
||||
w-full
|
||||
flex
|
||||
items-center
|
||||
gap-x-3.5
|
||||
py-2
|
||||
px-2.5
|
||||
text-sm
|
||||
rounded-md
|
||||
focus:outline-none
|
||||
text-gray-800
|
||||
hover:bg-gray-100
|
||||
focus:bg-gray-100
|
||||
dark:bg-neutral-800
|
||||
dark:hover:bg-neutral-700
|
||||
dark:focus:bg-neutral-700
|
||||
dark:text-neutral-200;
|
||||
}
|
||||
|
||||
/* End Sidebar Components */
|
||||
|
||||
/* Guild Header */
|
||||
|
||||
.guild-header-btn {
|
||||
@apply text-sm text-gray-800 hover:text-blue-600 focus:outline-none focus:text-blue-600 dark:text-neutral-200 dark:hover:text-blue-500 dark:focus:text-blue-500;
|
||||
}
|
||||
|
||||
.guild-header-btn.active {
|
||||
@apply text-blue-600;
|
||||
}
|
||||
}
|
||||
|
||||
/* End Guild Header */
|
||||
|
@ -1347,11 +1347,6 @@ video {
|
||||
padding-bottom: 0.75rem;
|
||||
}
|
||||
|
||||
.py-6 {
|
||||
padding-top: 1.5rem;
|
||||
padding-bottom: 1.5rem;
|
||||
}
|
||||
|
||||
.pb-1 {
|
||||
padding-bottom: 0.25rem;
|
||||
}
|
||||
@ -1644,12 +1639,195 @@ hs-accordion-toggle w-full text-start flex items-center gap-x-3.5 py-2 px-2.5 te
|
||||
src: url("/static/fonts/inter-variablefont.ttf");
|
||||
}
|
||||
|
||||
.sidebar-btn {
|
||||
/* Sidebar Components */
|
||||
|
||||
.mobile-sidebar-header {
|
||||
position: sticky;
|
||||
left: 0px;
|
||||
right: 0px;
|
||||
top: 0px;
|
||||
z-index: 20;
|
||||
}
|
||||
|
||||
@media (min-width: 1024px) {
|
||||
.mobile-sidebar-header {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
.mobile-sidebar-header .mobile-sidebar-nav {
|
||||
display: flex;
|
||||
border-bottom-width: 1px;
|
||||
--tw-bg-opacity: 1;
|
||||
background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1));
|
||||
padding: 1rem;
|
||||
}
|
||||
|
||||
@media (min-width: 640px) {
|
||||
.mobile-sidebar-header .mobile-sidebar-nav {
|
||||
padding-left: 1.5rem;
|
||||
padding-right: 1.5rem;
|
||||
}
|
||||
}
|
||||
|
||||
.mobile-sidebar-header .mobile-sidebar-nav:where(.dark, .dark *) {
|
||||
--tw-border-opacity: 1;
|
||||
border-color: rgb(64 64 64 / var(--tw-border-opacity, 1));
|
||||
--tw-bg-opacity: 1;
|
||||
background-color: rgb(38 38 38 / var(--tw-bg-opacity, 1));
|
||||
}
|
||||
|
||||
.mobile-sidebar-header .mobile-sidebar-nav .mobile-sidebar-brand {
|
||||
font-size: 1.25rem;
|
||||
line-height: 1.75rem;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.sidebar-aside {
|
||||
position: fixed;
|
||||
top: 0px;
|
||||
bottom: 0px;
|
||||
height: 100%;
|
||||
width: 16rem;
|
||||
transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
|
||||
border-inline-end-width: 1px;
|
||||
--tw-border-opacity: 1;
|
||||
border-color: rgb(229 231 235 / var(--tw-border-opacity, 1));
|
||||
--tw-bg-opacity: 1;
|
||||
background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1));
|
||||
}
|
||||
|
||||
.sidebar-aside:where(.dark, .dark *) {
|
||||
--tw-border-opacity: 1;
|
||||
border-color: rgb(64 64 64 / var(--tw-border-opacity, 1));
|
||||
--tw-bg-opacity: 1;
|
||||
background-color: rgb(38 38 38 / var(--tw-bg-opacity, 1));
|
||||
}
|
||||
|
||||
.sidebar-aside.sidebar-main {
|
||||
inset-inline-start: 0px;
|
||||
z-index: 60;
|
||||
--tw-translate-x: -100%;
|
||||
transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
|
||||
transition-property: all;
|
||||
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
|
||||
transition-duration: 200ms;
|
||||
transition-timing-function: cubic-bezier(0.4, 0, 1, 1);
|
||||
--auto-close: lg;
|
||||
}
|
||||
|
||||
@media (min-width: 1024px) {
|
||||
.sidebar-aside.sidebar-main {
|
||||
inset-inline-end: auto;
|
||||
bottom: 0px;
|
||||
display: block;
|
||||
--tw-translate-x: 0px;
|
||||
transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
|
||||
}
|
||||
}
|
||||
|
||||
.sidebar-aside.guild-sidebar {
|
||||
inset-inline-start: 16rem;
|
||||
z-index: 59;
|
||||
--tw-translate-x: -100%;
|
||||
transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
|
||||
transition-property: all;
|
||||
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
|
||||
transition-duration: 200ms;
|
||||
transition-timing-function: cubic-bezier(0.4, 0, 1, 1);
|
||||
--auto-close: lg;
|
||||
}
|
||||
|
||||
@media (min-width: 1024px) {
|
||||
.sidebar-aside.guild-sidebar {
|
||||
inset-inline-end: auto;
|
||||
bottom: 0px;
|
||||
display: block;
|
||||
transition-duration: 100ms;
|
||||
}
|
||||
}
|
||||
|
||||
.sidebar-aside .sidebar-container {
|
||||
position: relative;
|
||||
display: flex;
|
||||
height: 100%;
|
||||
max-height: 100%;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.sidebar-aside .sidebar-container .sidebar-header {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
padding-left: 1.5rem;
|
||||
padding-right: 1.5rem;
|
||||
padding-top: 1rem;
|
||||
}
|
||||
|
||||
.sidebar-aside .sidebar-container .sidebar-header .sidebar-brand {
|
||||
display: inline-block;
|
||||
flex: none;
|
||||
border-radius: 0.75rem;
|
||||
font-size: 1.25rem;
|
||||
line-height: 1.75rem;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.sidebar-aside .sidebar-container .sidebar-header .sidebar-brand:focus {
|
||||
opacity: 0.8;
|
||||
outline: 2px solid transparent;
|
||||
outline-offset: 2px;
|
||||
}
|
||||
|
||||
.sidebar-aside .sidebar-container .sidebar-content {
|
||||
height: 100%;
|
||||
overflow-y: auto;
|
||||
}
|
||||
|
||||
.sidebar-aside .sidebar-container .sidebar-content::-webkit-scrollbar-thumb {
|
||||
border-radius: 9999px;
|
||||
--tw-bg-opacity: 1;
|
||||
background-color: rgb(209 213 219 / var(--tw-bg-opacity, 1));
|
||||
}
|
||||
|
||||
.sidebar-aside .sidebar-container .sidebar-content:where(.dark, .dark *)::-webkit-scrollbar-thumb {
|
||||
--tw-bg-opacity: 1;
|
||||
background-color: rgb(115 115 115 / var(--tw-bg-opacity, 1));
|
||||
}
|
||||
|
||||
.sidebar-aside .sidebar-container .sidebar-content::-webkit-scrollbar-track {
|
||||
--tw-bg-opacity: 1;
|
||||
background-color: rgb(243 244 246 / var(--tw-bg-opacity, 1));
|
||||
}
|
||||
|
||||
.sidebar-aside .sidebar-container .sidebar-content:where(.dark, .dark *)::-webkit-scrollbar-track {
|
||||
--tw-bg-opacity: 1;
|
||||
background-color: rgb(64 64 64 / var(--tw-bg-opacity, 1));
|
||||
}
|
||||
|
||||
.sidebar-aside .sidebar-container .sidebar-content::-webkit-scrollbar {
|
||||
width: 0.5rem;
|
||||
}
|
||||
|
||||
.sidebar-aside .sidebar-container .sidebar-content .sidebar-nav {
|
||||
display: flex;
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
flex-direction: column;
|
||||
flex-wrap: wrap;
|
||||
padding-left: 1rem;
|
||||
padding-right: 1rem;
|
||||
padding-top: 1.5rem;
|
||||
padding-bottom: 1.5rem;
|
||||
}
|
||||
|
||||
.sidebar-nav .sidebar-btn {
|
||||
display: flex;
|
||||
width: 100%;
|
||||
align-items: center;
|
||||
-moz-column-gap: 0.875rem;
|
||||
column-gap: 0.875rem;
|
||||
border-radius: 0.5rem;
|
||||
border-radius: 0.375rem;
|
||||
padding-top: 0.5rem;
|
||||
padding-bottom: 0.5rem;
|
||||
padding-left: 0.625rem;
|
||||
@ -1660,112 +1838,38 @@ hs-accordion-toggle w-full text-start flex items-center gap-x-3.5 py-2 px-2.5 te
|
||||
color: rgb(31 41 55 / var(--tw-text-opacity, 1));
|
||||
}
|
||||
|
||||
.sidebar-btn:hover {
|
||||
.sidebar-nav .sidebar-btn:hover {
|
||||
--tw-bg-opacity: 1;
|
||||
background-color: rgb(243 244 246 / var(--tw-bg-opacity, 1));
|
||||
}
|
||||
|
||||
.sidebar-btn:focus {
|
||||
.sidebar-nav .sidebar-btn:focus {
|
||||
--tw-bg-opacity: 1;
|
||||
background-color: rgb(243 244 246 / var(--tw-bg-opacity, 1));
|
||||
outline: 2px solid transparent;
|
||||
outline-offset: 2px;
|
||||
}
|
||||
|
||||
.sidebar-btn:where(.dark, .dark *) {
|
||||
.sidebar-nav .sidebar-btn:where(.dark, .dark *) {
|
||||
--tw-bg-opacity: 1;
|
||||
background-color: rgb(38 38 38 / var(--tw-bg-opacity, 1));
|
||||
--tw-text-opacity: 1;
|
||||
color: rgb(229 229 229 / var(--tw-text-opacity, 1));
|
||||
}
|
||||
|
||||
.sidebar-btn:hover:where(.dark, .dark *) {
|
||||
.sidebar-nav .sidebar-btn:hover:where(.dark, .dark *) {
|
||||
--tw-bg-opacity: 1;
|
||||
background-color: rgb(64 64 64 / var(--tw-bg-opacity, 1));
|
||||
}
|
||||
|
||||
.sidebar-btn:focus:where(.dark, .dark *) {
|
||||
.sidebar-nav .sidebar-btn:focus:where(.dark, .dark *) {
|
||||
--tw-bg-opacity: 1;
|
||||
background-color: rgb(64 64 64 / var(--tw-bg-opacity, 1));
|
||||
}
|
||||
|
||||
.layout-sidebar-main {
|
||||
position: fixed;
|
||||
top: 0px;
|
||||
inset-inline-start: 0px;
|
||||
bottom: 0px;
|
||||
z-index: 60;
|
||||
height: 100%;
|
||||
width: 16rem;
|
||||
--tw-translate-x: -100%;
|
||||
transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
|
||||
border-inline-end-width: 1px;
|
||||
--tw-border-opacity: 1;
|
||||
border-color: rgb(229 231 235 / var(--tw-border-opacity, 1));
|
||||
--tw-bg-opacity: 1;
|
||||
background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1));
|
||||
transition-property: all;
|
||||
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
|
||||
transition-duration: 200ms;
|
||||
transition-timing-function: cubic-bezier(0.4, 0, 1, 1);
|
||||
--auto-close: lg;
|
||||
}
|
||||
/* End Sidebar Components */
|
||||
|
||||
@media (min-width: 1024px) {
|
||||
.layout-sidebar-main {
|
||||
inset-inline-end: auto;
|
||||
bottom: 0px;
|
||||
display: block;
|
||||
--tw-translate-x: 0px;
|
||||
transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
|
||||
}
|
||||
}
|
||||
|
||||
.layout-sidebar-main:where(.dark, .dark *) {
|
||||
--tw-border-opacity: 1;
|
||||
border-color: rgb(64 64 64 / var(--tw-border-opacity, 1));
|
||||
--tw-bg-opacity: 1;
|
||||
background-color: rgb(38 38 38 / var(--tw-bg-opacity, 1));
|
||||
}
|
||||
|
||||
.layout-sidebar-guilds {
|
||||
position: fixed;
|
||||
top: 0px;
|
||||
inset-inline-start: 0px;
|
||||
bottom: 0px;
|
||||
z-index: 59;
|
||||
height: 100%;
|
||||
width: 16rem;
|
||||
--tw-translate-x: -100%;
|
||||
transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
|
||||
border-inline-end-width: 1px;
|
||||
--tw-border-opacity: 1;
|
||||
border-color: rgb(229 231 235 / var(--tw-border-opacity, 1));
|
||||
--tw-bg-opacity: 1;
|
||||
background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1));
|
||||
transition-property: all;
|
||||
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
|
||||
transition-duration: 200ms;
|
||||
transition-timing-function: cubic-bezier(0.4, 0, 1, 1);
|
||||
--auto-close: lg;
|
||||
}
|
||||
|
||||
@media (min-width: 1024px) {
|
||||
.layout-sidebar-guilds {
|
||||
inset-inline-end: auto;
|
||||
bottom: 0px;
|
||||
inset-inline-start: 16rem;
|
||||
display: block;
|
||||
transition-duration: 100ms;
|
||||
}
|
||||
}
|
||||
|
||||
.layout-sidebar-guilds:where(.dark, .dark *) {
|
||||
--tw-border-opacity: 1;
|
||||
border-color: rgb(64 64 64 / var(--tw-border-opacity, 1));
|
||||
--tw-bg-opacity: 1;
|
||||
background-color: rgb(38 38 38 / var(--tw-bg-opacity, 1));
|
||||
}
|
||||
/* Guild Header */
|
||||
|
||||
.guild-header-btn {
|
||||
font-size: 0.875rem;
|
||||
@ -1806,6 +1910,8 @@ hs-accordion-toggle w-full text-start flex items-center gap-x-3.5 py-2 px-2.5 te
|
||||
color: rgb(37 99 235 / var(--tw-text-opacity, 1));
|
||||
}
|
||||
|
||||
/* End Guild Header */
|
||||
|
||||
.before\:absolute::before {
|
||||
content: var(--tw-content);
|
||||
position: absolute;
|
||||
@ -2477,4 +2583,4 @@ hs-accordion-toggle w-full text-start flex items-center gap-x-3.5 py-2 px-2.5 te
|
||||
|
||||
.\[\&\:\:-webkit-scrollbar\]\:w-2::-webkit-scrollbar {
|
||||
width: 0.5rem;
|
||||
}
|
||||
}
|
||||
|
@ -8,139 +8,7 @@
|
||||
</head>
|
||||
<body class="bg-neutral-100 dark:bg-neutral-900 text-gray-600 dark:text-gray-400 font-[Inter]">
|
||||
|
||||
<!-- Mobile Sidebar Controls -->
|
||||
<header class="sticky top-0 inset-x-0 z-20 lg:hidden">
|
||||
<nav class="flex p-4 sm:px-6 border-b bg-white dark:bg-neutral-800 dark:border-neutral-700">
|
||||
<a href="/" class="text-xl font-semibold">Relay</a>
|
||||
<button type="button" class="ml-auto" data-hs-overlay="#layoutSidebarMain">
|
||||
<svg class="shrink-0 size-6" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="3" y1="12" x2="21" y2="12"></line><line x1="3" y1="6" x2="21" y2="6"></line><line x1="3" y1="18" x2="21" y2="18"></line></svg>
|
||||
</button>
|
||||
</nav>
|
||||
</header>
|
||||
<!-- End Mobile Sidebar Controls -->
|
||||
|
||||
<!-- Sidebar -->
|
||||
<aside id="layoutSidebarMain" class="layout-sidebar-main hs-overlay hs-overlay-open:translate-x-0" role="dialog" tabindex="-1">
|
||||
<div class="relative flex flex-col h-full max-h-full">
|
||||
<!-- Sidebar Header -->
|
||||
<div class="px-6 pt-4 flex justify-between items-center">
|
||||
<a href="/" class="flex-none rounded-xl text-xl inline-block font-semibold focus:outline-none focus:opacity-80">
|
||||
Relay
|
||||
</a>
|
||||
<button type="button" class="lg:hidden" data-hs-overlay="#layoutSidebarMain">
|
||||
<svg class="shrink-0 size-5" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg>
|
||||
</button>
|
||||
</div>
|
||||
<!-- End Sidebar Header -->
|
||||
<!-- Sidebar Content -->
|
||||
<div class="h-full overflow-y-auto [&::-webkit-scrollbar]:w-2 [&::-webkit-scrollbar-thumb]:rounded-full [&::-webkit-scrollbar-track]:bg-gray-100 [&::-webkit-scrollbar-thumb]:bg-gray-300 dark:[&::-webkit-scrollbar-track]:bg-neutral-700 dark:[&::-webkit-scrollbar-thumb]:bg-neutral-500">
|
||||
<nav class="px-4 py-6 w-full h-full flex flex-col flex-wrap">
|
||||
<ul class="flex flex-col space-y-1">
|
||||
<li>
|
||||
<a href="/" class="flex items-center gap-x-3.5 py-2 px-2.5 text-sm rounded-lg focus:outline-none text-gray-800 hover:bg-gray-100 focus:bg-gray-100 dark:bg-neutral-800 dark:hover:bg-neutral-700 dark:focus:bg-neutral-700 dark:text-neutral-200">
|
||||
<svg class="shrink-0 size-4" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" ><path d="m3 9 9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"/><polyline points="9 22 9 12 15 12 15 22"/></svg>
|
||||
Dashboard
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<button type="button" class="w-full flex items-center gap-x-3.5 py-2 px-2.5 text-sm rounded-lg focus:outline-none text-gray-800 hover:bg-gray-100 focus:bg-gray-100 dark:bg-neutral-800 dark:hover:bg-neutral-700 dark:focus:bg-neutral-700 dark:text-neutral-200" data-hs-overlay="#layoutSidebarGuilds">
|
||||
<svg class="shrink-0 size-4" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polygon points="12 2 2 7 12 12 22 7 12 2"></polygon><polyline points="2 17 12 22 22 17"></polyline><polyline points="2 12 12 17 22 12"></polyline></svg>
|
||||
Servers
|
||||
|
||||
<svg class="block ms-auto size-4" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="9 18 15 12 9 6"></polyline></svg>
|
||||
<svg class="hidden ms-auto size-4" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="15 18 9 12 15 6"></polyline></svg>
|
||||
</button>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
<!-- End Sidebar Content -->
|
||||
<!-- Sidebar Footer -->
|
||||
<div class="mt-auto p-2 border-t border-gray-200 dark:border-neutral-700">
|
||||
<div class="hs-dropdown [--strategy:absolute] [--auto-close:inside] relative w-full inline-flex">
|
||||
<button type="button" id="userMenu" class="w-full inline-flex shrink-0 items-center gap-x-2 p-2 text-start text-sm text-gray-800 rounded-md hover:bg-gray-100 focus:outline-none focus:bg-gray-100 dark:text-neutral-200 dark:hover:bg-neutral-700 dark:focus:bg-neutral-700">
|
||||
<img class="shrink-0 size-5 rounded-full" src="https://images.unsplash.com/photo-1734122415415-88cb1d7d5dc0?q=80&w=320&h=320&auto=format&fit=facearea&facepad=3&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D" alt="Avatar">
|
||||
Username Here
|
||||
<svg class="block hs-dropdown-open:hidden ms-auto size-4" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="m18 15-6-6-6 6"/></svg>
|
||||
<svg class="hidden hs-dropdown-open:block ms-auto size-4" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="m6 9 6 6 6-6"/></svg>
|
||||
</button>
|
||||
<div class="hs-dropdown-menu hs-dropdown-open:opacity-100 w-60 transition-[opacity,margin] duration opacity-0 hidden z-20 bg-white border border-gray-200 rounded-lg shadow-lg dark:bg-neutral-900 dark:border-neutral-700" role="menu">
|
||||
<div class="p-1">
|
||||
<a href="#" class="flex items-center gap-x-3 py-2 px-3 rounded-lg text-sm text-gray-800 hover:bg-gray-100 disabled:opacity-50 disabled:pointer-events-none focus:outline-none focus:bg-gray-100 dark:text-neutral-300 dark:hover:bg-neutral-800 dark:focus:bg-neutral-800">
|
||||
placeholder button
|
||||
</a>
|
||||
</div>
|
||||
<div class="p-1 hs-dropdown flex">
|
||||
<button type="button" id="themeTogglerBtn" class="hs-dropdown-toggle hs-dark-mode w-full flex items-center gap-x-3 py-2 px-3 rounded-lg text-sm text-gray-800 hover:bg-gray-100 disabled:opacity-50 disabled:pointer-events-none focus:outline-none focus:bg-gray-100 dark:text-neutral-300 dark:hover:bg-neutral-800 dark:focus:bg-neutral-800">
|
||||
Colour Theme
|
||||
</button>
|
||||
<div class="hs-dropdown-menu hs-dropdown-open:opacity-100 mt-2 hidden z-20 transition-[margin,opacity] opacity-0 duration-300 mb-2 origin-bottom-left bg-white shadow-md rounded-lg p-1 space-y-0.5 dark:bg-neutral-800 dark:border dark:border-neutral-700 dark:divide-neutral-300" role="menu">
|
||||
<button type="button" class="w-full flex items-center gap-x-3.5 py-2 px-3 rounded-lg text-sm text-gray-800 hover:bg-gray-100 focus:outline-none focus:bg-gray-100 dark:text-neutral-400 dark:hover:bg-neutral-700 dark:hover:text-neutral-300 dark:focus:bg-neutral-700 dark:focus-text-neutral-300" data-hs-theme-click-value="default">
|
||||
Default (Light)
|
||||
</button>
|
||||
<button type="button" class="w-full flex items-center gap-x-3.5 py-2 px-3 rounded-lg text-sm text-gray-800 hover:bg-gray-100 focus:outline-none focus:bg-gray-100 dark:text-neutral-400 dark:hover:bg-neutral-700 dark:hover:text-neutral-300 dark:focus:bg-neutral-700 dark:focus-text-neutral-300" data-hs-theme-click-value="dark">
|
||||
Dark
|
||||
</button>
|
||||
<button type="button" class="w-full flex items-center gap-x-3.5 py-2 px-3 rounded-lg text-sm text-gray-800 hover:bg-gray-100 focus:outline-none focus:bg-gray-100 dark:text-neutral-400 dark:hover:bg-neutral-700 dark:hover:text-neutral-300 dark:focus:bg-neutral-700 dark:focus-text-neutral-300" data-hs-theme-click-value="auto">
|
||||
Auto (System)
|
||||
</button>
|
||||
</div>
|
||||
<!-- <a href="#" class="flex items-center gap-x-3 py-2 px-3 rounded-lg text-sm text-gray-800 hover:bg-gray-100 disabled:opacity-50 disabled:pointer-events-none focus:outline-none focus:bg-gray-100 dark:text-neutral-300 dark:hover:bg-neutral-800 dark:focus:bg-neutral-800">
|
||||
<span></span>
|
||||
</a> -->
|
||||
</div>
|
||||
<div class="p-1">
|
||||
<a href="#" class="flex items-center gap-x-3 py-2 px-3 rounded-lg text-sm text-gray-800 hover:bg-gray-100 disabled:opacity-50 disabled:pointer-events-none focus:outline-none focus:bg-gray-100 dark:text-neutral-300 dark:hover:bg-neutral-800 dark:focus:bg-neutral-800">
|
||||
Logout
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- End Sidebar Footer -->
|
||||
</div>
|
||||
</aside>
|
||||
<!-- End Sidebar -->
|
||||
|
||||
<!-- Guild Sidebar -->
|
||||
<aside id="layoutSidebarGuilds" class="layout-sidebar-guilds hs-overlay hs-overlay-open:translate-x-0 [--is-layout-affect:true]" role="dialog" tabindex="-1">
|
||||
<div class="relative flex flex-col h-full max-h full">
|
||||
<!-- Guild Sidebar Header -->
|
||||
<div class="px-6 pt-4 mt-1 flex justify-between items-center">
|
||||
<span class="flex-none rounded-xl text-gray-600 dark:text-gray-400 text-sm font-semibold">
|
||||
Discord Servers
|
||||
</span>
|
||||
<button type="button" data-hs-overlay="#layoutSidebarGuilds">
|
||||
<svg class="shrink-0 size-4" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="15 18 9 12 15 6"></polyline></svg>
|
||||
</button>
|
||||
</div>
|
||||
<!-- End Guild Sidebar Header -->
|
||||
<!-- Guild Sidebar Content -->
|
||||
<div class="px-4 py-6 w-full h-full flex flex-col flex-wrap">
|
||||
<ul class="flex flex-col space-y-1">
|
||||
<% guilds.forEach(guild => { %>
|
||||
<li>
|
||||
<a href="/guild/<%= guild.id %>" class="flex items-center gap-x-3.5 py-2 px-2.5 text-sm rounded-lg focus:outline-none text-gray-800 hover:bg-gray-100 focus:bg-gray-100 dark:bg-neutral-800 dark:hover:bg-neutral-700 dark:focus:bg-neutral-700 dark:text-neutral-200">
|
||||
<% if (guild.icon) { %>
|
||||
<img class="size-[28px] rounded" src="<%= guild.iconURL() %>" alt="<%= guild.name %>">
|
||||
<% } else { %>
|
||||
<div class="size-[28px] flex shrink-0 justify-center items-center rounded bg-neutral-100 dark:bg-neutral-900">
|
||||
<span class="text-xs"><%= guild.name.split(" ").slice(0, 2).map(word => word[0].toUpperCase()).join(""); %></span>
|
||||
</div>
|
||||
<% } %>
|
||||
<div>
|
||||
<span class="text-base"><%= guild.name %></span>
|
||||
<!-- <span class="text-sm font-mono text-gray-600 dark:text-gray-400"><%= guild.id %></span> -->
|
||||
</div>
|
||||
</a>
|
||||
</li>
|
||||
<% }); %>
|
||||
</ul>
|
||||
</div>
|
||||
<!-- End Guild Sidebar Content -->
|
||||
</div>
|
||||
</aside>
|
||||
<!-- End Guild Sidebar -->
|
||||
<%- include("sidebar") -%>
|
||||
|
||||
<!-- Content -->
|
||||
<div class="w-full lg:ps-64">
|
||||
|
153
src/client/views/sidebar.ejs
Normal file
153
src/client/views/sidebar.ejs
Normal file
@ -0,0 +1,153 @@
|
||||
<!-- Mobile Sidebar Controls -->
|
||||
<header class="mobile-sidebar-header">
|
||||
<nav class="mobile-sidebar-nav">
|
||||
<a href="/" class="mobile-sidebar-brand">Relay</a>
|
||||
<button type="button" class="ml-auto" data-hs-overlay="#layoutSidebarMain">
|
||||
<svg class="shrink-0 size-6" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="3" y1="12" x2="21" y2="12"></line><line x1="3" y1="6" x2="21" y2="6"></line><line x1="3" y1="18" x2="21" y2="18"></line></svg>
|
||||
</button>
|
||||
</nav>
|
||||
</header>
|
||||
<!-- End Mobile Sidebar Controls -->
|
||||
|
||||
<!-- Sidebar -->
|
||||
<aside id="layoutSidebarMain" class="sidebar-aside sidebar-main hs-overlay hs-overlay-open:translate-x-0" role="dialog" tabindex="-1">
|
||||
<div class="sidebar-container">
|
||||
<!-- Sidebar Header -->
|
||||
<div class="sidebar-header">
|
||||
<a href="/" class="sidebar-header-brand">
|
||||
Relay
|
||||
</a>
|
||||
<button type="button" class="lg:hidden" data-hs-overlay="#layoutSidebarMain">
|
||||
<svg class="shrink-0 size-5" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg>
|
||||
</button>
|
||||
</div>
|
||||
<!-- End Sidebar Header -->
|
||||
<!-- Sidebar Content -->
|
||||
<div class="sidebar-content">
|
||||
<nav class="sidebar-nav">
|
||||
<ul class="flex flex-col space-y-1">
|
||||
<li>
|
||||
<a href="/" class="sidebar-btn">
|
||||
<svg class="shrink-0 size-4" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" ><path d="m3 9 9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"/><polyline points="9 22 9 12 15 12 15 22"/></svg>
|
||||
Dashboard
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<button type="button" class="sidebar-btn" data-hs-overlay="#layoutSidebarGuilds">
|
||||
<svg class="shrink-0 size-4" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polygon points="12 2 2 7 12 12 22 7 12 2"></polygon><polyline points="2 17 12 22 22 17"></polyline><polyline points="2 12 12 17 22 12"></polyline></svg>
|
||||
Servers
|
||||
|
||||
<svg class="block ms-auto size-4" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="9 18 15 12 9 6"></polyline></svg>
|
||||
<svg class="hidden ms-auto size-4" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="15 18 9 12 15 6"></polyline></svg>
|
||||
</button>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#" class="sidebar-btn">
|
||||
<svg class="shrink-0 size-4" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="16 18 22 12 16 6"></polyline><polyline points="8 6 2 12 8 18"></polyline></svg>
|
||||
Source Code
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#" class="sidebar-btn">
|
||||
<svg class="shrink-0 size-4" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"></path><line x1="12" y1="17" x2="12.01" y2="17"></line></svg>
|
||||
Help
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#" class="sidebar-btn">
|
||||
<svg class="shrink-0 size-4" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="3"></circle><path d="M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1 0 2.83 2 2 0 0 1-2.83 0l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-2 2 2 2 0 0 1-2-2v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83 0 2 2 0 0 1 0-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1-2-2 2 2 0 0 1 2-2h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 0-2.83 2 2 0 0 1 2.83 0l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 2-2 2 2 0 0 1 2 2v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 0 2 2 0 0 1 0 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 2 2 2 2 0 0 1-2 2h-.09a1.65 1.65 0 0 0-1.51 1z"></path></svg>
|
||||
Settings
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
<!-- End Sidebar Content -->
|
||||
<!-- Sidebar Footer -->
|
||||
<div class="mt-auto p-2 border-t border-gray-200 dark:border-neutral-700">
|
||||
<div class="hs-dropdown [--strategy:absolute] [--auto-close:inside] relative w-full inline-flex">
|
||||
<button type="button" id="userMenu" class="w-full inline-flex shrink-0 items-center gap-x-2 p-2 text-start text-sm text-gray-800 rounded-md hover:bg-gray-100 focus:outline-none focus:bg-gray-100 dark:text-neutral-200 dark:hover:bg-neutral-700 dark:focus:bg-neutral-700">
|
||||
<img class="shrink-0 size-5 rounded-full" src="https://images.unsplash.com/photo-1734122415415-88cb1d7d5dc0?q=80&w=320&h=320&auto=format&fit=facearea&facepad=3&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D" alt="Avatar">
|
||||
Username Here
|
||||
<svg class="block hs-dropdown-open:hidden ms-auto size-4" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="m18 15-6-6-6 6"/></svg>
|
||||
<svg class="hidden hs-dropdown-open:block ms-auto size-4" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="m6 9 6 6 6-6"/></svg>
|
||||
</button>
|
||||
<div class="hs-dropdown-menu hs-dropdown-open:opacity-100 w-60 transition-[opacity,margin] duration opacity-0 hidden z-20 bg-white border border-gray-200 rounded-lg shadow-lg dark:bg-neutral-900 dark:border-neutral-700" role="menu">
|
||||
<div class="p-1">
|
||||
<a href="#" class="flex items-center gap-x-3 py-2 px-3 rounded-lg text-sm text-gray-800 hover:bg-gray-100 disabled:opacity-50 disabled:pointer-events-none focus:outline-none focus:bg-gray-100 dark:text-neutral-300 dark:hover:bg-neutral-800 dark:focus:bg-neutral-800">
|
||||
placeholder button
|
||||
</a>
|
||||
</div>
|
||||
<div class="p-1 hs-dropdown flex">
|
||||
<button type="button" id="themeTogglerBtn" class="hs-dropdown-toggle hs-dark-mode w-full flex items-center gap-x-3 py-2 px-3 rounded-lg text-sm text-gray-800 hover:bg-gray-100 disabled:opacity-50 disabled:pointer-events-none focus:outline-none focus:bg-gray-100 dark:text-neutral-300 dark:hover:bg-neutral-800 dark:focus:bg-neutral-800">
|
||||
Colour Theme
|
||||
</button>
|
||||
<div class="hs-dropdown-menu hs-dropdown-open:opacity-100 mt-2 hidden z-20 transition-[margin,opacity] opacity-0 duration-300 mb-2 origin-bottom-left bg-white shadow-md rounded-lg p-1 space-y-0.5 dark:bg-neutral-800 dark:border dark:border-neutral-700 dark:divide-neutral-300" role="menu">
|
||||
<button type="button" class="w-full flex items-center gap-x-3.5 py-2 px-3 rounded-lg text-sm text-gray-800 hover:bg-gray-100 focus:outline-none focus:bg-gray-100 dark:text-neutral-400 dark:hover:bg-neutral-700 dark:hover:text-neutral-300 dark:focus:bg-neutral-700 dark:focus-text-neutral-300" data-hs-theme-click-value="default">
|
||||
Default (Light)
|
||||
</button>
|
||||
<button type="button" class="w-full flex items-center gap-x-3.5 py-2 px-3 rounded-lg text-sm text-gray-800 hover:bg-gray-100 focus:outline-none focus:bg-gray-100 dark:text-neutral-400 dark:hover:bg-neutral-700 dark:hover:text-neutral-300 dark:focus:bg-neutral-700 dark:focus-text-neutral-300" data-hs-theme-click-value="dark">
|
||||
Dark
|
||||
</button>
|
||||
<button type="button" class="w-full flex items-center gap-x-3.5 py-2 px-3 rounded-lg text-sm text-gray-800 hover:bg-gray-100 focus:outline-none focus:bg-gray-100 dark:text-neutral-400 dark:hover:bg-neutral-700 dark:hover:text-neutral-300 dark:focus:bg-neutral-700 dark:focus-text-neutral-300" data-hs-theme-click-value="auto">
|
||||
Auto (System)
|
||||
</button>
|
||||
</div>
|
||||
<!-- <a href="#" class="flex items-center gap-x-3 py-2 px-3 rounded-lg text-sm text-gray-800 hover:bg-gray-100 disabled:opacity-50 disabled:pointer-events-none focus:outline-none focus:bg-gray-100 dark:text-neutral-300 dark:hover:bg-neutral-800 dark:focus:bg-neutral-800">
|
||||
<span></span>
|
||||
</a> -->
|
||||
</div>
|
||||
<div class="p-1">
|
||||
<a href="#" class="flex items-center gap-x-3 py-2 px-3 rounded-lg text-sm text-gray-800 hover:bg-gray-100 disabled:opacity-50 disabled:pointer-events-none focus:outline-none focus:bg-gray-100 dark:text-neutral-300 dark:hover:bg-neutral-800 dark:focus:bg-neutral-800">
|
||||
Logout
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- End Sidebar Footer -->
|
||||
</div>
|
||||
</aside>
|
||||
<!-- End Sidebar -->
|
||||
|
||||
<!-- Guild Sidebar -->
|
||||
<aside id="layoutSidebarGuilds" class="sidebar-aside guild-sidebar hs-overlay hs-overlay-open:translate-x-0 [--is-layout-affect:true]" role="dialog" tabindex="-1">
|
||||
<div class="sidebar-container">
|
||||
<!-- Guild Sidebar Header -->
|
||||
<div class="sidebar-header">
|
||||
<span class="flex-none rounded-xl text-gray-600 dark:text-gray-400 text-sm font-semibold">
|
||||
Discord Servers
|
||||
</span>
|
||||
<button type="button" data-hs-overlay="#layoutSidebarGuilds">
|
||||
<svg class="shrink-0 size-4" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="15 18 9 12 15 6"></polyline></svg>
|
||||
</button>
|
||||
</div>
|
||||
<!-- End Guild Sidebar Header -->
|
||||
<!-- Guild Sidebar Content -->
|
||||
<div class="sidebar-content">
|
||||
<nav class="sidebar-nav">
|
||||
<ul class="flex flex-col space-y-1">
|
||||
<% guilds.forEach(guild => { %>
|
||||
<li>
|
||||
<a href="/guild/<%= guild.id %>" class="sidebar-btn">
|
||||
<% if (guild.icon) { %>
|
||||
<img class="size-[28px] rounded" src="<%= guild.iconURL() %>" alt="<%= guild.name %>">
|
||||
<% } else { %>
|
||||
<div class="size-[28px] flex shrink-0 justify-center items-center rounded bg-neutral-100 dark:bg-neutral-900">
|
||||
<span class="text-xs"><%= guild.name.split(" ").slice(0, 2).map(word => word[0].toUpperCase()).join(""); %></span>
|
||||
</div>
|
||||
<% } %>
|
||||
<div>
|
||||
<span class="text-base"><%= guild.name %></span>
|
||||
<!-- <span class="text-sm font-mono text-gray-600 dark:text-gray-400"><%= guild.id %></span> -->
|
||||
</div>
|
||||
</a>
|
||||
</li>
|
||||
<% }); %>
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
<!-- End Guild Sidebar Content -->
|
||||
</div>
|
||||
</aside>
|
||||
<!-- End Guild Sidebar -->
|
Loading…
x
Reference in New Issue
Block a user