diff --git a/TagHelpers/BsIconTagHelper.cs b/TagHelpers/BsIconTagHelper.cs
new file mode 100644
index 0000000..6b28216
--- /dev/null
+++ b/TagHelpers/BsIconTagHelper.cs
@@ -0,0 +1,127 @@
+using Microsoft.AspNetCore.Razor.TagHelpers;
+using System.Threading.Tasks;
+
+namespace AcdiuTools.TagHelpers
+{
+ ///
+ /// SVG Sprite 封装标签
+ /// 用法:
+ ///
+ [HtmlTargetElement("bsicon")]
+ public class BsIconTagHelper : TagHelper
+ {
+ // 路径指向你存放总 SVG 的位置
+ ///
+ /// 表示用于引用图标符号的 SVG矢量图库文件的相对路径
+ ///
+ /// 此路径应指向包含所有 图标定义的SVG文件
+ /// 如果图标库被移动或升级,则需要更新该值
+ const string spritePath = "/lib/bootstrap-icons-1.13.1/bootstrap-icons.svg";
+
+ ///
+ /// 图标名称 (必填)
+ ///
+ [HtmlAttributeName("i")]
+ public required string IconName { get; set; }
+
+ ///
+ /// 宽度 (默认为空,若为空时设置了高度,则使用高度的值,否则为元素 ClassName 添加 w-1r 以使其默认宽度为 1rem)
+ ///
+ [HtmlAttributeName("w")]
+ public string Width { get; set; } = string.Empty;
+
+ ///
+ /// 高度 (默认为空,若为空时设置了宽度,则使用宽度的值,否则为元素 ClassName 添加 h-1r 以使其默认高度为 1rem)
+ ///
+ [HtmlAttributeName("h")]
+ public string Height { get; set; } = string.Empty;
+
+ ///
+ /// 填充颜色 (默认 currentColor 即当前元素颜色)
+ ///
+ [HtmlAttributeName("f")]
+ public string Fill { get; set; } = "currentColor";
+
+ ///
+ /// 自定义 class 名称,允许用户添加额外的样式类 (默认空)
+ ///
+ [HtmlAttributeName("cn")]
+ public string ClassName { get; set; } = string.Empty;
+
+ ///
+ /// 根据指定的图标名称和属性,处理标签助手以渲染SVG矢量图标
+ ///
+ /// 若未指定图标名称或为空,则输出被抑制且不生成SVG
+ /// 渲染后,该方法会将原始标签替换为<svg>元素并设置标准的SVG属性
+ /// 包括类名、宽度、高度、填充颜色和图标ID名称。该SVG引用了 中的图标
+ /// 使用<use>元素引用的矢量图形
+ /// 用于标签辅助程序执行的上下文,包含当前HTML标签及其属性的相关信息
+ /// 标签辅助器的输出,用于修改渲染的HTML元素及其内容
+ public override void Process(TagHelperContext context, TagHelperOutput output)
+ {
+ if (string.IsNullOrWhiteSpace(IconName))
+ {
+ output.SuppressOutput(); // 如果没写图标名,则不渲染
+ return;
+ }
+
+ // 1. 将外层标签替换为