顶栏、背景和侧边导航
页面标题、面包屑和内容间距 卡片、表格、筛选工具栏、分页 表单、按钮、标签、弹窗和空状态 固定保存操作区 深色模式与移动端
This commit is contained in:
@@ -8,6 +8,8 @@
|
||||
import "@patternfly/patternfly/patternfly-addons.css";
|
||||
import "@patternfly/react-core/dist/styles/base.css";
|
||||
import "./theme.css";
|
||||
import "../console-ui.css";
|
||||
import "./workspace.css";
|
||||
|
||||
import { useReducer, useEffect } from "react";
|
||||
import { startColorSchemeManagement } from "./colorScheme";
|
||||
|
||||
@@ -1,16 +1,13 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 240 52" role="img" aria-labelledby="title">
|
||||
<title id="title">NEXUS ID</title>
|
||||
<defs>
|
||||
<linearGradient id="signal" x1="0" x2="1" y1="0" y2="1">
|
||||
<stop offset="0" stop-color="#63e6ff"/>
|
||||
<stop offset="1" stop-color="#8b7cff"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<g transform="translate(8 9)">
|
||||
<rect x="5" y="5" width="24" height="24" rx="1" fill="none" stroke="url(#signal)" stroke-width="1.5" transform="rotate(45 17 17)"/>
|
||||
<circle cx="17" cy="17" r="3.5" fill="#63e6ff"/>
|
||||
<circle cx="17" cy="17" r="8.5" fill="none" stroke="#63e6ff" stroke-opacity=".18"/>
|
||||
<rect width="34" height="34" rx="10" fill="#356fd6"/>
|
||||
<path d="M9 10h16M9 17h11M9 24h16" fill="none" stroke="#fff" stroke-width="2.2" stroke-linecap="round"/>
|
||||
<circle cx="24.5" cy="17" r="2.2" fill="#f0b92e"/>
|
||||
</g>
|
||||
<text x="52" y="32" fill="#f4f7ff" font-family="Bahnschrift,Segoe UI,sans-serif" font-size="20" font-weight="600" letter-spacing="3">NEXUS</text>
|
||||
<text x="151" y="32" fill="#95a2be" font-family="Bahnschrift,Segoe UI,sans-serif" font-size="18" font-weight="400" letter-spacing="2">/ ID</text>
|
||||
<text x="54" y="31" fill="#17324d" font-family="Segoe UI Variable,Segoe UI,sans-serif" font-size="19" font-weight="700" letter-spacing="1.2">NEXUS</text>
|
||||
<text x="133" y="31" fill="#667a8e" font-family="Segoe UI Variable,Segoe UI,sans-serif" font-size="15" font-weight="600" letter-spacing="1">WORKSPACE</text>
|
||||
<rect x="54" y="38" width="31" height="3" rx="1.5" fill="#279477"/>
|
||||
<rect x="88" y="38" width="31" height="3" rx="1.5" fill="#e9ad38"/>
|
||||
<rect x="122" y="38" width="31" height="3" rx="1.5" fill="#e86452"/>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 948 B After Width: | Height: | Size: 929 B |
@@ -0,0 +1,301 @@
|
||||
/* Account-specific composition on top of the shared console language. */
|
||||
|
||||
.nexus-nav-context {
|
||||
gap: 0.25rem;
|
||||
margin: 0 0.35rem 1.25rem;
|
||||
padding: 0.15rem 0.45rem 1.15rem;
|
||||
border-bottom: 1px solid var(--console-line);
|
||||
}
|
||||
|
||||
.nexus-nav-context__eyebrow {
|
||||
color: var(--console-primary-deep);
|
||||
font-family: inherit;
|
||||
font-size: 0.65rem;
|
||||
font-weight: 750;
|
||||
letter-spacing: 0.11em;
|
||||
}
|
||||
|
||||
.nexus-nav-context strong {
|
||||
color: var(--console-ink);
|
||||
font-family: inherit;
|
||||
font-size: 1.05rem;
|
||||
font-weight: 720;
|
||||
}
|
||||
|
||||
.nexus-nav-context__rule {
|
||||
width: 4.25rem;
|
||||
height: 3px;
|
||||
margin-top: 0.45rem;
|
||||
background: linear-gradient(
|
||||
90deg,
|
||||
var(--console-teal) 0 34%,
|
||||
var(--console-amber) 34% 67%,
|
||||
var(--console-coral) 67%
|
||||
);
|
||||
opacity: 1;
|
||||
mask-image: none;
|
||||
}
|
||||
|
||||
.nexus-nav-label__icon {
|
||||
color: var(--console-faint);
|
||||
}
|
||||
|
||||
.pf-v5-c-nav__link:hover .nexus-nav-label__icon,
|
||||
.pf-v5-c-nav__link:focus .nexus-nav-label__icon,
|
||||
.pf-v5-c-nav__link.pf-m-current .nexus-nav-label__icon {
|
||||
color: var(--console-primary);
|
||||
transform: none;
|
||||
}
|
||||
|
||||
.pf-v5-c-page__main-section:first-child {
|
||||
padding-top: clamp(2rem, 4vw, 3.5rem);
|
||||
padding-bottom: clamp(1.5rem, 2.5vw, 2.25rem);
|
||||
border-bottom: 0;
|
||||
background: transparent;
|
||||
backdrop-filter: none;
|
||||
}
|
||||
|
||||
.pf-v5-c-page__main-section:first-child::after {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.nexus-page-intro {
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.nexus-page-intro__kicker {
|
||||
margin-bottom: 0.65rem;
|
||||
color: var(--console-primary-deep);
|
||||
font-family: inherit;
|
||||
font-size: 0.7rem;
|
||||
font-weight: 750;
|
||||
letter-spacing: 0.11em;
|
||||
}
|
||||
|
||||
.nexus-page-intro__mark {
|
||||
grid-template-columns: auto 3.5rem auto;
|
||||
gap: 0.65rem;
|
||||
padding: 0.65rem 0.85rem;
|
||||
border: 1px solid var(--console-line);
|
||||
border-radius: 999px;
|
||||
color: var(--console-muted);
|
||||
background: color-mix(in srgb, var(--console-surface) 76%, transparent);
|
||||
font-family: inherit;
|
||||
font-size: 0.62rem;
|
||||
font-weight: 700;
|
||||
box-shadow: 0 8px 22px rgba(23, 50, 77, 0.055);
|
||||
}
|
||||
|
||||
.nexus-page-intro__mark > span:first-child {
|
||||
color: var(--console-primary-deep);
|
||||
font-family: inherit;
|
||||
font-size: 0.72rem;
|
||||
font-weight: 800;
|
||||
}
|
||||
|
||||
.nexus-page-intro__mark i {
|
||||
background: linear-gradient(90deg, var(--console-teal), var(--console-primary));
|
||||
}
|
||||
|
||||
.pf-v5-c-page__main-section + .pf-v5-c-page__main-section {
|
||||
padding-top: 0;
|
||||
padding-bottom: 5rem;
|
||||
}
|
||||
|
||||
.nexus-profile-layout {
|
||||
grid-template-columns: minmax(245px, 0.58fr) minmax(0, 1.65fr);
|
||||
gap: clamp(1.25rem, 2.6vw, 2.5rem);
|
||||
}
|
||||
|
||||
.nexus-identity-card {
|
||||
min-height: 0;
|
||||
padding: 1.45rem;
|
||||
border: 1px solid var(--console-line);
|
||||
border-radius: var(--console-radius);
|
||||
color: var(--console-ink);
|
||||
background: linear-gradient(
|
||||
145deg,
|
||||
var(--console-surface),
|
||||
var(--console-surface-soft)
|
||||
);
|
||||
box-shadow: var(--console-shadow);
|
||||
}
|
||||
|
||||
.nexus-identity-card::before {
|
||||
position: absolute;
|
||||
inset: 0 0 auto;
|
||||
width: auto;
|
||||
height: 4px;
|
||||
background: linear-gradient(
|
||||
90deg,
|
||||
var(--console-teal) 0 34%,
|
||||
var(--console-amber) 34% 67%,
|
||||
var(--console-coral) 67%
|
||||
);
|
||||
content: "";
|
||||
}
|
||||
|
||||
.nexus-identity-card::after {
|
||||
right: -4.5rem;
|
||||
bottom: -5.5rem;
|
||||
border-color: color-mix(in srgb, var(--console-primary) 10%, transparent);
|
||||
box-shadow:
|
||||
0 0 0 2.8rem color-mix(in srgb, var(--console-primary) 3%, transparent),
|
||||
0 0 0 5.6rem color-mix(in srgb, var(--console-teal) 2%, transparent);
|
||||
}
|
||||
|
||||
.nexus-identity-card__topline,
|
||||
.nexus-identity-card__name > span,
|
||||
.nexus-identity-card__facts dt,
|
||||
.nexus-identity-card__footer {
|
||||
color: var(--console-muted);
|
||||
font-family: inherit;
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.nexus-identity-card__topline i {
|
||||
border-color: var(--console-primary);
|
||||
border-radius: 50%;
|
||||
background: var(--console-primary);
|
||||
box-shadow: 0 0 0 4px color-mix(in srgb, var(--console-primary) 12%, transparent);
|
||||
transform: none;
|
||||
}
|
||||
|
||||
.nexus-identity-card__avatar {
|
||||
width: 5rem;
|
||||
height: 5rem;
|
||||
margin: 1.8rem 0 1.35rem;
|
||||
border: 0;
|
||||
border-radius: 18px;
|
||||
color: #ffffff;
|
||||
background: linear-gradient(145deg, var(--console-primary), var(--console-teal));
|
||||
box-shadow: 0 10px 24px color-mix(in srgb, var(--console-primary) 22%, transparent);
|
||||
transform: none;
|
||||
}
|
||||
|
||||
.nexus-identity-card__avatar span {
|
||||
font-family: inherit;
|
||||
font-size: 1.35rem;
|
||||
font-weight: 760;
|
||||
transform: none;
|
||||
}
|
||||
|
||||
.nexus-identity-card__name h2,
|
||||
.nexus-identity-card__facts dd {
|
||||
color: var(--console-ink);
|
||||
}
|
||||
|
||||
.nexus-identity-card__name h2 {
|
||||
font-family: inherit;
|
||||
font-size: 1.55rem;
|
||||
letter-spacing: -0.03em;
|
||||
}
|
||||
|
||||
.nexus-identity-card__name p {
|
||||
color: var(--console-muted);
|
||||
}
|
||||
|
||||
.nexus-identity-card__facts > div {
|
||||
border-top-color: var(--console-line);
|
||||
}
|
||||
|
||||
.nexus-profile-editor {
|
||||
overflow: hidden;
|
||||
border: 1px solid var(--console-line);
|
||||
border-radius: var(--console-radius);
|
||||
background: var(--console-surface);
|
||||
box-shadow: var(--console-shadow);
|
||||
}
|
||||
|
||||
.nexus-profile-editor__header {
|
||||
padding: 1.55rem clamp(1.25rem, 2.5vw, 2rem);
|
||||
border-bottom: 1px solid var(--console-line);
|
||||
background: linear-gradient(
|
||||
180deg,
|
||||
var(--console-surface),
|
||||
var(--console-surface-soft)
|
||||
);
|
||||
}
|
||||
|
||||
.nexus-profile-editor__header > span {
|
||||
color: var(--console-primary-deep);
|
||||
font-family: inherit;
|
||||
font-weight: 750;
|
||||
}
|
||||
|
||||
.nexus-profile-editor__header h2 {
|
||||
color: var(--console-ink);
|
||||
font-family: inherit;
|
||||
font-size: 1.28rem;
|
||||
}
|
||||
|
||||
.nexus-profile-editor__header p {
|
||||
color: var(--console-muted);
|
||||
}
|
||||
|
||||
.nexus-profile-editor > .pf-v5-c-form {
|
||||
padding: clamp(1.35rem, 3vw, 2.2rem);
|
||||
}
|
||||
|
||||
.nexus-profile-editor .pf-v5-c-form__group {
|
||||
padding-block: 0.45rem;
|
||||
}
|
||||
|
||||
html[data-kc-theme-name="class"] .nexus-identity-card,
|
||||
html[data-kc-theme-name="class"] .nexus-profile-editor,
|
||||
html[data-kc-theme-name="class"] .pf-v5-c-card {
|
||||
border-radius: var(--console-radius);
|
||||
}
|
||||
|
||||
html[data-kc-theme-name="class"] .nexus-identity-card {
|
||||
border-color: var(--console-line);
|
||||
color: var(--console-ink);
|
||||
background: linear-gradient(
|
||||
145deg,
|
||||
var(--console-surface),
|
||||
var(--console-surface-soft)
|
||||
);
|
||||
box-shadow: var(--console-shadow);
|
||||
}
|
||||
|
||||
html[data-kc-theme-name="class"] .nexus-identity-card::after {
|
||||
display: block;
|
||||
}
|
||||
|
||||
html[data-kc-theme-name="class"] .nexus-identity-card__topline,
|
||||
html[data-kc-theme-name="class"] .nexus-identity-card__name p,
|
||||
html[data-kc-theme-name="class"] .nexus-identity-card__facts dt,
|
||||
html[data-kc-theme-name="class"] .nexus-identity-card__footer {
|
||||
color: var(--console-muted);
|
||||
}
|
||||
|
||||
html[data-kc-theme-name="class"] .nexus-identity-card__facts dd {
|
||||
color: var(--console-ink);
|
||||
}
|
||||
|
||||
html[data-kc-theme-name="class"] .nexus-identity-card__avatar {
|
||||
border: 0;
|
||||
border-radius: 18px;
|
||||
color: #ffffff;
|
||||
background: linear-gradient(145deg, var(--console-primary), var(--console-teal));
|
||||
box-shadow: 0 10px 24px color-mix(in srgb, var(--console-primary) 22%, transparent);
|
||||
}
|
||||
|
||||
@media (max-width: 768px) {
|
||||
.nexus-page-intro__mark {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.nexus-profile-layout {
|
||||
grid-template-columns: 1fr;
|
||||
}
|
||||
|
||||
.nexus-identity-card {
|
||||
position: relative;
|
||||
top: auto;
|
||||
}
|
||||
|
||||
.nexus-profile-editor__header {
|
||||
grid-template-columns: 1fr;
|
||||
}
|
||||
}
|
||||
@@ -16,6 +16,7 @@ import { routes } from "./routes";
|
||||
import { getKcContext } from "./KcContext";
|
||||
|
||||
import "./index.css";
|
||||
import "../console-ui.css";
|
||||
|
||||
const { kcContext } = getKcContext();
|
||||
|
||||
|
||||
@@ -1,16 +1,13 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 240 52" role="img" aria-labelledby="title">
|
||||
<title id="title">NEXUS ID</title>
|
||||
<defs>
|
||||
<linearGradient id="signal" x1="0" x2="1" y1="0" y2="1">
|
||||
<stop offset="0" stop-color="#63e6ff"/>
|
||||
<stop offset="1" stop-color="#8b7cff"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<g transform="translate(8 9)">
|
||||
<rect x="5" y="5" width="24" height="24" rx="1" fill="none" stroke="url(#signal)" stroke-width="1.5" transform="rotate(45 17 17)"/>
|
||||
<circle cx="17" cy="17" r="3.5" fill="#63e6ff"/>
|
||||
<circle cx="17" cy="17" r="8.5" fill="none" stroke="#63e6ff" stroke-opacity=".18"/>
|
||||
<rect width="34" height="34" rx="10" fill="#356fd6"/>
|
||||
<path d="M9 10h16M9 17h11M9 24h16" fill="none" stroke="#fff" stroke-width="2.2" stroke-linecap="round"/>
|
||||
<circle cx="24.5" cy="17" r="2.2" fill="#f0b92e"/>
|
||||
</g>
|
||||
<text x="52" y="32" fill="#f4f7ff" font-family="Bahnschrift,Segoe UI,sans-serif" font-size="20" font-weight="600" letter-spacing="3">NEXUS</text>
|
||||
<text x="151" y="32" fill="#95a2be" font-family="Bahnschrift,Segoe UI,sans-serif" font-size="18" font-weight="400" letter-spacing="2">/ ID</text>
|
||||
<text x="54" y="31" fill="#17324d" font-family="Segoe UI Variable,Segoe UI,sans-serif" font-size="19" font-weight="700" letter-spacing="1.2">NEXUS</text>
|
||||
<text x="133" y="31" fill="#667a8e" font-family="Segoe UI Variable,Segoe UI,sans-serif" font-size="15" font-weight="600" letter-spacing="1">WORKSPACE</text>
|
||||
<rect x="54" y="38" width="31" height="3" rx="1.5" fill="#279477"/>
|
||||
<rect x="88" y="38" width="31" height="3" rx="1.5" fill="#e9ad38"/>
|
||||
<rect x="122" y="38" width="31" height="3" rx="1.5" fill="#e86452"/>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 948 B After Width: | Height: | Size: 929 B |
@@ -0,0 +1,569 @@
|
||||
/*
|
||||
* Shared account/admin workspace language.
|
||||
* This layer intentionally comes after the owned Keycloak styles so the two
|
||||
* consoles feel like one product without coupling their generated sources.
|
||||
*/
|
||||
|
||||
:root {
|
||||
--console-ink: #17324d;
|
||||
--console-muted: #667a8e;
|
||||
--console-faint: #8da0b1;
|
||||
--console-canvas: #f3f7fb;
|
||||
--console-surface: #ffffff;
|
||||
--console-surface-soft: #f8fbfe;
|
||||
--console-nav: #edf4fa;
|
||||
--console-line: #d9e4ed;
|
||||
--console-line-strong: #b9cbd9;
|
||||
--console-primary: #356fd6;
|
||||
--console-primary-deep: #2459b4;
|
||||
--console-teal: #279477;
|
||||
--console-amber: #e9ad38;
|
||||
--console-coral: #e86452;
|
||||
--console-danger: #c94046;
|
||||
--console-radius-sm: 8px;
|
||||
--console-radius: 14px;
|
||||
--console-shadow: 0 1px 2px rgba(23, 50, 77, 0.04),
|
||||
0 14px 38px rgba(23, 50, 77, 0.075);
|
||||
--pf-v5-global--primary-color--100: var(--console-primary);
|
||||
--pf-v5-global--primary-color--200: var(--console-primary-deep);
|
||||
--pf-v5-global--link--Color: var(--console-primary-deep);
|
||||
--pf-v5-global--link--Color--hover: #173f88;
|
||||
--pf-v5-global--BackgroundColor--100: var(--console-surface);
|
||||
--pf-v5-global--BackgroundColor--150: var(--console-surface-soft);
|
||||
--pf-v5-global--BackgroundColor--200: var(--console-canvas);
|
||||
--pf-v5-global--Color--100: var(--console-ink);
|
||||
--pf-v5-global--Color--200: var(--console-muted);
|
||||
--pf-v5-global--BorderColor--100: var(--console-line);
|
||||
--pf-v5-global--BorderColor--200: var(--console-line-strong);
|
||||
--pf-v5-c-page__main-section--m-light--BackgroundColor: transparent;
|
||||
color-scheme: light;
|
||||
}
|
||||
|
||||
.pf-v5-theme-dark {
|
||||
--console-ink: #eaf2f8;
|
||||
--console-muted: #a4b5c4;
|
||||
--console-faint: #8295a7;
|
||||
--console-canvas: #0d1823;
|
||||
--console-surface: #142332;
|
||||
--console-surface-soft: #182a3a;
|
||||
--console-nav: #101f2d;
|
||||
--console-line: #294052;
|
||||
--console-line-strong: #456176;
|
||||
--console-primary: #78a8ff;
|
||||
--console-primary-deep: #96baff;
|
||||
--console-teal: #61c7aa;
|
||||
--console-amber: #f2c45c;
|
||||
--console-coral: #ff8173;
|
||||
--console-danger: #ff858b;
|
||||
--console-shadow: 0 18px 42px rgba(0, 0, 0, 0.26);
|
||||
--pf-v5-global--primary-color--100: var(--console-primary);
|
||||
--pf-v5-global--primary-color--200: var(--console-primary-deep);
|
||||
--pf-v5-global--link--Color: #9dbfff;
|
||||
--pf-v5-global--link--Color--hover: #c3d7ff;
|
||||
--pf-v5-global--BackgroundColor--100: var(--console-surface);
|
||||
--pf-v5-global--BackgroundColor--150: var(--console-surface-soft);
|
||||
--pf-v5-global--BackgroundColor--200: var(--console-canvas);
|
||||
--pf-v5-global--Color--100: var(--console-ink);
|
||||
--pf-v5-global--Color--200: var(--console-muted);
|
||||
--pf-v5-global--BorderColor--100: var(--console-line);
|
||||
--pf-v5-global--BorderColor--200: var(--console-line-strong);
|
||||
color-scheme: dark;
|
||||
}
|
||||
|
||||
html[data-kc-theme-name="class"] {
|
||||
--console-ink: #18324a;
|
||||
--console-muted: #61778c;
|
||||
--console-canvas: #f4f9fd;
|
||||
--console-nav: #edf6fc;
|
||||
--console-line: #d4e3ee;
|
||||
--console-line-strong: #abc4d7;
|
||||
--console-primary: #3f7fd6;
|
||||
--console-primary-deep: #2868c7;
|
||||
--console-teal: #23966f;
|
||||
--console-amber: #f0b92e;
|
||||
--console-coral: #ef6654;
|
||||
}
|
||||
|
||||
html[data-kc-theme-name="class"].pf-v5-theme-dark {
|
||||
--console-ink: #e7f1f9;
|
||||
--console-muted: #9ab0c2;
|
||||
--console-canvas: #0a1723;
|
||||
--console-surface: #102435;
|
||||
--console-surface-soft: #152c3e;
|
||||
--console-nav: #0d2132;
|
||||
--console-line: #2d485d;
|
||||
--console-line-strong: #4d6c82;
|
||||
--console-primary: #76aafa;
|
||||
--console-primary-deep: #9bc0ff;
|
||||
--console-teal: #58cba2;
|
||||
--console-amber: #f2c45c;
|
||||
--console-coral: #ff8173;
|
||||
}
|
||||
|
||||
html,
|
||||
body,
|
||||
#root,
|
||||
.pf-v5-c-page {
|
||||
min-height: 100%;
|
||||
}
|
||||
|
||||
body {
|
||||
color: var(--console-ink);
|
||||
background: var(--console-canvas);
|
||||
font-family: "Segoe UI Variable", "Segoe UI", "PingFang SC", "Microsoft YaHei",
|
||||
sans-serif;
|
||||
font-size: 15px;
|
||||
}
|
||||
|
||||
.pf-v5-c-page,
|
||||
.pf-v5-c-page__main,
|
||||
.pf-v5-c-page__main-section,
|
||||
.pf-v5-c-page__main-section.pf-m-light {
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
.pf-v5-c-page__main {
|
||||
min-width: 0;
|
||||
overflow-x: clip;
|
||||
background-color: var(--console-canvas);
|
||||
background-image: radial-gradient(
|
||||
circle at 92% 1%,
|
||||
color-mix(in srgb, var(--console-primary) 8%, transparent),
|
||||
transparent 27rem
|
||||
),
|
||||
linear-gradient(
|
||||
90deg,
|
||||
color-mix(in srgb, var(--console-line) 20%, transparent) 1px,
|
||||
transparent 1px
|
||||
);
|
||||
background-size:
|
||||
auto,
|
||||
112px 100%;
|
||||
}
|
||||
|
||||
/* Header: quiet, bright, and consistent across both consoles. */
|
||||
.pf-v5-c-masthead {
|
||||
min-height: 68px;
|
||||
border: 0;
|
||||
border-bottom: 1px solid var(--console-line);
|
||||
color: var(--console-ink);
|
||||
background: color-mix(in srgb, var(--console-surface) 94%, transparent);
|
||||
box-shadow: 0 6px 24px rgba(23, 50, 77, 0.055);
|
||||
backdrop-filter: blur(18px);
|
||||
}
|
||||
|
||||
.pf-v5-c-masthead::after {
|
||||
right: 0;
|
||||
bottom: -1px;
|
||||
width: min(34vw, 32rem);
|
||||
height: 3px;
|
||||
background: linear-gradient(
|
||||
90deg,
|
||||
transparent 0 8%,
|
||||
var(--console-teal) 8% 40%,
|
||||
var(--console-amber) 40% 70%,
|
||||
var(--console-coral) 70%
|
||||
);
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
img.keycloak__pageheader_brand {
|
||||
width: 180px;
|
||||
height: 40px;
|
||||
filter: drop-shadow(0 1px 1px rgba(23, 50, 77, 0.1));
|
||||
}
|
||||
|
||||
.pf-v5-theme-dark img.keycloak__pageheader_brand {
|
||||
padding: 0.2rem 0.45rem;
|
||||
border: 1px solid rgba(255, 255, 255, 0.14);
|
||||
border-radius: 10px;
|
||||
background: #f8fbfe;
|
||||
}
|
||||
|
||||
.pf-v5-c-masthead .pf-v5-c-button.pf-m-link,
|
||||
.pf-v5-c-masthead .pf-v5-c-button.pf-m-plain {
|
||||
color: var(--console-muted);
|
||||
}
|
||||
|
||||
.pf-v5-c-masthead .pf-v5-c-button:hover {
|
||||
color: var(--console-primary-deep);
|
||||
background: var(--console-nav);
|
||||
}
|
||||
|
||||
/* Navigation is now a calm secondary surface instead of a competing dark panel. */
|
||||
.pf-v5-c-page__sidebar,
|
||||
.pf-v5-c-page__sidebar-body {
|
||||
color: var(--console-ink);
|
||||
background: var(--console-nav);
|
||||
}
|
||||
|
||||
.pf-v5-c-page__sidebar {
|
||||
width: 272px;
|
||||
border-right: 1px solid var(--console-line);
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
.pf-v5-c-page__sidebar-body {
|
||||
padding: 1.25rem 0.9rem 2rem;
|
||||
}
|
||||
|
||||
.pf-v5-c-page__sidebar-body::before {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.pf-v5-c-nav__section-title,
|
||||
.pf-v5-c-nav__link,
|
||||
.pf-v5-c-nav__group-title,
|
||||
.pf-v5-c-nav__link.pf-m-expandable {
|
||||
color: var(--console-muted);
|
||||
}
|
||||
|
||||
.pf-v5-c-nav__section-title {
|
||||
color: var(--console-ink);
|
||||
font-family: inherit;
|
||||
font-size: 0.95rem;
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.pf-v5-c-nav__group-title {
|
||||
padding-top: 1.35rem;
|
||||
color: var(--console-faint);
|
||||
font-family: inherit;
|
||||
font-size: 0.7rem;
|
||||
font-weight: 700;
|
||||
letter-spacing: 0.09em;
|
||||
}
|
||||
|
||||
.pf-v5-c-nav__list {
|
||||
gap: 0.28rem;
|
||||
}
|
||||
|
||||
.pf-v5-c-nav__link {
|
||||
min-height: 44px;
|
||||
padding: 0.72rem 0.9rem;
|
||||
border: 1px solid transparent;
|
||||
border-radius: 10px;
|
||||
font-size: 0.9rem;
|
||||
font-weight: 600;
|
||||
transition:
|
||||
color 140ms ease,
|
||||
background-color 140ms ease,
|
||||
border-color 140ms ease;
|
||||
}
|
||||
|
||||
.pf-v5-c-nav__link:hover,
|
||||
.pf-v5-c-nav__link:focus {
|
||||
color: var(--console-ink);
|
||||
border-color: color-mix(in srgb, var(--console-primary) 15%, var(--console-line));
|
||||
background: color-mix(in srgb, var(--console-surface) 82%, transparent);
|
||||
transform: none;
|
||||
}
|
||||
|
||||
.pf-v5-c-nav__link.pf-m-current,
|
||||
.pf-v5-c-nav__item.pf-m-current > .pf-v5-c-nav__link {
|
||||
color: var(--console-primary-deep);
|
||||
border-color: color-mix(in srgb, var(--console-primary) 22%, var(--console-line));
|
||||
background: var(--console-surface);
|
||||
box-shadow: 0 8px 22px rgba(39, 82, 124, 0.08);
|
||||
}
|
||||
|
||||
.pf-v5-c-nav__link.pf-m-current::after {
|
||||
right: 0.8rem;
|
||||
width: 5px;
|
||||
height: 18px;
|
||||
border: 0;
|
||||
border-radius: 999px;
|
||||
background: var(--console-primary);
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
.pf-v5-c-page__main-section,
|
||||
.pf-v5-c-page__main-breadcrumb {
|
||||
padding-inline: clamp(1.25rem, 3.2vw, 3.75rem);
|
||||
}
|
||||
|
||||
.pf-v5-c-page__main-section > *,
|
||||
.pf-v5-c-page__main-breadcrumb > * {
|
||||
width: 100%;
|
||||
max-width: 1380px;
|
||||
margin-inline: auto;
|
||||
}
|
||||
|
||||
.pf-v5-c-page__main-breadcrumb {
|
||||
border-bottom: 1px solid var(--console-line);
|
||||
background: color-mix(in srgb, var(--console-surface) 82%, transparent);
|
||||
backdrop-filter: blur(16px);
|
||||
}
|
||||
|
||||
.pf-v5-c-page__main-section {
|
||||
padding-top: clamp(1.75rem, 3vw, 3rem);
|
||||
padding-bottom: clamp(3rem, 6vw, 5.5rem);
|
||||
}
|
||||
|
||||
.pf-v5-c-title,
|
||||
.pf-v5-c-content h1,
|
||||
.pf-v5-c-content h2,
|
||||
.pf-v5-c-page__main-title {
|
||||
color: var(--console-ink);
|
||||
font-family: "Segoe UI Variable Display", "Segoe UI", "PingFang SC", sans-serif;
|
||||
letter-spacing: -0.035em;
|
||||
}
|
||||
|
||||
.pf-v5-c-title.pf-m-2xl,
|
||||
.pf-v5-c-page__main-title {
|
||||
font-size: clamp(2rem, 3vw, 2.75rem);
|
||||
font-weight: 720;
|
||||
line-height: 1.08;
|
||||
}
|
||||
|
||||
.pf-v5-c-title.pf-m-2xl::before,
|
||||
.pf-v5-c-page__main-title::before {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.pf-v5-c-content > p,
|
||||
.pf-v5-c-text-content > p,
|
||||
.pf-v5-c-helper-text,
|
||||
.pf-v5-c-form__helper-text {
|
||||
color: var(--console-muted);
|
||||
line-height: 1.65;
|
||||
}
|
||||
|
||||
/* Every working surface shares the same edge, depth and spacing rhythm. */
|
||||
.pf-v5-c-card,
|
||||
.pf-v5-c-data-list,
|
||||
.pf-v5-c-table,
|
||||
.pf-v5-c-modal-box,
|
||||
.pf-v5-c-drawer__panel,
|
||||
.pf-v5-c-popover__content,
|
||||
.pf-v5-c-menu,
|
||||
.pf-v5-c-empty-state {
|
||||
border: 1px solid var(--console-line);
|
||||
border-radius: var(--console-radius);
|
||||
color: var(--console-ink);
|
||||
background: var(--console-surface);
|
||||
box-shadow: var(--console-shadow);
|
||||
}
|
||||
|
||||
.pf-v5-c-card,
|
||||
.pf-v5-c-table,
|
||||
.pf-v5-c-modal-box {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.pf-v5-c-card__title {
|
||||
color: var(--console-ink);
|
||||
font-family: inherit;
|
||||
font-size: 1.08rem;
|
||||
font-weight: 700;
|
||||
letter-spacing: -0.015em;
|
||||
}
|
||||
|
||||
.pf-v5-c-card__header,
|
||||
.pf-v5-c-modal-box__header {
|
||||
border-bottom: 1px solid var(--console-line);
|
||||
background: linear-gradient(
|
||||
180deg,
|
||||
var(--console-surface),
|
||||
var(--console-surface-soft)
|
||||
);
|
||||
}
|
||||
|
||||
.pf-v5-c-table thead,
|
||||
.pf-v5-c-data-list__item:first-child {
|
||||
color: var(--console-muted);
|
||||
background: var(--console-surface-soft);
|
||||
font-family: inherit;
|
||||
font-size: 0.74rem;
|
||||
font-weight: 700;
|
||||
letter-spacing: 0.055em;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
.pf-v5-c-table tr > *,
|
||||
.pf-v5-c-data-list__item {
|
||||
border-bottom-color: var(--console-line);
|
||||
}
|
||||
|
||||
.pf-v5-c-table tbody tr:hover > *,
|
||||
.pf-v5-c-data-list__item:not(:first-child):hover {
|
||||
background: color-mix(in srgb, var(--console-primary) 4%, var(--console-surface));
|
||||
}
|
||||
|
||||
.pf-v5-c-toolbar__content {
|
||||
padding-inline: 0;
|
||||
}
|
||||
|
||||
.pf-v5-c-form__label-text {
|
||||
color: var(--console-ink);
|
||||
font-weight: 650;
|
||||
}
|
||||
|
||||
.pf-v5-c-form-control,
|
||||
.pf-v5-c-select__toggle,
|
||||
.pf-v5-c-menu-toggle,
|
||||
.pf-v5-c-number-input,
|
||||
.pf-v5-c-search-input {
|
||||
min-height: 42px;
|
||||
border-color: var(--console-line-strong);
|
||||
border-radius: var(--console-radius-sm);
|
||||
color: var(--console-ink);
|
||||
background: var(--console-surface);
|
||||
box-shadow: 0 1px 1px rgba(23, 50, 77, 0.025);
|
||||
}
|
||||
|
||||
.pf-v5-c-form-control:hover,
|
||||
.pf-v5-c-menu-toggle:hover,
|
||||
.pf-v5-c-search-input:hover {
|
||||
border-color: color-mix(in srgb, var(--console-primary) 48%, var(--console-line));
|
||||
}
|
||||
|
||||
.pf-v5-c-form-control:focus-within,
|
||||
.pf-v5-c-menu-toggle:focus,
|
||||
.pf-v5-c-menu-toggle.pf-m-expanded,
|
||||
.pf-v5-c-search-input:focus-within {
|
||||
border-color: var(--console-primary);
|
||||
box-shadow: 0 0 0 3px color-mix(in srgb, var(--console-primary) 15%, transparent);
|
||||
}
|
||||
|
||||
.pf-v5-c-button {
|
||||
min-height: 40px;
|
||||
border-radius: var(--console-radius-sm);
|
||||
font-weight: 650;
|
||||
letter-spacing: 0;
|
||||
}
|
||||
|
||||
.pf-v5-c-button.pf-m-primary {
|
||||
color: #ffffff;
|
||||
background: var(--console-primary);
|
||||
box-shadow: 0 7px 18px color-mix(in srgb, var(--console-primary) 22%, transparent);
|
||||
}
|
||||
|
||||
.pf-v5-c-button.pf-m-primary:hover {
|
||||
background: var(--console-primary-deep);
|
||||
box-shadow: 0 9px 22px color-mix(in srgb, var(--console-primary) 27%, transparent);
|
||||
transform: translateY(-1px);
|
||||
}
|
||||
|
||||
.pf-v5-c-button.pf-m-secondary {
|
||||
border-color: var(--console-line-strong);
|
||||
color: var(--console-ink);
|
||||
background: var(--console-surface);
|
||||
}
|
||||
|
||||
.pf-v5-c-button.pf-m-danger {
|
||||
background: var(--console-danger);
|
||||
}
|
||||
|
||||
.pf-v5-c-tabs {
|
||||
border-bottom: 1px solid var(--console-line);
|
||||
}
|
||||
|
||||
.pf-v5-c-tabs__link {
|
||||
color: var(--console-muted);
|
||||
font-weight: 650;
|
||||
}
|
||||
|
||||
.pf-v5-c-tabs__item.pf-m-current .pf-v5-c-tabs__link {
|
||||
color: var(--console-primary-deep);
|
||||
}
|
||||
|
||||
.pf-v5-c-tabs__link::after {
|
||||
height: 3px;
|
||||
border-color: var(--console-primary);
|
||||
}
|
||||
|
||||
.pf-v5-c-label {
|
||||
border-radius: 999px;
|
||||
font-weight: 650;
|
||||
}
|
||||
|
||||
.pf-v5-c-alert {
|
||||
border: 1px solid var(--console-line);
|
||||
border-radius: var(--console-radius);
|
||||
box-shadow: 0 8px 24px rgba(23, 50, 77, 0.06);
|
||||
}
|
||||
|
||||
.pf-v5-c-empty-state {
|
||||
border-style: dashed;
|
||||
background: color-mix(in srgb, var(--console-surface) 88%, transparent);
|
||||
}
|
||||
|
||||
.pf-v5-c-switch__input:checked ~ .pf-v5-c-switch__toggle,
|
||||
input[type="checkbox"],
|
||||
input[type="radio"] {
|
||||
accent-color: var(--console-primary);
|
||||
}
|
||||
|
||||
.keycloak__form {
|
||||
max-width: 1160px;
|
||||
}
|
||||
|
||||
.keycloak__form_actions {
|
||||
border-top-color: var(--console-line);
|
||||
background: color-mix(in srgb, var(--console-surface) 92%, transparent);
|
||||
box-shadow: 0 -10px 30px rgba(23, 50, 77, 0.055);
|
||||
}
|
||||
|
||||
div.w-tc-editor {
|
||||
border-color: var(--console-line);
|
||||
border-radius: var(--console-radius-sm);
|
||||
}
|
||||
|
||||
:focus-visible {
|
||||
outline: 2px solid var(--console-primary) !important;
|
||||
outline-offset: 3px;
|
||||
}
|
||||
|
||||
@media (max-width: 768px) {
|
||||
.pf-v5-c-masthead {
|
||||
min-height: 60px;
|
||||
gap: 0.5rem;
|
||||
padding-inline: 0.75rem;
|
||||
}
|
||||
|
||||
.pf-v5-c-masthead::after {
|
||||
width: 52vw;
|
||||
}
|
||||
|
||||
.pf-v5-c-page__sidebar {
|
||||
width: min(88vw, 310px);
|
||||
min-width: 0;
|
||||
max-width: min(88vw, 310px);
|
||||
box-shadow: 16px 0 40px rgba(23, 50, 77, 0.16);
|
||||
}
|
||||
|
||||
img.keycloak__pageheader_brand {
|
||||
width: 156px;
|
||||
height: 36px;
|
||||
}
|
||||
|
||||
.pf-v5-c-page__main-section,
|
||||
.pf-v5-c-page__main-breadcrumb {
|
||||
padding-inline: 1rem;
|
||||
}
|
||||
|
||||
.pf-v5-c-page__main-section {
|
||||
padding-top: 1.5rem;
|
||||
padding-bottom: 3.5rem;
|
||||
}
|
||||
|
||||
.pf-v5-c-card,
|
||||
.pf-v5-c-data-list,
|
||||
.pf-v5-c-table,
|
||||
.pf-v5-c-modal-box,
|
||||
.pf-v5-c-empty-state {
|
||||
border-radius: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (prefers-reduced-motion: reduce) {
|
||||
*,
|
||||
*::before,
|
||||
*::after {
|
||||
scroll-behavior: auto !important;
|
||||
animation-duration: 0.01ms !important;
|
||||
animation-iteration-count: 1 !important;
|
||||
transition-duration: 0.01ms !important;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user