Initial commit BIJ CI4

This commit is contained in:
BIJ Dev
2026-04-21 05:49:17 +07:00
commit fa38ac6b24
13170 changed files with 866701 additions and 0 deletions

View File

@@ -0,0 +1,26 @@
<!DOCTYPE html>
<html lang="id">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title><?= esc($this->renderSection('title') ?: 'Login') ?> — BIJ Admin</title>
<link rel="icon" type="image/png" href="<?= base_url('assets/images/bij_logo.png') ?>">
<script src="https://cdn.tailwindcss.com?plugins=forms,typography,aspect-ratio"></script>
<link rel="stylesheet" href="<?= base_url('assets/tailadmin/fa-7.1.0-web/css/all.min.css') ?>">
</head>
<body class="min-h-screen bg-gradient-to-br from-gray-100 via-gray-50 to-gray-200 text-gray-900 antialiased">
<div class="flex min-h-screen flex-col items-center justify-center px-4 py-10">
<div class="mb-8 flex flex-col items-center text-center">
<img src="<?= base_url('assets/images/bpr-logo.png') ?>" alt="Logo BPR" class="h-12 w-auto max-h-16 max-w-[220px] object-contain drop-shadow-sm">
<p class="mt-3 text-sm font-medium text-gray-600">Panel administrasi BIJ</p>
</div>
<div class="w-full max-w-md">
<?= $this->renderSection('content') ?>
</div>
<p class="mt-10 text-center text-xs text-gray-500">CodeIgniter 4 · Presensi &amp; kepegawaian</p>
</div>
</body>
</html>

View File

@@ -0,0 +1,3 @@
<footer class="mt-auto border-t border-gray-200 bg-gray-50/80 px-4 py-3 text-center text-[11px] text-gray-500 md:px-6 2xl:px-8">
&copy; <?= date('Y') ?> bank BIJ — PT. Wira Pratama Indonesia.
</footer>

View File

@@ -0,0 +1,31 @@
<header class="sticky top-0 z-30 flex w-full flex-col gap-2 border-b border-gray-200 bg-white/95 px-4 py-3 shadow-sm backdrop-blur-md supports-[backdrop-filter]:bg-white/90 md:h-16 md:flex-row md:items-center md:justify-between md:gap-3 md:px-6 md:py-0 2xl:px-8">
<div class="flex min-w-0 items-center gap-3">
<button type="button" id="btn-mobile-sidebar" class="flex h-10 w-10 shrink-0 items-center justify-center rounded-xl border border-gray-200 bg-white text-gray-700 shadow-sm hover:bg-gray-50 lg:hidden" aria-label="Buka menu">
<i class="fa-solid fa-bars text-lg"></i>
</button>
<button type="button" id="btn-desktop-sidebar-toggle" class="hidden h-10 w-10 shrink-0 items-center justify-center rounded-xl border border-gray-200 bg-white text-gray-700 shadow-sm hover:bg-gray-50 lg:inline-flex" aria-label="Ciutkan sidebar">
<i class="fa-solid fa-table-columns text-sm"></i>
</button>
<div class="min-w-0 leading-tight">
<p class="truncate text-sm font-semibold tracking-tight text-gray-900">Panel administrasi</p>
<?php if (session()->get('admin_auth_source') === 'admin_users' && is_array(session()->get('admin_ion_groups'))) : ?>
<p class="truncate text-xs text-gray-500">
<?= esc(session('admin_username') ?? '') ?>
<span class="text-gray-300">·</span>
<?= esc(implode(', ', session('admin_ion_groups'))) ?>
</p>
<?php elseif (session()->get('admin_auth_source') === 'pegawai') : ?>
<p class="truncate text-xs text-gray-500"><?= esc(session('admin_username') ?? '') ?> (pegawai)</p>
<?php endif ?>
</div>
</div>
<div class="flex flex-wrap items-center justify-end gap-2 md:max-w-[50%]">
<?php if (session()->getFlashdata('message')) : ?>
<span class="inline-flex max-w-full items-center rounded-full border border-emerald-200 bg-emerald-50 px-3 py-1.5 text-xs font-medium text-emerald-800"><?= esc(session()->getFlashdata('message')) ?></span>
<?php endif ?>
<?php if (session()->getFlashdata('error')) : ?>
<span class="inline-flex max-w-full items-center rounded-full border border-red-200 bg-red-50 px-3 py-1.5 text-xs font-medium text-red-800"><?= esc(session()->getFlashdata('error')) ?></span>
<?php endif ?>
<span class="hidden shrink-0 text-[11px] font-medium uppercase tracking-wide text-gray-400 sm:inline">Presensi Admin</span>
</div>
</header>

128
app/Views/layouts/main.php Normal file
View File

@@ -0,0 +1,128 @@
<!DOCTYPE html>
<html lang="id">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title><?= esc($this->renderSection('title') ?: 'Admin') ?> — BIJ</title>
<link rel="icon" type="image/png" href="<?= base_url('assets/images/bij_logo.png') ?>">
<script src="https://cdn.tailwindcss.com?plugins=forms,typography,aspect-ratio"></script>
<link rel="stylesheet" href="<?= base_url('assets/tailadmin/fa-7.1.0-web/css/all.min.css') ?>">
<style>
.custom-scrollbar {
scrollbar-width: thin;
scrollbar-color: #d1d5db transparent;
}
.custom-scrollbar::-webkit-scrollbar {
width: 6px;
height: 6px;
}
.custom-scrollbar::-webkit-scrollbar-thumb {
background-color: #d1d5db;
border-radius: 9999px;
}
/* Shell: mobile drawer + desktop sidebar width (TailAdmin-style) */
#admin-sidebar {
transition: transform 0.2s ease, width 0.2s ease;
}
@media (max-width: 1023px) {
#admin-sidebar {
transform: translateX(-100%);
}
#admin-shell.mobile-sidebar-open #admin-sidebar {
transform: translateX(0);
}
}
@media (min-width: 1024px) {
#admin-sidebar {
transform: none !important;
}
#sidebar-overlay {
display: none !important;
}
}
@media (min-width: 1024px) {
#admin-shell.sidebar-narrow #admin-sidebar {
width: 90px !important;
min-width: 90px;
}
#admin-shell.sidebar-narrow #admin-sidebar .sidebar-text,
#admin-shell.sidebar-narrow #admin-sidebar .nav-section-label {
display: none !important;
}
#admin-shell.sidebar-narrow #admin-sidebar details > summary .fa-chevron-down {
display: none;
}
#admin-shell.sidebar-narrow #admin-sidebar .sidebar-brand {
justify-content: center;
}
#admin-shell.sidebar-narrow #admin-sidebar .sidebar-logo-expanded {
display: none !important;
}
#admin-shell.sidebar-narrow #admin-sidebar .sidebar-logo-collapsed {
display: block !important;
background: none !important;
background-color: transparent !important;
box-shadow: none !important;
border: 0 !important;
border-radius: 0 !important;
outline: none !important;
-webkit-box-shadow: none !important;
}
}
</style>
</head>
<body class="min-h-screen bg-gray-50 font-sans text-gray-900 antialiased">
<?php helper('rbac'); ?>
<div id="admin-shell" class="flex h-screen w-full overflow-hidden">
<div id="sidebar-overlay" class="fixed inset-0 z-40 hidden bg-black/50 lg:hidden" aria-hidden="true"></div>
<?= $this->include('layouts/sidebar') ?>
<div class="flex min-w-0 flex-1 flex-col overflow-hidden bg-gray-50">
<?= $this->include('layouts/header') ?>
<main class="custom-scrollbar relative flex flex-1 flex-col overflow-x-hidden overflow-y-auto">
<div class="mx-auto w-full max-w-screen-2xl flex-1 p-4 pb-10 md:p-6 md:pb-12 2xl:p-8 2xl:pb-14">
<?= $this->renderSection('content') ?>
</div>
<?= $this->include('layouts/footer') ?>
</main>
</div>
</div>
<script>
(function () {
var shell = document.getElementById('admin-shell');
var overlay = document.getElementById('sidebar-overlay');
var btnMobile = document.getElementById('btn-mobile-sidebar');
var btnDesktop = document.getElementById('btn-desktop-sidebar-toggle');
function openMobile() {
if (!shell) return;
shell.classList.add('mobile-sidebar-open');
if (overlay) overlay.classList.remove('hidden');
}
function closeMobile() {
if (!shell) return;
shell.classList.remove('mobile-sidebar-open');
if (overlay) overlay.classList.add('hidden');
}
if (btnMobile) btnMobile.addEventListener('click', function () {
if (shell && shell.classList.contains('mobile-sidebar-open')) closeMobile(); else openMobile();
});
if (overlay) overlay.addEventListener('click', closeMobile);
window.addEventListener('resize', function () {
if (window.matchMedia('(min-width: 1024px)').matches) closeMobile();
});
if (btnDesktop && shell) {
btnDesktop.addEventListener('click', function () {
shell.classList.toggle('sidebar-narrow');
try {
localStorage.setItem('adminSidebarNarrow', shell.classList.contains('sidebar-narrow') ? '1' : '0');
} catch (e) {}
});
try {
if (localStorage.getItem('adminSidebarNarrow') === '1') {
shell.classList.add('sidebar-narrow');
}
} catch (e) {}
}
})();
</script>
</body>
</html>

View File

@@ -0,0 +1,15 @@
<?php
/** @var list<string>|array<int, string>|null $errors */
$errors = is_array($errors ?? null) ? $errors : [];
if ($errors === []) {
return;
}
?>
<div class="rounded-2xl border border-amber-200 bg-amber-50 p-4 text-sm text-amber-900 shadow-sm" role="alert">
<p class="font-medium text-amber-950">Perlu perhatian</p>
<ul class="mt-2 list-inside list-disc space-y-1">
<?php foreach ($errors as $e) : ?>
<li><?= esc((string) $e) ?></li>
<?php endforeach ?>
</ul>
</div>

View File

@@ -0,0 +1,14 @@
<?php
$icon = isset($icon) && is_string($icon) ? $icon : 'fa-inbox';
$title = isset($title) && is_string($title) ? $title : 'Tidak ada data';
$hint = isset($hint) && is_string($hint) ? $hint : '';
?>
<div class="flex flex-col items-center justify-center rounded-2xl border border-dashed border-gray-200 bg-gray-50 px-6 py-12 text-center">
<span class="flex h-14 w-14 items-center justify-center rounded-full bg-white text-2xl text-gray-400 shadow-sm ring-1 ring-gray-100">
<i class="fa-solid <?= esc($icon) ?>"></i>
</span>
<p class="mt-4 text-sm font-semibold text-gray-900"><?= esc($title) ?></p>
<?php if ($hint !== '') : ?>
<p class="mt-2 max-w-md text-sm text-gray-500"><?= esc($hint) ?></p>
<?php endif ?>
</div>

View File

@@ -0,0 +1,179 @@
<?php
/**
* Menu panel admin + visibilitas menurut AdminAccess::canAccess().
*/
$u = uri_string();
$is = static function (string $prefix) use ($u): bool {
return $u === $prefix || str_starts_with($u, $prefix . '/');
};
$exact = static function (string $path) use ($u): bool {
return $u === $path || $u === $path . '/';
};
$dashActive = $exact('admin');
$linkBase = 'flex items-center gap-3 rounded-xl px-3 py-2.5 text-sm font-medium transition-colors';
$linkIdle = 'text-gray-700 hover:bg-gray-100';
$linkActive = 'bg-gray-100 text-gray-900';
$subWrap = 'mt-1 space-y-0.5 border-l border-gray-200 py-1 pl-3 ml-3';
$subLink = 'block rounded-md px-2 py-2 text-xs font-medium transition-colors';
$subIdle = 'text-gray-600 hover:bg-gray-50 hover:text-gray-900';
$subActive = 'bg-gray-100 text-gray-900';
$presensiOpen = $is('admin/presensi');
$presensiData = $exact('admin/presensi') || str_starts_with($u, 'admin/presensi/detail');
$presLapangan = str_starts_with($u, 'admin/presensi/lapangan');
$presLembur = str_starts_with($u, 'admin/presensi/lembur');
$presJadwal = str_starts_with($u, 'admin/presensi/jadwal');
$presLibur = str_starts_with($u, 'admin/presensi/libur');
$presAktiv = str_starts_with($u, 'admin/presensi/aktivitas');
$perusahaanOpen = $is('admin/perusahaan');
$laporanOpen = $is('admin/laporan');
$laporanRingkas = $exact('admin/laporan');
$laporanCuti = str_starts_with($u, 'admin/laporan/cuti');
$panelOpen = $is('admin/panel');
$panelUserList = $exact('admin/panel/users') || str_starts_with($u, 'admin/panel/users/reset') || str_starts_with($u, 'admin/panel/users/edit');
$panelUserCreate = str_starts_with($u, 'admin/panel/users/create');
$panelGroupsIndex = $exact('admin/panel/groups');
$panelGroupCreate = str_starts_with($u, 'admin/panel/groups/create');
$panelGroupEdit = str_starts_with($u, 'admin/panel/groups/edit');
$utilOpen = $is('admin/util');
?>
<aside id="admin-sidebar" class="fixed inset-y-0 left-0 z-50 flex h-screen w-[290px] shrink-0 flex-col border-r border-gray-200 bg-white shadow-sm lg:static lg:shadow-none">
<div class="sidebar-brand flex h-16 shrink-0 items-center gap-3 border-b border-gray-200 px-5">
<img src="<?= base_url('assets/images/bpr-logo.png') ?>" alt="Logo BPR" width="144" height="36" decoding="async" class="sidebar-logo-expanded h-9 w-auto max-w-[9rem] shrink-0 object-contain object-left">
<img src="<?= base_url('assets/images/bij_logo.png') ?>" alt="BIJ" width="36" height="36" decoding="async" class="sidebar-logo-collapsed hidden h-9 w-9 shrink-0 rounded-none border-0 bg-transparent object-contain shadow-none ring-0 outline-none">
</div>
<nav class="custom-scrollbar flex-1 overflow-y-auto overflow-x-hidden px-3 py-5 text-sm">
<p class="nav-section-label mb-2 px-3 text-[11px] font-semibold uppercase tracking-wider text-gray-400">Menu</p>
<a href="<?= site_url('admin') ?>" title="Beranda" class="<?= $linkBase ?> <?= $dashActive ? $linkActive : $linkIdle ?>">
<i class="fa-solid fa-house w-5 shrink-0 text-center text-gray-500"></i>
<span class="sidebar-text">Beranda</span>
</a>
<?php if (canAccess('presensi')) : ?>
<details class="group mb-1" <?= $presensiOpen ? 'open' : '' ?>>
<summary class="<?= $linkBase ?> cursor-pointer list-none text-gray-700 marker:hidden hover:bg-gray-100 [&::-webkit-details-marker]:hidden">
<i class="fa-solid fa-clock w-5 shrink-0 text-center text-gray-500"></i>
<span class="sidebar-text flex-1 text-left">Presensi</span>
<i class="fa-solid fa-chevron-down text-[10px] text-gray-400 transition group-open:rotate-180"></i>
</summary>
<div class="<?= $subWrap ?>">
<a href="<?= site_url('admin/presensi') ?>" title="Data Presensi" class="<?= $subLink ?> <?= $presensiData ? $subActive : $subIdle ?>">Data Presensi</a>
<a href="<?= site_url('admin/presensi/lapangan') ?>" title="Tugas luar / lapangan" class="<?= $subLink ?> <?= $presLapangan ? $subActive : $subIdle ?>">Tugas Luar / Lapangan</a>
<a href="<?= site_url('admin/presensi/lembur') ?>" title="Jadwal lembur" class="<?= $subLink ?> <?= $presLembur ? $subActive : $subIdle ?>">Jadwal Lembur</a>
<?php if (canAccess('presensi_jadwal')) : ?>
<a href="<?= site_url('admin/presensi/jadwal') ?>" title="Management jadwal" class="<?= $subLink ?> <?= $presJadwal ? $subActive : $subIdle ?>">Management Jadwal</a>
<?php endif ?>
<?php if (canAccess('presensi_libur')) : ?>
<a href="<?= site_url('admin/presensi/libur') ?>" title="Hari libur" class="<?= $subLink ?> <?= $presLibur ? $subActive : $subIdle ?>">Hari Libur</a>
<?php endif ?>
<a href="<?= site_url('admin/presensi/aktivitas') ?>" title="Rekaman aktivitas" class="<?= $subLink ?> <?= $presAktiv ? $subActive : $subIdle ?>">Rekaman Aktivitas</a>
</div>
</details>
<?php endif ?>
<?php if (canAccess('perusahaan')) : ?>
<details class="group mb-1" <?= $perusahaanOpen ? 'open' : '' ?>>
<summary class="<?= $linkBase ?> cursor-pointer list-none text-gray-700 marker:hidden hover:bg-gray-100 [&::-webkit-details-marker]:hidden">
<i class="fa-solid fa-building w-5 shrink-0 text-center text-gray-500"></i>
<span class="sidebar-text flex-1 text-left">Perusahaan</span>
<i class="fa-solid fa-chevron-down text-[10px] text-gray-400 transition group-open:rotate-180"></i>
</summary>
<div class="<?= $subWrap ?>">
<a href="<?= site_url('admin/perusahaan/kantor') ?>" title="Lokasi kerja" class="<?= $subLink ?> <?= str_starts_with($u, 'admin/perusahaan/kantor') ? $subActive : $subIdle ?>">Lokasi Kerja</a>
<a href="<?= site_url('admin/perusahaan/unit_kerja') ?>" title="Unit kerja" class="<?= $subLink ?> <?= str_starts_with($u, 'admin/perusahaan/unit_kerja') ? $subActive : $subIdle ?>">Unit Kerja</a>
<a href="<?= site_url('admin/perusahaan/jabatan') ?>" title="Jabatan" class="<?= $subLink ?> <?= str_starts_with($u, 'admin/perusahaan/jabatan') ? $subActive : $subIdle ?>">Jabatan</a>
<a href="<?= site_url('admin/perusahaan/golongan') ?>" title="Golongan" class="<?= $subLink ?> <?= str_starts_with($u, 'admin/perusahaan/golongan') ? $subActive : $subIdle ?>">Golongan</a>
<a href="<?= site_url('admin/perusahaan/berita') ?>" title="Berita dan pengumuman" class="<?= $subLink ?> <?= str_starts_with($u, 'admin/perusahaan/berita') ? $subActive : $subIdle ?>">Berita / Pengumuman</a>
</div>
</details>
<?php endif ?>
<?php if (canAccess('pegawai')) : ?>
<details class="group mb-1" <?= ($is('admin/pegawai') || $is('admin/cuti')) ? 'open' : '' ?>>
<summary class="<?= $linkBase ?> cursor-pointer list-none text-gray-700 marker:hidden hover:bg-gray-100 [&::-webkit-details-marker]:hidden">
<i class="fa-solid fa-users w-5 shrink-0 text-center text-gray-500"></i>
<span class="sidebar-text flex-1 text-left">Pegawai</span>
<i class="fa-solid fa-chevron-down text-[10px] text-gray-400 transition group-open:rotate-180"></i>
</summary>
<div class="<?= $subWrap ?>">
<a href="<?= site_url('admin/pegawai') ?>" title="Data pegawai" class="<?= $subLink ?> <?= $is('admin/pegawai') && ! $is('admin/cuti') ? $subActive : $subIdle ?>">Data Pegawai</a>
<?php if (canAccess('cuti')) : ?>
<a href="<?= site_url('admin/cuti') ?>" title="Data cuti" class="<?= $subLink ?> <?= $is('admin/cuti') ? $subActive : $subIdle ?>">Data Cuti</a>
<?php endif ?>
</div>
</details>
<?php endif ?>
<?php if (canAccess('laporan')) : ?>
<details class="group mb-1" <?= $laporanOpen ? 'open' : '' ?>>
<summary class="<?= $linkBase ?> cursor-pointer list-none text-gray-700 marker:hidden hover:bg-gray-100 [&::-webkit-details-marker]:hidden">
<i class="fa-solid fa-print w-5 shrink-0 text-center text-gray-500"></i>
<span class="sidebar-text flex-1 text-left">Laporan</span>
<i class="fa-solid fa-chevron-down text-[10px] text-gray-400 transition group-open:rotate-180"></i>
</summary>
<div class="<?= $subWrap ?>">
<a href="<?= site_url('admin/laporan') ?>" title="Statistik dan ringkasan" class="<?= $subLink ?> <?= $laporanRingkas ? $subActive : $subIdle ?>">Statistik / Ringkasan</a>
<a href="<?= site_url('admin/laporan/cuti') ?>" title="Laporan cuti pegawai" class="<?= $subLink ?> <?= $laporanCuti ? $subActive : $subIdle ?>">Cuti Pegawai</a>
</div>
</details>
<?php endif ?>
<?php if (canAccess('panel')) : ?>
<details class="group mb-1" <?= $panelOpen ? 'open' : '' ?>>
<summary class="<?= $linkBase ?> cursor-pointer list-none text-gray-700 marker:hidden hover:bg-gray-100 [&::-webkit-details-marker]:hidden">
<i class="fa-solid fa-user-shield w-5 shrink-0 text-center text-gray-500"></i>
<span class="sidebar-text flex-1 text-left">Akses Pengguna</span>
<i class="fa-solid fa-chevron-down text-[10px] text-gray-400 transition group-open:rotate-180"></i>
</summary>
<div class="<?= $subWrap ?>">
<a href="<?= site_url('admin/panel/users') ?>" title="Daftar pengguna admin" class="<?= $subLink ?> <?= $panelUserList && ! $panelUserCreate ? $subActive : $subIdle ?>">Daftar Pengguna</a>
<a href="<?= site_url('admin/panel/users/create') ?>" title="Tambah pengguna admin" class="<?= $subLink ?> <?= $panelUserCreate ? $subActive : $subIdle ?>">Tambah Pengguna</a>
<a href="<?= site_url('admin/panel/groups') ?>" title="Grup akses" class="<?= $subLink ?> <?= ($panelGroupsIndex || $panelGroupCreate || $panelGroupEdit) && ! $panelGroupCreate && ! $panelGroupEdit ? $subActive : $subIdle ?>">Kelola Grup</a>
<a href="<?= site_url('admin/panel/groups/create') ?>" title="Tambah grup" class="<?= $subLink ?> <?= $panelGroupCreate ? $subActive : $subIdle ?>">Tambah Grup</a>
</div>
</details>
<?php endif ?>
<?php if (canAccess('utilitas')) : ?>
<details class="group mb-1" <?= $utilOpen ? 'open' : '' ?>>
<summary class="<?= $linkBase ?> cursor-pointer list-none text-gray-700 marker:hidden hover:bg-gray-100 [&::-webkit-details-marker]:hidden">
<i class="fa-solid fa-gears w-5 shrink-0 text-center text-gray-500"></i>
<span class="sidebar-text flex-1 text-left">Utilitas</span>
<i class="fa-solid fa-chevron-down text-[10px] text-gray-400 transition group-open:rotate-180"></i>
</summary>
<div class="<?= $subWrap ?>">
<a href="<?= site_url('admin/util/backup') ?>" title="Backup database" class="<?= $subLink ?> <?= str_starts_with($u, 'admin/util/backup') ? $subActive : $subIdle ?>">Daftar File Backup</a>
</div>
</details>
<?php endif ?>
<?php
$apk = env('ANDROID_APP_APK_URL', 'https://bij.mwp.co.id/assets/uploads/bij_apps_v_1_1_0.apk');
?>
<div class="mt-4 border-t border-gray-200 pt-4">
<p class="nav-section-label mb-2 px-3 text-[11px] font-semibold uppercase tracking-wider text-gray-400">Tautan</p>
<?php if (is_string($apk) && $apk !== '' && canAccess('apk_link')) : ?>
<a href="<?= esc($apk) ?>" target="_blank" rel="noopener noreferrer" title="Unduh aplikasi Android" class="<?= $linkBase ?> text-emerald-700 hover:bg-emerald-50">
<i class="fa-brands fa-android w-5 shrink-0 text-center"></i>
<span class="sidebar-text">Aplikasi Android</span>
</a>
<?php endif ?>
<?php if (session()->get('admin_mobile_token')) : ?>
<p class="sidebar-text mb-1 truncate px-3 text-xs text-gray-500"><?= esc(session('admin_username') ?? '') ?></p>
<a href="<?= site_url('admin/logout') ?>" title="Keluar dari panel" class="<?= $linkBase ?> text-red-600 hover:bg-red-50">
<i class="fa-solid fa-right-from-bracket w-5 shrink-0 text-center"></i>
<span class="sidebar-text">Sign Out</span>
</a>
<?php else : ?>
<a href="<?= site_url('admin/login') ?>" title="Masuk ke panel admin" class="<?= $linkBase ?> border border-gray-200 bg-gray-50 text-gray-900 hover:bg-white">
<i class="fa-solid fa-key w-5 shrink-0 text-center text-gray-500"></i>
<span class="sidebar-text">Login</span>
</a>
<?php endif ?>
</div>
</nav>
</aside>