118 lines
4.2 KiB
TypeScript
118 lines
4.2 KiB
TypeScript
// 线性图标集:统一 stroke 风格(见设计规范「图标」一节),禁止引入图标库依赖。
|
|
// 使用方式:<AppIcon name="home" :size="20" />
|
|
export type IconName =
|
|
| 'home'
|
|
| 'dashboard'
|
|
| 'pen'
|
|
| 'chart'
|
|
| 'calendar'
|
|
| 'news'
|
|
| 'user'
|
|
| 'book'
|
|
| 'settings'
|
|
| 'inbox'
|
|
| 'alert'
|
|
| 'check'
|
|
| 'chevron-right'
|
|
| 'chevron-left'
|
|
| 'close'
|
|
| 'clock'
|
|
| 'flame'
|
|
| 'target'
|
|
|
|
interface IconNode {
|
|
tag: 'path' | 'circle' | 'rect' | 'line' | 'polyline'
|
|
attrs: Record<string, string | number>
|
|
}
|
|
|
|
export const icons: Record<IconName, IconNode[]> = {
|
|
home: [
|
|
{ tag: 'path', attrs: { d: 'M3 10.5 12 3l9 7.5' } },
|
|
{ tag: 'path', attrs: { d: 'M5 9.5V21h14V9.5' } },
|
|
{ tag: 'path', attrs: { d: 'M10 21v-6h4v6' } }
|
|
],
|
|
dashboard: [
|
|
{ tag: 'rect', attrs: { x: 3, y: 3, width: 7, height: 7, rx: 2 } },
|
|
{ tag: 'rect', attrs: { x: 14, y: 3, width: 7, height: 7, rx: 2 } },
|
|
{ tag: 'rect', attrs: { x: 3, y: 14, width: 7, height: 7, rx: 2 } },
|
|
{ tag: 'rect', attrs: { x: 14, y: 14, width: 7, height: 7, rx: 2 } }
|
|
],
|
|
pen: [
|
|
{ tag: 'path', attrs: { d: 'M12 20h9' } },
|
|
{ tag: 'path', attrs: { d: 'M16.5 3.5a2.12 2.12 0 0 1 3 3L7 19l-4 1 1-4Z' } }
|
|
],
|
|
chart: [
|
|
{ tag: 'path', attrs: { d: 'M3 3v18h18' } },
|
|
{ tag: 'path', attrs: { d: 'M18 17V9' } },
|
|
{ tag: 'path', attrs: { d: 'M13 17V5' } },
|
|
{ tag: 'path', attrs: { d: 'M8 17v-3' } }
|
|
],
|
|
calendar: [
|
|
{ tag: 'rect', attrs: { x: 3, y: 4, width: 18, height: 18, rx: 2 } },
|
|
{ tag: 'line', attrs: { x1: 16, y1: 2, x2: 16, y2: 6 } },
|
|
{ tag: 'line', attrs: { x1: 8, y1: 2, x2: 8, y2: 6 } },
|
|
{ tag: 'line', attrs: { x1: 3, y1: 10, x2: 21, y2: 10 } }
|
|
],
|
|
news: [
|
|
{ tag: 'rect', attrs: { x: 3, y: 5, width: 18, height: 15, rx: 2 } },
|
|
{ tag: 'line', attrs: { x1: 3, y1: 10, x2: 21, y2: 10 } },
|
|
{ tag: 'line', attrs: { x1: 7, y1: 7, x2: 11, y2: 7 } },
|
|
{ tag: 'line', attrs: { x1: 7, y1: 14, x2: 15, y2: 14 } },
|
|
{ tag: 'line', attrs: { x1: 7, y1: 17, x2: 11, y2: 17 } }
|
|
],
|
|
user: [
|
|
{ tag: 'circle', attrs: { cx: 12, cy: 8, r: 4 } },
|
|
{ tag: 'path', attrs: { d: 'M4 21a8 8 0 0 1 16 0' } }
|
|
],
|
|
book: [
|
|
{ tag: 'path', attrs: { d: 'M4 19.5A2.5 2.5 0 0 1 6.5 17H20' } },
|
|
{ tag: 'path', attrs: { d: 'M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z' } }
|
|
],
|
|
settings: [
|
|
{ tag: 'line', attrs: { x1: 21, y1: 4, x2: 14, y2: 4 } },
|
|
{ tag: 'line', attrs: { x1: 10, y1: 4, x2: 3, y2: 4 } },
|
|
{ tag: 'line', attrs: { x1: 21, y1: 12, x2: 12, y2: 12 } },
|
|
{ tag: 'line', attrs: { x1: 8, y1: 12, x2: 3, y2: 12 } },
|
|
{ tag: 'line', attrs: { x1: 21, y1: 20, x2: 16, y2: 20 } },
|
|
{ tag: 'line', attrs: { x1: 12, y1: 20, x2: 3, y2: 20 } },
|
|
{ tag: 'line', attrs: { x1: 14, y1: 2, x2: 14, y2: 6 } },
|
|
{ tag: 'line', attrs: { x1: 8, y1: 10, x2: 8, y2: 14 } },
|
|
{ tag: 'line', attrs: { x1: 16, y1: 18, x2: 16, y2: 22 } }
|
|
],
|
|
inbox: [
|
|
{ tag: 'path', attrs: { d: 'M22 12h-6l-2 3h-4l-2-3H2' } },
|
|
{
|
|
tag: 'path',
|
|
attrs: {
|
|
d: 'M5.45 5.11 2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z'
|
|
}
|
|
}
|
|
],
|
|
alert: [
|
|
{ tag: 'circle', attrs: { cx: 12, cy: 12, r: 10 } },
|
|
{ tag: 'line', attrs: { x1: 12, y1: 8, x2: 12, y2: 12 } },
|
|
{ tag: 'line', attrs: { x1: 12, y1: 16, x2: 12.01, y2: 16 } }
|
|
],
|
|
check: [{ tag: 'path', attrs: { d: 'M20 6 9 17l-5-5' } }],
|
|
'chevron-right': [{ tag: 'path', attrs: { d: 'M9 18l6-6-6-6' } }],
|
|
'chevron-left': [{ tag: 'path', attrs: { d: 'M15 18l-6-6 6-6' } }],
|
|
close: [{ tag: 'path', attrs: { d: 'M18 6 6 18' } }, { tag: 'path', attrs: { d: 'M6 6l12 12' } }],
|
|
clock: [
|
|
{ tag: 'circle', attrs: { cx: 12, cy: 12, r: 10 } },
|
|
{ tag: 'path', attrs: { d: 'M12 6v6l4 2' } }
|
|
],
|
|
flame: [
|
|
{
|
|
tag: 'path',
|
|
attrs: {
|
|
d: 'M8.5 14.5A2.5 2.5 0 0 0 11 12c0-1.38-.5-2-1-3-1.07-2.14-.22-4.05 2-6 .5 2.5 2 4.9 4 6.5 2 1.6 3 3.5 3 5.5a7 7 0 1 1-14 0c0-1.15.43-2.29 1-3a2.5 2.5 0 0 0 2.5 2.5z'
|
|
}
|
|
}
|
|
],
|
|
target: [
|
|
{ tag: 'circle', attrs: { cx: 12, cy: 12, r: 10 } },
|
|
{ tag: 'circle', attrs: { cx: 12, cy: 12, r: 6 } },
|
|
{ tag: 'circle', attrs: { cx: 12, cy: 12, r: 2 } }
|
|
]
|
|
}
|