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

@@ -68,6 +68,7 @@
| 启用磨砂玻璃效果 | `enableBlur` | `switch` | `true` | 启用后将使主要容器拥有磨砂玻璃效果 | | 启用磨砂玻璃效果 | `enableBlur` | `switch` | `true` | 启用后将使主要容器拥有磨砂玻璃效果 |
| 磨砂玻璃模糊值 | `blurValue` | `number` | `10` | 调整模糊值大小,数值越大模糊效果越明显,建议值为 5-20为 0 则表示不启用模糊效果 | | 磨砂玻璃模糊值 | `blurValue` | `number` | `10` | 调整模糊值大小,数值越大模糊效果越明显,建议值为 5-20为 0 则表示不启用模糊效果 |
| 磨砂玻璃背景色 | `blurBackgroundColor` | `string` | `rgba(255, 255, 255, 0.5)\|rgba(0, 0, 0, 0.5)` | 调整模糊背景色,推荐 rgba 颜色值,使用“\|”分隔亮色模式和暗色模式的颜色值eg: rgba(255, 255, 255, 0.5)\|rgba(0, 0, 0, 0.5) | | 磨砂玻璃背景色 | `blurBackgroundColor` | `string` | `rgba(255, 255, 255, 0.5)\|rgba(0, 0, 0, 0.5)` | 调整模糊背景色,推荐 rgba 颜色值,使用“\|”分隔亮色模式和暗色模式的颜色值eg: rgba(255, 255, 255, 0.5)\|rgba(0, 0, 0, 0.5) |
| 启用标签透明背景 | `enableTransparentTags` | `switch` | `true` | 启用后标签将使用较为透明的背景色,当背景情况复杂导致标签难以辨识时建议关闭 |
| 标签默认颜色列表 | `tagDefaultColorList` | `string` | `ruby,gray,gold,bronze,brown,yellow,amber,orange,tomato,red` | 标签默认颜色列表展示的标签将按顺序调用该颜色池逗号分隔可用的颜色列表请参考https://www.radix-ui.com/themes/docs/theme/color ,改完没有生效则说明填写有误) | | 标签默认颜色列表 | `tagDefaultColorList` | `string` | `ruby,gray,gold,bronze,brown,yellow,amber,orange,tomato,red` | 标签默认颜色列表展示的标签将按顺序调用该颜色池逗号分隔可用的颜色列表请参考https://www.radix-ui.com/themes/docs/theme/color ,改完没有生效则说明填写有误) |
| 启用 localStorage 配置 | `enableLocalStorage` | `switch` | `true` | 启用后将优先使用用户浏览器本地配置的视图和外观设置。关闭后将强制使用下方的主题配置,本地可调整但刷新即恢复 | | 启用 localStorage 配置 | `enableLocalStorage` | `switch` | `true` | 启用后将优先使用用户浏览器本地配置的视图和外观设置。关闭后将强制使用下方的主题配置,本地可调整但刷新即恢复 |
| 默认展示视图 | `selectedDefaultView` | `select` | `grid` | 设置默认展示视图为网格或表格 | | 默认展示视图 | `selectedDefaultView` | `select` | `grid` | 设置默认展示视图为网格或表格 |

View File

@@ -55,6 +55,13 @@
"default": "rgba(255, 255, 255, 0.5)|rgba(0, 0, 0, 0.5)", "default": "rgba(255, 255, 255, 0.5)|rgba(0, 0, 0, 0.5)",
"help": "调整模糊背景色,推荐 rgba 颜色值,使用“|”分隔亮色模式和暗色模式的颜色值eg: rgba(255, 255, 255, 0.5)|rgba(0, 0, 0, 0.5)" "help": "调整模糊背景色,推荐 rgba 颜色值,使用“|”分隔亮色模式和暗色模式的颜色值eg: rgba(255, 255, 255, 0.5)|rgba(0, 0, 0, 0.5)"
}, },
{
"key": "enableTransparentTags",
"name": "启用标签透明背景",
"type": "switch",
"default": true,
"help": "启用后标签将使用较为透明的背景色,当背景情况复杂导致标签难以辨识时建议关闭"
},
{ {
"key": "tagDefaultColorList", "key": "tagDefaultColorList",
"name": "标签默认颜色列表", "name": "标签默认颜色列表",

View File

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

View File

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

View File

@@ -138,6 +138,18 @@
--theme-text-muted-color: rgb(from var(--accent-12) r g b / 0.8); --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 { .theme-text-shadow {
@apply text-shadow-sm text-shadow-(color:--accent-8)/50; @apply text-shadow-sm text-shadow-(color:--accent-8)/50;
} }