@elvora/icons 1.0.0-rc.1

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/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Elvora UI Contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,26 @@
1
+ # @elvora/icons
2
+
3
+ Framework-agnostic SVG icon registry for [Elvora UI](https://github.com/elvora-ui/elvora). Typed names, tree-shakable path data, identical output across React, React Native, Angular, Vue, and Svelte.
4
+
5
+ ## Install
6
+
7
+ ```bash
8
+ pnpm add @elvora/icons
9
+ ```
10
+
11
+ ## Usage
12
+
13
+ ```ts
14
+ import { icons, getIcon, type IconName } from '@elvora/icons';
15
+
16
+ const def = getIcon('check');
17
+ // → { d: '...', stroke: true, strokeWidth: 2 }
18
+ ```
19
+
20
+ Use the framework-specific `Icon` component from `@elvora/react`, `@elvora/vue`,
21
+ `@elvora/angular`, `@elvora/svelte`, or `@elvora/react-native` to render an icon
22
+ by name — they all consume this registry.
23
+
24
+ ## License
25
+
26
+ MIT
package/dist/index.cjs ADDED
@@ -0,0 +1,131 @@
1
+ 'use strict';
2
+
3
+ // src/icons.ts
4
+ var icons = {
5
+ check: {
6
+ d: "M20 6 9 17l-5-5",
7
+ stroke: true,
8
+ strokeWidth: 2
9
+ },
10
+ x: {
11
+ d: "M18 6 6 18M6 6l12 12",
12
+ stroke: true,
13
+ strokeWidth: 2
14
+ },
15
+ chevronDown: {
16
+ d: "m6 9 6 6 6-6",
17
+ stroke: true,
18
+ strokeWidth: 2
19
+ },
20
+ chevronUp: {
21
+ d: "m18 15-6-6-6 6",
22
+ stroke: true,
23
+ strokeWidth: 2
24
+ },
25
+ chevronLeft: {
26
+ d: "m15 18-6-6 6-6",
27
+ stroke: true,
28
+ strokeWidth: 2
29
+ },
30
+ chevronRight: {
31
+ d: "m9 18 6-6-6-6",
32
+ stroke: true,
33
+ strokeWidth: 2
34
+ },
35
+ alertCircle: {
36
+ d: "M12 8v4M12 16h.01",
37
+ d2: "M12 22c5.523 0 10-4.477 10-10S17.523 2 12 2 2 6.477 2 12s4.477 10 10 10z",
38
+ stroke: true,
39
+ strokeWidth: 2
40
+ },
41
+ info: {
42
+ d: "M12 16v-4M12 8h.01",
43
+ d2: "M12 22c5.523 0 10-4.477 10-10S17.523 2 12 2 2 6.477 2 12s4.477 10 10 10z",
44
+ stroke: true,
45
+ strokeWidth: 2
46
+ },
47
+ checkCircle: {
48
+ d: "m9 12 2 2 4-4",
49
+ d2: "M12 22c5.523 0 10-4.477 10-10S17.523 2 12 2 2 6.477 2 12s4.477 10 10 10z",
50
+ stroke: true,
51
+ strokeWidth: 2
52
+ },
53
+ loader: {
54
+ d: "M12 2v4M12 18v4M4.93 4.93l2.83 2.83M16.24 16.24l2.83 2.83M2 12h4M18 12h4M4.93 19.07l2.83-2.83M16.24 7.76l2.83-2.83",
55
+ stroke: true,
56
+ strokeWidth: 2
57
+ },
58
+ search: {
59
+ d: "m21 21-4.3-4.3",
60
+ d2: "M11 19a8 8 0 1 0 0-16 8 8 0 0 0 0 16z",
61
+ stroke: true,
62
+ strokeWidth: 2
63
+ },
64
+ plus: {
65
+ d: "M12 5v14M5 12h14",
66
+ stroke: true,
67
+ strokeWidth: 2
68
+ },
69
+ minus: {
70
+ d: "M5 12h14",
71
+ stroke: true,
72
+ strokeWidth: 2
73
+ },
74
+ eye: {
75
+ d: "M2 12s3-7 10-7 10 7 10 7-3 7-10 7-10-7-10-7z",
76
+ d2: "M12 15a3 3 0 1 0 0-6 3 3 0 0 0 0 6z",
77
+ stroke: true,
78
+ strokeWidth: 2
79
+ },
80
+ eyeOff: {
81
+ d: "M9.88 9.88a3 3 0 1 0 4.24 4.24M10.73 5.08A10.43 10.43 0 0 1 12 5c7 0 10 7 10 7a13.16 13.16 0 0 1-1.67 2.68M6.61 6.61A13.526 13.526 0 0 0 2 12s3 7 10 7a9.74 9.74 0 0 0 5.39-1.61M2 2l20 20",
82
+ stroke: true,
83
+ strokeWidth: 2
84
+ },
85
+ menu: {
86
+ d: "M3 12h18M3 6h18M3 18h18",
87
+ stroke: true,
88
+ strokeWidth: 2
89
+ },
90
+ calendar: {
91
+ d: "M3 10h18M8 2v4M16 2v4",
92
+ d2: "M5 4h14a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2z",
93
+ stroke: true,
94
+ strokeWidth: 2
95
+ },
96
+ clock: {
97
+ d: "M12 6v6l4 2",
98
+ d2: "M12 22c5.523 0 10-4.477 10-10S17.523 2 12 2 2 6.477 2 12s4.477 10 10 10z",
99
+ stroke: true,
100
+ strokeWidth: 2
101
+ },
102
+ upload: {
103
+ d: "M12 3v12M7 8l5-5 5 5",
104
+ d2: "M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",
105
+ stroke: true,
106
+ strokeWidth: 2
107
+ },
108
+ arrowRight: {
109
+ d: "M5 12h14M13 5l7 7-7 7",
110
+ stroke: true,
111
+ strokeWidth: 2
112
+ },
113
+ arrowLeft: {
114
+ d: "M19 12H5M12 5l-7 7 7 7",
115
+ stroke: true,
116
+ strokeWidth: 2
117
+ },
118
+ folder: {
119
+ d: "M3 7a2 2 0 0 1 2-2h4l2 2h8a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V7z",
120
+ stroke: true,
121
+ strokeWidth: 2
122
+ }
123
+ };
124
+ function getIcon(name) {
125
+ return icons[name];
126
+ }
127
+
128
+ exports.getIcon = getIcon;
129
+ exports.icons = icons;
130
+ //# sourceMappingURL=index.cjs.map
131
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/icons.ts"],"names":[],"mappings":"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","file":"index.cjs","sourcesContent":["/**\r\n * Elvora icon registry. Each icon is the bare SVG `<path>` (and optional\r\n * extras) data. Adapters render the SVG envelope. This keeps icons\r\n * tree-shakable and avoids bundling a heavy framework-specific runtime.\r\n *\r\n * Icon set is hand-curated; expand it as components need new glyphs.\r\n */\r\n\r\nexport interface IconDef {\r\n /** 24x24 viewBox path data. */\r\n d: string;\r\n /** Optional second path for two-tone icons. */\r\n d2?: string;\r\n /** When true, render with stroke instead of fill. */\r\n stroke?: boolean;\r\n /** Default stroke width when stroke=true. */\r\n strokeWidth?: number;\r\n}\r\n\r\nexport const icons = {\r\n check: {\r\n d: 'M20 6 9 17l-5-5',\r\n stroke: true,\r\n strokeWidth: 2,\r\n },\r\n x: {\r\n d: 'M18 6 6 18M6 6l12 12',\r\n stroke: true,\r\n strokeWidth: 2,\r\n },\r\n chevronDown: {\r\n d: 'm6 9 6 6 6-6',\r\n stroke: true,\r\n strokeWidth: 2,\r\n },\r\n chevronUp: {\r\n d: 'm18 15-6-6-6 6',\r\n stroke: true,\r\n strokeWidth: 2,\r\n },\r\n chevronLeft: {\r\n d: 'm15 18-6-6 6-6',\r\n stroke: true,\r\n strokeWidth: 2,\r\n },\r\n chevronRight: {\r\n d: 'm9 18 6-6-6-6',\r\n stroke: true,\r\n strokeWidth: 2,\r\n },\r\n alertCircle: {\r\n d: 'M12 8v4M12 16h.01',\r\n d2: 'M12 22c5.523 0 10-4.477 10-10S17.523 2 12 2 2 6.477 2 12s4.477 10 10 10z',\r\n stroke: true,\r\n strokeWidth: 2,\r\n },\r\n info: {\r\n d: 'M12 16v-4M12 8h.01',\r\n d2: 'M12 22c5.523 0 10-4.477 10-10S17.523 2 12 2 2 6.477 2 12s4.477 10 10 10z',\r\n stroke: true,\r\n strokeWidth: 2,\r\n },\r\n checkCircle: {\r\n d: 'm9 12 2 2 4-4',\r\n d2: 'M12 22c5.523 0 10-4.477 10-10S17.523 2 12 2 2 6.477 2 12s4.477 10 10 10z',\r\n stroke: true,\r\n strokeWidth: 2,\r\n },\r\n loader: {\r\n d: 'M12 2v4M12 18v4M4.93 4.93l2.83 2.83M16.24 16.24l2.83 2.83M2 12h4M18 12h4M4.93 19.07l2.83-2.83M16.24 7.76l2.83-2.83',\r\n stroke: true,\r\n strokeWidth: 2,\r\n },\r\n search: {\r\n d: 'm21 21-4.3-4.3',\r\n d2: 'M11 19a8 8 0 1 0 0-16 8 8 0 0 0 0 16z',\r\n stroke: true,\r\n strokeWidth: 2,\r\n },\r\n plus: {\r\n d: 'M12 5v14M5 12h14',\r\n stroke: true,\r\n strokeWidth: 2,\r\n },\r\n minus: {\r\n d: 'M5 12h14',\r\n stroke: true,\r\n strokeWidth: 2,\r\n },\r\n eye: {\r\n d: 'M2 12s3-7 10-7 10 7 10 7-3 7-10 7-10-7-10-7z',\r\n d2: 'M12 15a3 3 0 1 0 0-6 3 3 0 0 0 0 6z',\r\n stroke: true,\r\n strokeWidth: 2,\r\n },\r\n eyeOff: {\r\n d: 'M9.88 9.88a3 3 0 1 0 4.24 4.24M10.73 5.08A10.43 10.43 0 0 1 12 5c7 0 10 7 10 7a13.16 13.16 0 0 1-1.67 2.68M6.61 6.61A13.526 13.526 0 0 0 2 12s3 7 10 7a9.74 9.74 0 0 0 5.39-1.61M2 2l20 20',\r\n stroke: true,\r\n strokeWidth: 2,\r\n },\r\n menu: {\r\n d: 'M3 12h18M3 6h18M3 18h18',\r\n stroke: true,\r\n strokeWidth: 2,\r\n },\r\n calendar: {\r\n d: 'M3 10h18M8 2v4M16 2v4',\r\n d2: 'M5 4h14a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2z',\r\n stroke: true,\r\n strokeWidth: 2,\r\n },\r\n clock: {\r\n d: 'M12 6v6l4 2',\r\n d2: 'M12 22c5.523 0 10-4.477 10-10S17.523 2 12 2 2 6.477 2 12s4.477 10 10 10z',\r\n stroke: true,\r\n strokeWidth: 2,\r\n },\r\n upload: {\r\n d: 'M12 3v12M7 8l5-5 5 5',\r\n d2: 'M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4',\r\n stroke: true,\r\n strokeWidth: 2,\r\n },\r\n arrowRight: {\r\n d: 'M5 12h14M13 5l7 7-7 7',\r\n stroke: true,\r\n strokeWidth: 2,\r\n },\r\n arrowLeft: {\r\n d: 'M19 12H5M12 5l-7 7 7 7',\r\n stroke: true,\r\n strokeWidth: 2,\r\n },\r\n folder: {\r\n d: 'M3 7a2 2 0 0 1 2-2h4l2 2h8a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V7z',\r\n stroke: true,\r\n strokeWidth: 2,\r\n },\r\n} as const satisfies Record<string, IconDef>;\r\n\r\nexport type IconName = keyof typeof icons;\r\n\r\n/** Strongly-typed lookup that always returns the full IconDef shape. */\r\nexport function getIcon(name: IconName): IconDef {\r\n return icons[name] as IconDef;\r\n}\r\n"]}
@@ -0,0 +1,142 @@
1
+ /**
2
+ * Elvora icon registry. Each icon is the bare SVG `<path>` (and optional
3
+ * extras) data. Adapters render the SVG envelope. This keeps icons
4
+ * tree-shakable and avoids bundling a heavy framework-specific runtime.
5
+ *
6
+ * Icon set is hand-curated; expand it as components need new glyphs.
7
+ */
8
+ interface IconDef {
9
+ /** 24x24 viewBox path data. */
10
+ d: string;
11
+ /** Optional second path for two-tone icons. */
12
+ d2?: string;
13
+ /** When true, render with stroke instead of fill. */
14
+ stroke?: boolean;
15
+ /** Default stroke width when stroke=true. */
16
+ strokeWidth?: number;
17
+ }
18
+ declare const icons: {
19
+ readonly check: {
20
+ readonly d: "M20 6 9 17l-5-5";
21
+ readonly stroke: true;
22
+ readonly strokeWidth: 2;
23
+ };
24
+ readonly x: {
25
+ readonly d: "M18 6 6 18M6 6l12 12";
26
+ readonly stroke: true;
27
+ readonly strokeWidth: 2;
28
+ };
29
+ readonly chevronDown: {
30
+ readonly d: "m6 9 6 6 6-6";
31
+ readonly stroke: true;
32
+ readonly strokeWidth: 2;
33
+ };
34
+ readonly chevronUp: {
35
+ readonly d: "m18 15-6-6-6 6";
36
+ readonly stroke: true;
37
+ readonly strokeWidth: 2;
38
+ };
39
+ readonly chevronLeft: {
40
+ readonly d: "m15 18-6-6 6-6";
41
+ readonly stroke: true;
42
+ readonly strokeWidth: 2;
43
+ };
44
+ readonly chevronRight: {
45
+ readonly d: "m9 18 6-6-6-6";
46
+ readonly stroke: true;
47
+ readonly strokeWidth: 2;
48
+ };
49
+ readonly alertCircle: {
50
+ readonly d: "M12 8v4M12 16h.01";
51
+ readonly d2: "M12 22c5.523 0 10-4.477 10-10S17.523 2 12 2 2 6.477 2 12s4.477 10 10 10z";
52
+ readonly stroke: true;
53
+ readonly strokeWidth: 2;
54
+ };
55
+ readonly info: {
56
+ readonly d: "M12 16v-4M12 8h.01";
57
+ readonly d2: "M12 22c5.523 0 10-4.477 10-10S17.523 2 12 2 2 6.477 2 12s4.477 10 10 10z";
58
+ readonly stroke: true;
59
+ readonly strokeWidth: 2;
60
+ };
61
+ readonly checkCircle: {
62
+ readonly d: "m9 12 2 2 4-4";
63
+ readonly d2: "M12 22c5.523 0 10-4.477 10-10S17.523 2 12 2 2 6.477 2 12s4.477 10 10 10z";
64
+ readonly stroke: true;
65
+ readonly strokeWidth: 2;
66
+ };
67
+ readonly loader: {
68
+ readonly d: "M12 2v4M12 18v4M4.93 4.93l2.83 2.83M16.24 16.24l2.83 2.83M2 12h4M18 12h4M4.93 19.07l2.83-2.83M16.24 7.76l2.83-2.83";
69
+ readonly stroke: true;
70
+ readonly strokeWidth: 2;
71
+ };
72
+ readonly search: {
73
+ readonly d: "m21 21-4.3-4.3";
74
+ readonly d2: "M11 19a8 8 0 1 0 0-16 8 8 0 0 0 0 16z";
75
+ readonly stroke: true;
76
+ readonly strokeWidth: 2;
77
+ };
78
+ readonly plus: {
79
+ readonly d: "M12 5v14M5 12h14";
80
+ readonly stroke: true;
81
+ readonly strokeWidth: 2;
82
+ };
83
+ readonly minus: {
84
+ readonly d: "M5 12h14";
85
+ readonly stroke: true;
86
+ readonly strokeWidth: 2;
87
+ };
88
+ readonly eye: {
89
+ readonly d: "M2 12s3-7 10-7 10 7 10 7-3 7-10 7-10-7-10-7z";
90
+ readonly d2: "M12 15a3 3 0 1 0 0-6 3 3 0 0 0 0 6z";
91
+ readonly stroke: true;
92
+ readonly strokeWidth: 2;
93
+ };
94
+ readonly eyeOff: {
95
+ readonly d: "M9.88 9.88a3 3 0 1 0 4.24 4.24M10.73 5.08A10.43 10.43 0 0 1 12 5c7 0 10 7 10 7a13.16 13.16 0 0 1-1.67 2.68M6.61 6.61A13.526 13.526 0 0 0 2 12s3 7 10 7a9.74 9.74 0 0 0 5.39-1.61M2 2l20 20";
96
+ readonly stroke: true;
97
+ readonly strokeWidth: 2;
98
+ };
99
+ readonly menu: {
100
+ readonly d: "M3 12h18M3 6h18M3 18h18";
101
+ readonly stroke: true;
102
+ readonly strokeWidth: 2;
103
+ };
104
+ readonly calendar: {
105
+ readonly d: "M3 10h18M8 2v4M16 2v4";
106
+ readonly d2: "M5 4h14a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2z";
107
+ readonly stroke: true;
108
+ readonly strokeWidth: 2;
109
+ };
110
+ readonly clock: {
111
+ readonly d: "M12 6v6l4 2";
112
+ readonly d2: "M12 22c5.523 0 10-4.477 10-10S17.523 2 12 2 2 6.477 2 12s4.477 10 10 10z";
113
+ readonly stroke: true;
114
+ readonly strokeWidth: 2;
115
+ };
116
+ readonly upload: {
117
+ readonly d: "M12 3v12M7 8l5-5 5 5";
118
+ readonly d2: "M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4";
119
+ readonly stroke: true;
120
+ readonly strokeWidth: 2;
121
+ };
122
+ readonly arrowRight: {
123
+ readonly d: "M5 12h14M13 5l7 7-7 7";
124
+ readonly stroke: true;
125
+ readonly strokeWidth: 2;
126
+ };
127
+ readonly arrowLeft: {
128
+ readonly d: "M19 12H5M12 5l-7 7 7 7";
129
+ readonly stroke: true;
130
+ readonly strokeWidth: 2;
131
+ };
132
+ readonly folder: {
133
+ readonly d: "M3 7a2 2 0 0 1 2-2h4l2 2h8a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V7z";
134
+ readonly stroke: true;
135
+ readonly strokeWidth: 2;
136
+ };
137
+ };
138
+ type IconName = keyof typeof icons;
139
+ /** Strongly-typed lookup that always returns the full IconDef shape. */
140
+ declare function getIcon(name: IconName): IconDef;
141
+
142
+ export { type IconDef, type IconName, getIcon, icons };
@@ -0,0 +1,142 @@
1
+ /**
2
+ * Elvora icon registry. Each icon is the bare SVG `<path>` (and optional
3
+ * extras) data. Adapters render the SVG envelope. This keeps icons
4
+ * tree-shakable and avoids bundling a heavy framework-specific runtime.
5
+ *
6
+ * Icon set is hand-curated; expand it as components need new glyphs.
7
+ */
8
+ interface IconDef {
9
+ /** 24x24 viewBox path data. */
10
+ d: string;
11
+ /** Optional second path for two-tone icons. */
12
+ d2?: string;
13
+ /** When true, render with stroke instead of fill. */
14
+ stroke?: boolean;
15
+ /** Default stroke width when stroke=true. */
16
+ strokeWidth?: number;
17
+ }
18
+ declare const icons: {
19
+ readonly check: {
20
+ readonly d: "M20 6 9 17l-5-5";
21
+ readonly stroke: true;
22
+ readonly strokeWidth: 2;
23
+ };
24
+ readonly x: {
25
+ readonly d: "M18 6 6 18M6 6l12 12";
26
+ readonly stroke: true;
27
+ readonly strokeWidth: 2;
28
+ };
29
+ readonly chevronDown: {
30
+ readonly d: "m6 9 6 6 6-6";
31
+ readonly stroke: true;
32
+ readonly strokeWidth: 2;
33
+ };
34
+ readonly chevronUp: {
35
+ readonly d: "m18 15-6-6-6 6";
36
+ readonly stroke: true;
37
+ readonly strokeWidth: 2;
38
+ };
39
+ readonly chevronLeft: {
40
+ readonly d: "m15 18-6-6 6-6";
41
+ readonly stroke: true;
42
+ readonly strokeWidth: 2;
43
+ };
44
+ readonly chevronRight: {
45
+ readonly d: "m9 18 6-6-6-6";
46
+ readonly stroke: true;
47
+ readonly strokeWidth: 2;
48
+ };
49
+ readonly alertCircle: {
50
+ readonly d: "M12 8v4M12 16h.01";
51
+ readonly d2: "M12 22c5.523 0 10-4.477 10-10S17.523 2 12 2 2 6.477 2 12s4.477 10 10 10z";
52
+ readonly stroke: true;
53
+ readonly strokeWidth: 2;
54
+ };
55
+ readonly info: {
56
+ readonly d: "M12 16v-4M12 8h.01";
57
+ readonly d2: "M12 22c5.523 0 10-4.477 10-10S17.523 2 12 2 2 6.477 2 12s4.477 10 10 10z";
58
+ readonly stroke: true;
59
+ readonly strokeWidth: 2;
60
+ };
61
+ readonly checkCircle: {
62
+ readonly d: "m9 12 2 2 4-4";
63
+ readonly d2: "M12 22c5.523 0 10-4.477 10-10S17.523 2 12 2 2 6.477 2 12s4.477 10 10 10z";
64
+ readonly stroke: true;
65
+ readonly strokeWidth: 2;
66
+ };
67
+ readonly loader: {
68
+ readonly d: "M12 2v4M12 18v4M4.93 4.93l2.83 2.83M16.24 16.24l2.83 2.83M2 12h4M18 12h4M4.93 19.07l2.83-2.83M16.24 7.76l2.83-2.83";
69
+ readonly stroke: true;
70
+ readonly strokeWidth: 2;
71
+ };
72
+ readonly search: {
73
+ readonly d: "m21 21-4.3-4.3";
74
+ readonly d2: "M11 19a8 8 0 1 0 0-16 8 8 0 0 0 0 16z";
75
+ readonly stroke: true;
76
+ readonly strokeWidth: 2;
77
+ };
78
+ readonly plus: {
79
+ readonly d: "M12 5v14M5 12h14";
80
+ readonly stroke: true;
81
+ readonly strokeWidth: 2;
82
+ };
83
+ readonly minus: {
84
+ readonly d: "M5 12h14";
85
+ readonly stroke: true;
86
+ readonly strokeWidth: 2;
87
+ };
88
+ readonly eye: {
89
+ readonly d: "M2 12s3-7 10-7 10 7 10 7-3 7-10 7-10-7-10-7z";
90
+ readonly d2: "M12 15a3 3 0 1 0 0-6 3 3 0 0 0 0 6z";
91
+ readonly stroke: true;
92
+ readonly strokeWidth: 2;
93
+ };
94
+ readonly eyeOff: {
95
+ readonly d: "M9.88 9.88a3 3 0 1 0 4.24 4.24M10.73 5.08A10.43 10.43 0 0 1 12 5c7 0 10 7 10 7a13.16 13.16 0 0 1-1.67 2.68M6.61 6.61A13.526 13.526 0 0 0 2 12s3 7 10 7a9.74 9.74 0 0 0 5.39-1.61M2 2l20 20";
96
+ readonly stroke: true;
97
+ readonly strokeWidth: 2;
98
+ };
99
+ readonly menu: {
100
+ readonly d: "M3 12h18M3 6h18M3 18h18";
101
+ readonly stroke: true;
102
+ readonly strokeWidth: 2;
103
+ };
104
+ readonly calendar: {
105
+ readonly d: "M3 10h18M8 2v4M16 2v4";
106
+ readonly d2: "M5 4h14a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2z";
107
+ readonly stroke: true;
108
+ readonly strokeWidth: 2;
109
+ };
110
+ readonly clock: {
111
+ readonly d: "M12 6v6l4 2";
112
+ readonly d2: "M12 22c5.523 0 10-4.477 10-10S17.523 2 12 2 2 6.477 2 12s4.477 10 10 10z";
113
+ readonly stroke: true;
114
+ readonly strokeWidth: 2;
115
+ };
116
+ readonly upload: {
117
+ readonly d: "M12 3v12M7 8l5-5 5 5";
118
+ readonly d2: "M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4";
119
+ readonly stroke: true;
120
+ readonly strokeWidth: 2;
121
+ };
122
+ readonly arrowRight: {
123
+ readonly d: "M5 12h14M13 5l7 7-7 7";
124
+ readonly stroke: true;
125
+ readonly strokeWidth: 2;
126
+ };
127
+ readonly arrowLeft: {
128
+ readonly d: "M19 12H5M12 5l-7 7 7 7";
129
+ readonly stroke: true;
130
+ readonly strokeWidth: 2;
131
+ };
132
+ readonly folder: {
133
+ readonly d: "M3 7a2 2 0 0 1 2-2h4l2 2h8a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V7z";
134
+ readonly stroke: true;
135
+ readonly strokeWidth: 2;
136
+ };
137
+ };
138
+ type IconName = keyof typeof icons;
139
+ /** Strongly-typed lookup that always returns the full IconDef shape. */
140
+ declare function getIcon(name: IconName): IconDef;
141
+
142
+ export { type IconDef, type IconName, getIcon, icons };
package/dist/index.js ADDED
@@ -0,0 +1,128 @@
1
+ // src/icons.ts
2
+ var icons = {
3
+ check: {
4
+ d: "M20 6 9 17l-5-5",
5
+ stroke: true,
6
+ strokeWidth: 2
7
+ },
8
+ x: {
9
+ d: "M18 6 6 18M6 6l12 12",
10
+ stroke: true,
11
+ strokeWidth: 2
12
+ },
13
+ chevronDown: {
14
+ d: "m6 9 6 6 6-6",
15
+ stroke: true,
16
+ strokeWidth: 2
17
+ },
18
+ chevronUp: {
19
+ d: "m18 15-6-6-6 6",
20
+ stroke: true,
21
+ strokeWidth: 2
22
+ },
23
+ chevronLeft: {
24
+ d: "m15 18-6-6 6-6",
25
+ stroke: true,
26
+ strokeWidth: 2
27
+ },
28
+ chevronRight: {
29
+ d: "m9 18 6-6-6-6",
30
+ stroke: true,
31
+ strokeWidth: 2
32
+ },
33
+ alertCircle: {
34
+ d: "M12 8v4M12 16h.01",
35
+ d2: "M12 22c5.523 0 10-4.477 10-10S17.523 2 12 2 2 6.477 2 12s4.477 10 10 10z",
36
+ stroke: true,
37
+ strokeWidth: 2
38
+ },
39
+ info: {
40
+ d: "M12 16v-4M12 8h.01",
41
+ d2: "M12 22c5.523 0 10-4.477 10-10S17.523 2 12 2 2 6.477 2 12s4.477 10 10 10z",
42
+ stroke: true,
43
+ strokeWidth: 2
44
+ },
45
+ checkCircle: {
46
+ d: "m9 12 2 2 4-4",
47
+ d2: "M12 22c5.523 0 10-4.477 10-10S17.523 2 12 2 2 6.477 2 12s4.477 10 10 10z",
48
+ stroke: true,
49
+ strokeWidth: 2
50
+ },
51
+ loader: {
52
+ d: "M12 2v4M12 18v4M4.93 4.93l2.83 2.83M16.24 16.24l2.83 2.83M2 12h4M18 12h4M4.93 19.07l2.83-2.83M16.24 7.76l2.83-2.83",
53
+ stroke: true,
54
+ strokeWidth: 2
55
+ },
56
+ search: {
57
+ d: "m21 21-4.3-4.3",
58
+ d2: "M11 19a8 8 0 1 0 0-16 8 8 0 0 0 0 16z",
59
+ stroke: true,
60
+ strokeWidth: 2
61
+ },
62
+ plus: {
63
+ d: "M12 5v14M5 12h14",
64
+ stroke: true,
65
+ strokeWidth: 2
66
+ },
67
+ minus: {
68
+ d: "M5 12h14",
69
+ stroke: true,
70
+ strokeWidth: 2
71
+ },
72
+ eye: {
73
+ d: "M2 12s3-7 10-7 10 7 10 7-3 7-10 7-10-7-10-7z",
74
+ d2: "M12 15a3 3 0 1 0 0-6 3 3 0 0 0 0 6z",
75
+ stroke: true,
76
+ strokeWidth: 2
77
+ },
78
+ eyeOff: {
79
+ d: "M9.88 9.88a3 3 0 1 0 4.24 4.24M10.73 5.08A10.43 10.43 0 0 1 12 5c7 0 10 7 10 7a13.16 13.16 0 0 1-1.67 2.68M6.61 6.61A13.526 13.526 0 0 0 2 12s3 7 10 7a9.74 9.74 0 0 0 5.39-1.61M2 2l20 20",
80
+ stroke: true,
81
+ strokeWidth: 2
82
+ },
83
+ menu: {
84
+ d: "M3 12h18M3 6h18M3 18h18",
85
+ stroke: true,
86
+ strokeWidth: 2
87
+ },
88
+ calendar: {
89
+ d: "M3 10h18M8 2v4M16 2v4",
90
+ d2: "M5 4h14a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2z",
91
+ stroke: true,
92
+ strokeWidth: 2
93
+ },
94
+ clock: {
95
+ d: "M12 6v6l4 2",
96
+ d2: "M12 22c5.523 0 10-4.477 10-10S17.523 2 12 2 2 6.477 2 12s4.477 10 10 10z",
97
+ stroke: true,
98
+ strokeWidth: 2
99
+ },
100
+ upload: {
101
+ d: "M12 3v12M7 8l5-5 5 5",
102
+ d2: "M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",
103
+ stroke: true,
104
+ strokeWidth: 2
105
+ },
106
+ arrowRight: {
107
+ d: "M5 12h14M13 5l7 7-7 7",
108
+ stroke: true,
109
+ strokeWidth: 2
110
+ },
111
+ arrowLeft: {
112
+ d: "M19 12H5M12 5l-7 7 7 7",
113
+ stroke: true,
114
+ strokeWidth: 2
115
+ },
116
+ folder: {
117
+ d: "M3 7a2 2 0 0 1 2-2h4l2 2h8a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V7z",
118
+ stroke: true,
119
+ strokeWidth: 2
120
+ }
121
+ };
122
+ function getIcon(name) {
123
+ return icons[name];
124
+ }
125
+
126
+ export { getIcon, icons };
127
+ //# sourceMappingURL=index.js.map
128
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/icons.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["/**\r\n * Elvora icon registry. Each icon is the bare SVG `<path>` (and optional\r\n * extras) data. Adapters render the SVG envelope. This keeps icons\r\n * tree-shakable and avoids bundling a heavy framework-specific runtime.\r\n *\r\n * Icon set is hand-curated; expand it as components need new glyphs.\r\n */\r\n\r\nexport interface IconDef {\r\n /** 24x24 viewBox path data. */\r\n d: string;\r\n /** Optional second path for two-tone icons. */\r\n d2?: string;\r\n /** When true, render with stroke instead of fill. */\r\n stroke?: boolean;\r\n /** Default stroke width when stroke=true. */\r\n strokeWidth?: number;\r\n}\r\n\r\nexport const icons = {\r\n check: {\r\n d: 'M20 6 9 17l-5-5',\r\n stroke: true,\r\n strokeWidth: 2,\r\n },\r\n x: {\r\n d: 'M18 6 6 18M6 6l12 12',\r\n stroke: true,\r\n strokeWidth: 2,\r\n },\r\n chevronDown: {\r\n d: 'm6 9 6 6 6-6',\r\n stroke: true,\r\n strokeWidth: 2,\r\n },\r\n chevronUp: {\r\n d: 'm18 15-6-6-6 6',\r\n stroke: true,\r\n strokeWidth: 2,\r\n },\r\n chevronLeft: {\r\n d: 'm15 18-6-6 6-6',\r\n stroke: true,\r\n strokeWidth: 2,\r\n },\r\n chevronRight: {\r\n d: 'm9 18 6-6-6-6',\r\n stroke: true,\r\n strokeWidth: 2,\r\n },\r\n alertCircle: {\r\n d: 'M12 8v4M12 16h.01',\r\n d2: 'M12 22c5.523 0 10-4.477 10-10S17.523 2 12 2 2 6.477 2 12s4.477 10 10 10z',\r\n stroke: true,\r\n strokeWidth: 2,\r\n },\r\n info: {\r\n d: 'M12 16v-4M12 8h.01',\r\n d2: 'M12 22c5.523 0 10-4.477 10-10S17.523 2 12 2 2 6.477 2 12s4.477 10 10 10z',\r\n stroke: true,\r\n strokeWidth: 2,\r\n },\r\n checkCircle: {\r\n d: 'm9 12 2 2 4-4',\r\n d2: 'M12 22c5.523 0 10-4.477 10-10S17.523 2 12 2 2 6.477 2 12s4.477 10 10 10z',\r\n stroke: true,\r\n strokeWidth: 2,\r\n },\r\n loader: {\r\n d: 'M12 2v4M12 18v4M4.93 4.93l2.83 2.83M16.24 16.24l2.83 2.83M2 12h4M18 12h4M4.93 19.07l2.83-2.83M16.24 7.76l2.83-2.83',\r\n stroke: true,\r\n strokeWidth: 2,\r\n },\r\n search: {\r\n d: 'm21 21-4.3-4.3',\r\n d2: 'M11 19a8 8 0 1 0 0-16 8 8 0 0 0 0 16z',\r\n stroke: true,\r\n strokeWidth: 2,\r\n },\r\n plus: {\r\n d: 'M12 5v14M5 12h14',\r\n stroke: true,\r\n strokeWidth: 2,\r\n },\r\n minus: {\r\n d: 'M5 12h14',\r\n stroke: true,\r\n strokeWidth: 2,\r\n },\r\n eye: {\r\n d: 'M2 12s3-7 10-7 10 7 10 7-3 7-10 7-10-7-10-7z',\r\n d2: 'M12 15a3 3 0 1 0 0-6 3 3 0 0 0 0 6z',\r\n stroke: true,\r\n strokeWidth: 2,\r\n },\r\n eyeOff: {\r\n d: 'M9.88 9.88a3 3 0 1 0 4.24 4.24M10.73 5.08A10.43 10.43 0 0 1 12 5c7 0 10 7 10 7a13.16 13.16 0 0 1-1.67 2.68M6.61 6.61A13.526 13.526 0 0 0 2 12s3 7 10 7a9.74 9.74 0 0 0 5.39-1.61M2 2l20 20',\r\n stroke: true,\r\n strokeWidth: 2,\r\n },\r\n menu: {\r\n d: 'M3 12h18M3 6h18M3 18h18',\r\n stroke: true,\r\n strokeWidth: 2,\r\n },\r\n calendar: {\r\n d: 'M3 10h18M8 2v4M16 2v4',\r\n d2: 'M5 4h14a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2z',\r\n stroke: true,\r\n strokeWidth: 2,\r\n },\r\n clock: {\r\n d: 'M12 6v6l4 2',\r\n d2: 'M12 22c5.523 0 10-4.477 10-10S17.523 2 12 2 2 6.477 2 12s4.477 10 10 10z',\r\n stroke: true,\r\n strokeWidth: 2,\r\n },\r\n upload: {\r\n d: 'M12 3v12M7 8l5-5 5 5',\r\n d2: 'M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4',\r\n stroke: true,\r\n strokeWidth: 2,\r\n },\r\n arrowRight: {\r\n d: 'M5 12h14M13 5l7 7-7 7',\r\n stroke: true,\r\n strokeWidth: 2,\r\n },\r\n arrowLeft: {\r\n d: 'M19 12H5M12 5l-7 7 7 7',\r\n stroke: true,\r\n strokeWidth: 2,\r\n },\r\n folder: {\r\n d: 'M3 7a2 2 0 0 1 2-2h4l2 2h8a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V7z',\r\n stroke: true,\r\n strokeWidth: 2,\r\n },\r\n} as const satisfies Record<string, IconDef>;\r\n\r\nexport type IconName = keyof typeof icons;\r\n\r\n/** Strongly-typed lookup that always returns the full IconDef shape. */\r\nexport function getIcon(name: IconName): IconDef {\r\n return icons[name] as IconDef;\r\n}\r\n"]}
package/package.json ADDED
@@ -0,0 +1,53 @@
1
+ {
2
+ "name": "@elvora/icons",
3
+ "version": "1.0.0-rc.1",
4
+ "description": "Framework-agnostic SVG icon registry for Elvora UI — typed names, tree-shakable path data, identical output across React, RN, Angular, Vue, and Svelte.",
5
+ "license": "MIT",
6
+ "author": "Elvora UI Contributors",
7
+ "homepage": "https://github.com/elvora-ui/elvora/tree/main/packages/icons#readme",
8
+ "repository": {
9
+ "type": "git",
10
+ "url": "git+https://github.com/elvora-ui/elvora.git",
11
+ "directory": "packages/icons"
12
+ },
13
+ "bugs": {
14
+ "url": "https://github.com/elvora-ui/elvora/issues"
15
+ },
16
+ "keywords": [
17
+ "icons",
18
+ "svg",
19
+ "ui",
20
+ "elvora"
21
+ ],
22
+ "type": "module",
23
+ "main": "./dist/index.cjs",
24
+ "module": "./dist/index.js",
25
+ "types": "./dist/index.d.ts",
26
+ "exports": {
27
+ ".": {
28
+ "types": "./dist/index.d.ts",
29
+ "import": "./dist/index.js",
30
+ "require": "./dist/index.cjs"
31
+ }
32
+ },
33
+ "files": [
34
+ "dist"
35
+ ],
36
+ "sideEffects": false,
37
+ "devDependencies": {
38
+ "rimraf": "^6.0.1",
39
+ "tsup": "^8.3.5",
40
+ "typescript": "^5.7.2"
41
+ },
42
+ "publishConfig": {
43
+ "access": "public"
44
+ },
45
+ "scripts": {
46
+ "build": "tsup",
47
+ "dev": "tsup --watch",
48
+ "typecheck": "tsc --noEmit",
49
+ "lint": "echo 'no lint configured'",
50
+ "test": "echo 'no tests yet'",
51
+ "clean": "rimraf dist"
52
+ }
53
+ }