feat(admin): read live back-office data in every console view
Models, pipelines, users, subscriptions, usage, audit log, ads, and releases still rendered placeholder or duplicated implementations from the earlier admin split. They now read the live back-office API, share one sidebar and console theme, and the license issuer dialog uses the rotated signing key.
This commit is contained in:
parent
cfc58458a8
commit
5aa268970a
23 changed files with 187 additions and 174 deletions
|
|
@ -1,29 +1,28 @@
|
|||
/* D3RO Voice Admin CRM — "Midnight Glass v2" Global Styles */
|
||||
/* D3RO Voice Admin CRM — "Midnight Glass v3" Global Styles */
|
||||
/* 폰트는 layout.tsx <head>의 Pretendard Variable 다이나믹 서브셋 링크로 로드한다
|
||||
(렌더를 막는 @import 이중 로드는 제거).
|
||||
색 변수는 @d3ro/ui SSOT가 MuiCssBaseline로 주입하는 --d3-*를 그대로 쓴다
|
||||
(관리자는 고정 다크: 값 미지정 시 아래 폴백). */
|
||||
색은 @d3ro/ui SSOT가 MuiCssBaseline로 주입하는 --d3-* 만 쓴다 (로컬 hex 폴백 없음). */
|
||||
|
||||
* {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
/* 의미적 강조는 세미볼드(600)까지 — 볼드(700+) 타이포그래피 금지 */
|
||||
strong, b { font-weight: 600; }
|
||||
strong, b { font-weight: var(--d3-weight-strong); }
|
||||
|
||||
body {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
background-color: var(--d3-bg-app, #070b16);
|
||||
color: var(--d3-text-primary, #eef2fb);
|
||||
background-color: var(--d3-bg-app);
|
||||
color: var(--d3-text-primary);
|
||||
font-family: 'Pretendard Variable', Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Roboto, 'Helvetica Neue', 'Segoe UI', 'Apple SD Gothic Neo', 'Noto Sans KR', sans-serif;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
overflow-x: hidden;
|
||||
background-image:
|
||||
radial-gradient(ellipse 60% 40% at 10% 0%, rgba(6, 182, 212, 0.08) 0%, transparent 60%),
|
||||
radial-gradient(ellipse 50% 50% at 90% 10%, rgba(59, 130, 246, 0.09) 0%, transparent 60%),
|
||||
radial-gradient(ellipse 40% 40% at 50% 90%, rgba(139, 92, 246, 0.06) 0%, transparent 50%);
|
||||
background-image:
|
||||
radial-gradient(ellipse 60% 40% at 10% 0%, color-mix(in srgb, var(--d3-tag-cyan) 8%, transparent) 0%, transparent 60%),
|
||||
radial-gradient(ellipse 50% 50% at 90% 10%, color-mix(in srgb, var(--d3-accent-main) 9%, transparent) 0%, transparent 60%),
|
||||
radial-gradient(ellipse 40% 40% at 50% 90%, color-mix(in srgb, var(--d3-tag-purple) 6%, transparent) 0%, transparent 50%);
|
||||
background-attachment: fixed;
|
||||
}
|
||||
|
||||
|
|
@ -34,7 +33,12 @@ body {
|
|||
left: 0;
|
||||
right: 0;
|
||||
height: 320px;
|
||||
background: radial-gradient(50% 100% at 50% 0%, rgba(59, 130, 246, 0.12) 0%, rgba(6, 182, 212, 0.04) 40%, transparent 100%);
|
||||
background: radial-gradient(
|
||||
50% 100% at 50% 0%,
|
||||
color-mix(in srgb, var(--d3-accent-main) 12%, transparent) 0%,
|
||||
color-mix(in srgb, var(--d3-tag-cyan) 4%, transparent) 40%,
|
||||
transparent 100%
|
||||
);
|
||||
pointer-events: none;
|
||||
z-index: 0;
|
||||
}
|
||||
|
|
@ -42,8 +46,8 @@ body {
|
|||
/* High-End Subtle Grid Pattern */
|
||||
.bg-grid {
|
||||
background-image:
|
||||
linear-gradient(to right, rgba(148, 180, 255, 0.03) 1px, transparent 1px),
|
||||
linear-gradient(to bottom, rgba(148, 180, 255, 0.03) 1px, transparent 1px);
|
||||
linear-gradient(to right, var(--d3-glass-hairline) 1px, transparent 1px),
|
||||
linear-gradient(to bottom, var(--d3-glass-hairline) 1px, transparent 1px);
|
||||
background-size: 32px 32px;
|
||||
}
|
||||
|
||||
|
|
@ -57,25 +61,24 @@ body {
|
|||
position: absolute;
|
||||
inset: 0;
|
||||
border-radius: inherit;
|
||||
background: radial-gradient(ellipse 70% 55% at 18% -8%, rgba(59, 130, 246, 0.12) 0%, transparent 55%),
|
||||
linear-gradient(180deg, rgba(148, 180, 255, 0.05) 0%, rgba(148, 180, 255, 0) 40%);
|
||||
background: var(--d3-glass-sheen);
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
/* Glow effects */
|
||||
.glow-white { text-shadow: 0 0 15px rgba(255, 255, 255, 0.4); }
|
||||
.glow-green { text-shadow: 0 0 15px rgba(16, 185, 129, 0.5); }
|
||||
.glow-orange { text-shadow: 0 0 15px rgba(245, 158, 11, 0.5); }
|
||||
.glow-red { text-shadow: 0 0 15px rgba(239, 68, 68, 0.5); }
|
||||
.glow-blue { text-shadow: 0 0 15px rgba(59, 130, 246, 0.5); }
|
||||
.glow-purple { text-shadow: 0 0 15px rgba(139, 92, 246, 0.5); }
|
||||
.glow-cyan { text-shadow: 0 0 15px rgba(6, 182, 212, 0.5); }
|
||||
.glow-white { text-shadow: 0 0 15px color-mix(in srgb, var(--d3-text-primary) 40%, transparent); }
|
||||
.glow-green { text-shadow: 0 0 15px color-mix(in srgb, var(--d3-status-success) 50%, transparent); }
|
||||
.glow-orange { text-shadow: 0 0 15px color-mix(in srgb, var(--d3-status-warning) 50%, transparent); }
|
||||
.glow-red { text-shadow: 0 0 15px color-mix(in srgb, var(--d3-status-danger) 50%, transparent); }
|
||||
.glow-blue { text-shadow: 0 0 15px color-mix(in srgb, var(--d3-accent-main) 50%, transparent); }
|
||||
.glow-purple { text-shadow: 0 0 15px color-mix(in srgb, var(--d3-tag-purple) 50%, transparent); }
|
||||
.glow-cyan { text-shadow: 0 0 15px color-mix(in srgb, var(--d3-tag-cyan) 50%, transparent); }
|
||||
|
||||
/* Custom Sleek Scrollbar */
|
||||
::-webkit-scrollbar { width: 6px; height: 6px; }
|
||||
::-webkit-scrollbar-track { background: rgba(7, 11, 22, 0.4); }
|
||||
::-webkit-scrollbar-thumb { background: rgba(148, 180, 255, 0.15); border-radius: 999px; }
|
||||
::-webkit-scrollbar-thumb:hover { background: rgba(148, 180, 255, 0.3); }
|
||||
::-webkit-scrollbar-track { background: var(--d3-bg-inset-soft); }
|
||||
::-webkit-scrollbar-thumb { background: var(--d3-glass-hairline); border-radius: 999px; }
|
||||
::-webkit-scrollbar-thumb:hover { background: var(--d3-glass-hairlineStrong); }
|
||||
|
||||
/* Pulse animation for live status */
|
||||
@keyframes pulse-ring {
|
||||
|
|
@ -91,13 +94,12 @@ body {
|
|||
position: absolute;
|
||||
inset: 0;
|
||||
border-radius: 50%;
|
||||
background: #10b981;
|
||||
animation: pulse-ring 2s cubic-bezier(0.24, 0, 0.38, 1) infinite;
|
||||
background: var(--d3-status-success);
|
||||
animation: pulse-ring 2s var(--d3-ease-out) infinite;
|
||||
}
|
||||
|
||||
/* Selection */
|
||||
::selection {
|
||||
background: rgba(59, 130, 246, 0.35);
|
||||
color: #ffffff;
|
||||
background: color-mix(in srgb, var(--d3-accent-main) 35%, transparent);
|
||||
color: var(--d3-accent-ink);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue