fix(frontend): 侧边栏滚动失效与 Jenkins 图标本地化

- ScrollArea 增加 min-h-0,修复 flex 子项不收缩导致导航超屏无法滚动
- Jenkins 品牌图标替换 simple-icons 单色红为仓库本地官方多色 SVG
This commit is contained in:
Logan.Li committed 2026-09-14 15:27:54 +08:00
1 parent e0cc547c8b
commit 5cd7ea4a39
3 files changed
+24 -5

No files matched your search

@@ -4,7 +4,6 @@ import {
siDocker,
siElasticsearch,
siGrafana,
siJenkins,
siKubernetes,
siPrometheus,
} from 'simple-icons';
@@ -13,12 +12,17 @@ const ICONS = {
docker: siDocker,
elasticsearch: siElasticsearch,
grafana: siGrafana,
jenkins: siJenkins,
kubernetes: siKubernetes,
prometheus: siPrometheus,
} satisfies Record<string, SimpleIcon>;
export type TechnologyBrand = keyof typeof ICONS;
// Jenkins 使用仓库本地官方多色 SVG(public/icons/jenkins.svg),
// 替换 simple-icons 的单色红色版本。 // Logan.Li
const LOCAL_SVG: Partial<Record<keyof typeof ICONS | 'jenkins', string>> = {
jenkins: '/icons/jenkins.svg',
};
export type TechnologyBrand = keyof typeof ICONS | 'jenkins';
interface TechnologyBrandIconProps {
brand: TechnologyBrand;
@@ -31,7 +35,20 @@ export function TechnologyBrandIcon({
className = 'h-5 w-5',
title,
}: TechnologyBrandIconProps) {
const icon = ICONS[brand];
const localSrc = LOCAL_SVG[brand];
if (localSrc) {
return (
<img
src={localSrc}
alt={title || 'Jenkins'}
aria-label={title}
role="img"
className={className}
/>
);
}
const icon: SimpleIcon = ICONS[brand as keyof typeof ICONS];
const label = title || icon.title;
return (
+2 -1
View File
@@ -415,7 +415,8 @@ export function Sidebar({ mobileOpen, onMobileClose }: SidebarProps) {
</div>
{/* Menu Items */}
<ScrollArea className="flex-1 py-2 px-1.5">
{/* min-h-0 允许 flex 子项收缩,否则导航超出高度时 ScrollArea 不会出现滚动 // Logan.Li */}
<ScrollArea className="flex-1 min-h-0 py-2 px-1.5">
<nav className="space-y-0.5">
{visibleMenuItems.map((item) => (
<MenuItemComponent