@vmz/ui-icons 0.3.12 → 0.3.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +22 -3
- package/dist/icons/action.d.ts +7 -0
- package/dist/icons/action.js +203 -0
- package/dist/icons/brand.d.ts +7 -0
- package/dist/icons/brand.js +11 -0
- package/dist/icons/commerce.d.ts +7 -0
- package/dist/icons/commerce.js +36 -0
- package/dist/icons/data.d.ts +3 -0
- package/dist/icons/data.js +23 -0
- package/dist/icons/develop.d.ts +3 -0
- package/dist/icons/develop.js +25 -0
- package/dist/icons/device.d.ts +3 -0
- package/dist/icons/device.js +46 -0
- package/dist/icons/editor.d.ts +6 -0
- package/dist/icons/editor.js +59 -0
- package/dist/icons/feature.d.ts +3 -0
- package/dist/icons/feature.js +15 -0
- package/dist/icons/file.d.ts +6 -0
- package/dist/icons/file.js +36 -0
- package/dist/icons/git.d.ts +3 -0
- package/dist/icons/git.js +52 -0
- package/dist/icons/media.d.ts +3 -0
- package/dist/icons/media.js +89 -0
- package/dist/icons/navigation.d.ts +3 -0
- package/dist/icons/navigation.js +25 -0
- package/dist/icons/social.d.ts +8 -0
- package/dist/icons/social.js +52 -0
- package/dist/icons/status.d.ts +3 -0
- package/dist/icons/status.js +45 -0
- package/dist/icons/tool.d.ts +7 -0
- package/dist/icons/tool.js +102 -0
- package/dist/registry.d.ts +4 -0
- package/dist/registry.js +35 -5
- package/package.json +2 -2
- package/src/Icon.vmz +4 -4
- package/src/icons/action.ts +205 -0
- package/src/icons/brand.ts +13 -0
- package/src/icons/commerce.ts +38 -0
- package/src/icons/data.ts +25 -0
- package/src/icons/develop.ts +27 -0
- package/src/icons/device.ts +48 -0
- package/src/icons/editor.ts +61 -0
- package/src/icons/feature.ts +17 -0
- package/src/icons/file.ts +38 -0
- package/src/icons/git.ts +54 -0
- package/src/icons/media.ts +91 -0
- package/src/icons/navigation.ts +27 -0
- package/src/icons/social.ts +54 -0
- package/src/icons/status.ts +47 -0
- package/src/icons/tool.ts +104 -0
- package/src/registry.ts +35 -6
- package/dist/icons-stroke.d.ts +0 -3
- package/dist/icons-stroke.js +0 -258
- package/dist/icons-text-badge.d.ts +0 -3
- package/dist/icons-text-badge.js +0 -15
- package/src/icons-stroke.ts +0 -260
- package/src/icons-text-badge.ts +0 -17
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { IconDef } from '../icon-types.ts';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Product brand glyphs (`brand.*`) — silhouette language like `social.*`, kept separate
|
|
5
|
+
* so package registries and runtimes are not mixed into social link rows. Geometry from
|
|
6
|
+
* Simple Icons (https://simpleicons.org), licensed CC0-1.0; trademarks belong to their owners.
|
|
7
|
+
*/
|
|
8
|
+
export const BRAND_ICONS: Record<string, IconDef> = {
|
|
9
|
+
'brand.npm': {
|
|
10
|
+
kind: 'fill',
|
|
11
|
+
d: 'M1.763 0C.786 0 0 .786 0 1.763v20.474C0 23.214.786 24 1.763 24h20.474c.977 0 1.763-.786 1.763-1.763V1.763C24 .786 23.214 0 22.237 0zM5.13 5.323l13.837.019-.009 13.836h-3.464l.01-10.382h-3.456L12.04 19.17H5.113z',
|
|
12
|
+
},
|
|
13
|
+
};
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { IconDef } from '../icon-types.ts';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Commerce glyphs (`commerce.*`) — payment instruments, carts and scan codes.
|
|
5
|
+
* `commerce.qr` keeps a 2×2 dot matrix at 2-unit pitch: a scan code is dense by
|
|
6
|
+
* definition, so it is the documented exception to the ≥2.25-unit spacing rule.
|
|
7
|
+
*/
|
|
8
|
+
export const COMMERCE_ICONS: Record<string, IconDef> = {
|
|
9
|
+
'commerce.card': {
|
|
10
|
+
kind: 'stroke',
|
|
11
|
+
paths: ['M3 6.5H21V17.5H3Z', 'M3 10H21', 'M6 14.5H9'],
|
|
12
|
+
},
|
|
13
|
+
'commerce.cart': {
|
|
14
|
+
kind: 'stroke',
|
|
15
|
+
paths: ['M3 4.5H5.8L8.2 14.5H19L21 7.5H7'],
|
|
16
|
+
circles: [
|
|
17
|
+
{ cx: 9.5, cy: 18.5, r: 1.6 },
|
|
18
|
+
{ cx: 17.5, cy: 18.5, r: 1.6 },
|
|
19
|
+
],
|
|
20
|
+
},
|
|
21
|
+
'commerce.qr': {
|
|
22
|
+
kind: 'stroke',
|
|
23
|
+
paths: [
|
|
24
|
+
'M4 4H10V10H4Z',
|
|
25
|
+
'M14 4H20V10H14Z',
|
|
26
|
+
'M4 14H10V20H4Z',
|
|
27
|
+
'M14 14H16V16H14Z',
|
|
28
|
+
'M18 14H20V16H18Z',
|
|
29
|
+
'M14 18H16V20H14Z',
|
|
30
|
+
'M18 18H20V20H18Z',
|
|
31
|
+
],
|
|
32
|
+
dots: [
|
|
33
|
+
{ cx: 7, cy: 7, r: 1.5 },
|
|
34
|
+
{ cx: 17, cy: 7, r: 1.5 },
|
|
35
|
+
{ cx: 7, cy: 17, r: 1.5 },
|
|
36
|
+
],
|
|
37
|
+
},
|
|
38
|
+
};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { IconDef } from '../icon-types.ts';
|
|
2
|
+
|
|
3
|
+
/** Data glyphs (`data.*`) — dataset shapes such as pie charts and tables. */
|
|
4
|
+
export const DATA_ICONS: Record<string, IconDef> = {
|
|
5
|
+
'data.pie': {
|
|
6
|
+
kind: 'stroke',
|
|
7
|
+
paths: ['M21 12A9 9 0 1 1 12 3V12H21Z', 'M14 3.5A9 9 0 0 1 20.5 10H14V3.5Z'],
|
|
8
|
+
},
|
|
9
|
+
'data.table': {
|
|
10
|
+
kind: 'stroke',
|
|
11
|
+
paths: ['M4 5H20V19H4Z', 'M4 9.5H20', 'M4 14H20', 'M9.5 5V19'],
|
|
12
|
+
},
|
|
13
|
+
'data.column': {
|
|
14
|
+
kind: 'stroke',
|
|
15
|
+
paths: ['M4 5H20V19H4Z', 'M9.5 5V19', 'M14.5 5V19'],
|
|
16
|
+
},
|
|
17
|
+
'data.row': {
|
|
18
|
+
kind: 'stroke',
|
|
19
|
+
paths: ['M4 5H20V19H4Z', 'M4 10H20', 'M4 15H20'],
|
|
20
|
+
},
|
|
21
|
+
'data.aggregate': {
|
|
22
|
+
kind: 'stroke',
|
|
23
|
+
paths: ['M17 6H7L13 12L7 18H17'],
|
|
24
|
+
},
|
|
25
|
+
};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { IconDef } from '../icon-types.ts';
|
|
2
|
+
|
|
3
|
+
/** Develop glyphs (`develop.*`) — console, terminal and inspection landmarks for developer surfaces. */
|
|
4
|
+
export const DEVELOP_ICONS: Record<string, IconDef> = {
|
|
5
|
+
'develop.terminal': {
|
|
6
|
+
kind: 'stroke',
|
|
7
|
+
paths: ['M3 5H21V19H3Z', 'M7 9L10 12L7 15', 'M13 15H17'],
|
|
8
|
+
},
|
|
9
|
+
'develop.command': {
|
|
10
|
+
kind: 'stroke',
|
|
11
|
+
paths: ['M15.5 4.5A2.4 2.4 0 0 0 13 6.9V17.1A2.4 2.4 0 0 0 15.5 19.5A2.4 2.4 0 0 0 17.9 17.1A2.4 2.4 0 0 0 15.5 14.7H8.5A2.4 2.4 0 0 0 6.1 17.1A2.4 2.4 0 0 0 8.5 19.5A2.4 2.4 0 0 0 11 17.1V6.9A2.4 2.4 0 0 0 8.5 4.5A2.4 2.4 0 0 0 6.1 6.9A2.4 2.4 0 0 0 8.5 9.3H15.5A2.4 2.4 0 0 0 17.9 6.9A2.4 2.4 0 0 0 15.5 4.5Z'],
|
|
12
|
+
},
|
|
13
|
+
'develop.inspect': {
|
|
14
|
+
kind: 'stroke',
|
|
15
|
+
paths: ['M4 7V4H7', 'M17 4H20V7', 'M20 17V20H17', 'M7 20H4V17'],
|
|
16
|
+
dots: [{ cx: 12, cy: 12, r: 1.5 }],
|
|
17
|
+
},
|
|
18
|
+
'develop.activity': {
|
|
19
|
+
kind: 'stroke',
|
|
20
|
+
paths: ['M3 12H7L10 6L14 18L17 12H21'],
|
|
21
|
+
},
|
|
22
|
+
'develop.queue': {
|
|
23
|
+
kind: 'stroke',
|
|
24
|
+
paths: ['M4 8L12 4L20 8L12 12L4 8Z', 'M4 12.5L12 16.5L20 12.5', 'M4 17L12 21L20 17'],
|
|
25
|
+
},
|
|
26
|
+
'develop.env': { kind: 'text-badge', label: 'ENV' },
|
|
27
|
+
};
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import type { IconDef } from '../icon-types.ts';
|
|
2
|
+
|
|
3
|
+
/** Device glyphs (`device.*`) — hardware, deployment and access control landmarks. */
|
|
4
|
+
export const DEVICE_ICONS: Record<string, IconDef> = {
|
|
5
|
+
'device.server': {
|
|
6
|
+
kind: 'stroke',
|
|
7
|
+
paths: ['M4 5H20V11H4Z', 'M4 13H20V19H4Z'],
|
|
8
|
+
dots: [
|
|
9
|
+
{ cx: 7, cy: 8, r: 1.5 },
|
|
10
|
+
{ cx: 7, cy: 16, r: 1.5 },
|
|
11
|
+
],
|
|
12
|
+
},
|
|
13
|
+
'device.mobile': {
|
|
14
|
+
kind: 'stroke',
|
|
15
|
+
paths: ['M7 3H17V21H7Z', 'M11 18H13'],
|
|
16
|
+
},
|
|
17
|
+
'device.tablet': {
|
|
18
|
+
kind: 'stroke',
|
|
19
|
+
paths: ['M5 4H19V20H5Z', 'M11 17.5H13'],
|
|
20
|
+
},
|
|
21
|
+
'device.network': {
|
|
22
|
+
kind: 'stroke',
|
|
23
|
+
circles: [
|
|
24
|
+
{ cx: 12, cy: 12, r: 2.2 },
|
|
25
|
+
{ cx: 12, cy: 5, r: 1.8 },
|
|
26
|
+
{ cx: 5.5, cy: 18.5, r: 1.8 },
|
|
27
|
+
{ cx: 18.5, cy: 18.5, r: 1.8 },
|
|
28
|
+
],
|
|
29
|
+
paths: ['M12 10V7', 'M10.2 13.2L7 16.3', 'M13.8 13.2L17 16.3'],
|
|
30
|
+
},
|
|
31
|
+
'device.shield': {
|
|
32
|
+
kind: 'stroke',
|
|
33
|
+
paths: ['M12 3L19 6V11C19 15.5 16 18.5 12 20C8 18.5 5 15.5 5 11V6L12 3Z'],
|
|
34
|
+
},
|
|
35
|
+
'device.key': {
|
|
36
|
+
kind: 'stroke',
|
|
37
|
+
circles: [{ cx: 8, cy: 8, r: 4 }],
|
|
38
|
+
paths: ['M10.8 10.8L19.5 19.5', 'M16 16L18 18', 'M18.5 13.5L20.5 15.5'],
|
|
39
|
+
},
|
|
40
|
+
'device.lock': {
|
|
41
|
+
kind: 'stroke',
|
|
42
|
+
paths: ['M6 11H18V20H6Z', 'M9 11V8A3 3 0 0 1 15 8V11'],
|
|
43
|
+
},
|
|
44
|
+
'device.lock-unlock': {
|
|
45
|
+
kind: 'stroke',
|
|
46
|
+
paths: ['M6 11H18V20H6Z', 'M9 11V8A3 3 0 0 1 14.8 6.2'],
|
|
47
|
+
},
|
|
48
|
+
};
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import type { IconDef } from '../icon-types.ts';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Editor glyphs (`editor.*`) — the formatting toolbar surface. `editor.bold` and
|
|
5
|
+
* `editor.italic` use text badges because the letterforms are the honest mark.
|
|
6
|
+
*/
|
|
7
|
+
export const EDITOR_ICONS: Record<string, IconDef> = {
|
|
8
|
+
'editor.format': {
|
|
9
|
+
kind: 'stroke',
|
|
10
|
+
paths: ['M13 4V20', 'M17 4V20', 'M19 4H9.5A4.5 4.5 0 0 0 9.5 13H13'],
|
|
11
|
+
},
|
|
12
|
+
'editor.bold': { kind: 'text-badge', label: 'B' },
|
|
13
|
+
'editor.italic': { kind: 'text-badge', label: 'I' },
|
|
14
|
+
'editor.code': {
|
|
15
|
+
kind: 'stroke',
|
|
16
|
+
paths: ['M16 7L21 12L16 17', 'M8 7L3 12L8 17'],
|
|
17
|
+
},
|
|
18
|
+
'editor.quote': {
|
|
19
|
+
kind: 'stroke',
|
|
20
|
+
paths: [
|
|
21
|
+
'M9 6C7 7 6 9 6 12C6 14 7.2 15.5 8.8 15.5C10.4 15.5 11.5 14.3 11.5 12.8C11.5 11.3 10.4 10.2 9 10.2C8.7 10.2 8.4 10.3 8.1 10.4C8.3 9 9 7.7 10.5 6.9L9 6Z',
|
|
22
|
+
'M17 6C15 7 14 9 14 12C14 14 15.2 15.5 16.8 15.5C18.4 15.5 19.5 14.3 19.5 12.8C19.5 11.3 18.4 10.2 17 10.2C16.7 10.2 16.4 10.3 16.1 10.4C16.3 9 17 7.7 18.5 6.9L17 6Z',
|
|
23
|
+
],
|
|
24
|
+
},
|
|
25
|
+
'editor.list-ordered': {
|
|
26
|
+
kind: 'stroke',
|
|
27
|
+
paths: [
|
|
28
|
+
'M10.5 6H21',
|
|
29
|
+
'M10.5 12H21',
|
|
30
|
+
'M10.5 18H21',
|
|
31
|
+
'M4 5.5L5.5 4.5V9.5',
|
|
32
|
+
'M3.8 12.2C4.2 11.7 5 11.4 5.7 11.7C6.4 12 6.5 12.9 6 13.5L3.8 15.8H6.5',
|
|
33
|
+
'M4 17.3C4.6 17 5.5 17 6 17.5C6.4 18 6.1 18.6 5.4 18.8C6.1 19 6.4 19.6 6 20.1C5.5 20.6 4.6 20.6 4 20.3',
|
|
34
|
+
],
|
|
35
|
+
},
|
|
36
|
+
'editor.list-unordered': {
|
|
37
|
+
kind: 'stroke',
|
|
38
|
+
paths: ['M10.5 6H21', 'M10.5 12H21', 'M10.5 18H21'],
|
|
39
|
+
dots: [
|
|
40
|
+
{ cx: 5.5, cy: 6, r: 1.5 },
|
|
41
|
+
{ cx: 5.5, cy: 12, r: 1.5 },
|
|
42
|
+
{ cx: 5.5, cy: 18, r: 1.5 },
|
|
43
|
+
],
|
|
44
|
+
},
|
|
45
|
+
'editor.indent': {
|
|
46
|
+
kind: 'stroke',
|
|
47
|
+
paths: ['M21 5H3', 'M21 12H9', 'M21 19H3', 'M3 9L6.5 12L3 15'],
|
|
48
|
+
},
|
|
49
|
+
'editor.outdent': {
|
|
50
|
+
kind: 'stroke',
|
|
51
|
+
paths: ['M21 5H3', 'M21 12H9', 'M21 19H3', 'M6.5 9L3 12L6.5 15'],
|
|
52
|
+
},
|
|
53
|
+
'editor.wrap': {
|
|
54
|
+
kind: 'stroke',
|
|
55
|
+
paths: ['M3 6H21', 'M3 12H18A3.5 3.5 0 0 1 18 19H14', 'M16.5 16.5L14 19L16.5 21.5'],
|
|
56
|
+
},
|
|
57
|
+
'editor.split': {
|
|
58
|
+
kind: 'stroke',
|
|
59
|
+
paths: ['M4 4H20V20H4Z', 'M12 4V20'],
|
|
60
|
+
},
|
|
61
|
+
};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { IconDef } from '../icon-types.ts';
|
|
2
|
+
|
|
3
|
+
/** Feature glyphs (`feature.*`) — product capability landmarks on marketing surfaces. */
|
|
4
|
+
export const FEATURE_ICONS: Record<string, IconDef> = {
|
|
5
|
+
'feature.incremental': {
|
|
6
|
+
kind: 'stroke',
|
|
7
|
+
paths: ['M4 20H20', 'M6 20V16H10V12H14V8H18'],
|
|
8
|
+
},
|
|
9
|
+
'feature.runtime': {
|
|
10
|
+
kind: 'stroke',
|
|
11
|
+
paths: ['M7 7H17V17H7Z', 'M10 4V7', 'M14 4V7', 'M10 17V20', 'M14 17V20', 'M4 10H7', 'M4 14H7', 'M17 10H20', 'M17 14H20'],
|
|
12
|
+
},
|
|
13
|
+
'feature.deploy': {
|
|
14
|
+
kind: 'stroke',
|
|
15
|
+
paths: ['M4 18H20', 'M12 15V6', 'M8 10L12 6L16 10'],
|
|
16
|
+
},
|
|
17
|
+
};
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { IconDef } from '../icon-types.ts';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* File glyphs (`file.*`) — documents, folders, attachments and file-type badges.
|
|
5
|
+
* File types with no honest silhouette (PDF, ZIP, Markdown, CSV) use `text-badge`.
|
|
6
|
+
*/
|
|
7
|
+
export const FILE_ICONS: Record<string, IconDef> = {
|
|
8
|
+
'file.document': {
|
|
9
|
+
kind: 'stroke',
|
|
10
|
+
paths: ['M5 3H14L19 8V21H5Z', 'M14 3V8H19', 'M8 12H16', 'M8 16H16'],
|
|
11
|
+
},
|
|
12
|
+
'file.folder': {
|
|
13
|
+
kind: 'stroke',
|
|
14
|
+
paths: ['M3 5H9.5L12 7.5H21V19H3V5Z'],
|
|
15
|
+
},
|
|
16
|
+
'file.folder-open': {
|
|
17
|
+
kind: 'stroke',
|
|
18
|
+
paths: ['M4 11V6H9.5L12 8.5H20V11', 'M3 11H21L19 19H5L3 11Z'],
|
|
19
|
+
},
|
|
20
|
+
'file.attachment': {
|
|
21
|
+
kind: 'stroke',
|
|
22
|
+
paths: [
|
|
23
|
+
'M20 11.4L11.6 19.8A5.5 5.5 0 0 1 3.9 12.1L12.1 3.9A3.8 3.8 0 0 1 17.4 9.2L9.2 17.4A1.9 1.9 0 0 1 6.6 14.8L14.8 6.6',
|
|
24
|
+
],
|
|
25
|
+
},
|
|
26
|
+
'file.pdf': { kind: 'text-badge', label: 'PDF' },
|
|
27
|
+
'file.archive': { kind: 'text-badge', label: 'ZIP' },
|
|
28
|
+
'file.markdown': { kind: 'text-badge', label: 'MD' },
|
|
29
|
+
'file.spreadsheet': { kind: 'text-badge', label: 'CSV' },
|
|
30
|
+
'file.cloud': {
|
|
31
|
+
kind: 'stroke',
|
|
32
|
+
paths: ['M6.5 19A4.5 4.5 0 0 1 6.2 10.1A5.8 5.8 0 0 1 17.4 10.6A4.3 4.3 0 0 1 17.5 19H6.5Z'],
|
|
33
|
+
},
|
|
34
|
+
'file.cloud-off': {
|
|
35
|
+
kind: 'stroke',
|
|
36
|
+
paths: ['M6.5 19A4.5 4.5 0 0 1 6.2 10.1A5.8 5.8 0 0 1 17.4 10.6A4.3 4.3 0 0 1 17.5 19H6.5Z', 'M4 20L20 4'],
|
|
37
|
+
},
|
|
38
|
+
};
|
package/src/icons/git.ts
ADDED
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import type { IconDef } from '../icon-types.ts';
|
|
2
|
+
|
|
3
|
+
/** Git glyphs (`git.*`) — version control and collaboration landmarks. */
|
|
4
|
+
export const GIT_ICONS: Record<string, IconDef> = {
|
|
5
|
+
'git.branch': {
|
|
6
|
+
kind: 'stroke',
|
|
7
|
+
circles: [
|
|
8
|
+
{ cx: 6, cy: 5, r: 2 },
|
|
9
|
+
{ cx: 6, cy: 19, r: 2 },
|
|
10
|
+
{ cx: 18, cy: 8, r: 2 },
|
|
11
|
+
],
|
|
12
|
+
paths: ['M6 7V17', 'M16 8.2C14 10.5 10 11.5 6 12.5'],
|
|
13
|
+
},
|
|
14
|
+
'git.commit': {
|
|
15
|
+
kind: 'stroke',
|
|
16
|
+
circles: [{ cx: 12, cy: 12, r: 4.5 }],
|
|
17
|
+
paths: ['M4 12H7.5', 'M16.5 12H20'],
|
|
18
|
+
},
|
|
19
|
+
'git.merge': {
|
|
20
|
+
kind: 'stroke',
|
|
21
|
+
circles: [
|
|
22
|
+
{ cx: 5, cy: 5, r: 2 },
|
|
23
|
+
{ cx: 5, cy: 19, r: 2 },
|
|
24
|
+
{ cx: 19, cy: 12, r: 2 },
|
|
25
|
+
],
|
|
26
|
+
paths: ['M5 7V17', 'M7 6C9 8 12 10.5 17 11.5', 'M7 18C9 16 12 13.5 17 12.5'],
|
|
27
|
+
},
|
|
28
|
+
'git.pull-request': {
|
|
29
|
+
kind: 'stroke',
|
|
30
|
+
circles: [
|
|
31
|
+
{ cx: 6, cy: 6, r: 2 },
|
|
32
|
+
{ cx: 6, cy: 18, r: 2 },
|
|
33
|
+
{ cx: 18, cy: 18, r: 2 },
|
|
34
|
+
],
|
|
35
|
+
paths: ['M6 8V16', 'M13 6H16.5C17.6 6 18 6.8 18 8V16', 'M10.5 3.5L13 6L10.5 8.5'],
|
|
36
|
+
},
|
|
37
|
+
'git.fork': {
|
|
38
|
+
kind: 'stroke',
|
|
39
|
+
circles: [
|
|
40
|
+
{ cx: 12, cy: 4, r: 2 },
|
|
41
|
+
{ cx: 6, cy: 20, r: 2 },
|
|
42
|
+
{ cx: 18, cy: 20, r: 2 },
|
|
43
|
+
],
|
|
44
|
+
paths: ['M12 6V11', 'M12 11C12 14.5 8.5 15 7 18.2', 'M12 11C12 14.5 15.5 15 17 18.2'],
|
|
45
|
+
},
|
|
46
|
+
'git.compare': {
|
|
47
|
+
kind: 'stroke',
|
|
48
|
+
circles: [
|
|
49
|
+
{ cx: 6, cy: 6, r: 2 },
|
|
50
|
+
{ cx: 18, cy: 18, r: 2 },
|
|
51
|
+
],
|
|
52
|
+
paths: ['M8 6H13', 'M11 3.5L13.5 6L11 8.5', 'M16 18H11', 'M13 15.5L10.5 18L13 20.5'],
|
|
53
|
+
},
|
|
54
|
+
};
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import type { IconDef } from '../icon-types.ts';
|
|
2
|
+
|
|
3
|
+
/** Media glyphs (`media.*`) — playback transport, capture devices and audio state. */
|
|
4
|
+
export const MEDIA_ICONS: Record<string, IconDef> = {
|
|
5
|
+
'media.play': {
|
|
6
|
+
kind: 'stroke',
|
|
7
|
+
paths: ['M8.77 6.04L17.65 11.47Q18.5 12 17.65 12.53L8.77 17.96Q8 18.5 8 17.6V6.4Q8 5.5 8.77 6.04Z'],
|
|
8
|
+
},
|
|
9
|
+
'media.pause': {
|
|
10
|
+
kind: 'stroke',
|
|
11
|
+
paths: ['M8.5 5V19', 'M15.5 5V19'],
|
|
12
|
+
},
|
|
13
|
+
'media.stop': {
|
|
14
|
+
kind: 'stroke',
|
|
15
|
+
paths: ['M7 7H17V17H7Z'],
|
|
16
|
+
},
|
|
17
|
+
'media.next': {
|
|
18
|
+
kind: 'stroke',
|
|
19
|
+
paths: ['M7.06 6.42L13.78 11.4Q14.5 12 13.78 12.6L7.06 17.58Q6.5 18 6.5 17.3V6.7Q6.5 6 7.06 6.42Z', 'M17.5 6V18'],
|
|
20
|
+
},
|
|
21
|
+
'media.previous': {
|
|
22
|
+
kind: 'stroke',
|
|
23
|
+
paths: ['M16.94 6.42L10.22 11.4Q9.5 12 10.22 12.6L16.94 17.58Q17.5 18 17.5 17.3V6.7Q17.5 6 16.94 6.42Z', 'M6.5 6V18'],
|
|
24
|
+
},
|
|
25
|
+
'media.seek-back': {
|
|
26
|
+
kind: 'stroke',
|
|
27
|
+
paths: ['M10.5 6.5L4 12L10.5 17.5V6.5Z', 'M19.5 6.5L13 12L19.5 17.5V6.5Z'],
|
|
28
|
+
},
|
|
29
|
+
'media.seek-forward': {
|
|
30
|
+
kind: 'stroke',
|
|
31
|
+
paths: ['M4.5 6.5L11 12L4.5 17.5V6.5Z', 'M13.5 6.5L20 12L13.5 17.5V6.5Z'],
|
|
32
|
+
},
|
|
33
|
+
'media.fullscreen': {
|
|
34
|
+
kind: 'stroke',
|
|
35
|
+
paths: ['M4 9V4H9', 'M15 4H20V9', 'M20 15V20H15', 'M9 20H4V15'],
|
|
36
|
+
},
|
|
37
|
+
'media.fullscreen-exit': {
|
|
38
|
+
kind: 'stroke',
|
|
39
|
+
paths: ['M8 3V10H3', 'M16 3V10H21', 'M16 21V14H21', 'M8 21V14H3'],
|
|
40
|
+
},
|
|
41
|
+
'media.pip': {
|
|
42
|
+
kind: 'stroke',
|
|
43
|
+
paths: ['M3 6H21V18H3Z', 'M13 12H18V16H13Z'],
|
|
44
|
+
},
|
|
45
|
+
'media.subtitle': {
|
|
46
|
+
kind: 'stroke',
|
|
47
|
+
paths: ['M3 6H21V18H3Z', 'M6 12H14', 'M6 15H11'],
|
|
48
|
+
},
|
|
49
|
+
'media.cast': {
|
|
50
|
+
kind: 'stroke',
|
|
51
|
+
paths: ['M4 8V5H20V19H14', 'M4 12A8 8 0 0 1 12 19', 'M4 15.5A4 4 0 0 1 7.5 19'],
|
|
52
|
+
},
|
|
53
|
+
'media.repeat': {
|
|
54
|
+
kind: 'stroke',
|
|
55
|
+
paths: ['M17 4L20 7L17 10', 'M4 11V9C4 7.6 5.1 7 6.5 7H20', 'M7 20L4 17L7 14', 'M20 13V15C20 16.4 19 17 17.5 17H4'],
|
|
56
|
+
},
|
|
57
|
+
'media.shuffle': {
|
|
58
|
+
kind: 'stroke',
|
|
59
|
+
paths: ['M3 7H6L18 17H21', 'M3 17H6L8 15', 'M16 9L18 7H21', 'M18 4L21 7L18 10', 'M18 14L21 17L18 20'],
|
|
60
|
+
},
|
|
61
|
+
'media.audio-track': {
|
|
62
|
+
kind: 'stroke',
|
|
63
|
+
circles: [
|
|
64
|
+
{ cx: 6.5, cy: 18, r: 2.5 },
|
|
65
|
+
{ cx: 18.5, cy: 16, r: 2.5 },
|
|
66
|
+
],
|
|
67
|
+
paths: ['M9 18V5.5L21 3.5V16'],
|
|
68
|
+
},
|
|
69
|
+
'media.volume': {
|
|
70
|
+
kind: 'stroke',
|
|
71
|
+
paths: ['M11 5L6 9H3V15H6L11 19V5Z', 'M15.5 8.5A5 5 0 0 1 15.5 15.5', 'M18.5 5.5A10 10 0 0 1 18.5 18.5'],
|
|
72
|
+
},
|
|
73
|
+
'media.volume-muted': {
|
|
74
|
+
kind: 'stroke',
|
|
75
|
+
paths: ['M11 5L6 9H3V15H6L11 19V5Z', 'M16 9.5L21 14.5', 'M21 9.5L16 14.5'],
|
|
76
|
+
},
|
|
77
|
+
'media.microphone': {
|
|
78
|
+
kind: 'stroke',
|
|
79
|
+
paths: ['M9 4A3 3 0 0 1 15 4V11A3 3 0 0 1 9 11V4Z', 'M6 11A6 6 0 0 0 18 11', 'M12 17V20', 'M9 20H15'],
|
|
80
|
+
},
|
|
81
|
+
'media.camera': {
|
|
82
|
+
kind: 'stroke',
|
|
83
|
+
paths: ['M4 8H7L9 5.5H15L17 8H20V18H4Z'],
|
|
84
|
+
circles: [{ cx: 12, cy: 12.5, r: 3 }],
|
|
85
|
+
},
|
|
86
|
+
'media.image': {
|
|
87
|
+
kind: 'stroke',
|
|
88
|
+
paths: ['M4 5H20V19H4Z', 'M4 16L9.5 10.5L13 14L16 11L20 15'],
|
|
89
|
+
circles: [{ cx: 15.5, cy: 8.5, r: 1.5 }],
|
|
90
|
+
},
|
|
91
|
+
};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { IconDef } from '../icon-types.ts';
|
|
2
|
+
|
|
3
|
+
/** Navigation glyphs (`nav.*`) — wayfinding landmarks such as home and locale. */
|
|
4
|
+
export const NAVIGATION_ICONS: Record<string, IconDef> = {
|
|
5
|
+
'nav.home': {
|
|
6
|
+
kind: 'stroke',
|
|
7
|
+
paths: ['M4 10.5L12 4L20 10.5', 'M6 10V19H18V10', 'M10 19V13H14V19'],
|
|
8
|
+
},
|
|
9
|
+
'nav.language': {
|
|
10
|
+
kind: 'stroke',
|
|
11
|
+
circles: [{ cx: 12, cy: 12, r: 9 }],
|
|
12
|
+
paths: ['M3 12H21', 'M12 3C14.4 5.6 15.4 8.7 15.4 12C15.4 15.3 14.4 18.4 12 21C9.6 18.4 8.6 15.3 8.6 12C8.6 8.7 9.6 5.6 12 3Z'],
|
|
13
|
+
},
|
|
14
|
+
'nav.anchor': {
|
|
15
|
+
kind: 'stroke',
|
|
16
|
+
paths: ['M9.5 4L7.5 20', 'M16.5 4L14.5 20', 'M4.5 9H19.5', 'M4 15H19'],
|
|
17
|
+
},
|
|
18
|
+
'nav.bookmark': {
|
|
19
|
+
kind: 'stroke',
|
|
20
|
+
paths: ['M6 3.5H18V20.5L12 16L6 20.5V3.5Z'],
|
|
21
|
+
},
|
|
22
|
+
'nav.compass': {
|
|
23
|
+
kind: 'stroke',
|
|
24
|
+
circles: [{ cx: 12, cy: 12, r: 9 }],
|
|
25
|
+
paths: ['M15.17 9.34L13.5 13.5L8.83 14.67Q8.5 15.5 9.34 15.17L10.5 10.5L14.67 8.83Q15.5 8.5 15.17 9.34Z'],
|
|
26
|
+
},
|
|
27
|
+
};
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import type { IconDef } from '../icon-types.ts';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Social platform glyphs (`social.*`) — brand silhouettes use the `fill` kind because
|
|
5
|
+
* brand marks are silhouette language, not outline strokes. Geometry follows the official
|
|
6
|
+
* paths published by Simple Icons (https://simpleicons.org), licensed CC0-1.0; trademarks
|
|
7
|
+
* remain the property of their respective owners. Marks are rendered in `currentColor`.
|
|
8
|
+
*/
|
|
9
|
+
export const SOCIAL_ICONS: Record<string, IconDef> = {
|
|
10
|
+
'social.github': {
|
|
11
|
+
kind: 'fill',
|
|
12
|
+
d: 'M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12',
|
|
13
|
+
},
|
|
14
|
+
'social.x': {
|
|
15
|
+
kind: 'fill',
|
|
16
|
+
d: 'M14.234 10.162 22.977 0h-2.072l-7.591 8.824L7.251 0H.258l9.168 13.343L.258 24H2.33l8.016-9.318L16.749 24h6.993zm-2.837 3.299-.929-1.329L3.076 1.56h3.182l5.965 8.532.929 1.329 7.754 11.09h-3.182z',
|
|
17
|
+
},
|
|
18
|
+
'social.linkedin': {
|
|
19
|
+
kind: 'fill',
|
|
20
|
+
d: 'M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z',
|
|
21
|
+
},
|
|
22
|
+
'social.discord': {
|
|
23
|
+
kind: 'fill',
|
|
24
|
+
d: 'M20.317 4.3698a19.7913 19.7913 0 00-4.8851-1.5152.0741.0741 0 00-.0785.0371c-.211.3753-.4447.8648-.6083 1.2495-1.8447-.2762-3.68-.2762-5.4868 0-.1636-.3933-.4058-.8742-.6177-1.2495a.077.077 0 00-.0785-.037 19.7363 19.7363 0 00-4.8852 1.515.0699.0699 0 00-.0321.0277C.5334 9.0458-.319 13.5799.0992 18.0578a.0824.0824 0 00.0312.0561c2.0528 1.5076 4.0413 2.4228 5.9929 3.0294a.0777.0777 0 00.0842-.0276c.4616-.6304.8731-1.2952 1.226-1.9942a.076.076 0 00-.0416-.1057c-.6528-.2476-1.2743-.5495-1.8722-.8923a.077.077 0 01-.0076-.1277c.1258-.0943.2517-.1923.3718-.2914a.0743.0743 0 01.0776-.0105c3.9278 1.7933 8.18 1.7933 12.0614 0a.0739.0739 0 01.0785.0095c.1202.099.246.1981.3728.2924a.077.077 0 01-.0066.1276 12.2986 12.2986 0 01-1.873.8914.0766.0766 0 00-.0407.1067c.3604.698.7719 1.3628 1.225 1.9932a.076.076 0 00.0842.0286c1.961-.6067 3.9495-1.5219 6.0023-3.0294a.077.077 0 00.0313-.0552c.5004-5.177-.8382-9.6739-3.5485-13.6604a.061.061 0 00-.0312-.0286zM8.02 15.3312c-1.1825 0-2.1569-1.0857-2.1569-2.419 0-1.3332.9555-2.4189 2.157-2.4189 1.2108 0 2.1757 1.0952 2.1568 2.419 0 1.3332-.9555 2.4189-2.1569 2.4189zm7.9748 0c-1.1825 0-2.1569-1.0857-2.1569-2.419 0-1.3332.9554-2.4189 2.1569-2.4189 1.2108 0 2.1757 1.0952 2.1568 2.419 0 1.3332-.946 2.4189-2.1568 2.4189Z',
|
|
25
|
+
},
|
|
26
|
+
'social.youtube': {
|
|
27
|
+
kind: 'fill',
|
|
28
|
+
d: 'M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z',
|
|
29
|
+
},
|
|
30
|
+
'social.bluesky': {
|
|
31
|
+
kind: 'fill',
|
|
32
|
+
d: 'M5.202 2.857C7.954 4.922 10.913 9.11 12 11.358c1.087-2.247 4.046-6.436 6.798-8.501C20.783 1.366 24 .213 24 3.883c0 .732-.42 6.156-.667 7.037-.856 3.061-3.978 3.842-6.755 3.37 4.854.826 6.089 3.562 3.422 6.299-5.065 5.196-7.28-1.304-7.847-2.97-.104-.305-.152-.448-.153-.327 0-.121-.05.022-.153.327-.568 1.666-2.782 8.166-7.847 2.97-2.667-2.737-1.432-5.473 3.422-6.3-2.777.473-5.899-.308-6.755-3.369C.42 10.04 0 4.615 0 3.883c0-3.67 3.217-2.517 5.202-1.026',
|
|
33
|
+
},
|
|
34
|
+
'social.mastodon': {
|
|
35
|
+
kind: 'fill',
|
|
36
|
+
d: 'M23.268 5.313c-.35-2.578-2.617-4.61-5.304-5.004C17.51.242 15.792 0 11.813 0h-.03c-3.98 0-4.835.242-5.288.309C3.882.692 1.496 2.518.917 5.127.64 6.412.61 7.837.661 9.143c.074 1.874.088 3.745.26 5.611.118 1.24.325 2.47.62 3.68.55 2.237 2.777 4.098 4.96 4.857 2.336.792 4.849.923 7.256.38.265-.061.527-.132.786-.213.585-.184 1.27-.39 1.774-.753a.057.057 0 0 0 .023-.043v-1.809a.052.052 0 0 0-.02-.041.053.053 0 0 0-.046-.01 20.282 20.282 0 0 1-4.709.545c-2.73 0-3.463-1.284-3.674-1.818a5.593 5.593 0 0 1-.319-1.433.053.053 0 0 1 .066-.054c1.517.363 3.072.546 4.632.546.376 0 .75 0 1.125-.01 1.57-.044 3.224-.124 4.768-.422.038-.008.077-.015.11-.024 2.435-.464 4.753-1.92 4.989-5.604.008-.145.03-1.52.03-1.67.002-.512.167-3.63-.024-5.545zm-3.748 9.195h-2.561V8.29c0-1.309-.55-1.976-1.67-1.976-1.23 0-1.846.79-1.846 2.35v3.403h-2.546V8.663c0-1.56-.617-2.35-1.848-2.35-1.112 0-1.668.668-1.67 1.977v6.218H4.822V8.102c0-1.31.337-2.35 1.011-3.12.696-.77 1.608-1.164 2.74-1.164 1.311 0 2.302.5 2.962 1.498l.638 1.06.638-1.06c.66-.999 1.65-1.498 2.96-1.498 1.13 0 2.043.395 2.74 1.164.675.77 1.012 1.81 1.012 3.12z',
|
|
37
|
+
},
|
|
38
|
+
'social.bilibili': {
|
|
39
|
+
kind: 'fill',
|
|
40
|
+
d: 'M17.813 4.653h.854c1.51.054 2.769.578 3.773 1.574 1.004.995 1.524 2.249 1.56 3.76v7.36c-.036 1.51-.556 2.769-1.56 3.773s-2.262 1.524-3.773 1.56H5.333c-1.51-.036-2.769-.556-3.773-1.56S.036 18.858 0 17.347v-7.36c.036-1.511.556-2.765 1.56-3.76 1.004-.996 2.262-1.52 3.773-1.574h.774l-1.174-1.12a1.234 1.234 0 0 1-.373-.906c0-.356.124-.658.373-.907l.027-.027c.267-.249.573-.373.92-.373.347 0 .653.124.92.373L9.653 4.44c.071.071.134.142.187.213h4.267a.836.836 0 0 1 .16-.213l2.853-2.747c.267-.249.573-.373.92-.373.347 0 .662.151.929.4.267.249.391.551.391.907 0 .355-.124.657-.373.906zM5.333 7.24c-.746.018-1.373.276-1.88.773-.506.498-.769 1.13-.786 1.894v7.52c.017.764.28 1.395.786 1.893.507.498 1.134.756 1.88.773h13.334c.746-.017 1.373-.275 1.88-.773.506-.498.769-1.129.786-1.893v-7.52c-.017-.765-.28-1.396-.786-1.894-.507-.497-1.134-.755-1.88-.773zM8 11.107c.373 0 .684.124.933.373.25.249.383.569.4.96v1.173c-.017.391-.15.711-.4.96-.249.25-.56.374-.933.374s-.684-.125-.933-.374c-.25-.249-.383-.569-.4-.96V12.44c0-.373.129-.689.386-.947.258-.257.574-.386.947-.386zm8 0c.373 0 .684.124.933.373.25.249.383.569.4.96v1.173c-.017.391-.15.711-.4.96-.249.25-.56.374-.933.374s-.684-.125-.933-.374c-.25-.249-.383-.569-.4-.96V12.44c.017-.391.15-.711.4-.96.249-.249.56-.373.933-.373Z',
|
|
41
|
+
},
|
|
42
|
+
'social.wechat': {
|
|
43
|
+
kind: 'fill',
|
|
44
|
+
d: 'M8.691 2.188C3.891 2.188 0 5.476 0 9.53c0 2.212 1.17 4.203 3.002 5.55a.59.59 0 0 1 .213.665l-.39 1.48c-.019.07-.048.141-.048.213 0 .163.13.295.29.295a.326.326 0 0 0 .167-.054l1.903-1.114a.864.864 0 0 1 .717-.098 10.16 10.16 0 0 0 2.837.403c.276 0 .543-.027.811-.05-.857-2.578.157-4.972 1.932-6.446 1.703-1.415 3.882-1.98 5.853-1.838-.576-3.583-4.196-6.348-8.596-6.348zM5.785 5.991c.642 0 1.162.529 1.162 1.18a1.17 1.17 0 0 1-1.162 1.178A1.17 1.17 0 0 1 4.623 7.17c0-.651.52-1.18 1.162-1.18zm5.813 0c.642 0 1.162.529 1.162 1.18a1.17 1.17 0 0 1-1.162 1.178 1.17 1.17 0 0 1-1.162-1.178c0-.651.52-1.18 1.162-1.18zm5.34 2.867c-1.797-.052-3.746.512-5.28 1.786-1.72 1.428-2.687 3.72-1.78 6.22.942 2.453 3.666 4.229 6.884 4.229.826 0 1.622-.12 2.361-.336a.722.722 0 0 1 .598.082l1.584.926a.272.272 0 0 0 .14.047c.134 0 .24-.111.24-.247 0-.06-.023-.12-.038-.177l-.327-1.233a.582.582 0 0 1-.023-.156.49.49 0 0 1 .201-.398C23.024 18.48 24 16.82 24 14.98c0-3.21-2.931-5.837-6.656-6.088V8.89c-.135-.01-.27-.027-.407-.03zm-2.53 3.274c.535 0 .969.44.969.982a.976.976 0 0 1-.969.983.976.976 0 0 1-.969-.983c0-.542.434-.982.97-.982zm4.844 0c.535 0 .969.44.969.982a.976.976 0 0 1-.969.983.976.976 0 0 1-.969-.983c0-.542.434-.982.969-.982z',
|
|
45
|
+
},
|
|
46
|
+
'social.zhihu': {
|
|
47
|
+
kind: 'fill',
|
|
48
|
+
d: 'M5.721 0C2.251 0 0 2.25 0 5.719V18.28C0 21.751 2.252 24 5.721 24h12.56C21.751 24 24 21.75 24 18.281V5.72C24 2.249 21.75 0 18.281 0zm1.964 4.078c-.271.73-.5 1.434-.68 2.11h4.587c.545-.006.445 1.168.445 1.171H9.384a58.104 58.104 0 01-.112 3.797h2.712c.388.023.393 1.251.393 1.266H9.183a9.223 9.223 0 01-.408 2.102l.757-.604c.452.456 1.512 1.712 1.906 2.177.473.681.063 2.081.063 2.081l-2.794-3.382c-.653 2.518-1.845 3.607-1.845 3.607-.523.468-1.58.82-2.64.516 2.218-1.73 3.44-3.917 3.667-6.497H4.491c0-.015.197-1.243.806-1.266h2.71c.024-.32.086-3.254.086-3.797H6.598c-.136.406-.158.447-.268.753-.594 1.095-1.603 1.122-1.907 1.155.906-1.821 1.416-3.6 1.591-4.064.425-1.124 1.671-1.125 1.671-1.125zM13.078 6h6.377v11.33h-2.573l-2.184 1.373-.401-1.373h-1.219zm1.313 1.219v8.86h.623l.263.937 1.455-.938h1.456v-8.86z',
|
|
49
|
+
},
|
|
50
|
+
'social.rss': {
|
|
51
|
+
kind: 'fill',
|
|
52
|
+
d: 'M19.199 24C19.199 13.467 10.533 4.8 0 4.8V0c13.165 0 24 10.835 24 24h-4.801zM3.291 17.415c1.814 0 3.293 1.479 3.293 3.295 0 1.813-1.485 3.29-3.301 3.29C1.47 24 0 22.526 0 20.71s1.475-3.294 3.291-3.295zM15.909 24h-4.665c0-6.169-5.075-11.245-11.244-11.245V8.09c8.727 0 15.909 7.184 15.909 15.91z',
|
|
53
|
+
},
|
|
54
|
+
};
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import type { IconDef } from '../icon-types.ts';
|
|
2
|
+
|
|
3
|
+
/** Status glyphs (`status.*`) — alert and outcome semantics, never color-only signals. */
|
|
4
|
+
export const STATUS_ICONS: Record<string, IconDef> = {
|
|
5
|
+
'status.info': {
|
|
6
|
+
kind: 'stroke',
|
|
7
|
+
circles: [{ cx: 12, cy: 12, r: 9 }],
|
|
8
|
+
paths: ['M12 11V16'],
|
|
9
|
+
dots: [{ cx: 12, cy: 8, r: 1.5 }],
|
|
10
|
+
},
|
|
11
|
+
'status.warning': {
|
|
12
|
+
kind: 'stroke',
|
|
13
|
+
paths: ['M12.5 5.1L19.5 18.9Q20 20 18.8 20H5.2Q4 20 4.5 18.9L11.5 5.1Q12 4 12.5 5.1Z', 'M12 9V13'],
|
|
14
|
+
dots: [{ cx: 12, cy: 16.5, r: 1.5 }],
|
|
15
|
+
},
|
|
16
|
+
'status.success': {
|
|
17
|
+
kind: 'stroke',
|
|
18
|
+
circles: [{ cx: 12, cy: 12, r: 9 }],
|
|
19
|
+
paths: ['M7 12L10.5 15.5L17 9'],
|
|
20
|
+
},
|
|
21
|
+
'status.danger': {
|
|
22
|
+
kind: 'stroke',
|
|
23
|
+
circles: [{ cx: 12, cy: 12, r: 9 }],
|
|
24
|
+
paths: ['M12 7.5V13.5'],
|
|
25
|
+
dots: [{ cx: 12, cy: 17, r: 1.5 }],
|
|
26
|
+
},
|
|
27
|
+
'status.question': {
|
|
28
|
+
kind: 'stroke',
|
|
29
|
+
circles: [{ cx: 12, cy: 12, r: 9 }],
|
|
30
|
+
paths: ['M9.5 9.2A2.6 2.6 0 0 1 12 7.5C13.4 7.5 14.5 8.6 14.5 9.8C14.5 11 13.6 11.6 12.7 12.1C12.3 12.4 12 12.7 12 13.2V14'],
|
|
31
|
+
dots: [{ cx: 12, cy: 16.8, r: 1.5 }],
|
|
32
|
+
},
|
|
33
|
+
'status.offline': {
|
|
34
|
+
kind: 'stroke',
|
|
35
|
+
paths: ['M3 9A13 13 0 0 1 21 9', 'M6.5 12.5A8.5 8.5 0 0 1 17.5 12.5', 'M4 20L20 4'],
|
|
36
|
+
dots: [{ cx: 12, cy: 16, r: 1.5 }],
|
|
37
|
+
},
|
|
38
|
+
'status.spinner': {
|
|
39
|
+
kind: 'stroke',
|
|
40
|
+
paths: ['M20.5 12A8.5 8.5 0 1 1 12 3.5'],
|
|
41
|
+
},
|
|
42
|
+
'status.error': {
|
|
43
|
+
kind: 'stroke',
|
|
44
|
+
circles: [{ cx: 12, cy: 12, r: 9 }],
|
|
45
|
+
paths: ['M9 9L15 15', 'M15 9L9 15'],
|
|
46
|
+
},
|
|
47
|
+
};
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import type { IconDef } from '../icon-types.ts';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Tool glyphs (`tool.*`) — converter and calculator landmarks on tool surfaces.
|
|
5
|
+
* Proprietary converter names that have no honest silhouette use `text-badge`:
|
|
6
|
+
* the mark is real text content in a bounded chip, not a font glyph or emoji.
|
|
7
|
+
*/
|
|
8
|
+
export const TOOL_ICONS: Record<string, IconDef> = {
|
|
9
|
+
'tool.url': {
|
|
10
|
+
kind: 'stroke',
|
|
11
|
+
paths: ['M10 8H8A4 4 0 0 0 8 16H10', 'M14 8H16A4 4 0 0 1 16 16H14', 'M9 12H15'],
|
|
12
|
+
},
|
|
13
|
+
'tool.temperature': {
|
|
14
|
+
kind: 'stroke',
|
|
15
|
+
circles: [{ cx: 12, cy: 16.5, r: 3.5 }],
|
|
16
|
+
paths: ['M10 5A2 2 0 0 1 14 5', 'M10 5V14', 'M14 5V14', 'M12 8V14'],
|
|
17
|
+
},
|
|
18
|
+
'tool.length': {
|
|
19
|
+
kind: 'stroke',
|
|
20
|
+
paths: ['M4 8.5H20V15.5H4Z', 'M8 8.5V12', 'M12 8.5V13.5', 'M16 8.5V12'],
|
|
21
|
+
},
|
|
22
|
+
'tool.weight': {
|
|
23
|
+
kind: 'stroke',
|
|
24
|
+
paths: ['M4 9V15', 'M7 7V17', 'M17 7V17', 'M20 9V15', 'M7 12H17'],
|
|
25
|
+
},
|
|
26
|
+
'tool.time-units': {
|
|
27
|
+
kind: 'stroke',
|
|
28
|
+
circles: [{ cx: 12, cy: 12, r: 9 }],
|
|
29
|
+
paths: ['M12 7V12L15.5 14'],
|
|
30
|
+
},
|
|
31
|
+
'tool.color': {
|
|
32
|
+
kind: 'stroke',
|
|
33
|
+
paths: ['M12 3C10 5.5 6 10.5 6 14A6 6 0 0 0 18 14C18 10.5 14 5.5 12 3Z'],
|
|
34
|
+
},
|
|
35
|
+
'tool.percentage': {
|
|
36
|
+
kind: 'stroke',
|
|
37
|
+
circles: [
|
|
38
|
+
{ cx: 8.5, cy: 8.5, r: 2.6 },
|
|
39
|
+
{ cx: 15.5, cy: 15.5, r: 2.6 },
|
|
40
|
+
],
|
|
41
|
+
paths: ['M17.2 6.8L6.8 17.2'],
|
|
42
|
+
},
|
|
43
|
+
'tool.area': {
|
|
44
|
+
kind: 'stroke',
|
|
45
|
+
paths: ['M4 4H20V20H4Z', 'M8 8H16V16H8Z'],
|
|
46
|
+
},
|
|
47
|
+
'tool.volume': {
|
|
48
|
+
kind: 'stroke',
|
|
49
|
+
paths: ['M12 4L20 8.5V15.5L12 20L4 15.5V8.5Z', 'M4 8.5L12 12L20 8.5', 'M12 12V20'],
|
|
50
|
+
},
|
|
51
|
+
'tool.data-size': {
|
|
52
|
+
kind: 'stroke',
|
|
53
|
+
paths: [
|
|
54
|
+
'M5 6C5 4.3 8.1 3 12 3C15.9 3 19 4.3 19 6V18C19 19.7 15.9 21 12 21C8.1 21 5 19.7 5 18V6Z',
|
|
55
|
+
'M5 6C5 7.7 8.1 9 12 9C15.9 9 19 7.7 19 6',
|
|
56
|
+
'M5 12C5 13.7 8.1 15 12 15C15.9 15 19 13.7 19 12',
|
|
57
|
+
],
|
|
58
|
+
},
|
|
59
|
+
'tool.ratio': {
|
|
60
|
+
kind: 'stroke',
|
|
61
|
+
paths: ['M4 10H10V16H4Z', 'M12 8H20V16H12Z'],
|
|
62
|
+
},
|
|
63
|
+
'tool.average': {
|
|
64
|
+
kind: 'stroke',
|
|
65
|
+
paths: ['M6 6H18', 'M7.5 10L16.5 19', 'M16.5 10L7.5 19'],
|
|
66
|
+
},
|
|
67
|
+
'tool.tip': {
|
|
68
|
+
kind: 'stroke',
|
|
69
|
+
paths: ['M12 4C9.5 4 8 6 8 8.5C8 10.3 9 11.7 10.5 12.5V15H13.5V12.5C15 11.7 16 10.3 16 8.5C16 6 14.5 4 12 4Z', 'M9.5 18H14.5', 'M10 20H14'],
|
|
70
|
+
},
|
|
71
|
+
'tool.aspect-ratio': {
|
|
72
|
+
kind: 'stroke',
|
|
73
|
+
paths: ['M4 7H20V17H4Z', 'M8 7V11H4', 'M16 17V13H20'],
|
|
74
|
+
},
|
|
75
|
+
'tool.bandwidth': {
|
|
76
|
+
kind: 'stroke',
|
|
77
|
+
paths: ['M4 20H20', 'M5 20V16', 'M9 20V12', 'M13 20V8', 'M17 20V4'],
|
|
78
|
+
},
|
|
79
|
+
'tool.percent-change': {
|
|
80
|
+
kind: 'stroke',
|
|
81
|
+
paths: ['M4 17L9 12L12 15L20 6', 'M15.5 6H20V10.5'],
|
|
82
|
+
},
|
|
83
|
+
'tool.ohm': {
|
|
84
|
+
kind: 'stroke',
|
|
85
|
+
paths: ['M7 14.5C7 10.8 9.2 7.5 12 7.5C14.8 7.5 17 10.8 17 14.5', 'M7 14.5V17', 'M17 14.5V17', 'M4.5 17H9.5', 'M14.5 17H19.5'],
|
|
86
|
+
},
|
|
87
|
+
'tool.speed': {
|
|
88
|
+
kind: 'stroke',
|
|
89
|
+
paths: ['M5 14A7 7 0 0 1 19 14', 'M12 14L16 10'],
|
|
90
|
+
dots: [{ cx: 12, cy: 14, r: 1.5 }],
|
|
91
|
+
},
|
|
92
|
+
'tool.base64': { kind: 'text-badge', label: 'B64' },
|
|
93
|
+
'tool.base36': { kind: 'text-badge', label: 'B36' },
|
|
94
|
+
'tool.hex': { kind: 'text-badge', label: 'HEX' },
|
|
95
|
+
'tool.radix': { kind: 'text-badge', label: 'RAD' },
|
|
96
|
+
'tool.html-entities': { kind: 'text-badge', label: 'ENT' },
|
|
97
|
+
'tool.ascii': { kind: 'text-badge', label: 'ASC' },
|
|
98
|
+
'tool.binary-text': { kind: 'text-badge', label: '01' },
|
|
99
|
+
'tool.rgb-hsl': { kind: 'text-badge', label: 'HSL' },
|
|
100
|
+
'tool.px-rem': { kind: 'text-badge', label: 'px' },
|
|
101
|
+
'tool.gpa': { kind: 'text-badge', label: 'GPA' },
|
|
102
|
+
'tool.nearest-tenth': { kind: 'text-badge', label: '.1' },
|
|
103
|
+
'tool.grade-curve': { kind: 'text-badge', label: 'CV' },
|
|
104
|
+
};
|