@weasel-js/icons 1.10.1 → 1.11.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/README.md CHANGED
@@ -1,8 +1,10 @@
1
1
  # @weasel-js/icons
2
2
 
3
- Namespaced icon names (`namespace:name`) and the icon registry. No React, no DOM, no glyphs of its
4
- own: each weasel package that draws glyphs publishes its own table, at `@weasel-js/<package>/icons`.
5
- The build plugin that ships only the glyphs a build names is `@weasel-js/icons-plugin`.
3
+ Namespaced icon names (`namespace:name`) and the icon registry. No React, no DOM. Each weasel
4
+ package that draws glyphs publishes its own table, at `@weasel-js/<package>/icons`; this one draws
5
+ the plain shapes every package may name (`shape:diamond`, `shape:hexagonFlat`), published at
6
+ `@weasel-js/icons/shapes`. The build plugin that ships only the glyphs a build names is
7
+ `@weasel-js/icons-plugin`.
6
8
 
7
9
  | Export | What it is |
8
10
  |---|---|
@@ -17,12 +19,13 @@ The build plugin that ships only the glyphs a build names is `@weasel-js/icons-p
17
19
  ```tsx
18
20
  import { IconRegistryProvider } from '@weasel-js/core';
19
21
  import { icons as coreIcons } from '@weasel-js/core/icons';
22
+ import { icons as shapeIcons } from '@weasel-js/icons/shapes';
20
23
  import { icons as uiIcons } from '@weasel-js/ui/icons';
21
24
 
22
- const ICONS = [coreIcons, uiIcons];
25
+ const ICONS = [coreIcons, shapeIcons, uiIcons];
23
26
 
24
27
  <IconRegistryProvider icons={ICONS}>…</IconRegistryProvider>;
25
28
  ```
26
29
 
27
- That registers every glyph core and ui draw. To ship only the glyphs the app names, use
30
+ That registers every glyph core, the shapes and ui draw. To ship only the glyphs the app names, use
28
31
  `@weasel-js/icons-plugin`.
@@ -0,0 +1,246 @@
1
+ {
2
+ "namespace": "shape",
3
+ "owner": "@weasel-js/icons",
4
+ "icons": {
5
+ "triangle": {
6
+ "body": "<path d=\"M10 3.59L17.4 16.41L2.6 16.41Z\" stroke-linejoin=\"miter\"/>",
7
+ "fill": "<path d=\"M10 3.59L17.4 16.41L2.6 16.41Z\" fill=\"currentColor\" stroke=\"none\"/>",
8
+ "group": "Shapes",
9
+ "tags": []
10
+ },
11
+ "rightTriangle": {
12
+ "body": "<path d=\"M2.6 17.4L2.6 2.6L17.4 17.4Z\" stroke-linejoin=\"miter\"/>",
13
+ "fill": "<path d=\"M2.6 17.4L2.6 2.6L17.4 17.4Z\" fill=\"currentColor\" stroke=\"none\"/>",
14
+ "group": "Shapes",
15
+ "tags": []
16
+ },
17
+ "square": {
18
+ "body": "<path d=\"M2.6 2.6L17.4 2.6L17.4 17.4L2.6 17.4Z\" stroke-linejoin=\"miter\"/>",
19
+ "fill": "<path d=\"M2.6 2.6L17.4 2.6L17.4 17.4L2.6 17.4Z\" fill=\"currentColor\" stroke=\"none\"/>",
20
+ "group": "Shapes",
21
+ "tags": []
22
+ },
23
+ "rectangle": {
24
+ "body": "<path d=\"M2.6 5.37L17.4 5.37L17.4 14.63L2.6 14.63Z\" stroke-linejoin=\"miter\"/>",
25
+ "fill": "<path d=\"M2.6 5.37L17.4 5.37L17.4 14.63L2.6 14.63Z\" fill=\"currentColor\" stroke=\"none\"/>",
26
+ "group": "Shapes",
27
+ "tags": []
28
+ },
29
+ "diamond": {
30
+ "body": "<path d=\"M10 2.6L17.4 10L10 17.4L2.6 10Z\" stroke-linejoin=\"miter\"/>",
31
+ "fill": "<path d=\"M10 2.6L17.4 10L10 17.4L2.6 10Z\" fill=\"currentColor\" stroke=\"none\"/>",
32
+ "group": "Shapes",
33
+ "tags": []
34
+ },
35
+ "parallelogram": {
36
+ "body": "<path d=\"M5.35 4.71L17.4 4.71L14.65 15.29L2.6 15.29Z\" stroke-linejoin=\"miter\"/>",
37
+ "fill": "<path d=\"M5.35 4.71L17.4 4.71L14.65 15.29L2.6 15.29Z\" fill=\"currentColor\" stroke=\"none\"/>",
38
+ "group": "Shapes",
39
+ "tags": []
40
+ },
41
+ "trapezoid": {
42
+ "body": "<path d=\"M5.35 4.71L14.65 4.71L17.4 15.29L2.6 15.29Z\" stroke-linejoin=\"miter\"/>",
43
+ "fill": "<path d=\"M5.35 4.71L14.65 4.71L17.4 15.29L2.6 15.29Z\" fill=\"currentColor\" stroke=\"none\"/>",
44
+ "group": "Shapes",
45
+ "tags": []
46
+ },
47
+ "trapezoidSide": {
48
+ "body": "<path d=\"M2.6 7.69L17.4 5.38L17.4 14.63L2.6 12.31Z\" stroke-linejoin=\"miter\"/>",
49
+ "fill": "<path d=\"M2.6 7.69L17.4 5.38L17.4 14.63L2.6 12.31Z\" fill=\"currentColor\" stroke=\"none\"/>",
50
+ "group": "Shapes",
51
+ "tags": []
52
+ },
53
+ "kite": {
54
+ "body": "<path d=\"M10 2.6L16.43 7.75L10 17.4L3.57 7.75Z\" stroke-linejoin=\"miter\"/>",
55
+ "fill": "<path d=\"M10 2.6L16.43 7.75L10 17.4L3.57 7.75Z\" fill=\"currentColor\" stroke=\"none\"/>",
56
+ "group": "Shapes",
57
+ "tags": []
58
+ },
59
+ "pentagon": {
60
+ "body": "<path d=\"M10 2.96L17.4 8.34L14.57 17.04L5.43 17.04L2.6 8.34Z\" stroke-linejoin=\"miter\"/>",
61
+ "fill": "<path d=\"M10 2.96L17.4 8.34L14.57 17.04L5.43 17.04L2.6 8.34Z\" fill=\"currentColor\" stroke=\"none\"/>",
62
+ "group": "Shapes",
63
+ "tags": []
64
+ },
65
+ "hexagon": {
66
+ "body": "<path d=\"M10 2.6L16.41 6.3L16.41 13.7L10 17.4L3.59 13.7L3.59 6.3Z\" stroke-linejoin=\"miter\"/>",
67
+ "fill": "<path d=\"M10 2.6L16.41 6.3L16.41 13.7L10 17.4L3.59 13.7L3.59 6.3Z\" fill=\"currentColor\" stroke=\"none\"/>",
68
+ "group": "Shapes",
69
+ "tags": []
70
+ },
71
+ "hexagonFlat": {
72
+ "body": "<path d=\"M17.4 10L13.7 16.41L6.3 16.41L2.6 10L6.3 3.59L13.7 3.59Z\" stroke-linejoin=\"miter\"/>",
73
+ "fill": "<path d=\"M17.4 10L13.7 16.41L6.3 16.41L2.6 10L6.3 3.59L13.7 3.59Z\" fill=\"currentColor\" stroke=\"none\"/>",
74
+ "group": "Shapes",
75
+ "tags": []
76
+ },
77
+ "heptagon": {
78
+ "body": "<path d=\"M10 2.79L15.93 5.64L17.4 12.06L13.29 17.21L6.71 17.21L2.6 12.06L4.07 5.64Z\" stroke-linejoin=\"miter\"/>",
79
+ "fill": "<path d=\"M10 2.79L15.93 5.64L17.4 12.06L13.29 17.21L6.71 17.21L2.6 12.06L4.07 5.64Z\" fill=\"currentColor\" stroke=\"none\"/>",
80
+ "group": "Shapes",
81
+ "tags": []
82
+ },
83
+ "octagon": {
84
+ "body": "<path d=\"M13.07 2.6L17.4 6.93L17.4 13.07L13.07 17.4L6.93 17.4L2.6 13.07L2.6 6.93L6.93 2.6Z\" stroke-linejoin=\"miter\"/>",
85
+ "fill": "<path d=\"M13.07 2.6L17.4 6.93L17.4 13.07L13.07 17.4L6.93 17.4L2.6 13.07L2.6 6.93L6.93 2.6Z\" fill=\"currentColor\" stroke=\"none\"/>",
86
+ "group": "Shapes",
87
+ "tags": []
88
+ },
89
+ "decagon": {
90
+ "body": "<path d=\"M10 2.6L14.35 4.01L17.04 7.71L17.04 12.29L14.35 15.99L10 17.4L5.65 15.99L2.96 12.29L2.96 7.71L5.65 4.01Z\" stroke-linejoin=\"miter\"/>",
91
+ "fill": "<path d=\"M10 2.6L14.35 4.01L17.04 7.71L17.04 12.29L14.35 15.99L10 17.4L5.65 15.99L2.96 12.29L2.96 7.71L5.65 4.01Z\" fill=\"currentColor\" stroke=\"none\"/>",
92
+ "group": "Shapes",
93
+ "tags": []
94
+ },
95
+ "dodecagon": {
96
+ "body": "<path d=\"M10 2.6L13.7 3.59L16.41 6.3L17.4 10L16.41 13.7L13.7 16.41L10 17.4L6.3 16.41L3.59 13.7L2.6 10L3.59 6.3L6.3 3.59Z\" stroke-linejoin=\"miter\"/>",
97
+ "fill": "<path d=\"M10 2.6L13.7 3.59L16.41 6.3L17.4 10L16.41 13.7L13.7 16.41L10 17.4L6.3 16.41L3.59 13.7L2.6 10L3.59 6.3L6.3 3.59Z\" fill=\"currentColor\" stroke=\"none\"/>",
98
+ "group": "Shapes",
99
+ "tags": []
100
+ },
101
+ "cross": {
102
+ "body": "<path d=\"M7.63 2.6L12.37 2.6L12.37 7.63L17.4 7.63L17.4 12.37L12.37 12.37L12.37 17.4L7.63 17.4L7.63 12.37L2.6 12.37L2.6 7.63L7.63 7.63Z\" stroke-linejoin=\"miter\"/>",
103
+ "fill": "<path d=\"M7.63 2.6L12.37 2.6L12.37 7.63L17.4 7.63L17.4 12.37L12.37 12.37L12.37 17.4L7.63 17.4L7.63 12.37L2.6 12.37L2.6 7.63L7.63 7.63Z\" fill=\"currentColor\" stroke=\"none\"/>",
104
+ "group": "Shapes",
105
+ "tags": []
106
+ },
107
+ "lShape": {
108
+ "body": "<path d=\"M2.6 2.6L8.82 2.6L8.82 11.78L17.4 11.78L17.4 17.4L2.6 17.4Z\" stroke-linejoin=\"miter\"/>",
109
+ "fill": "<path d=\"M2.6 2.6L8.82 2.6L8.82 11.78L17.4 11.78L17.4 17.4L2.6 17.4Z\" fill=\"currentColor\" stroke=\"none\"/>",
110
+ "group": "Shapes",
111
+ "tags": []
112
+ },
113
+ "chevron": {
114
+ "body": "<path d=\"M2.6 4.38L10 10.59L17.4 4.38L17.4 9.41L10 15.62L2.6 9.41Z\" stroke-linejoin=\"miter\"/>",
115
+ "fill": "<path d=\"M2.6 4.38L10 10.59L17.4 4.38L17.4 9.41L10 15.62L2.6 9.41Z\" fill=\"currentColor\" stroke=\"none\"/>",
116
+ "group": "Shapes",
117
+ "tags": []
118
+ },
119
+ "star": {
120
+ "body": "<path d=\"M10 2.96L12.2 7.72L17.4 8.34L13.55 11.9L14.57 17.04L10 14.48L5.43 17.04L6.45 11.9L2.6 8.34L7.8 7.72Z\" stroke-linejoin=\"miter\"/>",
121
+ "fill": "<path d=\"M10 2.96L12.2 7.72L17.4 8.34L13.55 11.9L14.57 17.04L10 14.48L5.43 17.04L6.45 11.9L2.6 8.34L7.8 7.72Z\" fill=\"currentColor\" stroke=\"none\"/>",
122
+ "group": "Shapes",
123
+ "tags": []
124
+ },
125
+ "star4": {
126
+ "body": "<path d=\"M10 2.6L11.99 8.01L17.4 10L11.99 11.99L10 17.4L8.01 11.99L2.6 10L8.01 8.01Z\" stroke-linejoin=\"miter\"/>",
127
+ "fill": "<path d=\"M10 2.6L11.99 8.01L17.4 10L11.99 11.99L10 17.4L8.01 11.99L2.6 10L8.01 8.01Z\" fill=\"currentColor\" stroke=\"none\"/>",
128
+ "group": "Shapes",
129
+ "tags": []
130
+ },
131
+ "star6": {
132
+ "body": "<path d=\"M10 2.6L12.07 6.41L16.41 6.3L14.14 10L16.41 13.7L12.07 13.59L10 17.4L7.93 13.59L3.59 13.7L5.86 10L3.59 6.3L7.93 6.41Z\" stroke-linejoin=\"miter\"/>",
133
+ "fill": "<path d=\"M10 2.6L12.07 6.41L16.41 6.3L14.14 10L16.41 13.7L12.07 13.59L10 17.4L7.93 13.59L3.59 13.7L5.86 10L3.59 6.3L7.93 6.41Z\" fill=\"currentColor\" stroke=\"none\"/>",
134
+ "group": "Shapes",
135
+ "tags": []
136
+ },
137
+ "star8": {
138
+ "body": "<path d=\"M10 2.6L11.76 5.76L15.23 4.77L14.24 8.24L17.4 10L14.24 11.76L15.23 15.23L11.76 14.24L10 17.4L8.24 14.24L4.77 15.23L5.76 11.76L2.6 10L5.76 8.24L4.77 4.77L8.24 5.76Z\" stroke-linejoin=\"miter\"/>",
139
+ "fill": "<path d=\"M10 2.6L11.76 5.76L15.23 4.77L14.24 8.24L17.4 10L14.24 11.76L15.23 15.23L11.76 14.24L10 17.4L8.24 14.24L4.77 15.23L5.76 11.76L2.6 10L5.76 8.24L4.77 4.77L8.24 5.76Z\" fill=\"currentColor\" stroke=\"none\"/>",
140
+ "group": "Shapes",
141
+ "tags": []
142
+ },
143
+ "pentagram": {
144
+ "body": "<path d=\"M10 2.96L14.57 17.04L2.6 8.34L17.4 8.34L5.43 17.04Z\" stroke-linejoin=\"miter\"/>",
145
+ "fill": "<path d=\"M10 2.96L14.57 17.04L2.6 8.34L17.4 8.34L5.43 17.04Z\" fill=\"currentColor\" stroke=\"none\" fill-rule=\"evenodd\"/>",
146
+ "group": "Shapes",
147
+ "tags": []
148
+ },
149
+ "circle": {
150
+ "body": "<path d=\"M2.6 10A7.4 7.4 0 1 1 17.4 10A7.4 7.4 0 1 1 2.6 10Z\"/>",
151
+ "fill": "<path d=\"M2.6 10A7.4 7.4 0 1 1 17.4 10A7.4 7.4 0 1 1 2.6 10Z\" fill=\"currentColor\" stroke=\"none\"/>",
152
+ "group": "Shapes",
153
+ "tags": []
154
+ },
155
+ "ellipse": {
156
+ "body": "<path d=\"M2.6 10A7.4 4.74 0 1 1 17.4 10A7.4 4.74 0 1 1 2.6 10Z\"/>",
157
+ "fill": "<path d=\"M2.6 10A7.4 4.74 0 1 1 17.4 10A7.4 4.74 0 1 1 2.6 10Z\" fill=\"currentColor\" stroke=\"none\"/>",
158
+ "group": "Shapes",
159
+ "tags": []
160
+ },
161
+ "semicircle": {
162
+ "body": "<path d=\"M2.6 13.7A7.4 7.4 0 0 1 17.4 13.7Z\"/>",
163
+ "fill": "<path d=\"M2.6 13.7A7.4 7.4 0 0 1 17.4 13.7Z\" fill=\"currentColor\" stroke=\"none\"/>",
164
+ "group": "Shapes",
165
+ "tags": []
166
+ },
167
+ "quarter": {
168
+ "body": "<path d=\"M2.6 17.4V2.6A14.8 14.8 0 0 1 17.4 17.4Z\"/>",
169
+ "fill": "<path d=\"M2.6 17.4V2.6A14.8 14.8 0 0 1 17.4 17.4Z\" fill=\"currentColor\" stroke=\"none\"/>",
170
+ "group": "Shapes",
171
+ "tags": []
172
+ },
173
+ "stadium": {
174
+ "body": "<path d=\"M6.74 5.86H13.26A4.14 4.14 0 0 1 13.26 14.14H6.74A4.14 4.14 0 0 1 6.74 5.86Z\"/>",
175
+ "fill": "<path d=\"M6.74 5.86H13.26A4.14 4.14 0 0 1 13.26 14.14H6.74A4.14 4.14 0 0 1 6.74 5.86Z\" fill=\"currentColor\" stroke=\"none\"/>",
176
+ "group": "Shapes",
177
+ "tags": []
178
+ },
179
+ "roundedSquare": {
180
+ "body": "<path d=\"M6 2.6H14A3.4 3.4 0 0 1 17.4 6V14A3.4 3.4 0 0 1 14 17.4H6A3.4 3.4 0 0 1 2.6 14V6A3.4 3.4 0 0 1 6 2.6Z\"/>",
181
+ "fill": "<path d=\"M6 2.6H14A3.4 3.4 0 0 1 17.4 6V14A3.4 3.4 0 0 1 14 17.4H6A3.4 3.4 0 0 1 2.6 14V6A3.4 3.4 0 0 1 6 2.6Z\" fill=\"currentColor\" stroke=\"none\"/>",
182
+ "group": "Shapes",
183
+ "tags": []
184
+ },
185
+ "ring": {
186
+ "body": "<path d=\"M2.6 10A7.4 7.4 0 1 1 17.4 10A7.4 7.4 0 1 1 2.6 10ZM6.15 10A3.85 3.85 0 1 0 13.85 10A3.85 3.85 0 1 0 6.15 10Z\"/>",
187
+ "fill": "<path d=\"M2.6 10A7.4 7.4 0 1 1 17.4 10A7.4 7.4 0 1 1 2.6 10ZM6.15 10A3.85 3.85 0 1 0 13.85 10A3.85 3.85 0 1 0 6.15 10Z\" fill=\"currentColor\" stroke=\"none\" fill-rule=\"evenodd\"/>",
188
+ "group": "Shapes",
189
+ "tags": []
190
+ },
191
+ "crescent": {
192
+ "body": "<path d=\"M6.3 2.6A7.4 7.4 0 1 1 6.3 17.4A8.51 8.51 0 0 0 6.3 2.6Z\"/>",
193
+ "fill": "<path d=\"M6.3 2.6A7.4 7.4 0 1 1 6.3 17.4A8.51 8.51 0 0 0 6.3 2.6Z\" fill=\"currentColor\" stroke=\"none\"/>",
194
+ "group": "Shapes",
195
+ "tags": []
196
+ },
197
+ "lens": {
198
+ "body": "<path d=\"M10 2.6A9.99 9.99 0 0 1 10 17.4A9.99 9.99 0 0 1 10 2.6Z\"/>",
199
+ "fill": "<path d=\"M10 2.6A9.99 9.99 0 0 1 10 17.4A9.99 9.99 0 0 1 10 2.6Z\" fill=\"currentColor\" stroke=\"none\"/>",
200
+ "group": "Shapes",
201
+ "tags": []
202
+ },
203
+ "sector": {
204
+ "body": "<path d=\"M10 14.63L2.6 9.06A9.27 9.27 0 0 1 17.4 9.06Z\"/>",
205
+ "fill": "<path d=\"M10 14.63L2.6 9.06A9.27 9.27 0 0 1 17.4 9.06Z\" fill=\"currentColor\" stroke=\"none\"/>",
206
+ "group": "Shapes",
207
+ "tags": []
208
+ },
209
+ "segment": {
210
+ "body": "<path d=\"M2.6 12.59A7.88 7.88 0 0 1 17.4 12.59Z\"/>",
211
+ "fill": "<path d=\"M2.6 12.59A7.88 7.88 0 0 1 17.4 12.59Z\" fill=\"currentColor\" stroke=\"none\"/>",
212
+ "group": "Shapes",
213
+ "tags": []
214
+ },
215
+ "arch": {
216
+ "body": "<path d=\"M2.6 17.4V10A7.4 7.4 0 0 1 17.4 10V17.4Z\"/>",
217
+ "fill": "<path d=\"M2.6 17.4V10A7.4 7.4 0 0 1 17.4 10V17.4Z\" fill=\"currentColor\" stroke=\"none\"/>",
218
+ "group": "Shapes",
219
+ "tags": []
220
+ },
221
+ "teardrop": {
222
+ "body": "<path d=\"M10 2.6L5.9 10.75A4.59 4.59 0 1 0 14.1 10.75Z\"/>",
223
+ "fill": "<path d=\"M10 2.6L5.9 10.75A4.59 4.59 0 1 0 14.1 10.75Z\" fill=\"currentColor\" stroke=\"none\"/>",
224
+ "group": "Shapes",
225
+ "tags": []
226
+ },
227
+ "egg": {
228
+ "body": "<path d=\"M10 2.6C14.59 2.6 16.07 9.26 16.07 12.22C16.07 15.77 13.26 17.4 10 17.4C6.74 17.4 3.93 15.77 3.93 12.22C3.93 9.26 5.41 2.6 10 2.6Z\"/>",
229
+ "fill": "<path d=\"M10 2.6C14.59 2.6 16.07 9.26 16.07 12.22C16.07 15.77 13.26 17.4 10 17.4C6.74 17.4 3.93 15.77 3.93 12.22C3.93 9.26 5.41 2.6 10 2.6Z\" fill=\"currentColor\" stroke=\"none\"/>",
230
+ "group": "Shapes",
231
+ "tags": []
232
+ },
233
+ "heart": {
234
+ "body": "<path d=\"M10 6.51L10.01 6.42L10.05 6.16L10.18 5.76L10.41 5.26L10.78 4.72L11.27 4.2L11.89 3.76L12.62 3.45L13.42 3.31L14.25 3.36L15.08 3.61L15.84 4.03L16.48 4.62L16.98 5.33L17.29 6.12L17.4 6.97L17.29 7.84L16.98 8.7L16.48 9.54L15.84 10.34L15.08 11.12L14.25 11.86L13.42 12.57L12.62 13.27L11.89 13.93L11.27 14.56L10.78 15.14L10.41 15.66L10.18 16.09L10.05 16.41L10.01 16.62L10 16.69L9.99 16.62L9.95 16.41L9.82 16.09L9.59 15.66L9.22 15.14L8.73 14.56L8.11 13.93L7.38 13.27L6.58 12.57L5.75 11.86L4.92 11.12L4.16 10.34L3.52 9.54L3.02 8.7L2.71 7.84L2.6 6.97L2.71 6.12L3.02 5.33L3.52 4.62L4.16 4.03L4.92 3.61L5.75 3.36L6.58 3.31L7.38 3.45L8.11 3.76L8.73 4.2L9.22 4.72L9.59 5.26L9.82 5.76L9.95 6.16L9.99 6.42L10 6.51Z\"/>",
235
+ "fill": "<path d=\"M10 6.51L10.01 6.42L10.05 6.16L10.18 5.76L10.41 5.26L10.78 4.72L11.27 4.2L11.89 3.76L12.62 3.45L13.42 3.31L14.25 3.36L15.08 3.61L15.84 4.03L16.48 4.62L16.98 5.33L17.29 6.12L17.4 6.97L17.29 7.84L16.98 8.7L16.48 9.54L15.84 10.34L15.08 11.12L14.25 11.86L13.42 12.57L12.62 13.27L11.89 13.93L11.27 14.56L10.78 15.14L10.41 15.66L10.18 16.09L10.05 16.41L10.01 16.62L10 16.69L9.99 16.62L9.95 16.41L9.82 16.09L9.59 15.66L9.22 15.14L8.73 14.56L8.11 13.93L7.38 13.27L6.58 12.57L5.75 11.86L4.92 11.12L4.16 10.34L3.52 9.54L3.02 8.7L2.71 7.84L2.6 6.97L2.71 6.12L3.02 5.33L3.52 4.62L4.16 4.03L4.92 3.61L5.75 3.36L6.58 3.31L7.38 3.45L8.11 3.76L8.73 4.2L9.22 4.72L9.59 5.26L9.82 5.76L9.95 6.16L9.99 6.42L10 6.51Z\" fill=\"currentColor\" stroke=\"none\"/>",
236
+ "group": "Shapes",
237
+ "tags": []
238
+ },
239
+ "angle": {
240
+ "body": "<path d=\"M17.4 16.34L2.6 16.34L14.8 3.66M6.12 16.34A3.52 3.52 0 0 0 5.04 13.8\"/>",
241
+ "fill": "<path d=\"M2.6 16.34L17.4 16.34L14.8 3.66Z\" fill=\"currentColor\" stroke=\"none\"/>",
242
+ "group": "Shapes",
243
+ "tags": []
244
+ }
245
+ }
246
+ }
package/dist/index.d.ts CHANGED
@@ -1,3 +1,6 @@
1
+ import { I as IconGlyph, a as IconTable, b as IconVariantLoader } from './table-DxbFTTzV.js';
2
+ export { c as IconVariantModule } from './table-DxbFTTzV.js';
3
+
1
4
  declare const brand: unique symbol;
2
5
  /** A qualified icon name (`namespace:name`) that came from `icon()` or `toIconRef`. */
3
6
  type IconRef = string & {
@@ -15,27 +18,49 @@ declare function toIconRef(value: string | undefined): IconRef | undefined;
15
18
  /** A package's `icon()`: bare names resolve in `namespace` only. Generated into each package's `icons.gen.ts`. */
16
19
  declare function scopedIcon<Own extends string>(namespace: string): (name: Own | QualifiedIconName) => IconRef;
17
20
 
18
- /** One glyph: SVG body on a 20x20 viewBox stroked in currentColor, and how it is filed. */
19
- interface IconGlyph {
20
- readonly body: string;
21
- /** The enclosed region `<Icon filled>` shades, when there is one. */
22
- readonly fill?: string;
23
- readonly group: string;
24
- readonly tags: readonly string[];
25
- }
26
- /** Every glyph one publisher ships under one namespace. */
27
- interface IconTable {
28
- readonly namespace: string;
29
- /** The publishing package. Tables with one namespace merge only when their owners match. */
30
- readonly owner: string;
31
- readonly icons: Readonly<Record<string, IconGlyph>>;
32
- }
33
- /** What a variant's dynamic import resolves to. */
34
- interface IconVariantModule {
35
- readonly default: readonly IconTable[];
21
+ /** This package's qualified names, which `IconName` extends. */
22
+ interface ShapeIconNames {
23
+ 'shape:triangle': true;
24
+ 'shape:rightTriangle': true;
25
+ 'shape:square': true;
26
+ 'shape:rectangle': true;
27
+ 'shape:diamond': true;
28
+ 'shape:parallelogram': true;
29
+ 'shape:trapezoid': true;
30
+ 'shape:trapezoidSide': true;
31
+ 'shape:kite': true;
32
+ 'shape:pentagon': true;
33
+ 'shape:hexagon': true;
34
+ 'shape:hexagonFlat': true;
35
+ 'shape:heptagon': true;
36
+ 'shape:octagon': true;
37
+ 'shape:decagon': true;
38
+ 'shape:dodecagon': true;
39
+ 'shape:cross': true;
40
+ 'shape:lShape': true;
41
+ 'shape:chevron': true;
42
+ 'shape:star': true;
43
+ 'shape:star4': true;
44
+ 'shape:star6': true;
45
+ 'shape:star8': true;
46
+ 'shape:pentagram': true;
47
+ 'shape:circle': true;
48
+ 'shape:ellipse': true;
49
+ 'shape:semicircle': true;
50
+ 'shape:quarter': true;
51
+ 'shape:stadium': true;
52
+ 'shape:roundedSquare': true;
53
+ 'shape:ring': true;
54
+ 'shape:crescent': true;
55
+ 'shape:lens': true;
56
+ 'shape:sector': true;
57
+ 'shape:segment': true;
58
+ 'shape:arch': true;
59
+ 'shape:teardrop': true;
60
+ 'shape:egg': true;
61
+ 'shape:heart': true;
62
+ 'shape:angle': true;
36
63
  }
37
- /** Loads one variant module: the icon tables that variant adds. */
38
- type IconVariantLoader = () => Promise<IconVariantModule>;
39
64
 
40
65
  /** Where a named icon variant stands: no loader for it (`unknown`), a loader not yet run (`idle`), in flight, in, or failed. */
41
66
  type IconVariantState = 'unknown' | 'idle' | 'loading' | 'loaded' | 'failed';
@@ -73,18 +98,20 @@ interface IconRegistry {
73
98
  declare function createIconRegistry(initial?: IconTable | readonly IconTable[]): IconRegistry;
74
99
 
75
100
  /**
76
- * `@weasel-js/icons`: icon names, tables and the registry. No React, no DOM, no glyphs.
101
+ * `@weasel-js/icons`: icon names, tables and the registry, and the plain shape glyphs under the
102
+ * `shape` namespace. No React, no DOM.
77
103
  *
78
104
  * @packageDocumentation
79
105
  */
106
+
80
107
  /**
81
108
  * Every qualified icon name, as keys. Each package's generated `icons.gen.ts`
82
109
  * adds its own by declaration merging. Declared here, in the barrel, because an
83
110
  * augmentation aimed at a module that only re-exports this would declare a fresh one.
84
111
  */
85
- interface IconName {
112
+ interface IconName extends ShapeIconNames {
86
113
  }
87
114
  /** A name some loaded package declares. */
88
115
  type QualifiedIconName = Extract<keyof IconName, string>;
89
116
 
90
- export { type IconEntry, type IconGlyph, type IconName, IconNamespaceClaimedError, type IconRef, type IconRegistry, type IconTable, type IconVariantLoader, type IconVariantModule, type IconVariantState, type QualifiedIconName, createIconRegistry, qualify, scopedIcon, splitIconRef, toIconRef };
117
+ export { type IconEntry, IconGlyph, type IconName, IconNamespaceClaimedError, type IconRef, type IconRegistry, IconTable, IconVariantLoader, type IconVariantState, type QualifiedIconName, createIconRegistry, qualify, scopedIcon, splitIconRef, toIconRef };
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/names.ts","../src/variants.ts","../src/registry.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["import type { QualifiedIconName } from './index';\n\ndeclare const brand: unique symbol;\n\n/** A qualified icon name (`namespace:name`) that came from `icon()` or `toIconRef`. */\nexport type IconRef = string & { readonly [brand]: 'IconRef' };\n\nconst QUALIFIED = /^([^:\\s]+):([^:\\s]+)$/;\n\n/** `name` in `namespace`, unless it already names one. */\nexport function qualify(namespace: string, name: string): string {\n return name.includes(':') ? name : `${namespace}:${name}`;\n}\n\n/** The two halves of a qualified ref, or `undefined` for anything else. */\nexport function splitIconRef(ref: string): { namespace: string; name: string } | undefined {\n const m = QUALIFIED.exec(ref);\n return m ? { namespace: m[1]!, name: m[2]! } : undefined;\n}\n\n/** A string read at run time (a schema loaded as JSON) as a ref, when it is qualified. */\nexport function toIconRef(value: string | undefined): IconRef | undefined {\n return value !== undefined && QUALIFIED.test(value) ? (value as IconRef) : undefined;\n}\n\n/** A package's `icon()`: bare names resolve in `namespace` only. Generated into each package's `icons.gen.ts`. */\nexport function scopedIcon<Own extends string>(namespace: string) {\n return (name: Own | QualifiedIconName): IconRef => qualify(namespace, name) as IconRef;\n}\n","import { isDev } from '@weasel-js/registry';\nimport type { IconTable, IconVariantLoader } from './table';\n\n/** Where a named icon variant stands: no loader for it (`unknown`), a loader not yet run (`idle`), in flight, in, or failed. */\nexport type IconVariantState = 'unknown' | 'idle' | 'loading' | 'loaded' | 'failed';\n\n/** Loads each named variant at most once at a time; a failure leaves it retryable. */\nexport function createVariants(addTables: (tables: readonly IconTable[]) => void, changed: () => void) {\n const loaders = new Map<string, IconVariantLoader>();\n const states = new Map<string, IconVariantState>();\n const pending = new Map<string, Promise<void>>();\n\n const set = (name: string, state: IconVariantState) => {\n states.set(name, state);\n changed();\n };\n\n return {\n provide(next: Readonly<Record<string, IconVariantLoader>>): void {\n for (const [name, loader] of Object.entries(next)) {\n loaders.set(name, loader);\n if (!states.has(name)) states.set(name, 'idle');\n }\n changed();\n },\n state(name: string): IconVariantState {\n return states.get(name) ?? 'unknown';\n },\n load(name: string): Promise<void> {\n const loader = loaders.get(name);\n if (!loader || states.get(name) === 'loaded') return Promise.resolve();\n const inFlight = pending.get(name);\n if (inFlight) return inFlight;\n set(name, 'loading');\n const run = Promise.resolve()\n .then(loader)\n .then((mod) => {\n addTables(mod.default);\n set(name, 'loaded');\n })\n .catch((error: unknown) => {\n if (isDev()) console.error(`icon variant \"${name}\" failed to load`, error);\n set(name, 'failed');\n })\n .finally(() => pending.delete(name));\n pending.set(name, run);\n return run;\n },\n };\n}\n","import { createEmitter } from '@weasel-js/registry';\nimport type { IconRef } from './names';\nimport type { IconGlyph, IconTable, IconVariantLoader } from './table';\nimport { createVariants, type IconVariantState } from './variants';\n\nexport type { IconVariantState } from './variants';\n\n/** One icon as the registry reports it. */\nexport interface IconEntry {\n readonly ref: IconRef;\n readonly glyph: IconGlyph;\n readonly owner: string;\n /** Registered with `override`, over a table's glyph. */\n readonly overridden: boolean;\n}\n\n/** Thrown when a table claims a namespace another owner holds. */\nexport class IconNamespaceClaimedError extends Error {\n constructor(readonly namespace: string, readonly owner: string, readonly claimant: string) {\n super(`icon namespace \"${namespace}\" belongs to ${owner}; ${claimant} cannot register under it`);\n this.name = 'IconNamespaceClaimedError';\n }\n}\n\n/** Resolves icon refs to glyphs across registered tables and overrides, and reports who owns each namespace. */\nexport interface IconRegistry {\n get(ref: string): IconGlyph | undefined;\n add(tables: IconTable | readonly IconTable[]): () => void;\n override(ref: IconRef, glyph: IconGlyph, source?: string): () => void;\n owner(namespace: string): string | undefined;\n /** The same array until the registry next changes, so it is safe to read through `useSyncExternalStore`. */\n entries(): readonly IconEntry[];\n provideVariants(loaders: Readonly<Record<string, IconVariantLoader>>): void;\n loadVariant(name: string): Promise<void>;\n variantState(name: string): IconVariantState;\n subscribe(listener: () => void): () => void;\n getVersion(): number;\n}\n\nconst OVERRIDE = 'override';\n\ninterface Layer {\n readonly glyph: IconGlyph;\n readonly owner: string;\n}\n\ninterface Slot {\n /** One layer per live table, oldest first; the newest is what the table side shows. */\n readonly tables: Map<object, Layer>;\n /** Explicit overrides, oldest first; the newest covers every table layer. */\n readonly overrides: Layer[];\n}\n\nconst lastOf = <T>(it: Iterable<T>): T | undefined => {\n let last: T | undefined;\n for (const v of it) last = v;\n return last;\n};\n\n/** A registry, optionally seeded with tables; each `add` and `override` returns its own release function. */\nexport function createIconRegistry(initial?: IconTable | readonly IconTable[]): IconRegistry {\n const slots = new Map<string, Slot>();\n // How many live tables hold each namespace, and whose it is while any do.\n const claims = new Map<string, { owner: string; count: number }>();\n const notify = createEmitter();\n let version = 0;\n let snapshot: { version: number; entries: readonly IconEntry[] } | null = null;\n const changed = () => {\n version++;\n notify.emit();\n };\n\n const slotFor = (key: string): Slot => {\n let slot = slots.get(key);\n if (!slot) slots.set(key, (slot = { tables: new Map(), overrides: [] }));\n return slot;\n };\n const prune = (key: string) => {\n const slot = slots.get(key);\n if (slot && slot.tables.size === 0 && slot.overrides.length === 0) slots.delete(key);\n };\n const live = (slot: Slot | undefined): Layer | undefined =>\n slot && (slot.overrides.at(-1) ?? lastOf(slot.tables.values()));\n\n const unclaim = (namespace: string) => {\n const held = claims.get(namespace);\n if (!held) return;\n if (held.count <= 1) claims.delete(namespace);\n else claims.set(namespace, { ...held, count: held.count - 1 });\n };\n\n const add = (tables: IconTable | readonly IconTable[]): (() => void) => {\n const list = Array.isArray(tables) ? tables : [tables as IconTable];\n // Check every claim, those within the batch included, before writing any: a refused batch registers nothing.\n const pending = new Map<string, string>();\n for (const t of list) {\n const owner = claims.get(t.namespace)?.owner ?? pending.get(t.namespace);\n if (owner !== undefined && owner !== t.owner) throw new IconNamespaceClaimedError(t.namespace, owner, t.owner);\n pending.set(t.namespace, t.owner);\n }\n const releases = list.map((t) => {\n const held = claims.get(t.namespace);\n claims.set(t.namespace, { owner: t.owner, count: (held?.count ?? 0) + 1 });\n const token = {};\n const keys = Object.keys(t.icons).map((name) => `${t.namespace}:${name}`);\n for (const key of keys) {\n slotFor(key).tables.set(token, { glyph: t.icons[key.slice(t.namespace.length + 1)]!, owner: t.owner });\n }\n let released = false;\n return () => {\n if (released) return;\n released = true;\n unclaim(t.namespace);\n for (const key of keys) {\n slots.get(key)?.tables.delete(token);\n prune(key);\n }\n };\n });\n changed();\n return () => {\n releases.forEach((r) => r());\n changed();\n };\n };\n\n const variants = createVariants((tables) => void add(tables), changed);\n if (initial) add(initial);\n\n return {\n get: (ref) => live(slots.get(ref))?.glyph,\n add,\n override(ref, glyph, source = OVERRIDE) {\n const layer: Layer = { glyph, owner: source };\n slotFor(ref).overrides.push(layer);\n changed();\n return () => {\n const slot = slots.get(ref);\n const i = slot ? slot.overrides.indexOf(layer) : -1;\n if (i === -1) return;\n slot!.overrides.splice(i, 1);\n prune(ref);\n changed();\n };\n },\n owner: (namespace) => claims.get(namespace)?.owner,\n entries() {\n if (snapshot?.version === version) return snapshot.entries;\n const entries: IconEntry[] = [];\n for (const [key, slot] of slots) {\n const top = live(slot)!;\n entries.push({ ref: key as IconRef, glyph: top.glyph, owner: top.owner, overridden: slot.overrides.length > 0 });\n }\n snapshot = { version, entries: Object.freeze(entries) };\n return snapshot.entries;\n },\n provideVariants: variants.provide,\n loadVariant: variants.load,\n variantState: variants.state,\n subscribe: notify.subscribe,\n getVersion: () => version,\n };\n}\n"]}
1
+ {"version":3,"sources":["../src/names.ts","../src/variants.ts","../src/registry.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["import type { QualifiedIconName } from './index.ts';\n\ndeclare const brand: unique symbol;\n\n/** A qualified icon name (`namespace:name`) that came from `icon()` or `toIconRef`. */\nexport type IconRef = string & { readonly [brand]: 'IconRef' };\n\nconst QUALIFIED = /^([^:\\s]+):([^:\\s]+)$/;\n\n/** `name` in `namespace`, unless it already names one. */\nexport function qualify(namespace: string, name: string): string {\n return name.includes(':') ? name : `${namespace}:${name}`;\n}\n\n/** The two halves of a qualified ref, or `undefined` for anything else. */\nexport function splitIconRef(ref: string): { namespace: string; name: string } | undefined {\n const m = QUALIFIED.exec(ref);\n return m ? { namespace: m[1]!, name: m[2]! } : undefined;\n}\n\n/** A string read at run time (a schema loaded as JSON) as a ref, when it is qualified. */\nexport function toIconRef(value: string | undefined): IconRef | undefined {\n return value !== undefined && QUALIFIED.test(value) ? (value as IconRef) : undefined;\n}\n\n/** A package's `icon()`: bare names resolve in `namespace` only. Generated into each package's `icons.gen.ts`. */\nexport function scopedIcon<Own extends string>(namespace: string) {\n return (name: Own | QualifiedIconName): IconRef => qualify(namespace, name) as IconRef;\n}\n","import { isDev } from '@weasel-js/registry';\nimport type { IconTable, IconVariantLoader } from './table';\n\n/** Where a named icon variant stands: no loader for it (`unknown`), a loader not yet run (`idle`), in flight, in, or failed. */\nexport type IconVariantState = 'unknown' | 'idle' | 'loading' | 'loaded' | 'failed';\n\n/** Loads each named variant at most once at a time; a failure leaves it retryable. */\nexport function createVariants(addTables: (tables: readonly IconTable[]) => void, changed: () => void) {\n const loaders = new Map<string, IconVariantLoader>();\n const states = new Map<string, IconVariantState>();\n const pending = new Map<string, Promise<void>>();\n\n const set = (name: string, state: IconVariantState) => {\n states.set(name, state);\n changed();\n };\n\n return {\n provide(next: Readonly<Record<string, IconVariantLoader>>): void {\n for (const [name, loader] of Object.entries(next)) {\n loaders.set(name, loader);\n if (!states.has(name)) states.set(name, 'idle');\n }\n changed();\n },\n state(name: string): IconVariantState {\n return states.get(name) ?? 'unknown';\n },\n load(name: string): Promise<void> {\n const loader = loaders.get(name);\n if (!loader || states.get(name) === 'loaded') return Promise.resolve();\n const inFlight = pending.get(name);\n if (inFlight) return inFlight;\n set(name, 'loading');\n const run = Promise.resolve()\n .then(loader)\n .then((mod) => {\n addTables(mod.default);\n set(name, 'loaded');\n })\n .catch((error: unknown) => {\n if (isDev()) console.error(`icon variant \"${name}\" failed to load`, error);\n set(name, 'failed');\n })\n .finally(() => pending.delete(name));\n pending.set(name, run);\n return run;\n },\n };\n}\n","import { createEmitter } from '@weasel-js/registry';\nimport type { IconRef } from './names';\nimport type { IconGlyph, IconTable, IconVariantLoader } from './table';\nimport { createVariants, type IconVariantState } from './variants';\n\nexport type { IconVariantState } from './variants';\n\n/** One icon as the registry reports it. */\nexport interface IconEntry {\n readonly ref: IconRef;\n readonly glyph: IconGlyph;\n readonly owner: string;\n /** Registered with `override`, over a table's glyph. */\n readonly overridden: boolean;\n}\n\n/** Thrown when a table claims a namespace another owner holds. */\nexport class IconNamespaceClaimedError extends Error {\n constructor(readonly namespace: string, readonly owner: string, readonly claimant: string) {\n super(`icon namespace \"${namespace}\" belongs to ${owner}; ${claimant} cannot register under it`);\n this.name = 'IconNamespaceClaimedError';\n }\n}\n\n/** Resolves icon refs to glyphs across registered tables and overrides, and reports who owns each namespace. */\nexport interface IconRegistry {\n get(ref: string): IconGlyph | undefined;\n add(tables: IconTable | readonly IconTable[]): () => void;\n override(ref: IconRef, glyph: IconGlyph, source?: string): () => void;\n owner(namespace: string): string | undefined;\n /** The same array until the registry next changes, so it is safe to read through `useSyncExternalStore`. */\n entries(): readonly IconEntry[];\n provideVariants(loaders: Readonly<Record<string, IconVariantLoader>>): void;\n loadVariant(name: string): Promise<void>;\n variantState(name: string): IconVariantState;\n subscribe(listener: () => void): () => void;\n getVersion(): number;\n}\n\nconst OVERRIDE = 'override';\n\ninterface Layer {\n readonly glyph: IconGlyph;\n readonly owner: string;\n}\n\ninterface Slot {\n /** One layer per live table, oldest first; the newest is what the table side shows. */\n readonly tables: Map<object, Layer>;\n /** Explicit overrides, oldest first; the newest covers every table layer. */\n readonly overrides: Layer[];\n}\n\nconst lastOf = <T>(it: Iterable<T>): T | undefined => {\n let last: T | undefined;\n for (const v of it) last = v;\n return last;\n};\n\n/** A registry, optionally seeded with tables; each `add` and `override` returns its own release function. */\nexport function createIconRegistry(initial?: IconTable | readonly IconTable[]): IconRegistry {\n const slots = new Map<string, Slot>();\n // How many live tables hold each namespace, and whose it is while any do.\n const claims = new Map<string, { owner: string; count: number }>();\n const notify = createEmitter();\n let version = 0;\n let snapshot: { version: number; entries: readonly IconEntry[] } | null = null;\n const changed = () => {\n version++;\n notify.emit();\n };\n\n const slotFor = (key: string): Slot => {\n let slot = slots.get(key);\n if (!slot) slots.set(key, (slot = { tables: new Map(), overrides: [] }));\n return slot;\n };\n const prune = (key: string) => {\n const slot = slots.get(key);\n if (slot && slot.tables.size === 0 && slot.overrides.length === 0) slots.delete(key);\n };\n const live = (slot: Slot | undefined): Layer | undefined =>\n slot && (slot.overrides.at(-1) ?? lastOf(slot.tables.values()));\n\n const unclaim = (namespace: string) => {\n const held = claims.get(namespace);\n if (!held) return;\n if (held.count <= 1) claims.delete(namespace);\n else claims.set(namespace, { ...held, count: held.count - 1 });\n };\n\n const add = (tables: IconTable | readonly IconTable[]): (() => void) => {\n const list = Array.isArray(tables) ? tables : [tables as IconTable];\n // Check every claim, those within the batch included, before writing any: a refused batch registers nothing.\n const pending = new Map<string, string>();\n for (const t of list) {\n const owner = claims.get(t.namespace)?.owner ?? pending.get(t.namespace);\n if (owner !== undefined && owner !== t.owner) throw new IconNamespaceClaimedError(t.namespace, owner, t.owner);\n pending.set(t.namespace, t.owner);\n }\n const releases = list.map((t) => {\n const held = claims.get(t.namespace);\n claims.set(t.namespace, { owner: t.owner, count: (held?.count ?? 0) + 1 });\n const token = {};\n const keys = Object.keys(t.icons).map((name) => `${t.namespace}:${name}`);\n for (const key of keys) {\n slotFor(key).tables.set(token, { glyph: t.icons[key.slice(t.namespace.length + 1)]!, owner: t.owner });\n }\n let released = false;\n return () => {\n if (released) return;\n released = true;\n unclaim(t.namespace);\n for (const key of keys) {\n slots.get(key)?.tables.delete(token);\n prune(key);\n }\n };\n });\n changed();\n return () => {\n releases.forEach((r) => r());\n changed();\n };\n };\n\n const variants = createVariants((tables) => void add(tables), changed);\n if (initial) add(initial);\n\n return {\n get: (ref) => live(slots.get(ref))?.glyph,\n add,\n override(ref, glyph, source = OVERRIDE) {\n const layer: Layer = { glyph, owner: source };\n slotFor(ref).overrides.push(layer);\n changed();\n return () => {\n const slot = slots.get(ref);\n const i = slot ? slot.overrides.indexOf(layer) : -1;\n if (i === -1) return;\n slot!.overrides.splice(i, 1);\n prune(ref);\n changed();\n };\n },\n owner: (namespace) => claims.get(namespace)?.owner,\n entries() {\n if (snapshot?.version === version) return snapshot.entries;\n const entries: IconEntry[] = [];\n for (const [key, slot] of slots) {\n const top = live(slot)!;\n entries.push({ ref: key as IconRef, glyph: top.glyph, owner: top.owner, overridden: slot.overrides.length > 0 });\n }\n snapshot = { version, entries: Object.freeze(entries) };\n return snapshot.entries;\n },\n provideVariants: variants.provide,\n loadVariant: variants.load,\n variantState: variants.state,\n subscribe: notify.subscribe,\n getVersion: () => version,\n };\n}\n"]}
@@ -0,0 +1,6 @@
1
+ import { a as IconTable } from './table-DxbFTTzV.js';
2
+
3
+ /** Every glyph this package ships, under the `shape` namespace. */
4
+ declare const icons: IconTable;
5
+
6
+ export { icons };
package/dist/shapes.js ADDED
@@ -0,0 +1,254 @@
1
+ // src/icons.table.json
2
+ var icons_table_default = {
3
+ namespace: "shape",
4
+ owner: "@weasel-js/icons",
5
+ icons: {
6
+ triangle: {
7
+ body: '<path d="M10 3.59L17.4 16.41L2.6 16.41Z" stroke-linejoin="miter"/>',
8
+ fill: '<path d="M10 3.59L17.4 16.41L2.6 16.41Z" fill="currentColor" stroke="none"/>',
9
+ group: "Shapes",
10
+ tags: []
11
+ },
12
+ rightTriangle: {
13
+ body: '<path d="M2.6 17.4L2.6 2.6L17.4 17.4Z" stroke-linejoin="miter"/>',
14
+ fill: '<path d="M2.6 17.4L2.6 2.6L17.4 17.4Z" fill="currentColor" stroke="none"/>',
15
+ group: "Shapes",
16
+ tags: []
17
+ },
18
+ square: {
19
+ body: '<path d="M2.6 2.6L17.4 2.6L17.4 17.4L2.6 17.4Z" stroke-linejoin="miter"/>',
20
+ fill: '<path d="M2.6 2.6L17.4 2.6L17.4 17.4L2.6 17.4Z" fill="currentColor" stroke="none"/>',
21
+ group: "Shapes",
22
+ tags: []
23
+ },
24
+ rectangle: {
25
+ body: '<path d="M2.6 5.37L17.4 5.37L17.4 14.63L2.6 14.63Z" stroke-linejoin="miter"/>',
26
+ fill: '<path d="M2.6 5.37L17.4 5.37L17.4 14.63L2.6 14.63Z" fill="currentColor" stroke="none"/>',
27
+ group: "Shapes",
28
+ tags: []
29
+ },
30
+ diamond: {
31
+ body: '<path d="M10 2.6L17.4 10L10 17.4L2.6 10Z" stroke-linejoin="miter"/>',
32
+ fill: '<path d="M10 2.6L17.4 10L10 17.4L2.6 10Z" fill="currentColor" stroke="none"/>',
33
+ group: "Shapes",
34
+ tags: []
35
+ },
36
+ parallelogram: {
37
+ body: '<path d="M5.35 4.71L17.4 4.71L14.65 15.29L2.6 15.29Z" stroke-linejoin="miter"/>',
38
+ fill: '<path d="M5.35 4.71L17.4 4.71L14.65 15.29L2.6 15.29Z" fill="currentColor" stroke="none"/>',
39
+ group: "Shapes",
40
+ tags: []
41
+ },
42
+ trapezoid: {
43
+ body: '<path d="M5.35 4.71L14.65 4.71L17.4 15.29L2.6 15.29Z" stroke-linejoin="miter"/>',
44
+ fill: '<path d="M5.35 4.71L14.65 4.71L17.4 15.29L2.6 15.29Z" fill="currentColor" stroke="none"/>',
45
+ group: "Shapes",
46
+ tags: []
47
+ },
48
+ trapezoidSide: {
49
+ body: '<path d="M2.6 7.69L17.4 5.38L17.4 14.63L2.6 12.31Z" stroke-linejoin="miter"/>',
50
+ fill: '<path d="M2.6 7.69L17.4 5.38L17.4 14.63L2.6 12.31Z" fill="currentColor" stroke="none"/>',
51
+ group: "Shapes",
52
+ tags: []
53
+ },
54
+ kite: {
55
+ body: '<path d="M10 2.6L16.43 7.75L10 17.4L3.57 7.75Z" stroke-linejoin="miter"/>',
56
+ fill: '<path d="M10 2.6L16.43 7.75L10 17.4L3.57 7.75Z" fill="currentColor" stroke="none"/>',
57
+ group: "Shapes",
58
+ tags: []
59
+ },
60
+ pentagon: {
61
+ body: '<path d="M10 2.96L17.4 8.34L14.57 17.04L5.43 17.04L2.6 8.34Z" stroke-linejoin="miter"/>',
62
+ fill: '<path d="M10 2.96L17.4 8.34L14.57 17.04L5.43 17.04L2.6 8.34Z" fill="currentColor" stroke="none"/>',
63
+ group: "Shapes",
64
+ tags: []
65
+ },
66
+ hexagon: {
67
+ body: '<path d="M10 2.6L16.41 6.3L16.41 13.7L10 17.4L3.59 13.7L3.59 6.3Z" stroke-linejoin="miter"/>',
68
+ fill: '<path d="M10 2.6L16.41 6.3L16.41 13.7L10 17.4L3.59 13.7L3.59 6.3Z" fill="currentColor" stroke="none"/>',
69
+ group: "Shapes",
70
+ tags: []
71
+ },
72
+ hexagonFlat: {
73
+ body: '<path d="M17.4 10L13.7 16.41L6.3 16.41L2.6 10L6.3 3.59L13.7 3.59Z" stroke-linejoin="miter"/>',
74
+ fill: '<path d="M17.4 10L13.7 16.41L6.3 16.41L2.6 10L6.3 3.59L13.7 3.59Z" fill="currentColor" stroke="none"/>',
75
+ group: "Shapes",
76
+ tags: []
77
+ },
78
+ heptagon: {
79
+ body: '<path d="M10 2.79L15.93 5.64L17.4 12.06L13.29 17.21L6.71 17.21L2.6 12.06L4.07 5.64Z" stroke-linejoin="miter"/>',
80
+ fill: '<path d="M10 2.79L15.93 5.64L17.4 12.06L13.29 17.21L6.71 17.21L2.6 12.06L4.07 5.64Z" fill="currentColor" stroke="none"/>',
81
+ group: "Shapes",
82
+ tags: []
83
+ },
84
+ octagon: {
85
+ body: '<path d="M13.07 2.6L17.4 6.93L17.4 13.07L13.07 17.4L6.93 17.4L2.6 13.07L2.6 6.93L6.93 2.6Z" stroke-linejoin="miter"/>',
86
+ fill: '<path d="M13.07 2.6L17.4 6.93L17.4 13.07L13.07 17.4L6.93 17.4L2.6 13.07L2.6 6.93L6.93 2.6Z" fill="currentColor" stroke="none"/>',
87
+ group: "Shapes",
88
+ tags: []
89
+ },
90
+ decagon: {
91
+ body: '<path d="M10 2.6L14.35 4.01L17.04 7.71L17.04 12.29L14.35 15.99L10 17.4L5.65 15.99L2.96 12.29L2.96 7.71L5.65 4.01Z" stroke-linejoin="miter"/>',
92
+ fill: '<path d="M10 2.6L14.35 4.01L17.04 7.71L17.04 12.29L14.35 15.99L10 17.4L5.65 15.99L2.96 12.29L2.96 7.71L5.65 4.01Z" fill="currentColor" stroke="none"/>',
93
+ group: "Shapes",
94
+ tags: []
95
+ },
96
+ dodecagon: {
97
+ body: '<path d="M10 2.6L13.7 3.59L16.41 6.3L17.4 10L16.41 13.7L13.7 16.41L10 17.4L6.3 16.41L3.59 13.7L2.6 10L3.59 6.3L6.3 3.59Z" stroke-linejoin="miter"/>',
98
+ fill: '<path d="M10 2.6L13.7 3.59L16.41 6.3L17.4 10L16.41 13.7L13.7 16.41L10 17.4L6.3 16.41L3.59 13.7L2.6 10L3.59 6.3L6.3 3.59Z" fill="currentColor" stroke="none"/>',
99
+ group: "Shapes",
100
+ tags: []
101
+ },
102
+ cross: {
103
+ body: '<path d="M7.63 2.6L12.37 2.6L12.37 7.63L17.4 7.63L17.4 12.37L12.37 12.37L12.37 17.4L7.63 17.4L7.63 12.37L2.6 12.37L2.6 7.63L7.63 7.63Z" stroke-linejoin="miter"/>',
104
+ fill: '<path d="M7.63 2.6L12.37 2.6L12.37 7.63L17.4 7.63L17.4 12.37L12.37 12.37L12.37 17.4L7.63 17.4L7.63 12.37L2.6 12.37L2.6 7.63L7.63 7.63Z" fill="currentColor" stroke="none"/>',
105
+ group: "Shapes",
106
+ tags: []
107
+ },
108
+ lShape: {
109
+ body: '<path d="M2.6 2.6L8.82 2.6L8.82 11.78L17.4 11.78L17.4 17.4L2.6 17.4Z" stroke-linejoin="miter"/>',
110
+ fill: '<path d="M2.6 2.6L8.82 2.6L8.82 11.78L17.4 11.78L17.4 17.4L2.6 17.4Z" fill="currentColor" stroke="none"/>',
111
+ group: "Shapes",
112
+ tags: []
113
+ },
114
+ chevron: {
115
+ body: '<path d="M2.6 4.38L10 10.59L17.4 4.38L17.4 9.41L10 15.62L2.6 9.41Z" stroke-linejoin="miter"/>',
116
+ fill: '<path d="M2.6 4.38L10 10.59L17.4 4.38L17.4 9.41L10 15.62L2.6 9.41Z" fill="currentColor" stroke="none"/>',
117
+ group: "Shapes",
118
+ tags: []
119
+ },
120
+ star: {
121
+ body: '<path d="M10 2.96L12.2 7.72L17.4 8.34L13.55 11.9L14.57 17.04L10 14.48L5.43 17.04L6.45 11.9L2.6 8.34L7.8 7.72Z" stroke-linejoin="miter"/>',
122
+ fill: '<path d="M10 2.96L12.2 7.72L17.4 8.34L13.55 11.9L14.57 17.04L10 14.48L5.43 17.04L6.45 11.9L2.6 8.34L7.8 7.72Z" fill="currentColor" stroke="none"/>',
123
+ group: "Shapes",
124
+ tags: []
125
+ },
126
+ star4: {
127
+ body: '<path d="M10 2.6L11.99 8.01L17.4 10L11.99 11.99L10 17.4L8.01 11.99L2.6 10L8.01 8.01Z" stroke-linejoin="miter"/>',
128
+ fill: '<path d="M10 2.6L11.99 8.01L17.4 10L11.99 11.99L10 17.4L8.01 11.99L2.6 10L8.01 8.01Z" fill="currentColor" stroke="none"/>',
129
+ group: "Shapes",
130
+ tags: []
131
+ },
132
+ star6: {
133
+ body: '<path d="M10 2.6L12.07 6.41L16.41 6.3L14.14 10L16.41 13.7L12.07 13.59L10 17.4L7.93 13.59L3.59 13.7L5.86 10L3.59 6.3L7.93 6.41Z" stroke-linejoin="miter"/>',
134
+ fill: '<path d="M10 2.6L12.07 6.41L16.41 6.3L14.14 10L16.41 13.7L12.07 13.59L10 17.4L7.93 13.59L3.59 13.7L5.86 10L3.59 6.3L7.93 6.41Z" fill="currentColor" stroke="none"/>',
135
+ group: "Shapes",
136
+ tags: []
137
+ },
138
+ star8: {
139
+ body: '<path d="M10 2.6L11.76 5.76L15.23 4.77L14.24 8.24L17.4 10L14.24 11.76L15.23 15.23L11.76 14.24L10 17.4L8.24 14.24L4.77 15.23L5.76 11.76L2.6 10L5.76 8.24L4.77 4.77L8.24 5.76Z" stroke-linejoin="miter"/>',
140
+ fill: '<path d="M10 2.6L11.76 5.76L15.23 4.77L14.24 8.24L17.4 10L14.24 11.76L15.23 15.23L11.76 14.24L10 17.4L8.24 14.24L4.77 15.23L5.76 11.76L2.6 10L5.76 8.24L4.77 4.77L8.24 5.76Z" fill="currentColor" stroke="none"/>',
141
+ group: "Shapes",
142
+ tags: []
143
+ },
144
+ pentagram: {
145
+ body: '<path d="M10 2.96L14.57 17.04L2.6 8.34L17.4 8.34L5.43 17.04Z" stroke-linejoin="miter"/>',
146
+ fill: '<path d="M10 2.96L14.57 17.04L2.6 8.34L17.4 8.34L5.43 17.04Z" fill="currentColor" stroke="none" fill-rule="evenodd"/>',
147
+ group: "Shapes",
148
+ tags: []
149
+ },
150
+ circle: {
151
+ body: '<path d="M2.6 10A7.4 7.4 0 1 1 17.4 10A7.4 7.4 0 1 1 2.6 10Z"/>',
152
+ fill: '<path d="M2.6 10A7.4 7.4 0 1 1 17.4 10A7.4 7.4 0 1 1 2.6 10Z" fill="currentColor" stroke="none"/>',
153
+ group: "Shapes",
154
+ tags: []
155
+ },
156
+ ellipse: {
157
+ body: '<path d="M2.6 10A7.4 4.74 0 1 1 17.4 10A7.4 4.74 0 1 1 2.6 10Z"/>',
158
+ fill: '<path d="M2.6 10A7.4 4.74 0 1 1 17.4 10A7.4 4.74 0 1 1 2.6 10Z" fill="currentColor" stroke="none"/>',
159
+ group: "Shapes",
160
+ tags: []
161
+ },
162
+ semicircle: {
163
+ body: '<path d="M2.6 13.7A7.4 7.4 0 0 1 17.4 13.7Z"/>',
164
+ fill: '<path d="M2.6 13.7A7.4 7.4 0 0 1 17.4 13.7Z" fill="currentColor" stroke="none"/>',
165
+ group: "Shapes",
166
+ tags: []
167
+ },
168
+ quarter: {
169
+ body: '<path d="M2.6 17.4V2.6A14.8 14.8 0 0 1 17.4 17.4Z"/>',
170
+ fill: '<path d="M2.6 17.4V2.6A14.8 14.8 0 0 1 17.4 17.4Z" fill="currentColor" stroke="none"/>',
171
+ group: "Shapes",
172
+ tags: []
173
+ },
174
+ stadium: {
175
+ body: '<path d="M6.74 5.86H13.26A4.14 4.14 0 0 1 13.26 14.14H6.74A4.14 4.14 0 0 1 6.74 5.86Z"/>',
176
+ fill: '<path d="M6.74 5.86H13.26A4.14 4.14 0 0 1 13.26 14.14H6.74A4.14 4.14 0 0 1 6.74 5.86Z" fill="currentColor" stroke="none"/>',
177
+ group: "Shapes",
178
+ tags: []
179
+ },
180
+ roundedSquare: {
181
+ body: '<path d="M6 2.6H14A3.4 3.4 0 0 1 17.4 6V14A3.4 3.4 0 0 1 14 17.4H6A3.4 3.4 0 0 1 2.6 14V6A3.4 3.4 0 0 1 6 2.6Z"/>',
182
+ fill: '<path d="M6 2.6H14A3.4 3.4 0 0 1 17.4 6V14A3.4 3.4 0 0 1 14 17.4H6A3.4 3.4 0 0 1 2.6 14V6A3.4 3.4 0 0 1 6 2.6Z" fill="currentColor" stroke="none"/>',
183
+ group: "Shapes",
184
+ tags: []
185
+ },
186
+ ring: {
187
+ body: '<path d="M2.6 10A7.4 7.4 0 1 1 17.4 10A7.4 7.4 0 1 1 2.6 10ZM6.15 10A3.85 3.85 0 1 0 13.85 10A3.85 3.85 0 1 0 6.15 10Z"/>',
188
+ fill: '<path d="M2.6 10A7.4 7.4 0 1 1 17.4 10A7.4 7.4 0 1 1 2.6 10ZM6.15 10A3.85 3.85 0 1 0 13.85 10A3.85 3.85 0 1 0 6.15 10Z" fill="currentColor" stroke="none" fill-rule="evenodd"/>',
189
+ group: "Shapes",
190
+ tags: []
191
+ },
192
+ crescent: {
193
+ body: '<path d="M6.3 2.6A7.4 7.4 0 1 1 6.3 17.4A8.51 8.51 0 0 0 6.3 2.6Z"/>',
194
+ fill: '<path d="M6.3 2.6A7.4 7.4 0 1 1 6.3 17.4A8.51 8.51 0 0 0 6.3 2.6Z" fill="currentColor" stroke="none"/>',
195
+ group: "Shapes",
196
+ tags: []
197
+ },
198
+ lens: {
199
+ body: '<path d="M10 2.6A9.99 9.99 0 0 1 10 17.4A9.99 9.99 0 0 1 10 2.6Z"/>',
200
+ fill: '<path d="M10 2.6A9.99 9.99 0 0 1 10 17.4A9.99 9.99 0 0 1 10 2.6Z" fill="currentColor" stroke="none"/>',
201
+ group: "Shapes",
202
+ tags: []
203
+ },
204
+ sector: {
205
+ body: '<path d="M10 14.63L2.6 9.06A9.27 9.27 0 0 1 17.4 9.06Z"/>',
206
+ fill: '<path d="M10 14.63L2.6 9.06A9.27 9.27 0 0 1 17.4 9.06Z" fill="currentColor" stroke="none"/>',
207
+ group: "Shapes",
208
+ tags: []
209
+ },
210
+ segment: {
211
+ body: '<path d="M2.6 12.59A7.88 7.88 0 0 1 17.4 12.59Z"/>',
212
+ fill: '<path d="M2.6 12.59A7.88 7.88 0 0 1 17.4 12.59Z" fill="currentColor" stroke="none"/>',
213
+ group: "Shapes",
214
+ tags: []
215
+ },
216
+ arch: {
217
+ body: '<path d="M2.6 17.4V10A7.4 7.4 0 0 1 17.4 10V17.4Z"/>',
218
+ fill: '<path d="M2.6 17.4V10A7.4 7.4 0 0 1 17.4 10V17.4Z" fill="currentColor" stroke="none"/>',
219
+ group: "Shapes",
220
+ tags: []
221
+ },
222
+ teardrop: {
223
+ body: '<path d="M10 2.6L5.9 10.75A4.59 4.59 0 1 0 14.1 10.75Z"/>',
224
+ fill: '<path d="M10 2.6L5.9 10.75A4.59 4.59 0 1 0 14.1 10.75Z" fill="currentColor" stroke="none"/>',
225
+ group: "Shapes",
226
+ tags: []
227
+ },
228
+ egg: {
229
+ body: '<path d="M10 2.6C14.59 2.6 16.07 9.26 16.07 12.22C16.07 15.77 13.26 17.4 10 17.4C6.74 17.4 3.93 15.77 3.93 12.22C3.93 9.26 5.41 2.6 10 2.6Z"/>',
230
+ fill: '<path d="M10 2.6C14.59 2.6 16.07 9.26 16.07 12.22C16.07 15.77 13.26 17.4 10 17.4C6.74 17.4 3.93 15.77 3.93 12.22C3.93 9.26 5.41 2.6 10 2.6Z" fill="currentColor" stroke="none"/>',
231
+ group: "Shapes",
232
+ tags: []
233
+ },
234
+ heart: {
235
+ body: '<path d="M10 6.51L10.01 6.42L10.05 6.16L10.18 5.76L10.41 5.26L10.78 4.72L11.27 4.2L11.89 3.76L12.62 3.45L13.42 3.31L14.25 3.36L15.08 3.61L15.84 4.03L16.48 4.62L16.98 5.33L17.29 6.12L17.4 6.97L17.29 7.84L16.98 8.7L16.48 9.54L15.84 10.34L15.08 11.12L14.25 11.86L13.42 12.57L12.62 13.27L11.89 13.93L11.27 14.56L10.78 15.14L10.41 15.66L10.18 16.09L10.05 16.41L10.01 16.62L10 16.69L9.99 16.62L9.95 16.41L9.82 16.09L9.59 15.66L9.22 15.14L8.73 14.56L8.11 13.93L7.38 13.27L6.58 12.57L5.75 11.86L4.92 11.12L4.16 10.34L3.52 9.54L3.02 8.7L2.71 7.84L2.6 6.97L2.71 6.12L3.02 5.33L3.52 4.62L4.16 4.03L4.92 3.61L5.75 3.36L6.58 3.31L7.38 3.45L8.11 3.76L8.73 4.2L9.22 4.72L9.59 5.26L9.82 5.76L9.95 6.16L9.99 6.42L10 6.51Z"/>',
236
+ fill: '<path d="M10 6.51L10.01 6.42L10.05 6.16L10.18 5.76L10.41 5.26L10.78 4.72L11.27 4.2L11.89 3.76L12.62 3.45L13.42 3.31L14.25 3.36L15.08 3.61L15.84 4.03L16.48 4.62L16.98 5.33L17.29 6.12L17.4 6.97L17.29 7.84L16.98 8.7L16.48 9.54L15.84 10.34L15.08 11.12L14.25 11.86L13.42 12.57L12.62 13.27L11.89 13.93L11.27 14.56L10.78 15.14L10.41 15.66L10.18 16.09L10.05 16.41L10.01 16.62L10 16.69L9.99 16.62L9.95 16.41L9.82 16.09L9.59 15.66L9.22 15.14L8.73 14.56L8.11 13.93L7.38 13.27L6.58 12.57L5.75 11.86L4.92 11.12L4.16 10.34L3.52 9.54L3.02 8.7L2.71 7.84L2.6 6.97L2.71 6.12L3.02 5.33L3.52 4.62L4.16 4.03L4.92 3.61L5.75 3.36L6.58 3.31L7.38 3.45L8.11 3.76L8.73 4.2L9.22 4.72L9.59 5.26L9.82 5.76L9.95 6.16L9.99 6.42L10 6.51Z" fill="currentColor" stroke="none"/>',
237
+ group: "Shapes",
238
+ tags: []
239
+ },
240
+ angle: {
241
+ body: '<path d="M17.4 16.34L2.6 16.34L14.8 3.66M6.12 16.34A3.52 3.52 0 0 0 5.04 13.8"/>',
242
+ fill: '<path d="M2.6 16.34L17.4 16.34L14.8 3.66Z" fill="currentColor" stroke="none"/>',
243
+ group: "Shapes",
244
+ tags: []
245
+ }
246
+ }
247
+ };
248
+
249
+ // src/icons.table.ts
250
+ var icons = icons_table_default;
251
+
252
+ export { icons };
253
+ //# sourceMappingURL=shapes.js.map
254
+ //# sourceMappingURL=shapes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/icons.table.json","../src/icons.table.ts"],"names":[],"mappings":"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","file":"shapes.js","sourcesContent":["{\n \"namespace\": \"shape\",\n \"owner\": \"@weasel-js/icons\",\n \"icons\": {\n \"triangle\": {\n \"body\": \"<path d=\\\"M10 3.59L17.4 16.41L2.6 16.41Z\\\" stroke-linejoin=\\\"miter\\\"/>\",\n \"fill\": \"<path d=\\\"M10 3.59L17.4 16.41L2.6 16.41Z\\\" fill=\\\"currentColor\\\" stroke=\\\"none\\\"/>\",\n \"group\": \"Shapes\",\n \"tags\": []\n },\n \"rightTriangle\": {\n \"body\": \"<path d=\\\"M2.6 17.4L2.6 2.6L17.4 17.4Z\\\" stroke-linejoin=\\\"miter\\\"/>\",\n \"fill\": \"<path d=\\\"M2.6 17.4L2.6 2.6L17.4 17.4Z\\\" fill=\\\"currentColor\\\" stroke=\\\"none\\\"/>\",\n \"group\": \"Shapes\",\n \"tags\": []\n },\n \"square\": {\n \"body\": \"<path d=\\\"M2.6 2.6L17.4 2.6L17.4 17.4L2.6 17.4Z\\\" stroke-linejoin=\\\"miter\\\"/>\",\n \"fill\": \"<path d=\\\"M2.6 2.6L17.4 2.6L17.4 17.4L2.6 17.4Z\\\" fill=\\\"currentColor\\\" stroke=\\\"none\\\"/>\",\n \"group\": \"Shapes\",\n \"tags\": []\n },\n \"rectangle\": {\n \"body\": \"<path d=\\\"M2.6 5.37L17.4 5.37L17.4 14.63L2.6 14.63Z\\\" stroke-linejoin=\\\"miter\\\"/>\",\n \"fill\": \"<path d=\\\"M2.6 5.37L17.4 5.37L17.4 14.63L2.6 14.63Z\\\" fill=\\\"currentColor\\\" stroke=\\\"none\\\"/>\",\n \"group\": \"Shapes\",\n \"tags\": []\n },\n \"diamond\": {\n \"body\": \"<path d=\\\"M10 2.6L17.4 10L10 17.4L2.6 10Z\\\" stroke-linejoin=\\\"miter\\\"/>\",\n \"fill\": \"<path d=\\\"M10 2.6L17.4 10L10 17.4L2.6 10Z\\\" fill=\\\"currentColor\\\" stroke=\\\"none\\\"/>\",\n \"group\": \"Shapes\",\n \"tags\": []\n },\n \"parallelogram\": {\n \"body\": \"<path d=\\\"M5.35 4.71L17.4 4.71L14.65 15.29L2.6 15.29Z\\\" stroke-linejoin=\\\"miter\\\"/>\",\n \"fill\": \"<path d=\\\"M5.35 4.71L17.4 4.71L14.65 15.29L2.6 15.29Z\\\" fill=\\\"currentColor\\\" stroke=\\\"none\\\"/>\",\n \"group\": \"Shapes\",\n \"tags\": []\n },\n \"trapezoid\": {\n \"body\": \"<path d=\\\"M5.35 4.71L14.65 4.71L17.4 15.29L2.6 15.29Z\\\" stroke-linejoin=\\\"miter\\\"/>\",\n \"fill\": \"<path d=\\\"M5.35 4.71L14.65 4.71L17.4 15.29L2.6 15.29Z\\\" fill=\\\"currentColor\\\" stroke=\\\"none\\\"/>\",\n \"group\": \"Shapes\",\n \"tags\": []\n },\n \"trapezoidSide\": {\n \"body\": \"<path d=\\\"M2.6 7.69L17.4 5.38L17.4 14.63L2.6 12.31Z\\\" stroke-linejoin=\\\"miter\\\"/>\",\n \"fill\": \"<path d=\\\"M2.6 7.69L17.4 5.38L17.4 14.63L2.6 12.31Z\\\" fill=\\\"currentColor\\\" stroke=\\\"none\\\"/>\",\n \"group\": \"Shapes\",\n \"tags\": []\n },\n \"kite\": {\n \"body\": \"<path d=\\\"M10 2.6L16.43 7.75L10 17.4L3.57 7.75Z\\\" stroke-linejoin=\\\"miter\\\"/>\",\n \"fill\": \"<path d=\\\"M10 2.6L16.43 7.75L10 17.4L3.57 7.75Z\\\" fill=\\\"currentColor\\\" stroke=\\\"none\\\"/>\",\n \"group\": \"Shapes\",\n \"tags\": []\n },\n \"pentagon\": {\n \"body\": \"<path d=\\\"M10 2.96L17.4 8.34L14.57 17.04L5.43 17.04L2.6 8.34Z\\\" stroke-linejoin=\\\"miter\\\"/>\",\n \"fill\": \"<path d=\\\"M10 2.96L17.4 8.34L14.57 17.04L5.43 17.04L2.6 8.34Z\\\" fill=\\\"currentColor\\\" stroke=\\\"none\\\"/>\",\n \"group\": \"Shapes\",\n \"tags\": []\n },\n \"hexagon\": {\n \"body\": \"<path d=\\\"M10 2.6L16.41 6.3L16.41 13.7L10 17.4L3.59 13.7L3.59 6.3Z\\\" stroke-linejoin=\\\"miter\\\"/>\",\n \"fill\": \"<path d=\\\"M10 2.6L16.41 6.3L16.41 13.7L10 17.4L3.59 13.7L3.59 6.3Z\\\" fill=\\\"currentColor\\\" stroke=\\\"none\\\"/>\",\n \"group\": \"Shapes\",\n \"tags\": []\n },\n \"hexagonFlat\": {\n \"body\": \"<path d=\\\"M17.4 10L13.7 16.41L6.3 16.41L2.6 10L6.3 3.59L13.7 3.59Z\\\" stroke-linejoin=\\\"miter\\\"/>\",\n \"fill\": \"<path d=\\\"M17.4 10L13.7 16.41L6.3 16.41L2.6 10L6.3 3.59L13.7 3.59Z\\\" fill=\\\"currentColor\\\" stroke=\\\"none\\\"/>\",\n \"group\": \"Shapes\",\n \"tags\": []\n },\n \"heptagon\": {\n \"body\": \"<path d=\\\"M10 2.79L15.93 5.64L17.4 12.06L13.29 17.21L6.71 17.21L2.6 12.06L4.07 5.64Z\\\" stroke-linejoin=\\\"miter\\\"/>\",\n \"fill\": \"<path d=\\\"M10 2.79L15.93 5.64L17.4 12.06L13.29 17.21L6.71 17.21L2.6 12.06L4.07 5.64Z\\\" fill=\\\"currentColor\\\" stroke=\\\"none\\\"/>\",\n \"group\": \"Shapes\",\n \"tags\": []\n },\n \"octagon\": {\n \"body\": \"<path d=\\\"M13.07 2.6L17.4 6.93L17.4 13.07L13.07 17.4L6.93 17.4L2.6 13.07L2.6 6.93L6.93 2.6Z\\\" stroke-linejoin=\\\"miter\\\"/>\",\n \"fill\": \"<path d=\\\"M13.07 2.6L17.4 6.93L17.4 13.07L13.07 17.4L6.93 17.4L2.6 13.07L2.6 6.93L6.93 2.6Z\\\" fill=\\\"currentColor\\\" stroke=\\\"none\\\"/>\",\n \"group\": \"Shapes\",\n \"tags\": []\n },\n \"decagon\": {\n \"body\": \"<path d=\\\"M10 2.6L14.35 4.01L17.04 7.71L17.04 12.29L14.35 15.99L10 17.4L5.65 15.99L2.96 12.29L2.96 7.71L5.65 4.01Z\\\" stroke-linejoin=\\\"miter\\\"/>\",\n \"fill\": \"<path d=\\\"M10 2.6L14.35 4.01L17.04 7.71L17.04 12.29L14.35 15.99L10 17.4L5.65 15.99L2.96 12.29L2.96 7.71L5.65 4.01Z\\\" fill=\\\"currentColor\\\" stroke=\\\"none\\\"/>\",\n \"group\": \"Shapes\",\n \"tags\": []\n },\n \"dodecagon\": {\n \"body\": \"<path d=\\\"M10 2.6L13.7 3.59L16.41 6.3L17.4 10L16.41 13.7L13.7 16.41L10 17.4L6.3 16.41L3.59 13.7L2.6 10L3.59 6.3L6.3 3.59Z\\\" stroke-linejoin=\\\"miter\\\"/>\",\n \"fill\": \"<path d=\\\"M10 2.6L13.7 3.59L16.41 6.3L17.4 10L16.41 13.7L13.7 16.41L10 17.4L6.3 16.41L3.59 13.7L2.6 10L3.59 6.3L6.3 3.59Z\\\" fill=\\\"currentColor\\\" stroke=\\\"none\\\"/>\",\n \"group\": \"Shapes\",\n \"tags\": []\n },\n \"cross\": {\n \"body\": \"<path d=\\\"M7.63 2.6L12.37 2.6L12.37 7.63L17.4 7.63L17.4 12.37L12.37 12.37L12.37 17.4L7.63 17.4L7.63 12.37L2.6 12.37L2.6 7.63L7.63 7.63Z\\\" stroke-linejoin=\\\"miter\\\"/>\",\n \"fill\": \"<path d=\\\"M7.63 2.6L12.37 2.6L12.37 7.63L17.4 7.63L17.4 12.37L12.37 12.37L12.37 17.4L7.63 17.4L7.63 12.37L2.6 12.37L2.6 7.63L7.63 7.63Z\\\" fill=\\\"currentColor\\\" stroke=\\\"none\\\"/>\",\n \"group\": \"Shapes\",\n \"tags\": []\n },\n \"lShape\": {\n \"body\": \"<path d=\\\"M2.6 2.6L8.82 2.6L8.82 11.78L17.4 11.78L17.4 17.4L2.6 17.4Z\\\" stroke-linejoin=\\\"miter\\\"/>\",\n \"fill\": \"<path d=\\\"M2.6 2.6L8.82 2.6L8.82 11.78L17.4 11.78L17.4 17.4L2.6 17.4Z\\\" fill=\\\"currentColor\\\" stroke=\\\"none\\\"/>\",\n \"group\": \"Shapes\",\n \"tags\": []\n },\n \"chevron\": {\n \"body\": \"<path d=\\\"M2.6 4.38L10 10.59L17.4 4.38L17.4 9.41L10 15.62L2.6 9.41Z\\\" stroke-linejoin=\\\"miter\\\"/>\",\n \"fill\": \"<path d=\\\"M2.6 4.38L10 10.59L17.4 4.38L17.4 9.41L10 15.62L2.6 9.41Z\\\" fill=\\\"currentColor\\\" stroke=\\\"none\\\"/>\",\n \"group\": \"Shapes\",\n \"tags\": []\n },\n \"star\": {\n \"body\": \"<path d=\\\"M10 2.96L12.2 7.72L17.4 8.34L13.55 11.9L14.57 17.04L10 14.48L5.43 17.04L6.45 11.9L2.6 8.34L7.8 7.72Z\\\" stroke-linejoin=\\\"miter\\\"/>\",\n \"fill\": \"<path d=\\\"M10 2.96L12.2 7.72L17.4 8.34L13.55 11.9L14.57 17.04L10 14.48L5.43 17.04L6.45 11.9L2.6 8.34L7.8 7.72Z\\\" fill=\\\"currentColor\\\" stroke=\\\"none\\\"/>\",\n \"group\": \"Shapes\",\n \"tags\": []\n },\n \"star4\": {\n \"body\": \"<path d=\\\"M10 2.6L11.99 8.01L17.4 10L11.99 11.99L10 17.4L8.01 11.99L2.6 10L8.01 8.01Z\\\" stroke-linejoin=\\\"miter\\\"/>\",\n \"fill\": \"<path d=\\\"M10 2.6L11.99 8.01L17.4 10L11.99 11.99L10 17.4L8.01 11.99L2.6 10L8.01 8.01Z\\\" fill=\\\"currentColor\\\" stroke=\\\"none\\\"/>\",\n \"group\": \"Shapes\",\n \"tags\": []\n },\n \"star6\": {\n \"body\": \"<path d=\\\"M10 2.6L12.07 6.41L16.41 6.3L14.14 10L16.41 13.7L12.07 13.59L10 17.4L7.93 13.59L3.59 13.7L5.86 10L3.59 6.3L7.93 6.41Z\\\" stroke-linejoin=\\\"miter\\\"/>\",\n \"fill\": \"<path d=\\\"M10 2.6L12.07 6.41L16.41 6.3L14.14 10L16.41 13.7L12.07 13.59L10 17.4L7.93 13.59L3.59 13.7L5.86 10L3.59 6.3L7.93 6.41Z\\\" fill=\\\"currentColor\\\" stroke=\\\"none\\\"/>\",\n \"group\": \"Shapes\",\n \"tags\": []\n },\n \"star8\": {\n \"body\": \"<path d=\\\"M10 2.6L11.76 5.76L15.23 4.77L14.24 8.24L17.4 10L14.24 11.76L15.23 15.23L11.76 14.24L10 17.4L8.24 14.24L4.77 15.23L5.76 11.76L2.6 10L5.76 8.24L4.77 4.77L8.24 5.76Z\\\" stroke-linejoin=\\\"miter\\\"/>\",\n \"fill\": \"<path d=\\\"M10 2.6L11.76 5.76L15.23 4.77L14.24 8.24L17.4 10L14.24 11.76L15.23 15.23L11.76 14.24L10 17.4L8.24 14.24L4.77 15.23L5.76 11.76L2.6 10L5.76 8.24L4.77 4.77L8.24 5.76Z\\\" fill=\\\"currentColor\\\" stroke=\\\"none\\\"/>\",\n \"group\": \"Shapes\",\n \"tags\": []\n },\n \"pentagram\": {\n \"body\": \"<path d=\\\"M10 2.96L14.57 17.04L2.6 8.34L17.4 8.34L5.43 17.04Z\\\" stroke-linejoin=\\\"miter\\\"/>\",\n \"fill\": \"<path d=\\\"M10 2.96L14.57 17.04L2.6 8.34L17.4 8.34L5.43 17.04Z\\\" fill=\\\"currentColor\\\" stroke=\\\"none\\\" fill-rule=\\\"evenodd\\\"/>\",\n \"group\": \"Shapes\",\n \"tags\": []\n },\n \"circle\": {\n \"body\": \"<path d=\\\"M2.6 10A7.4 7.4 0 1 1 17.4 10A7.4 7.4 0 1 1 2.6 10Z\\\"/>\",\n \"fill\": \"<path d=\\\"M2.6 10A7.4 7.4 0 1 1 17.4 10A7.4 7.4 0 1 1 2.6 10Z\\\" fill=\\\"currentColor\\\" stroke=\\\"none\\\"/>\",\n \"group\": \"Shapes\",\n \"tags\": []\n },\n \"ellipse\": {\n \"body\": \"<path d=\\\"M2.6 10A7.4 4.74 0 1 1 17.4 10A7.4 4.74 0 1 1 2.6 10Z\\\"/>\",\n \"fill\": \"<path d=\\\"M2.6 10A7.4 4.74 0 1 1 17.4 10A7.4 4.74 0 1 1 2.6 10Z\\\" fill=\\\"currentColor\\\" stroke=\\\"none\\\"/>\",\n \"group\": \"Shapes\",\n \"tags\": []\n },\n \"semicircle\": {\n \"body\": \"<path d=\\\"M2.6 13.7A7.4 7.4 0 0 1 17.4 13.7Z\\\"/>\",\n \"fill\": \"<path d=\\\"M2.6 13.7A7.4 7.4 0 0 1 17.4 13.7Z\\\" fill=\\\"currentColor\\\" stroke=\\\"none\\\"/>\",\n \"group\": \"Shapes\",\n \"tags\": []\n },\n \"quarter\": {\n \"body\": \"<path d=\\\"M2.6 17.4V2.6A14.8 14.8 0 0 1 17.4 17.4Z\\\"/>\",\n \"fill\": \"<path d=\\\"M2.6 17.4V2.6A14.8 14.8 0 0 1 17.4 17.4Z\\\" fill=\\\"currentColor\\\" stroke=\\\"none\\\"/>\",\n \"group\": \"Shapes\",\n \"tags\": []\n },\n \"stadium\": {\n \"body\": \"<path d=\\\"M6.74 5.86H13.26A4.14 4.14 0 0 1 13.26 14.14H6.74A4.14 4.14 0 0 1 6.74 5.86Z\\\"/>\",\n \"fill\": \"<path d=\\\"M6.74 5.86H13.26A4.14 4.14 0 0 1 13.26 14.14H6.74A4.14 4.14 0 0 1 6.74 5.86Z\\\" fill=\\\"currentColor\\\" stroke=\\\"none\\\"/>\",\n \"group\": \"Shapes\",\n \"tags\": []\n },\n \"roundedSquare\": {\n \"body\": \"<path d=\\\"M6 2.6H14A3.4 3.4 0 0 1 17.4 6V14A3.4 3.4 0 0 1 14 17.4H6A3.4 3.4 0 0 1 2.6 14V6A3.4 3.4 0 0 1 6 2.6Z\\\"/>\",\n \"fill\": \"<path d=\\\"M6 2.6H14A3.4 3.4 0 0 1 17.4 6V14A3.4 3.4 0 0 1 14 17.4H6A3.4 3.4 0 0 1 2.6 14V6A3.4 3.4 0 0 1 6 2.6Z\\\" fill=\\\"currentColor\\\" stroke=\\\"none\\\"/>\",\n \"group\": \"Shapes\",\n \"tags\": []\n },\n \"ring\": {\n \"body\": \"<path d=\\\"M2.6 10A7.4 7.4 0 1 1 17.4 10A7.4 7.4 0 1 1 2.6 10ZM6.15 10A3.85 3.85 0 1 0 13.85 10A3.85 3.85 0 1 0 6.15 10Z\\\"/>\",\n \"fill\": \"<path d=\\\"M2.6 10A7.4 7.4 0 1 1 17.4 10A7.4 7.4 0 1 1 2.6 10ZM6.15 10A3.85 3.85 0 1 0 13.85 10A3.85 3.85 0 1 0 6.15 10Z\\\" fill=\\\"currentColor\\\" stroke=\\\"none\\\" fill-rule=\\\"evenodd\\\"/>\",\n \"group\": \"Shapes\",\n \"tags\": []\n },\n \"crescent\": {\n \"body\": \"<path d=\\\"M6.3 2.6A7.4 7.4 0 1 1 6.3 17.4A8.51 8.51 0 0 0 6.3 2.6Z\\\"/>\",\n \"fill\": \"<path d=\\\"M6.3 2.6A7.4 7.4 0 1 1 6.3 17.4A8.51 8.51 0 0 0 6.3 2.6Z\\\" fill=\\\"currentColor\\\" stroke=\\\"none\\\"/>\",\n \"group\": \"Shapes\",\n \"tags\": []\n },\n \"lens\": {\n \"body\": \"<path d=\\\"M10 2.6A9.99 9.99 0 0 1 10 17.4A9.99 9.99 0 0 1 10 2.6Z\\\"/>\",\n \"fill\": \"<path d=\\\"M10 2.6A9.99 9.99 0 0 1 10 17.4A9.99 9.99 0 0 1 10 2.6Z\\\" fill=\\\"currentColor\\\" stroke=\\\"none\\\"/>\",\n \"group\": \"Shapes\",\n \"tags\": []\n },\n \"sector\": {\n \"body\": \"<path d=\\\"M10 14.63L2.6 9.06A9.27 9.27 0 0 1 17.4 9.06Z\\\"/>\",\n \"fill\": \"<path d=\\\"M10 14.63L2.6 9.06A9.27 9.27 0 0 1 17.4 9.06Z\\\" fill=\\\"currentColor\\\" stroke=\\\"none\\\"/>\",\n \"group\": \"Shapes\",\n \"tags\": []\n },\n \"segment\": {\n \"body\": \"<path d=\\\"M2.6 12.59A7.88 7.88 0 0 1 17.4 12.59Z\\\"/>\",\n \"fill\": \"<path d=\\\"M2.6 12.59A7.88 7.88 0 0 1 17.4 12.59Z\\\" fill=\\\"currentColor\\\" stroke=\\\"none\\\"/>\",\n \"group\": \"Shapes\",\n \"tags\": []\n },\n \"arch\": {\n \"body\": \"<path d=\\\"M2.6 17.4V10A7.4 7.4 0 0 1 17.4 10V17.4Z\\\"/>\",\n \"fill\": \"<path d=\\\"M2.6 17.4V10A7.4 7.4 0 0 1 17.4 10V17.4Z\\\" fill=\\\"currentColor\\\" stroke=\\\"none\\\"/>\",\n \"group\": \"Shapes\",\n \"tags\": []\n },\n \"teardrop\": {\n \"body\": \"<path d=\\\"M10 2.6L5.9 10.75A4.59 4.59 0 1 0 14.1 10.75Z\\\"/>\",\n \"fill\": \"<path d=\\\"M10 2.6L5.9 10.75A4.59 4.59 0 1 0 14.1 10.75Z\\\" fill=\\\"currentColor\\\" stroke=\\\"none\\\"/>\",\n \"group\": \"Shapes\",\n \"tags\": []\n },\n \"egg\": {\n \"body\": \"<path d=\\\"M10 2.6C14.59 2.6 16.07 9.26 16.07 12.22C16.07 15.77 13.26 17.4 10 17.4C6.74 17.4 3.93 15.77 3.93 12.22C3.93 9.26 5.41 2.6 10 2.6Z\\\"/>\",\n \"fill\": \"<path d=\\\"M10 2.6C14.59 2.6 16.07 9.26 16.07 12.22C16.07 15.77 13.26 17.4 10 17.4C6.74 17.4 3.93 15.77 3.93 12.22C3.93 9.26 5.41 2.6 10 2.6Z\\\" fill=\\\"currentColor\\\" stroke=\\\"none\\\"/>\",\n \"group\": \"Shapes\",\n \"tags\": []\n },\n \"heart\": {\n \"body\": \"<path d=\\\"M10 6.51L10.01 6.42L10.05 6.16L10.18 5.76L10.41 5.26L10.78 4.72L11.27 4.2L11.89 3.76L12.62 3.45L13.42 3.31L14.25 3.36L15.08 3.61L15.84 4.03L16.48 4.62L16.98 5.33L17.29 6.12L17.4 6.97L17.29 7.84L16.98 8.7L16.48 9.54L15.84 10.34L15.08 11.12L14.25 11.86L13.42 12.57L12.62 13.27L11.89 13.93L11.27 14.56L10.78 15.14L10.41 15.66L10.18 16.09L10.05 16.41L10.01 16.62L10 16.69L9.99 16.62L9.95 16.41L9.82 16.09L9.59 15.66L9.22 15.14L8.73 14.56L8.11 13.93L7.38 13.27L6.58 12.57L5.75 11.86L4.92 11.12L4.16 10.34L3.52 9.54L3.02 8.7L2.71 7.84L2.6 6.97L2.71 6.12L3.02 5.33L3.52 4.62L4.16 4.03L4.92 3.61L5.75 3.36L6.58 3.31L7.38 3.45L8.11 3.76L8.73 4.2L9.22 4.72L9.59 5.26L9.82 5.76L9.95 6.16L9.99 6.42L10 6.51Z\\\"/>\",\n \"fill\": \"<path d=\\\"M10 6.51L10.01 6.42L10.05 6.16L10.18 5.76L10.41 5.26L10.78 4.72L11.27 4.2L11.89 3.76L12.62 3.45L13.42 3.31L14.25 3.36L15.08 3.61L15.84 4.03L16.48 4.62L16.98 5.33L17.29 6.12L17.4 6.97L17.29 7.84L16.98 8.7L16.48 9.54L15.84 10.34L15.08 11.12L14.25 11.86L13.42 12.57L12.62 13.27L11.89 13.93L11.27 14.56L10.78 15.14L10.41 15.66L10.18 16.09L10.05 16.41L10.01 16.62L10 16.69L9.99 16.62L9.95 16.41L9.82 16.09L9.59 15.66L9.22 15.14L8.73 14.56L8.11 13.93L7.38 13.27L6.58 12.57L5.75 11.86L4.92 11.12L4.16 10.34L3.52 9.54L3.02 8.7L2.71 7.84L2.6 6.97L2.71 6.12L3.02 5.33L3.52 4.62L4.16 4.03L4.92 3.61L5.75 3.36L6.58 3.31L7.38 3.45L8.11 3.76L8.73 4.2L9.22 4.72L9.59 5.26L9.82 5.76L9.95 6.16L9.99 6.42L10 6.51Z\\\" fill=\\\"currentColor\\\" stroke=\\\"none\\\"/>\",\n \"group\": \"Shapes\",\n \"tags\": []\n },\n \"angle\": {\n \"body\": \"<path d=\\\"M17.4 16.34L2.6 16.34L14.8 3.66M6.12 16.34A3.52 3.52 0 0 0 5.04 13.8\\\"/>\",\n \"fill\": \"<path d=\\\"M2.6 16.34L17.4 16.34L14.8 3.66Z\\\" fill=\\\"currentColor\\\" stroke=\\\"none\\\"/>\",\n \"group\": \"Shapes\",\n \"tags\": []\n }\n }\n}\n","// GENERATED by packages/icons/scripts/gen-icons.mjs — do not edit by hand.\n\nimport type { IconTable } from './table';\nimport data from './icons.table.json';\n\n/** Every glyph this package ships, under the `shape` namespace. */\nexport const icons: IconTable = data;\n"]}
@@ -0,0 +1,23 @@
1
+ /** One glyph: SVG body on a 20x20 viewBox stroked in currentColor, and how it is filed. */
2
+ interface IconGlyph {
3
+ readonly body: string;
4
+ /** The enclosed region `<Icon filled>` shades, when there is one. */
5
+ readonly fill?: string;
6
+ readonly group: string;
7
+ readonly tags: readonly string[];
8
+ }
9
+ /** Every glyph one publisher ships under one namespace. */
10
+ interface IconTable {
11
+ readonly namespace: string;
12
+ /** The publishing package. Tables with one namespace merge only when their owners match. */
13
+ readonly owner: string;
14
+ readonly icons: Readonly<Record<string, IconGlyph>>;
15
+ }
16
+ /** What a variant's dynamic import resolves to. */
17
+ interface IconVariantModule {
18
+ readonly default: readonly IconTable[];
19
+ }
20
+ /** Loads one variant module: the icon tables that variant adds. */
21
+ type IconVariantLoader = () => Promise<IconVariantModule>;
22
+
23
+ export type { IconGlyph as I, IconTable as a, IconVariantLoader as b, IconVariantModule as c };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@weasel-js/icons",
3
- "version": "1.10.1",
4
- "description": "Namespaced icon names and the icon registry. No React, no DOM, no glyphs of its own.",
3
+ "version": "1.11.1",
4
+ "description": "Namespaced icon names, the icon registry, and the plain shape glyphs. No React, no DOM.",
5
5
  "license": "MIT",
6
6
  "type": "module",
7
7
  "sideEffects": false,
@@ -10,15 +10,17 @@
10
10
  "types": "./dist/index.d.ts",
11
11
  "exports": {
12
12
  ".": { "import": "./dist/index.js", "types": "./dist/index.d.ts" },
13
+ "./shapes": { "import": "./dist/shapes.js", "types": "./dist/shapes.d.ts" },
13
14
  "./package.json": "./package.json"
14
15
  },
16
+ "weaselIcons": { "table": "./dist/icons.table.json" },
15
17
  "author": "orochi235",
16
18
  "homepage": "https://orochi235.github.io/weasel/",
17
19
  "repository": { "type": "git", "url": "git+https://github.com/orochi235/weasel.git", "directory": "packages/icons" },
18
20
  "bugs": { "url": "https://github.com/orochi235/weasel/issues" },
19
21
  "engines": { "node": ">=22" },
20
22
  "files": ["dist", "README.md", "LICENSE"],
21
- "scripts": { "build": "tsup" },
22
- "dependencies": { "@weasel-js/registry": "1.10.1" },
23
+ "scripts": { "build": "tsup && cp src/icons.table.json dist/" },
24
+ "dependencies": { "@weasel-js/registry": "1.11.1" },
23
25
  "publishConfig": { "access": "public", "provenance": true }
24
26
  }