feat: 添加标签透明背景选项,优化标签显示效果

This commit is contained in:
Montia37
2025-09-08 20:53:52 +08:00
parent dc939228b2
commit 32d0e396ef
5 changed files with 45 additions and 10 deletions

View File

@@ -84,6 +84,7 @@ const Tag = React.forwardRef<HTMLDivElement, TagProps>(
({ className, tags, ...props }, ref) => {
// 在组件内部使用 useConfigItem 钩子
const tagDefaultColorList = useConfigItem("tagDefaultColorList");
const enableTransparentTags = useConfigItem("enableTransparentTags");
// 解析配置的颜色列表,仅用于循环排序
const colorList = React.useMemo(() => {
@@ -100,16 +101,28 @@ const Tag = React.forwardRef<HTMLDivElement, TagProps>(
{tags.map((tag, index) => {
const { text, color } = parseTagWithColor(tag);
const badgeColor = color || colorList[index % colorList.length];
return (
<Badge
key={index}
color={badgeColor as ColorType}
variant="surface"
className="text-sm">
<label className="text-xs">{text}</label>
</Badge>
);
if (!enableTransparentTags) {
return (
<Badge
key={index}
color={badgeColor as ColorType}
variant="surface"
className="text-sm">
<label className="text-xs">{text}</label>
</Badge>
);
} else {
return (
<div
key={index}
data-accent-color={badgeColor}
className={cn(
"rt-reset rt-Badge rt-r-size-1 transition-colors rt-Badge-tag-transparent"
)}>
{text}
</div>
);
}
})}
</div>
);

View File

@@ -5,6 +5,7 @@ export interface ConfigOptions {
videoBackgroundUrl?: string; // 视频背景URL
blurValue?: number; // 磨砂玻璃模糊值
blurBackgroundColor?: string; // 磨砂玻璃背景颜色
enableTransparentTags?: boolean; // 是否启用标签透明背景
tagDefaultColorList?: string; // 标签默认颜色列表
enableLocalStorage?: boolean; // 是否启用本地存储
selectedDefaultView?: "grid" | "table"; // 默认视图模式
@@ -33,6 +34,7 @@ export const DEFAULT_CONFIG: ConfigOptions = {
videoBackgroundUrl: "/assets/LanternRivers_1080p15fps2Mbps3s.mp4",
blurValue: 10,
blurBackgroundColor: "rgba(255, 255, 255, 0.5)|rgba(0, 0, 0, 0.5)",
enableTransparentTags: true,
tagDefaultColorList:
"ruby,gray,gold,bronze,brown,yellow,amber,orange,tomato,red",
enableLocalStorage: true,

View File

@@ -138,6 +138,18 @@
--theme-text-muted-color: rgb(from var(--accent-12) r g b / 0.8);
}
.dark .rt-Badge-tag-transparent {
--tag-transparent-bg: rgb(from var(--accent-11) r g b / 0.4);
--tag-transparent-color: rgb(from var(--accent-4) r g b / 0.8);
@apply bg-(--tag-transparent-bg) text-(--tag-transparent-color);
}
.rt-Badge-tag-transparent {
--tag-transparent-bg: rgb(from var(--accent-4) r g b / 0.4);
--tag-transparent-color: rgb(from var(--accent-11) r g b / 0.8);
@apply bg-(--tag-transparent-bg) text-(--tag-transparent-color);
}
.theme-text-shadow {
@apply text-shadow-sm text-shadow-(color:--accent-8)/50;
}