@nice2dev/icons 1.3.3 → 1.3.5
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/CHANGELOG.md +75 -0
- package/README.md +43 -4
- package/dist/cjs/NiceIconStacker.js +120 -0
- package/dist/cjs/client.js +3 -0
- package/dist/cjs/createIcon.js +25 -4
- package/dist/cjs/figmaExport.js +1 -0
- package/dist/cjs/iconParts.js +6 -5
- package/dist/cjs/icons/actions.js +36 -7
- package/dist/cjs/icons/ai.js +3 -0
- package/dist/cjs/icons/business.js +8 -7
- package/dist/cjs/icons/education.js +18 -14
- package/dist/cjs/icons/files.js +34 -15
- package/dist/cjs/icons/index.js +3 -2
- package/dist/cjs/icons/media.js +41 -15
- package/dist/cjs/icons/navigation.js +8 -6
- package/dist/cjs/icons/realestate.js +5 -2
- package/dist/cjs/icons/shapes.js +18 -14
- package/dist/cjs/icons/sustainability.js +2 -11
- package/dist/cjs/icons/travel.js +15 -14
- package/dist/cjs/icons/ui.js +47 -6
- package/dist/cjs/icons/weather.js +3 -0
- package/dist/cjs/index.js +6 -2
- package/dist/cjs/nicetodev-icons.css +1 -1
- package/dist/cjs/stacking.js +100 -0
- package/dist/esm/NiceIconStacker.js +117 -0
- package/dist/esm/client.js +1 -0
- package/dist/esm/createIcon.js +26 -5
- package/dist/esm/figmaExport.js +1 -0
- package/dist/esm/iconParts.js +6 -5
- package/dist/esm/icons/actions.js +36 -7
- package/dist/esm/icons/ai.js +3 -1
- package/dist/esm/icons/business.js +9 -8
- package/dist/esm/icons/education.js +18 -14
- package/dist/esm/icons/files.js +34 -15
- package/dist/esm/icons/index.js +5 -5
- package/dist/esm/icons/media.js +41 -15
- package/dist/esm/icons/navigation.js +8 -6
- package/dist/esm/icons/realestate.js +5 -2
- package/dist/esm/icons/shapes.js +19 -14
- package/dist/esm/icons/sustainability.js +2 -10
- package/dist/esm/icons/travel.js +15 -14
- package/dist/esm/icons/ui.js +47 -7
- package/dist/esm/icons/weather.js +3 -1
- package/dist/esm/index.js +6 -5
- package/dist/esm/nicetodev-icons.css +1 -1
- package/dist/esm/stacking.js +92 -0
- package/dist/types/NiceIconStacker.d.ts +50 -0
- package/dist/types/client.d.ts +2 -0
- package/dist/types/createIcon.d.ts +5 -0
- package/dist/types/iconParts.d.ts +2 -1
- package/dist/types/icons/ai.d.ts +2 -0
- package/dist/types/icons/index.d.ts +5 -5
- package/dist/types/icons/shapes.d.ts +0 -1
- package/dist/types/icons/sustainability.d.ts +0 -1
- package/dist/types/icons/ui.d.ts +1 -0
- package/dist/types/icons/weather.d.ts +2 -0
- package/dist/types/index.d.ts +3 -1
- package/dist/types/stacking.d.ts +41 -0
- package/dist/types/types.d.ts +31 -3
- package/package.json +2 -2
package/dist/cjs/icons/files.js
CHANGED
|
@@ -153,12 +153,12 @@ const NtdGrid = /* @__PURE__ */ createIcon.createIcon({
|
|
|
153
153
|
vivid: ({ primaryColor, secondaryColor }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("rect", { x: "3", y: "3", width: "7", height: "7", rx: "1.5", fill: primaryColor }), jsxRuntime.jsx("rect", { x: "3", y: "3", width: "7", height: "7", rx: "1.5", fill: "white", opacity: "0.08" }), jsxRuntime.jsx("rect", { x: "14", y: "3", width: "7", height: "7", rx: "1.5", fill: secondaryColor }), jsxRuntime.jsx("rect", { x: "3", y: "14", width: "7", height: "7", rx: "1.5", fill: "#3B82F6" }), jsxRuntime.jsx("rect", { x: "14", y: "14", width: "7", height: "7", rx: "1.5", fill: "#F59E0B" })] })),
|
|
154
154
|
},
|
|
155
155
|
});
|
|
156
|
-
// NtdList: in every variant but `outline` the lines are 1.5 × the stroke width and the dots r
|
|
157
|
-
//
|
|
156
|
+
// NtdList: in every variant but `outline` the lines are 1.5 × the stroke width and the dots r 1.7
|
|
157
|
+
// (r 2.25 was too big, a quarter smaller); the lines start at 9 to keep clear of the dots.
|
|
158
158
|
// Duotone and vivid: the lines primary, the dots secondary.
|
|
159
159
|
const LIST_LINES = 'M9 6h12M9 12h12M9 18h12';
|
|
160
160
|
function listFilled(lines, dots, strokeWidth) {
|
|
161
|
-
return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: LIST_LINES, stroke: lines, strokeWidth: strokeWidth * 1.5 }), jsxRuntime.jsxs("g", { fill: dots, children: [jsxRuntime.jsx("circle", { cx: "3.75", cy: "6", r: "
|
|
161
|
+
return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: LIST_LINES, stroke: lines, strokeWidth: strokeWidth * 1.5 }), jsxRuntime.jsxs("g", { fill: dots, children: [jsxRuntime.jsx("circle", { cx: "3.75", cy: "6", r: "1.7" }), jsxRuntime.jsx("circle", { cx: "3.75", cy: "12", r: "1.7" }), jsxRuntime.jsx("circle", { cx: "3.75", cy: "18", r: "1.7" })] })] }));
|
|
162
162
|
}
|
|
163
163
|
const NtdList = /* @__PURE__ */ createIcon.createIcon({
|
|
164
164
|
displayName: 'NtdList',
|
|
@@ -178,22 +178,32 @@ const NtdTable = /* @__PURE__ */ createIcon.createIcon({
|
|
|
178
178
|
vivid: ({ primaryColor, secondaryColor }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("rect", { x: "3", y: "3", width: "18", height: "18", rx: "2", fill: primaryColor, opacity: "0.15", stroke: primaryColor, strokeWidth: "2" }), jsxRuntime.jsx("rect", { x: "3", y: "3", width: "18", height: "18", rx: "2", fill: "white", opacity: "0.1" }), jsxRuntime.jsx("line", { x1: "3", y1: "9", x2: "21", y2: "9", stroke: secondaryColor, strokeWidth: "1.8" }), jsxRuntime.jsx("line", { x1: "3", y1: "15", x2: "21", y2: "15", stroke: "#3B82F6", strokeWidth: "1.5" }), jsxRuntime.jsx("line", { x1: "9", y1: "3", x2: "9", y2: "21", stroke: "#3B82F6", strokeWidth: "1.5" })] })),
|
|
179
179
|
},
|
|
180
180
|
});
|
|
181
|
+
// NtdSmartphone: filled, the case stays a primary frame round a screen in the accent colour, and
|
|
182
|
+
// the button is a primary dot on the screen — bigger and lower than the accent dot it was.
|
|
181
183
|
const NtdSmartphone = /* @__PURE__ */ createIcon.createIcon({
|
|
182
184
|
displayName: 'NtdSmartphone',
|
|
183
185
|
paths: {
|
|
184
|
-
solid: ({ primaryColor, accentColor, accentOpacity
|
|
186
|
+
solid: ({ primaryColor, accentColor, accentOpacity }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("rect", { x: "5", y: "2", width: "14", height: "20", rx: "2", fill: primaryColor }), jsxRuntime.jsx("rect", { x: "6.5", y: "3.5", width: "11", height: "17", rx: "0.75", fill: accentColor, opacity: accentOpacity }), jsxRuntime.jsx("circle", { cx: "12", cy: "18.4", r: "1.25", fill: primaryColor })] })),
|
|
185
187
|
outline: ({ primaryColor, strokeWidth }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("rect", { x: "5", y: "2", width: "14", height: "20", rx: "2", stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" }), jsxRuntime.jsx("line", { x1: "12", y1: "18", x2: "12.01", y2: "18", stroke: primaryColor, strokeWidth: strokeWidth })] })),
|
|
186
188
|
duotone: ({ primaryColor, secondaryColor, secondaryOpacity, strokeWidth }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("rect", { x: "5", y: "2", width: "14", height: "20", rx: "2", fill: secondaryColor, opacity: secondaryOpacity }), jsxRuntime.jsx("rect", { x: "5", y: "2", width: "14", height: "20", rx: "2", stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" }), jsxRuntime.jsx("line", { x1: "12", y1: "18", x2: "12.01", y2: "18", stroke: primaryColor, strokeWidth: strokeWidth })] })),
|
|
187
189
|
vivid: ({ primaryColor, secondaryColor }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("rect", { x: "5", y: "2", width: "14", height: "20", rx: "2", fill: primaryColor }), jsxRuntime.jsx("rect", { x: "5", y: "2", width: "14", height: "20", rx: "2", fill: "white", opacity: "0.1" }), jsxRuntime.jsx("line", { x1: "12", y1: "18", x2: "12.01", y2: "18", stroke: secondaryColor, strokeWidth: "1.8" })] })),
|
|
188
190
|
},
|
|
189
191
|
});
|
|
192
|
+
// NtdMonitor: the neck and the base are twice the stroke width in every variant but `outline`, and
|
|
193
|
+
// the base is 30% wider — 13 across with its caps (it was 10); it sits at 21.5 so the heavier line
|
|
194
|
+
// stays in the box. Vivid: the stand secondary (it had a fixed #3B82F6 neck).
|
|
195
|
+
const MONITOR_SCREEN = { x: 2, y: 3, width: 20, height: 14, rx: 2 };
|
|
196
|
+
/** Neck and base for a line twice the stroke width: base 9 long + 2 × 2 of cap = 13. */
|
|
197
|
+
const MONITOR_STAND = 'M12 17v4.5M7.5 21.5h9';
|
|
198
|
+
/** The outline's neck and base, at the stroke width: base 11 long + 2 × 1 of cap = 13. */
|
|
199
|
+
const MONITOR_STAND_LINE = 'M12 17v4M6.5 21h11';
|
|
190
200
|
const NtdMonitor = /* @__PURE__ */ createIcon.createIcon({
|
|
191
201
|
displayName: 'NtdMonitor',
|
|
192
202
|
paths: {
|
|
193
|
-
solid: ({ primaryColor, strokeWidth }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("rect", {
|
|
194
|
-
outline: ({ primaryColor, strokeWidth }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("rect", {
|
|
195
|
-
duotone: ({ primaryColor, secondaryColor, secondaryOpacity, strokeWidth }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("rect", {
|
|
196
|
-
vivid: ({ primaryColor, secondaryColor }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("rect", {
|
|
203
|
+
solid: ({ primaryColor, strokeWidth }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("rect", { ...MONITOR_SCREEN, fill: primaryColor }), jsxRuntime.jsx("path", { d: MONITOR_STAND, stroke: primaryColor, strokeWidth: strokeWidth * 2 })] })),
|
|
204
|
+
outline: ({ primaryColor, strokeWidth }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("rect", { ...MONITOR_SCREEN, stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" }), jsxRuntime.jsx("path", { d: MONITOR_STAND_LINE, stroke: primaryColor, strokeWidth: strokeWidth })] })),
|
|
205
|
+
duotone: ({ primaryColor, secondaryColor, secondaryOpacity, strokeWidth }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("rect", { ...MONITOR_SCREEN, fill: secondaryColor, opacity: secondaryOpacity }), jsxRuntime.jsx("rect", { ...MONITOR_SCREEN, stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" }), jsxRuntime.jsx("path", { d: MONITOR_STAND, stroke: primaryColor, strokeWidth: strokeWidth * 2 })] })),
|
|
206
|
+
vivid: ({ primaryColor, secondaryColor, strokeWidth }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("rect", { ...MONITOR_SCREEN, fill: primaryColor }), jsxRuntime.jsx("path", { d: MONITOR_STAND, stroke: secondaryColor, strokeWidth: strokeWidth * 2 })] })),
|
|
197
207
|
},
|
|
198
208
|
});
|
|
199
209
|
// NtdCpu: filled, the body and its pins primary and the die in the accent colour (the body was a
|
|
@@ -230,11 +240,11 @@ const NtdKey = /* @__PURE__ */ createIcon.createIcon({
|
|
|
230
240
|
},
|
|
231
241
|
});
|
|
232
242
|
// NtdAward: the ribbon has a secondary inside within its primary edge (it was open, so the page
|
|
233
|
-
// showed through), and goes under the medal. The inside is the ribbon inset by
|
|
234
|
-
//
|
|
235
|
-
// colour.
|
|
243
|
+
// showed through), and goes under the medal. The inside is the ribbon inset by 1.5 — between the
|
|
244
|
+
// half stroke it filled to before (too full) and the 2 after (too small). Duotone is the same;
|
|
245
|
+
// vivid draws the ribbon's edge in the accent colour.
|
|
236
246
|
const AWARD_RIBBON = 'M8.21 13.89L7 23l5-3 5 3-1.21-9.12';
|
|
237
|
-
const AWARD_RIBBON_INNER = '
|
|
247
|
+
const AWARD_RIBBON_INNER = 'M9.67 14.3L8.9 20.11L12 18.25L15.1 20.11L14.32 14.3z';
|
|
238
248
|
function awardFilled({ primaryColor, secondaryColor, strokeWidth }, ribbonEdge) {
|
|
239
249
|
return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: AWARD_RIBBON, fill: ribbonEdge, stroke: ribbonEdge, strokeWidth: strokeWidth }), jsxRuntime.jsx("path", { d: AWARD_RIBBON_INNER, fill: secondaryColor }), jsxRuntime.jsx("circle", { cx: "12", cy: "8", r: "7", fill: primaryColor })] }));
|
|
240
250
|
}
|
|
@@ -289,13 +299,22 @@ const NtdCreditCard = /* @__PURE__ */ createIcon.createIcon({
|
|
|
289
299
|
vivid: ({ primaryColor, accentColor, accentOpacity, uid }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("rect", { ...CARD_BODY, fill: primaryColor }), jsxRuntime.jsx("rect", { ...CARD_BODY, fill: "white", opacity: "0.1" }), iconParts.within(uid, 'stripe', jsxRuntime.jsx("rect", { ...CARD_BODY }), jsxRuntime.jsx("rect", { ...CARD_STRIPE, fill: "black", opacity: "0.35" })), jsxRuntime.jsx("rect", { ...CARD_SIGNATURE, fill: accentColor, opacity: accentOpacity }), jsxRuntime.jsx("rect", { ...CARD_CVV, fill: accentColor, opacity: accentOpacity })] })),
|
|
290
300
|
},
|
|
291
301
|
});
|
|
302
|
+
// NtdPieChart: filled, two sectors of one pie (r 10) pulled 0.7 apart along the small one's
|
|
303
|
+
// diagonal — a gap between them. The larger is the three-quarter sector from the centre; it was a
|
|
304
|
+
// segment cut off by a chord, which read as an odd shape. The outline keeps its open arc and the
|
|
305
|
+
// slice. Duotone, fills only: the larger sector secondary, the slice primary; vivid the other way.
|
|
306
|
+
const PIE_REST = 'M11.3 12.7V2.7A10 10 0 1 0 21.3 12.7Z';
|
|
307
|
+
const PIE_SLICE = 'M12.7 11.3V1.3A10 10 0 0 1 22.7 11.3Z';
|
|
308
|
+
function pieFilled(rest, slice) {
|
|
309
|
+
return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: PIE_REST, fill: rest }), jsxRuntime.jsx("path", { d: PIE_SLICE, fill: slice })] }));
|
|
310
|
+
}
|
|
292
311
|
const NtdPieChart = /* @__PURE__ */ createIcon.createIcon({
|
|
293
312
|
displayName: 'NtdPieChart',
|
|
294
313
|
paths: {
|
|
295
|
-
solid: ({ primaryColor
|
|
314
|
+
solid: ({ primaryColor }) => pieFilled(primaryColor, primaryColor),
|
|
296
315
|
outline: ({ primaryColor, strokeWidth }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: "M21.21 15.89A10 10 0 118 2.83", stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" }), jsxRuntime.jsx("path", { d: "M22 12A10 10 0 0012 2v10h10z", stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" })] })),
|
|
297
|
-
duotone: ({ primaryColor, secondaryColor
|
|
298
|
-
vivid: ({ primaryColor, secondaryColor }) => (
|
|
316
|
+
duotone: ({ primaryColor, secondaryColor }) => pieFilled(secondaryColor, primaryColor),
|
|
317
|
+
vivid: ({ primaryColor, secondaryColor }) => pieFilled(primaryColor, secondaryColor),
|
|
299
318
|
},
|
|
300
319
|
});
|
|
301
320
|
const NtdBarChart = /* @__PURE__ */ createIcon.createIcon({
|
package/dist/cjs/icons/index.js
CHANGED
|
@@ -91,6 +91,7 @@ exports.NtdGlobe = ui.NtdGlobe;
|
|
|
91
91
|
exports.NtdHeart = ui.NtdHeart;
|
|
92
92
|
exports.NtdHelp = ui.NtdHelp;
|
|
93
93
|
exports.NtdHome = ui.NtdHome;
|
|
94
|
+
exports.NtdHourglass = ui.NtdHourglass;
|
|
94
95
|
exports.NtdInfo = ui.NtdInfo;
|
|
95
96
|
exports.NtdMap = ui.NtdMap;
|
|
96
97
|
exports.NtdMoon = ui.NtdMoon;
|
|
@@ -112,7 +113,6 @@ exports.NtdCo2 = sustainability.NtdCo2;
|
|
|
112
113
|
exports.NtdCompost = sustainability.NtdCompost;
|
|
113
114
|
exports.NtdEcoFriendly = sustainability.NtdEcoFriendly;
|
|
114
115
|
exports.NtdEvCharger = sustainability.NtdEvCharger;
|
|
115
|
-
exports.NtdHydropower = sustainability.NtdHydropower;
|
|
116
116
|
exports.NtdNetZero = sustainability.NtdNetZero;
|
|
117
117
|
exports.NtdOrganic = sustainability.NtdOrganic;
|
|
118
118
|
exports.NtdPlantTree = sustainability.NtdPlantTree;
|
|
@@ -228,6 +228,7 @@ exports.NtdDroplet = weather.NtdDroplet;
|
|
|
228
228
|
exports.NtdFeather = weather.NtdFeather;
|
|
229
229
|
exports.NtdFire = weather.NtdFire;
|
|
230
230
|
exports.NtdFlower = weather.NtdFlower;
|
|
231
|
+
exports.NtdHydropower = weather.NtdHydropower;
|
|
231
232
|
exports.NtdLeaf = weather.NtdLeaf;
|
|
232
233
|
exports.NtdMountain = weather.NtdMountain;
|
|
233
234
|
exports.NtdRain = weather.NtdRain;
|
|
@@ -267,7 +268,6 @@ exports.NtdRepeat = shapes.NtdRepeat;
|
|
|
267
268
|
exports.NtdSegment = shapes.NtdSegment;
|
|
268
269
|
exports.NtdShuffle = shapes.NtdShuffle;
|
|
269
270
|
exports.NtdSquare = shapes.NtdSquare;
|
|
270
|
-
exports.NtdStar4 = shapes.NtdStar4;
|
|
271
271
|
exports.NtdTriangle = shapes.NtdTriangle;
|
|
272
272
|
exports.NtdBank = business.NtdBank;
|
|
273
273
|
exports.NtdBarcode = business.NtdBarcode;
|
|
@@ -431,6 +431,7 @@ exports.NtdNeuralNetwork = ai.NtdNeuralNetwork;
|
|
|
431
431
|
exports.NtdPrompt = ai.NtdPrompt;
|
|
432
432
|
exports.NtdRobot = ai.NtdRobot;
|
|
433
433
|
exports.NtdSparkle = ai.NtdSparkle;
|
|
434
|
+
exports.NtdStar4 = ai.NtdStar4;
|
|
434
435
|
exports.NtdTensor = ai.NtdTensor;
|
|
435
436
|
exports.NtdTraining = ai.NtdTraining;
|
|
436
437
|
exports.aiIcons = ai.aiIcons;
|
package/dist/cjs/icons/media.js
CHANGED
|
@@ -133,17 +133,30 @@ const NtdMicrophoneOff = /* @__PURE__ */ createIcon.createIcon({
|
|
|
133
133
|
// NtdMusic: the note heads are tilted ellipses whose right edge is the stem's right edge, and the
|
|
134
134
|
// stems end where that edge is vertical, so stem and head meet without a step (the heads stuck
|
|
135
135
|
// out right of the stems). The outline heads are the filled ones moved in by half a stroke, so
|
|
136
|
-
// their stroke meets the stem the same way.
|
|
136
|
+
// their stroke meets the stem the same way. Every variant but `outline` draws the stems and the
|
|
137
|
+
// beam twice the stroke width; the stems move left by the extra half width, so their right edge
|
|
138
|
+
// stays on the heads' (9.3 and 21.3), and the beam drops half a unit to keep a mitred corner in
|
|
139
|
+
// the box.
|
|
137
140
|
const MUSIC_STEMS = 'M8.3 17.22V5l12-2v12.22';
|
|
141
|
+
/** The stems and the beam for a line `width` wide; `sharp` stops them half a width higher. */
|
|
142
|
+
function musicStems(width, sharp = false) {
|
|
143
|
+
const left = 9.3 - width / 2;
|
|
144
|
+
const right = 21.3 - width / 2;
|
|
145
|
+
const end = sharp ? width / 2 : 0;
|
|
146
|
+
return `M${left} ${17.22 - end}V5.5L${right} 3.5V${15.22 - end}`;
|
|
147
|
+
}
|
|
148
|
+
function musicFilled(stems, heads, strokeWidth, sharp = false) {
|
|
149
|
+
return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: musicStems(strokeWidth * 2, sharp), stroke: stems, strokeWidth: strokeWidth * 2, fill: "none" }), jsxRuntime.jsx("ellipse", { cx: "5.97", cy: "18", rx: "3.5", ry: "2.3", transform: "rotate(-24 5.97 18)", fill: heads[0] }), jsxRuntime.jsx("ellipse", { cx: "17.97", cy: "16", rx: "3.5", ry: "2.3", transform: "rotate(-24 17.97 16)", fill: heads[1] })] }));
|
|
150
|
+
}
|
|
138
151
|
const NtdMusic = /* @__PURE__ */ createIcon.createIcon({
|
|
139
152
|
displayName: 'NtdMusic',
|
|
140
153
|
paths: {
|
|
141
|
-
solid: ({ primaryColor, strokeWidth }) => (
|
|
142
|
-
// the
|
|
143
|
-
sharp: ({ primaryColor, strokeWidth }) => (
|
|
154
|
+
solid: ({ primaryColor, strokeWidth }) => musicFilled(primaryColor, [primaryColor, primaryColor], strokeWidth),
|
|
155
|
+
// the square caps of `sharp` then end at the heads' edge
|
|
156
|
+
sharp: ({ primaryColor, strokeWidth }) => musicFilled(primaryColor, [primaryColor, primaryColor], strokeWidth, true),
|
|
144
157
|
outline: ({ primaryColor, strokeWidth }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: MUSIC_STEMS, stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" }), jsxRuntime.jsxs("g", { stroke: primaryColor, strokeWidth: strokeWidth, fill: "none", children: [jsxRuntime.jsx("ellipse", { cx: "5.97", cy: "18", rx: "2.5", ry: "1.3", transform: "rotate(-24 5.97 18)" }), jsxRuntime.jsx("ellipse", { cx: "17.97", cy: "16", rx: "2.5", ry: "1.3", transform: "rotate(-24 17.97 16)" })] })] })),
|
|
145
|
-
duotone: ({ primaryColor,
|
|
146
|
-
vivid: ({ primaryColor, secondaryColor, strokeWidth }) => (
|
|
158
|
+
duotone: ({ primaryColor, strokeWidth }) => musicFilled(primaryColor, [primaryColor, primaryColor], strokeWidth),
|
|
159
|
+
vivid: ({ primaryColor, secondaryColor, strokeWidth }) => musicFilled(primaryColor, [primaryColor, secondaryColor], strokeWidth),
|
|
147
160
|
},
|
|
148
161
|
});
|
|
149
162
|
// The flap is a cut through the envelope, kept inside it: its ends meet the sides flush (the
|
|
@@ -223,12 +236,13 @@ const NtdNotification = /* @__PURE__ */ createIcon.createIcon({
|
|
|
223
236
|
vivid: ({ primaryColor, secondaryColor }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: "M18 8A6 6 0 006 8c0 7-3 9-3 9h18s-3-2-3-9z", fill: primaryColor }), jsxRuntime.jsx("path", { d: "M18 8A6 6 0 006 8c0 7-3 9-3 9h18s-3-2-3-9z", fill: "white", opacity: "0.08" }), jsxRuntime.jsx("circle", { cx: "18", cy: "4", r: "3.5", fill: secondaryColor }), jsxRuntime.jsx("path", { d: "M13.73 21a2 2 0 01-3.46 0", stroke: "white", strokeWidth: "1" })] })),
|
|
224
237
|
},
|
|
225
238
|
});
|
|
226
|
-
// NtdWifi: three arcs round the dot (r
|
|
239
|
+
// NtdWifi: three arcs round the dot (r 5.2 / 9.5 / 13.8 about 12,19.5, ±45°), 1.5 × the stroke
|
|
227
240
|
// width in every variant but `outline` — half again as heavy. Concentric, so the heavier arcs keep
|
|
228
|
-
// even gaps, and small enough that the outer one's square caps in `sharp` stay in the box.
|
|
229
|
-
//
|
|
230
|
-
|
|
231
|
-
const
|
|
241
|
+
// even gaps, and small enough that the outer one's square caps in `sharp` stay in the box. The
|
|
242
|
+
// inner arc sits further from the dot (it was r 4.4) and the arcs closer together, the outer one
|
|
243
|
+
// where it was. Duotone and vivid: the dot and the inner arc primary, the outer arcs secondary.
|
|
244
|
+
const WIFI_INNER = 'M8.32 15.82A5.2 5.2 0 0 1 15.68 15.82';
|
|
245
|
+
const WIFI_OUTER = 'M5.28 12.78A9.5 9.5 0 0 1 18.72 12.78M2.24 9.74A13.8 13.8 0 0 1 21.76 9.74';
|
|
232
246
|
function wifiFilled(near, far, strokeWidth) {
|
|
233
247
|
return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: WIFI_OUTER, stroke: far, strokeWidth: strokeWidth * 1.5, fill: "none" }), jsxRuntime.jsx("path", { d: WIFI_INNER, stroke: near, strokeWidth: strokeWidth * 1.5, fill: "none" }), jsxRuntime.jsx("circle", { cx: "12", cy: "19.5", r: "1.5", fill: near })] }));
|
|
234
248
|
}
|
|
@@ -260,13 +274,25 @@ const NtdPalette = /* @__PURE__ */ createIcon.createIcon({
|
|
|
260
274
|
vivid: ({ primaryColor, secondaryColor }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: "M12 3a9 9 0 100 18h1a2 2 0 000-4h-1a2 2 0 110-4h1a3 3 0 103-3 3 3 0 01-3-3V6a3 3 0 00-1-3z", fill: primaryColor, opacity: "0.25" }), jsxRuntime.jsx("path", { d: "M12 3a9 9 0 100 18h1a2 2 0 000-4h-1a2 2 0 110-4h1a3 3 0 103-3 3 3 0 01-3-3V6a3 3 0 00-1-3z", fill: "white", opacity: "0.08" }), jsxRuntime.jsx("circle", { cx: "7", cy: "9", r: "1.2", fill: secondaryColor }), jsxRuntime.jsx("circle", { cx: "10", cy: "7", r: "1.2", fill: "#8B5CF6" }), jsxRuntime.jsx("circle", { cx: "7", cy: "13", r: "1.2", fill: "#EF4444" })] })),
|
|
261
275
|
},
|
|
262
276
|
});
|
|
277
|
+
// NtdBrush: a paintbrush lying at 45° — a tapering handle with a round end, the metal ferrule, and
|
|
278
|
+
// the bristles swelling out of it to a point at the bottom left (it was a pencil-like wedge with a
|
|
279
|
+
// blob). Filled, the ferrule is set off from the handle and the bristles by two accent cuts.
|
|
280
|
+
// Duotone, fills only: the handle and the ferrule primary, the bristles secondary; vivid puts the
|
|
281
|
+
// ferrule in the accent colour.
|
|
282
|
+
const BRUSH_HANDLE = 'M19.35 2.81A1.3 1.3 0 0 1 21.19 4.65L13.91 12.49L11.51 10.09Z';
|
|
283
|
+
const BRUSH_FERRULE = 'M11.08 9.67L14.33 12.92L11.36 15.89L8.11 12.64Z';
|
|
284
|
+
const BRUSH_BRISTLES = 'M8.11 12.64L11.36 15.89C9.95 18.43 7.76 20.49 2.81 21.19C3.51 16.24 5.57 14.05 8.11 12.64Z';
|
|
285
|
+
const BRUSH_CUTS = 'M10.37 8.96L15.04 13.63M7.4 11.93L12.07 16.6';
|
|
286
|
+
function brushFilled(handle, ferrule, bristles, ferruleOpacity = 1) {
|
|
287
|
+
return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: BRUSH_HANDLE, fill: handle }), jsxRuntime.jsx("path", { d: BRUSH_FERRULE, fill: ferrule, opacity: ferruleOpacity }), jsxRuntime.jsx("path", { d: BRUSH_BRISTLES, fill: bristles })] }));
|
|
288
|
+
}
|
|
263
289
|
const NtdBrush = /* @__PURE__ */ createIcon.createIcon({
|
|
264
290
|
displayName: 'NtdBrush',
|
|
265
291
|
paths: {
|
|
266
|
-
solid: ({ primaryColor,
|
|
267
|
-
outline: ({ primaryColor, strokeWidth }) => (jsxRuntime.jsx("path", { d:
|
|
268
|
-
duotone: ({ primaryColor, secondaryColor
|
|
269
|
-
vivid: ({ primaryColor, secondaryColor
|
|
292
|
+
solid: ({ primaryColor, accentColor, accentOpacity, uid }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [brushFilled(primaryColor, primaryColor, primaryColor), iconParts.within(uid, 'brush', jsxRuntime.jsx("path", { d: `${BRUSH_HANDLE}${BRUSH_FERRULE}${BRUSH_BRISTLES}` }), jsxRuntime.jsx("path", { d: BRUSH_CUTS, stroke: accentColor, strokeWidth: "1", opacity: accentOpacity }))] })),
|
|
293
|
+
outline: ({ primaryColor, strokeWidth }) => (jsxRuntime.jsx("path", { d: `${BRUSH_HANDLE}${BRUSH_FERRULE}${BRUSH_BRISTLES}`, stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" })),
|
|
294
|
+
duotone: ({ primaryColor, secondaryColor }) => brushFilled(primaryColor, primaryColor, secondaryColor),
|
|
295
|
+
vivid: ({ primaryColor, secondaryColor, accentColor, accentOpacity }) => brushFilled(primaryColor, accentColor, secondaryColor, accentOpacity),
|
|
270
296
|
},
|
|
271
297
|
});
|
|
272
298
|
const NtdPenTool = /* @__PURE__ */ createIcon.createIcon({
|
|
@@ -126,15 +126,17 @@ const NtdExternalLink = /* @__PURE__ */ createIcon.createIcon({
|
|
|
126
126
|
});
|
|
127
127
|
// NtdRefresh: two arcs round 12,12 (r 7), each ending in a filled head — a line glyph twice the
|
|
128
128
|
// stroke width in every variant but `outline`. The tail stops inside its head, so no cap sticks
|
|
129
|
-
// out of it in `sharp` (the old tails ran into the heads' corners).
|
|
130
|
-
// arrow
|
|
129
|
+
// out of it in `sharp` (the old tails ran into the heads' corners). Each head (7.2 wide, 4.2 long)
|
|
130
|
+
// points along the chord to the start of the other arrow's tail, with a clear gap before it — the
|
|
131
|
+
// bigger heads pointed past the tails and nearly touched them. Duotone and vivid: the top arrow
|
|
132
|
+
// primary, the bottom one secondary.
|
|
131
133
|
const REFRESH_TOP = {
|
|
132
|
-
tail: '
|
|
133
|
-
head: '
|
|
134
|
+
tail: 'M6.34 7.89A7 7 0 0 1 17.98 8.37',
|
|
135
|
+
head: 'M14.59 8.46L17.89 12.9L21.77 8.96z',
|
|
134
136
|
};
|
|
135
137
|
const REFRESH_BOTTOM = {
|
|
136
|
-
tail: '
|
|
137
|
-
head: '
|
|
138
|
+
tail: 'M17.66 16.11A7 7 0 0 1 6.02 15.63',
|
|
139
|
+
head: 'M9.41 15.54L6.11 11.1L2.23 15.04z',
|
|
138
140
|
};
|
|
139
141
|
function refreshArrows(top, bottom, strokeWidth) {
|
|
140
142
|
return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: REFRESH_TOP.tail, stroke: top, strokeWidth: strokeWidth * 2, fill: "none" }), jsxRuntime.jsx("path", { d: REFRESH_TOP.head, fill: top }), jsxRuntime.jsx("path", { d: REFRESH_BOTTOM.tail, stroke: bottom, strokeWidth: strokeWidth * 2, fill: "none" }), jsxRuntime.jsx("path", { d: REFRESH_BOTTOM.head, fill: bottom })] }));
|
|
@@ -28,11 +28,14 @@ const APARTMENT_WINDOWS = [
|
|
|
28
28
|
{ x: 14, y: 13 },
|
|
29
29
|
];
|
|
30
30
|
const APARTMENT_DOOR = { x: 10, y: 18, width: 4, height: 4 };
|
|
31
|
+
/** The door of the solid variants: it stops short of the ground, leaving a thin primary sill. */
|
|
32
|
+
const APARTMENT_DOOR_SILL = { ...APARTMENT_DOOR, height: 3.25 };
|
|
31
33
|
const NtdApartment = /* @__PURE__ */ createIcon.createIcon({
|
|
32
34
|
displayName: 'NtdApartment',
|
|
33
35
|
paths: {
|
|
34
|
-
// the windows and the door filled in the accent colour, no frames (round 33)
|
|
35
|
-
|
|
36
|
+
// the windows and the door filled in the accent colour, no frames (round 33), a sill under the
|
|
37
|
+
// door (round 34)
|
|
38
|
+
solid: ({ primaryColor, accentColor, accentOpacity }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("rect", { ...APARTMENT, fill: primaryColor }), jsxRuntime.jsxs("g", { fill: accentColor, opacity: accentOpacity, children: [APARTMENT_WINDOWS.map((w) => (jsxRuntime.jsx("rect", { ...w, width: "3", height: "3", rx: "0.5" }, `${w.x}-${w.y}`))), jsxRuntime.jsx("rect", { ...APARTMENT_DOOR_SILL })] })] })),
|
|
36
39
|
outline: ({ primaryColor, strokeWidth }) => (jsxRuntime.jsxs("g", { stroke: primaryColor, strokeWidth: strokeWidth, fill: "none", children: [jsxRuntime.jsx("rect", { ...APARTMENT }), APARTMENT_WINDOWS.map((w) => (jsxRuntime.jsx("rect", { ...w, width: "3", height: "3", rx: "0.5" }, `${w.x}-${w.y}`))), jsxRuntime.jsx("rect", { ...APARTMENT_DOOR })] })),
|
|
37
40
|
duotone: ({ primaryColor, secondaryColor }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("rect", { ...APARTMENT, fill: primaryColor }), jsxRuntime.jsxs("g", { fill: secondaryColor, children: [APARTMENT_WINDOWS.map((w) => (jsxRuntime.jsx("rect", { ...w, width: "3", height: "3", rx: "0.5" }, `${w.x}-${w.y}`))), jsxRuntime.jsx("rect", { ...APARTMENT_DOOR })] })] })),
|
|
38
41
|
vivid: ({ primaryColor, secondaryColor, accentColor, accentOpacity }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("rect", { ...APARTMENT, fill: primaryColor }), jsxRuntime.jsx("g", { fill: secondaryColor, children: APARTMENT_WINDOWS.map((w) => (jsxRuntime.jsx("rect", { ...w, width: "3", height: "3", rx: "0.5" }, `${w.x}-${w.y}`))) }), jsxRuntime.jsx("rect", { ...APARTMENT_DOOR, fill: accentColor, opacity: accentOpacity })] })),
|
package/dist/cjs/icons/shapes.js
CHANGED
|
@@ -67,6 +67,8 @@ const TRIANGLE_LINE = 'M12 4.24L20.38 21H3.62Z';
|
|
|
67
67
|
const TRIANGLE_ROUND = 'M9.76 6.47A2.5 2.5 0 0 1 14.24 6.47L20.19 18.38A2.5 2.5 0 0 1 17.95 22L6.05 22A2.5 2.5 0 0 1 3.81 18.38Z';
|
|
68
68
|
const NtdTriangle = /* @__PURE__ */ createIcon.createIcon({
|
|
69
69
|
displayName: 'NtdTriangle',
|
|
70
|
+
// text children centre on the centroid, low in the box (stacking, 1.3.5)
|
|
71
|
+
textCenter: [12, 15.3],
|
|
70
72
|
paths: {
|
|
71
73
|
solid: ({ primaryColor }) => jsxRuntime.jsx("polygon", { points: "12,2 22,22 2,22", fill: primaryColor }),
|
|
72
74
|
rounded: ({ primaryColor }) => jsxRuntime.jsx("path", { d: TRIANGLE_ROUND, fill: primaryColor }),
|
|
@@ -126,15 +128,6 @@ const NtdCross = /* @__PURE__ */ createIcon.createIcon({
|
|
|
126
128
|
rounded: ({ primaryColor }) => (jsxRuntime.jsx("path", { d: "M10.5 2h3a1.5 1.5 0 011.5 1.5V8a1 1 0 001 1h4.5a1.5 1.5 0 011.5 1.5v3a1.5 1.5 0 01-1.5 1.5H16a1 1 0 00-1 1v4.5a1.5 1.5 0 01-1.5 1.5h-3A1.5 1.5 0 019 20.5V16a1 1 0 00-1-1H3.5A1.5 1.5 0 012 13.5v-3A1.5 1.5 0 013.5 9H8a1 1 0 001-1V3.5A1.5 1.5 0 0110.5 2z", fill: primaryColor })),
|
|
127
129
|
},
|
|
128
130
|
});
|
|
129
|
-
const NtdStar4 = /* @__PURE__ */ createIcon.createIcon({
|
|
130
|
-
displayName: 'NtdStar4',
|
|
131
|
-
paths: {
|
|
132
|
-
solid: ({ primaryColor, strokeWidth: _strokeWidth }) => (jsxRuntime.jsx("path", { d: "M12 2l2.5 7.5L22 12l-7.5 2.5L12 22l-2.5-7.5L2 12l7.5-2.5z", fill: primaryColor })),
|
|
133
|
-
outline: ({ primaryColor, strokeWidth }) => (jsxRuntime.jsx("path", { d: "M12 2l2.5 7.5L22 12l-7.5 2.5L12 22l-2.5-7.5L2 12l7.5-2.5z", stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" })),
|
|
134
|
-
duotone: ({ primaryColor, secondaryColor, secondaryOpacity, strokeWidth }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: "M12 2l2.5 7.5L22 12l-7.5 2.5L12 22l-2.5-7.5L2 12l7.5-2.5z", fill: secondaryColor, opacity: secondaryOpacity }), jsxRuntime.jsx("path", { d: "M12 2l2.5 7.5L22 12l-7.5 2.5L12 22l-2.5-7.5L2 12l7.5-2.5z", stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" })] })),
|
|
135
|
-
vivid: ({ primaryColor, secondaryColor: _secondaryColor }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: "M12 2l2.5 7.5L22 12l-7.5 2.5L12 22l-2.5-7.5L2 12l7.5-2.5z", fill: primaryColor }), jsxRuntime.jsx("path", { d: "M12 2l2.5 7.5L22 12l-7.5 2.5L12 22l-2.5-7.5L2 12l7.5-2.5z", fill: "white", opacity: "0.1" })] })),
|
|
136
|
-
},
|
|
137
|
-
});
|
|
138
131
|
// The four corner arrows: the tail's level run sits at the height of the arrowhead's tip, so the
|
|
139
132
|
// two meet (it ran 2 units off the tip and the head looked stuck on beside the tail). It stops 2
|
|
140
133
|
// short of the tip: with the square caps of `sharp` it stuck out of the point. The filled variants
|
|
@@ -240,13 +233,25 @@ const NtdMove = /* @__PURE__ */ createIcon.createIcon({
|
|
|
240
233
|
vivid: ({ primaryColor, strokeWidth }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: moveShape(strokeWidth), fill: primaryColor }), jsxRuntime.jsx("path", { d: moveShape(strokeWidth), fill: "white", opacity: "0.1" })] })),
|
|
241
234
|
},
|
|
242
235
|
});
|
|
236
|
+
// NtdRepeat: two hooked arrows, a line glyph twice the stroke width in every variant but `outline`
|
|
237
|
+
// — redrawn tighter (shafts at y 6 and 18, heads 3 long) so the heavier lines stay in the box. As
|
|
238
|
+
// in NtdMaximize, each shaft stops 0.35 × the line width short of its head's point, so the square
|
|
239
|
+
// cap of `sharp` stays inside the head (it stuck out of both points). Duotone and vivid: one arrow
|
|
240
|
+
// primary, the other secondary (vivid had a fixed #3B82F6 head).
|
|
241
|
+
const REPEAT_HEADS = ['M17 3L20 6L17 9', 'M7 21L4 18L7 15'];
|
|
242
|
+
const REPEAT_OUTLINE = 'M17 1l4 4-4 4M3 11V9a4 4 0 014-4h14M7 23l-4-4 4-4M21 13v2a4 4 0 01-4 4H3';
|
|
243
|
+
function repeatArrows(first, second, strokeWidth) {
|
|
244
|
+
const width = strokeWidth * 2;
|
|
245
|
+
const back = width * 0.35;
|
|
246
|
+
return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: `${REPEAT_HEADS[0]}M4 10V9a3 3 0 013-3H${20 - back}`, stroke: first, strokeWidth: width, fill: "none" }), jsxRuntime.jsx("path", { d: `${REPEAT_HEADS[1]}M20 14v1a3 3 0 01-3 3H${4 + back}`, stroke: second, strokeWidth: width, fill: "none" })] }));
|
|
247
|
+
}
|
|
243
248
|
const NtdRepeat = /* @__PURE__ */ createIcon.createIcon({
|
|
244
249
|
displayName: 'NtdRepeat',
|
|
245
250
|
paths: {
|
|
246
|
-
solid: ({ primaryColor, strokeWidth }) => (
|
|
247
|
-
outline: ({ primaryColor, strokeWidth }) => (jsxRuntime.
|
|
248
|
-
duotone: ({ primaryColor, secondaryColor,
|
|
249
|
-
vivid: ({ primaryColor, secondaryColor
|
|
251
|
+
solid: ({ primaryColor, strokeWidth }) => repeatArrows(primaryColor, primaryColor, strokeWidth),
|
|
252
|
+
outline: ({ primaryColor, strokeWidth }) => (jsxRuntime.jsx("path", { d: REPEAT_OUTLINE, stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" })),
|
|
253
|
+
duotone: ({ primaryColor, secondaryColor, strokeWidth }) => repeatArrows(primaryColor, secondaryColor, strokeWidth),
|
|
254
|
+
vivid: ({ primaryColor, secondaryColor, strokeWidth }) => repeatArrows(primaryColor, secondaryColor, strokeWidth),
|
|
250
255
|
},
|
|
251
256
|
});
|
|
252
257
|
const NtdShuffle = /* @__PURE__ */ createIcon.createIcon({
|
|
@@ -346,5 +351,4 @@ exports.NtdRepeat = NtdRepeat;
|
|
|
346
351
|
exports.NtdSegment = NtdSegment;
|
|
347
352
|
exports.NtdShuffle = NtdShuffle;
|
|
348
353
|
exports.NtdSquare = NtdSquare;
|
|
349
|
-
exports.NtdStar4 = NtdStar4;
|
|
350
354
|
exports.NtdTriangle = NtdTriangle;
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
var jsxRuntime = require('react/jsx-runtime');
|
|
4
4
|
var createIcon = require('../createIcon.js');
|
|
5
|
+
var weather = require('./weather.js');
|
|
5
6
|
|
|
6
7
|
/* ────────────────────────────────────────────────────────────────────────────
|
|
7
8
|
RECYCLING & WASTE
|
|
@@ -63,15 +64,6 @@ const NtdEvCharger = /* @__PURE__ */ createIcon.createIcon({
|
|
|
63
64
|
vivid: ({ primaryColor, secondaryColor: _secondaryColor }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("rect", { x: "4", y: "2", width: "12", height: "18", rx: "2", fill: primaryColor }), jsxRuntime.jsx("rect", { x: "4", y: "2", width: "12", height: "18", rx: "2", fill: "white", opacity: "0.08" }), jsxRuntime.jsx("path", { d: "M8 8h4v4H8z", fill: "white" }), jsxRuntime.jsx("circle", { cx: "10", cy: "16", r: "1", fill: "white" }), jsxRuntime.jsx("path", { d: "M10 6v2M10 12v2M8 10h4", stroke: "white", strokeWidth: "1", strokeLinecap: "round" }), jsxRuntime.jsx("path", { d: "M16 10h2a2 2 0 012 2v4a2 2 0 01-2 2h-2", stroke: "white", strokeWidth: "1", strokeLinecap: "round" })] })),
|
|
64
65
|
},
|
|
65
66
|
});
|
|
66
|
-
const NtdHydropower = /* @__PURE__ */ createIcon.createIcon({
|
|
67
|
-
displayName: 'NtdHydropower',
|
|
68
|
-
paths: {
|
|
69
|
-
solid: ({ primaryColor }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: "M12 2c-4 4-6 7-6 10a6 6 0 1012 0c0-3-2-6-6-10z", fill: primaryColor }), jsxRuntime.jsx("path", { d: "M12 8v4l2-2M12 12l-2-2", stroke: "white", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" })] })),
|
|
70
|
-
outline: ({ primaryColor, strokeWidth }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: "M12 2c-4 4-6 7-6 10a6 6 0 1012 0c0-3-2-6-6-10z", stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" }), jsxRuntime.jsx("path", { d: "M12 8v4l2-2M12 12l-2-2", stroke: primaryColor, strokeWidth: strokeWidth, strokeLinecap: "round", strokeLinejoin: "round" })] })),
|
|
71
|
-
duotone: ({ primaryColor, secondaryColor, secondaryOpacity, strokeWidth }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: "M12 2c-4 4-6 7-6 10a6 6 0 1012 0c0-3-2-6-6-10z", fill: secondaryColor, opacity: secondaryOpacity }), jsxRuntime.jsx("path", { d: "M12 2c-4 4-6 7-6 10a6 6 0 1012 0c0-3-2-6-6-10z", stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" }), jsxRuntime.jsx("path", { d: "M12 8v4l2-2M12 12l-2-2", stroke: primaryColor, strokeWidth: strokeWidth, strokeLinecap: "round", strokeLinejoin: "round" })] })),
|
|
72
|
-
vivid: ({ primaryColor, secondaryColor: _secondaryColor }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: "M12 2c-4 4-6 7-6 10a6 6 0 1012 0c0-3-2-6-6-10z", fill: primaryColor }), jsxRuntime.jsx("path", { d: "M12 2c-4 4-6 7-6 10a6 6 0 1012 0c0-3-2-6-6-10z", fill: "white", opacity: "0.1" }), jsxRuntime.jsx("path", { d: "M12 8v4l2-2M12 12l-2-2", stroke: "white", strokeWidth: "1.8", strokeLinecap: "round", strokeLinejoin: "round" })] })),
|
|
73
|
-
},
|
|
74
|
-
});
|
|
75
67
|
/* ────────────────────────────────────────────────────────────────────────────
|
|
76
68
|
CARBON & CLIMATE
|
|
77
69
|
───────────────────────────────────────────────────────────────────────────── */
|
|
@@ -163,7 +155,7 @@ const sustainabilityIcons = {
|
|
|
163
155
|
NtdSolarPanel,
|
|
164
156
|
NtdWindTurbine,
|
|
165
157
|
NtdEvCharger,
|
|
166
|
-
NtdHydropower,
|
|
158
|
+
NtdHydropower: weather.NtdHydropower,
|
|
167
159
|
NtdCarbonFootprint,
|
|
168
160
|
NtdCo2,
|
|
169
161
|
NtdNetZero,
|
|
@@ -180,7 +172,6 @@ exports.NtdCo2 = NtdCo2;
|
|
|
180
172
|
exports.NtdCompost = NtdCompost;
|
|
181
173
|
exports.NtdEcoFriendly = NtdEcoFriendly;
|
|
182
174
|
exports.NtdEvCharger = NtdEvCharger;
|
|
183
|
-
exports.NtdHydropower = NtdHydropower;
|
|
184
175
|
exports.NtdNetZero = NtdNetZero;
|
|
185
176
|
exports.NtdOrganic = NtdOrganic;
|
|
186
177
|
exports.NtdPlantTree = NtdPlantTree;
|
package/dist/cjs/icons/travel.js
CHANGED
|
@@ -43,26 +43,27 @@ const NtdCar = /* @__PURE__ */ createIcon.createIcon({
|
|
|
43
43
|
vivid: ({ primaryColor, secondaryColor: _secondaryColor }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: "M5 11l2-5h10l2 5M3 14v4a1 1 0 001 1h2a1 1 0 001-1v-1h10v1a1 1 0 001 1h2a1 1 0 001-1v-4a2 2 0 00-2-2H5a2 2 0 00-2 2z", fill: primaryColor }), jsxRuntime.jsx("path", { d: "M5 11l2-5h10l2 5M3 14v4a1 1 0 001 1h2a1 1 0 001-1v-1h10v1a1 1 0 001 1h2a1 1 0 001-1v-4a2 2 0 00-2-2H5a2 2 0 00-2 2z", fill: "white", opacity: "0.08" }), jsxRuntime.jsx("circle", { cx: "7", cy: "15", r: "1.5", fill: "white", opacity: "0.5" }), jsxRuntime.jsx("circle", { cx: "17", cy: "15", r: "1.5", fill: "white", opacity: "0.5" })] })),
|
|
44
44
|
},
|
|
45
45
|
});
|
|
46
|
-
// NtdBus:
|
|
47
|
-
//
|
|
48
|
-
//
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
const
|
|
53
|
-
|
|
54
|
-
const
|
|
55
|
-
const
|
|
56
|
-
const
|
|
46
|
+
// NtdBus: seen from the front — the body with a big windscreen (its top frame 1.75, 30% less than
|
|
47
|
+
// the side view's), the driver (NtdUser's head and shoulders) in it on the left, two headlights and
|
|
48
|
+
// a bumper line below it, and the wheels as rectangles under the body (round side-view wheels
|
|
49
|
+
// read oddly). Filled, the windscreen, the headlights and the bumper are in the accent colour and
|
|
50
|
+
// the driver primary.
|
|
51
|
+
const BUS_BODY = { x: 3, y: 2, width: 18, height: 17, rx: 2.5 };
|
|
52
|
+
const BUS_WINDOW = { x: 4.75, y: 3.75, width: 14.5, height: 7.5, rx: 1 };
|
|
53
|
+
/** The driver, cut off by the windscreen's bottom edge. */
|
|
54
|
+
const BUS_DRIVER = 'M8.4 5.3a1.6 1.6 0 110 3.2 1.6 1.6 0 110-3.2zM5.6 11.5v-.1a2.3 2.3 0 012.3-2.3h1a2.3 2.3 0 012.3 2.3v.1z';
|
|
55
|
+
const BUS_LIGHTS = 'M6.6 13.7a1.3 1.3 0 110 2.6 1.3 1.3 0 110-2.6zM17.4 13.7a1.3 1.3 0 110 2.6 1.3 1.3 0 110-2.6z';
|
|
56
|
+
const BUS_BUMPER = 'M3 17.4h18';
|
|
57
|
+
const BUS_WHEELS = 'M5.5 18h3v3a1 1 0 01-1 1h-1a1 1 0 01-1-1zM15.5 18h3v3a1 1 0 01-1 1h-1a1 1 0 01-1-1z';
|
|
57
58
|
function busFilled({ primaryColor, uid }, glass, details, detailOpacity) {
|
|
58
|
-
return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("
|
|
59
|
+
return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: BUS_WHEELS, fill: primaryColor }), jsxRuntime.jsx("rect", { ...BUS_BODY, fill: primaryColor }), jsxRuntime.jsxs("g", { opacity: detailOpacity, children: [jsxRuntime.jsx("path", { d: BUS_LIGHTS, fill: details }), iconParts.within(uid, 'body', jsxRuntime.jsx("rect", { ...BUS_BODY }), jsxRuntime.jsx("path", { d: BUS_BUMPER, stroke: details, strokeWidth: "1.2" }))] }), jsxRuntime.jsx("rect", { ...BUS_WINDOW, fill: glass }), iconParts.within(uid, 'window', jsxRuntime.jsx("rect", { ...BUS_WINDOW }), jsxRuntime.jsx("path", { d: BUS_DRIVER, fill: primaryColor }))] }));
|
|
59
60
|
}
|
|
60
61
|
const NtdBus = /* @__PURE__ */ createIcon.createIcon({
|
|
61
62
|
displayName: 'NtdBus',
|
|
62
63
|
paths: {
|
|
63
64
|
solid: (props) => busFilled(props, props.accentColor, props.accentColor, props.accentOpacity),
|
|
64
|
-
outline: ({ primaryColor, strokeWidth }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("rect", { ...BUS_BODY, stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" }), jsxRuntime.jsx("rect", { ...BUS_WINDOW, stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" }), jsxRuntime.jsx("path", { d:
|
|
65
|
-
// fills only: the body and the
|
|
65
|
+
outline: ({ primaryColor, strokeWidth, uid }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("rect", { ...BUS_BODY, stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" }), jsxRuntime.jsx("rect", { ...BUS_WINDOW, stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" }), iconParts.within(uid, 'window', jsxRuntime.jsx("rect", { ...BUS_WINDOW }), jsxRuntime.jsx("path", { d: BUS_DRIVER, fill: primaryColor })), jsxRuntime.jsx("path", { d: "M6.6 14a1 1 0 110 2 1 1 0 110-2zM17.4 14a1 1 0 110 2 1 1 0 110-2z", fill: primaryColor }), jsxRuntime.jsx("path", { d: "M6 19v2a1 1 0 001 1h1a1 1 0 001-1v-2M15 19v2a1 1 0 001 1h1a1 1 0 001-1v-2", stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" })] })),
|
|
66
|
+
// fills only: the body and the driver primary, the windscreen and the details secondary
|
|
66
67
|
duotone: (props) => busFilled(props, props.secondaryColor, props.secondaryColor, 1),
|
|
67
68
|
vivid: (props) => busFilled(props, props.secondaryColor, props.accentColor, props.accentOpacity),
|
|
68
69
|
},
|
package/dist/cjs/icons/ui.js
CHANGED
|
@@ -59,19 +59,24 @@ const NtdUsers = /* @__PURE__ */ createIcon.createIcon({
|
|
|
59
59
|
},
|
|
60
60
|
});
|
|
61
61
|
// NtdHeart: duotone fills the heart primary inside a secondary outline (the other way round
|
|
62
|
-
// before); vivid splits it down the middle — primary left, secondary right —
|
|
62
|
+
// before); vivid splits it down the middle — primary left, secondary right — inside an accent
|
|
63
|
+
// outline (it was an accent seam between the halves).
|
|
63
64
|
const HEART = 'M20.84 4.61a5.5 5.5 0 00-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 00-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 000-7.78z';
|
|
64
65
|
const NtdHeart = /* @__PURE__ */ createIcon.createIcon({
|
|
65
66
|
displayName: 'NtdHeart',
|
|
67
|
+
// text children centre on the middle of the lobes and the point (stacking, 1.3.5)
|
|
68
|
+
textCenter: [12, 11.2],
|
|
66
69
|
paths: {
|
|
67
70
|
solid: ({ primaryColor, strokeWidth: _strokeWidth }) => (jsxRuntime.jsx("path", { d: "M20.84 4.61a5.5 5.5 0 00-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 00-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 000-7.78z", fill: primaryColor })),
|
|
68
71
|
outline: ({ primaryColor, strokeWidth }) => (jsxRuntime.jsx("path", { d: "M20.84 4.61a5.5 5.5 0 00-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 00-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 000-7.78z", stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" })),
|
|
69
72
|
duotone: ({ primaryColor, secondaryColor, strokeWidth }) => (jsxRuntime.jsx("path", { d: HEART, fill: primaryColor, stroke: secondaryColor, strokeWidth: strokeWidth })),
|
|
70
|
-
vivid: ({ primaryColor, secondaryColor, accentColor, accentOpacity, uid }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: HEART, fill: secondaryColor }), iconParts.within(uid, 'left', jsxRuntime.jsx("rect", { x: "0", y: "0", width: "12", height: "24" }), jsxRuntime.jsx("path", { d: HEART, fill: primaryColor })),
|
|
73
|
+
vivid: ({ primaryColor, secondaryColor, accentColor, accentOpacity, strokeWidth, uid }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: HEART, fill: secondaryColor }), iconParts.within(uid, 'left', jsxRuntime.jsx("rect", { x: "0", y: "0", width: "12", height: "24" }), jsxRuntime.jsx("path", { d: HEART, fill: primaryColor })), jsxRuntime.jsx("path", { d: HEART, stroke: accentColor, strokeWidth: strokeWidth, opacity: accentOpacity, fill: "none" })] })),
|
|
71
74
|
},
|
|
72
75
|
});
|
|
73
76
|
const NtdStar = /* @__PURE__ */ createIcon.createIcon({
|
|
74
77
|
displayName: 'NtdStar',
|
|
78
|
+
// text children centre on the middle of the body, below the box centre (stacking, 1.3.5)
|
|
79
|
+
textCenter: [12, 12.6],
|
|
75
80
|
paths: {
|
|
76
81
|
solid: ({ primaryColor, strokeWidth: _strokeWidth }) => (jsxRuntime.jsx("path", { d: "M12 2l3.09 6.26L22 9.27l-5 4.87 1.18 6.88L12 17.77l-6.18 3.25L7 14.14 2 9.27l6.91-1.01L12 2z", fill: primaryColor })),
|
|
77
82
|
outline: ({ primaryColor, strokeWidth }) => (jsxRuntime.jsx("path", { d: "M12 2l3.09 6.26L22 9.27l-5 4.87 1.18 6.88L12 17.77l-6.18 3.25L7 14.14 2 9.27l6.91-1.01L12 2z", stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" })),
|
|
@@ -147,15 +152,48 @@ const NtdHelp = /* @__PURE__ */ createIcon.createIcon({
|
|
|
147
152
|
vivid: ({ primaryColor, secondaryColor }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("circle", { cx: "12", cy: "12", r: "10", fill: primaryColor }), jsxRuntime.jsx("circle", { cx: "12", cy: "12", r: "10", fill: "white", opacity: "0.08" }), jsxRuntime.jsx("circle", { cx: "12", cy: "17", r: "1", fill: secondaryColor }), jsxRuntime.jsx("path", { d: "M9.09 9a3 3 0 015.83 1c0 2-3 3-3 3", stroke: "white", strokeWidth: "1", fill: "none", opacity: "0.4" })] })),
|
|
148
153
|
},
|
|
149
154
|
});
|
|
150
|
-
/**
|
|
155
|
+
/**
|
|
156
|
+
* The hands: minute 6.8 long, hour 5.4 (were 6 and 4.5) — twice the stroke width in every variant
|
|
157
|
+
* but `outline`.
|
|
158
|
+
*/
|
|
151
159
|
const CLOCK_HANDS = 'M12 5.2V12l4.83 2.41';
|
|
152
160
|
const NtdClock = /* @__PURE__ */ createIcon.createIcon({
|
|
153
161
|
displayName: 'NtdClock',
|
|
154
162
|
paths: {
|
|
155
|
-
solid: ({ primaryColor, accentColor, accentOpacity, strokeWidth }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("circle", { cx: "12", cy: "12", r: "10", fill: primaryColor }), jsxRuntime.jsx("path", { d: CLOCK_HANDS, stroke: accentColor, strokeWidth: strokeWidth, opacity: accentOpacity })] })),
|
|
163
|
+
solid: ({ primaryColor, accentColor, accentOpacity, strokeWidth }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("circle", { cx: "12", cy: "12", r: "10", fill: primaryColor }), jsxRuntime.jsx("path", { d: CLOCK_HANDS, stroke: accentColor, strokeWidth: strokeWidth * 2, opacity: accentOpacity })] })),
|
|
156
164
|
outline: ({ primaryColor, strokeWidth }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("circle", { cx: "12", cy: "12", r: "10", stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" }), jsxRuntime.jsx("path", { d: CLOCK_HANDS, stroke: primaryColor, strokeWidth: strokeWidth })] })),
|
|
157
|
-
duotone: ({ primaryColor, secondaryColor, secondaryOpacity, strokeWidth }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("circle", { cx: "12", cy: "12", r: "10", fill: secondaryColor, opacity: secondaryOpacity }), jsxRuntime.jsx("circle", { cx: "12", cy: "12", r: "10", stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" }), jsxRuntime.jsx("path", { d: CLOCK_HANDS, stroke: primaryColor, strokeWidth: strokeWidth })] })),
|
|
158
|
-
vivid: ({ primaryColor, secondaryColor }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("circle", { cx: "12", cy: "12", r: "10", fill: primaryColor }), jsxRuntime.jsx("circle", { cx: "12", cy: "12", r: "10", fill: "white", opacity: "0.1" }), jsxRuntime.jsx("path", { d: CLOCK_HANDS, stroke: secondaryColor, strokeWidth:
|
|
165
|
+
duotone: ({ primaryColor, secondaryColor, secondaryOpacity, strokeWidth }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("circle", { cx: "12", cy: "12", r: "10", fill: secondaryColor, opacity: secondaryOpacity }), jsxRuntime.jsx("circle", { cx: "12", cy: "12", r: "10", stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" }), jsxRuntime.jsx("path", { d: CLOCK_HANDS, stroke: primaryColor, strokeWidth: strokeWidth * 2 })] })),
|
|
166
|
+
vivid: ({ primaryColor, secondaryColor, strokeWidth }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("circle", { cx: "12", cy: "12", r: "10", fill: primaryColor }), jsxRuntime.jsx("circle", { cx: "12", cy: "12", r: "10", fill: "white", opacity: "0.1" }), jsxRuntime.jsx("path", { d: CLOCK_HANDS, stroke: secondaryColor, strokeWidth: strokeWidth * 2 })] })),
|
|
167
|
+
},
|
|
168
|
+
});
|
|
169
|
+
// NtdHourglass: two plates and the curved glass between them, the sand running from the top bulb
|
|
170
|
+
// (resting at the neck) through a thread onto a pile in the bottom one. Under the `turn` animation
|
|
171
|
+
// the sand pours while the glass holds, in step with the turns (animations.css): each bulb draws
|
|
172
|
+
// its sand twice — at the neck and piled on the base — both scaled from a full bulb, which the
|
|
173
|
+
// CSS swaps between; at rest they are drawn here part way through. Duotone and vivid: the sand
|
|
174
|
+
// secondary.
|
|
175
|
+
const HOURGLASS_PLATES = [
|
|
176
|
+
{ x: 4, y: 2, width: 16, height: 2.5, rx: 1 },
|
|
177
|
+
{ x: 4, y: 19.5, width: 16, height: 2.5, rx: 1 },
|
|
178
|
+
];
|
|
179
|
+
const HOURGLASS_GLASS = 'M6.5 4.5v1.3c0 2.9 2.1 4.6 4.1 6.2-2 1.6-4.1 3.3-4.1 6.2v1.3M17.5 4.5v1.3c0 2.9-2.1 4.6-4.1 6.2 2 1.6 4.1 3.3 4.1 6.2v1.3';
|
|
180
|
+
/** A full bulb of sand: the top one (apex at the neck 12,11.4, base at 5.8) and the bottom one. */
|
|
181
|
+
const HOURGLASS_SAND_TOP = 'M8.2 5.8h7.6c0 2.3-1.5 3.9-3.8 5.6-2.3-1.7-3.8-3.3-3.8-5.6z';
|
|
182
|
+
const HOURGLASS_SAND_BOTTOM = 'M8.2 18.2h7.6c0-2.3-1.5-3.9-3.8-5.6-2.3 1.7-3.8 3.3-3.8 5.6z';
|
|
183
|
+
function hourglassSand(fill, strokeWidth) {
|
|
184
|
+
const part = (name) => `ntd-hourglass-sand ntd-hourglass-sand--${name}`;
|
|
185
|
+
return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { className: part('top-neck'), d: HOURGLASS_SAND_TOP, fill: fill, transform: "translate(12 11.4) scale(0.6) translate(-12 -11.4)" }), jsxRuntime.jsx("path", { className: part('top-base'), d: HOURGLASS_SAND_TOP, fill: fill, transform: "scale(0)" }), jsxRuntime.jsx("path", { className: part('bottom-neck'), d: HOURGLASS_SAND_BOTTOM, fill: fill, transform: "scale(0)" }), jsxRuntime.jsx("path", { className: part('bottom-base'), d: HOURGLASS_SAND_BOTTOM, fill: fill, transform: "translate(0 18.2) scale(1 0.45) translate(0 -18.2)" }), jsxRuntime.jsx("path", { className: part('stream-up'), d: "M12 11.6V6.4", stroke: fill, strokeWidth: strokeWidth * 0.5, opacity: "0" }), jsxRuntime.jsx("path", { className: part('stream-down'), d: "M12 12.4V17.6", stroke: fill, strokeWidth: strokeWidth * 0.5 })] }));
|
|
186
|
+
}
|
|
187
|
+
function hourglassFilled(frame, sand, strokeWidth) {
|
|
188
|
+
return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [HOURGLASS_PLATES.map((p) => (jsxRuntime.jsx("rect", { ...p, fill: frame }, p.y))), jsxRuntime.jsx("path", { d: HOURGLASS_GLASS, stroke: frame, strokeWidth: strokeWidth, fill: "none" }), hourglassSand(sand, strokeWidth)] }));
|
|
189
|
+
}
|
|
190
|
+
const NtdHourglass = /* @__PURE__ */ createIcon.createIcon({
|
|
191
|
+
displayName: 'NtdHourglass',
|
|
192
|
+
paths: {
|
|
193
|
+
solid: ({ primaryColor, strokeWidth }) => hourglassFilled(primaryColor, primaryColor, strokeWidth),
|
|
194
|
+
outline: ({ primaryColor, strokeWidth }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: `M4.5 3.25h15M4.5 20.75h15${HOURGLASS_GLASS}`, stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" }), hourglassSand(primaryColor, strokeWidth)] })),
|
|
195
|
+
duotone: ({ primaryColor, secondaryColor, strokeWidth }) => hourglassFilled(primaryColor, secondaryColor, strokeWidth),
|
|
196
|
+
vivid: ({ primaryColor, secondaryColor, strokeWidth }) => hourglassFilled(primaryColor, secondaryColor, strokeWidth),
|
|
159
197
|
},
|
|
160
198
|
});
|
|
161
199
|
// The binder rings are 1.6x the stroke wide; the header line is a cut across the page, kept
|
|
@@ -242,6 +280,8 @@ const NtdThumbDown = /* @__PURE__ */ createIcon.createIcon({
|
|
|
242
280
|
});
|
|
243
281
|
const NtdShield = /* @__PURE__ */ createIcon.createIcon({
|
|
244
282
|
displayName: 'NtdShield',
|
|
283
|
+
// text children centre on the wide upper part of the shield (stacking, 1.3.5)
|
|
284
|
+
textCenter: [12, 11],
|
|
245
285
|
paths: {
|
|
246
286
|
solid: ({ primaryColor, strokeWidth: _strokeWidth }) => (jsxRuntime.jsx("path", { d: "M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z", fill: primaryColor })),
|
|
247
287
|
outline: ({ primaryColor, strokeWidth }) => (jsxRuntime.jsx("path", { d: "M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z", stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" })),
|
|
@@ -333,6 +373,7 @@ exports.NtdGlobe = NtdGlobe;
|
|
|
333
373
|
exports.NtdHeart = NtdHeart;
|
|
334
374
|
exports.NtdHelp = NtdHelp;
|
|
335
375
|
exports.NtdHome = NtdHome;
|
|
376
|
+
exports.NtdHourglass = NtdHourglass;
|
|
336
377
|
exports.NtdInfo = NtdInfo;
|
|
337
378
|
exports.NtdMap = NtdMap;
|
|
338
379
|
exports.NtdMoon = NtdMoon;
|
|
@@ -74,6 +74,8 @@ const NtdDroplet = /* @__PURE__ */ createIcon.createIcon({
|
|
|
74
74
|
vivid: ({ primaryColor, secondaryColor: _secondaryColor }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: "M12 2.5C13.1 6.2 17.6 9.4 17.6 14.4a5.6 6.2 0 1 1-11.2 0C6.4 9.4 10.9 6.2 12 2.5z", fill: primaryColor }), jsxRuntime.jsx("path", { d: "M12 2.5C13.1 6.2 17.6 9.4 17.6 14.4a5.6 6.2 0 1 1-11.2 0C6.4 9.4 10.9 6.2 12 2.5z", fill: "white", opacity: "0.1" })] })),
|
|
75
75
|
},
|
|
76
76
|
});
|
|
77
|
+
/** @deprecated The same drop as {@link NtdDroplet} — use that. */
|
|
78
|
+
const NtdHydropower = NtdDroplet;
|
|
77
79
|
const NtdThermometer = /* @__PURE__ */ createIcon.createIcon({
|
|
78
80
|
displayName: 'NtdThermometer',
|
|
79
81
|
paths: {
|
|
@@ -215,6 +217,7 @@ exports.NtdDroplet = NtdDroplet;
|
|
|
215
217
|
exports.NtdFeather = NtdFeather;
|
|
216
218
|
exports.NtdFire = NtdFire;
|
|
217
219
|
exports.NtdFlower = NtdFlower;
|
|
220
|
+
exports.NtdHydropower = NtdHydropower;
|
|
218
221
|
exports.NtdLeaf = NtdLeaf;
|
|
219
222
|
exports.NtdMountain = NtdMountain;
|
|
220
223
|
exports.NtdRain = NtdRain;
|