fix(admin): persist data directory and pass env vars
This commit is contained in:
parent
99e8201745
commit
1d7e7c41c9
39 changed files with 1297 additions and 32 deletions
296
app/globals.css
296
app/globals.css
|
|
@ -461,6 +461,283 @@ h3 {
|
|||
font-size: 26px;
|
||||
}
|
||||
|
||||
.admin-login-page {
|
||||
min-height: 100vh;
|
||||
display: grid;
|
||||
place-items: center;
|
||||
background:
|
||||
linear-gradient(90deg, rgba(6, 24, 52, 0.94), rgba(8, 42, 96, 0.76)),
|
||||
url("/admin-workbench-bg.png"),
|
||||
#07172d;
|
||||
background-size: cover;
|
||||
background-position: center;
|
||||
}
|
||||
|
||||
.admin-login-card {
|
||||
display: grid;
|
||||
gap: 14px;
|
||||
width: min(420px, calc(100% - 32px));
|
||||
border: 1px solid rgba(255, 255, 255, 0.16);
|
||||
border-radius: 8px;
|
||||
background: rgba(255, 255, 255, 0.95);
|
||||
padding: 28px;
|
||||
box-shadow: var(--shadow);
|
||||
}
|
||||
|
||||
.admin-login-card img {
|
||||
width: 230px;
|
||||
height: 64px;
|
||||
object-fit: cover;
|
||||
}
|
||||
|
||||
.admin-login-card h1 {
|
||||
margin-bottom: 4px;
|
||||
color: var(--ink);
|
||||
font-size: 24px;
|
||||
line-height: 1.2;
|
||||
}
|
||||
|
||||
.admin-login-card label,
|
||||
.admin-form label,
|
||||
.admin-upload label {
|
||||
display: grid;
|
||||
gap: 7px;
|
||||
color: var(--ink);
|
||||
font-size: 14px;
|
||||
font-weight: 800;
|
||||
}
|
||||
|
||||
.admin-login-card input,
|
||||
.admin-form input,
|
||||
.admin-form textarea,
|
||||
.admin-upload input {
|
||||
width: 100%;
|
||||
border: 1px solid #cfd8e5;
|
||||
border-radius: 8px;
|
||||
background: #fff;
|
||||
padding: 11px 12px;
|
||||
color: var(--ink);
|
||||
}
|
||||
|
||||
.admin-shell {
|
||||
min-height: 100vh;
|
||||
display: grid;
|
||||
grid-template-columns: 248px minmax(0, 1fr);
|
||||
background: #eef2f6;
|
||||
}
|
||||
|
||||
.admin-sidebar {
|
||||
position: sticky;
|
||||
top: 0;
|
||||
height: 100vh;
|
||||
border-right: 1px solid rgba(255, 255, 255, 0.1);
|
||||
background: #071c3d;
|
||||
color: #fff;
|
||||
padding: 18px 14px;
|
||||
}
|
||||
|
||||
.admin-logo {
|
||||
display: block;
|
||||
margin-bottom: 18px;
|
||||
}
|
||||
|
||||
.admin-logo img {
|
||||
width: 190px;
|
||||
height: 54px;
|
||||
object-fit: cover;
|
||||
}
|
||||
|
||||
.admin-nav {
|
||||
display: grid;
|
||||
gap: 5px;
|
||||
}
|
||||
|
||||
.admin-nav a,
|
||||
.admin-logout {
|
||||
border: 0;
|
||||
border-radius: 8px;
|
||||
background: transparent;
|
||||
color: rgba(255, 255, 255, 0.78);
|
||||
font: inherit;
|
||||
font-size: 14px;
|
||||
font-weight: 800;
|
||||
padding: 10px 12px;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.admin-nav a:hover,
|
||||
.admin-nav a[aria-current="page"],
|
||||
.admin-logout:hover {
|
||||
background: rgba(255, 255, 255, 0.1);
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.admin-logout {
|
||||
width: 100%;
|
||||
margin-top: 18px;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.admin-main {
|
||||
min-width: 0;
|
||||
padding: 28px;
|
||||
}
|
||||
|
||||
.admin-page-head {
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.admin-page-head h1 {
|
||||
margin-bottom: 0;
|
||||
color: var(--ink);
|
||||
font-size: 34px;
|
||||
line-height: 1.1;
|
||||
}
|
||||
|
||||
.admin-kpis {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(4, minmax(0, 1fr));
|
||||
gap: 14px;
|
||||
margin-bottom: 18px;
|
||||
}
|
||||
|
||||
.admin-kpi,
|
||||
.admin-card,
|
||||
.admin-detail {
|
||||
border: 1px solid var(--line);
|
||||
border-radius: 8px;
|
||||
background: #fff;
|
||||
box-shadow: 0 10px 28px rgba(8, 42, 96, 0.06);
|
||||
}
|
||||
|
||||
.admin-kpi {
|
||||
display: grid;
|
||||
gap: 4px;
|
||||
padding: 18px;
|
||||
}
|
||||
|
||||
.admin-kpi span,
|
||||
.admin-kpi small,
|
||||
.admin-muted {
|
||||
color: var(--muted);
|
||||
}
|
||||
|
||||
.admin-kpi strong {
|
||||
color: var(--navy);
|
||||
font-size: 28px;
|
||||
line-height: 1.1;
|
||||
}
|
||||
|
||||
.admin-card {
|
||||
margin-bottom: 18px;
|
||||
padding: 20px;
|
||||
overflow-x: auto;
|
||||
}
|
||||
|
||||
.admin-card h2 {
|
||||
font-size: 22px;
|
||||
}
|
||||
|
||||
.admin-table {
|
||||
width: 100%;
|
||||
border-collapse: collapse;
|
||||
min-width: 760px;
|
||||
}
|
||||
|
||||
.admin-table th,
|
||||
.admin-table td {
|
||||
border-bottom: 1px solid var(--line);
|
||||
padding: 12px 10px;
|
||||
text-align: left;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
.admin-table th {
|
||||
color: var(--muted);
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
.status,
|
||||
.status-select {
|
||||
border: 1px solid var(--line);
|
||||
border-radius: 999px;
|
||||
background: #f8fafc;
|
||||
color: var(--navy);
|
||||
font-size: 13px;
|
||||
font-weight: 800;
|
||||
padding: 6px 9px;
|
||||
}
|
||||
|
||||
.status.new {
|
||||
color: #b45309;
|
||||
}
|
||||
|
||||
.status.in_progress {
|
||||
color: #0b63a7;
|
||||
}
|
||||
|
||||
.status.done {
|
||||
color: #157347;
|
||||
}
|
||||
|
||||
.admin-detail-grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, minmax(0, 1fr));
|
||||
gap: 14px;
|
||||
}
|
||||
|
||||
.admin-detail {
|
||||
padding: 16px;
|
||||
}
|
||||
|
||||
.admin-detail p {
|
||||
color: var(--muted);
|
||||
line-height: 1.55;
|
||||
}
|
||||
|
||||
.admin-form {
|
||||
display: grid;
|
||||
gap: 14px;
|
||||
max-width: 880px;
|
||||
}
|
||||
|
||||
.admin-checkbox {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.admin-checkbox input {
|
||||
width: auto;
|
||||
}
|
||||
|
||||
.admin-upload {
|
||||
display: flex;
|
||||
align-items: end;
|
||||
gap: 14px;
|
||||
}
|
||||
|
||||
.media-grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(4, minmax(0, 1fr));
|
||||
gap: 12px;
|
||||
}
|
||||
|
||||
.media-item {
|
||||
display: grid;
|
||||
min-height: 130px;
|
||||
place-items: center;
|
||||
border: 1px solid var(--line);
|
||||
border-radius: 8px;
|
||||
background: #f8fafc;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.media-item img {
|
||||
width: 100%;
|
||||
height: 150px;
|
||||
object-fit: cover;
|
||||
}
|
||||
|
||||
@media (max-width: 1080px) and (min-width: 861px) {
|
||||
.brand-logo {
|
||||
width: 236px;
|
||||
|
|
@ -540,7 +817,24 @@ h3 {
|
|||
.grid.two,
|
||||
.service-grid,
|
||||
.split,
|
||||
.footer-grid {
|
||||
.footer-grid,
|
||||
.admin-shell,
|
||||
.admin-kpis,
|
||||
.admin-detail-grid,
|
||||
.media-grid {
|
||||
grid-template-columns: 1fr;
|
||||
}
|
||||
|
||||
.admin-sidebar {
|
||||
position: static;
|
||||
height: auto;
|
||||
}
|
||||
|
||||
.admin-main {
|
||||
padding: 18px;
|
||||
}
|
||||
|
||||
.admin-upload {
|
||||
display: grid;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue