@nice2dev/icons 1.2.1 → 1.3.0

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.
Files changed (94) hide show
  1. package/CHANGELOG.md +538 -0
  2. package/README.md +146 -134
  3. package/dist/cjs/NiceDesktopIconExporter.js +7 -3
  4. package/dist/cjs/NiceFaviconGenerator.js +6 -2
  5. package/dist/cjs/NiceIconPicker.js +36 -28
  6. package/dist/cjs/NiceIconPreview.js +3 -1
  7. package/dist/cjs/NiceIconSetCreator.js +7 -2
  8. package/dist/cjs/NtdIconBadge.js +18 -3
  9. package/dist/cjs/NtdIconMorph.js +3 -1
  10. package/dist/cjs/createIcon.js +10 -2
  11. package/dist/cjs/design-tokens.js +2 -0
  12. package/dist/cjs/iconMetadata.js +4 -0
  13. package/dist/cjs/iconParts.js +49 -0
  14. package/dist/cjs/icons/accessibility.js +12 -4
  15. package/dist/cjs/icons/actions.js +89 -25
  16. package/dist/cjs/icons/business.js +58 -28
  17. package/dist/cjs/icons/ecommerce.js +0 -20
  18. package/dist/cjs/icons/education.js +22 -9
  19. package/dist/cjs/icons/files.js +70 -56
  20. package/dist/cjs/icons/fun.js +39 -25
  21. package/dist/cjs/icons/gaming.js +29 -4
  22. package/dist/cjs/icons/health.js +11 -4
  23. package/dist/cjs/icons/index.js +63 -5
  24. package/dist/cjs/icons/input.js +120 -0
  25. package/dist/cjs/icons/legal.js +4 -9
  26. package/dist/cjs/icons/media.js +26 -11
  27. package/dist/cjs/icons/navigation.js +4 -2
  28. package/dist/cjs/icons/omniverk.js +19 -6
  29. package/dist/cjs/icons/realestate.js +10 -4
  30. package/dist/cjs/icons/saas.js +15 -4
  31. package/dist/cjs/icons/science.js +6 -3
  32. package/dist/cjs/icons/shapes.js +133 -31
  33. package/dist/cjs/icons/sports.js +6 -2
  34. package/dist/cjs/icons/ui.js +62 -20
  35. package/dist/cjs/icons/weather.js +18 -8
  36. package/dist/cjs/index.js +63 -5
  37. package/dist/cjs/nicetodev-icons.css +1 -1
  38. package/dist/cjs/resolver.js +55 -1
  39. package/dist/cjs/rsc.js +1 -1
  40. package/dist/cjs/utilities.js +4 -2
  41. package/dist/esm/NiceDesktopIconExporter.js +7 -3
  42. package/dist/esm/NiceFaviconGenerator.js +6 -2
  43. package/dist/esm/NiceIconPicker.js +37 -29
  44. package/dist/esm/NiceIconPreview.js +3 -1
  45. package/dist/esm/NiceIconSetCreator.js +7 -2
  46. package/dist/esm/NtdIconBadge.js +18 -3
  47. package/dist/esm/NtdIconMorph.js +3 -1
  48. package/dist/esm/createIcon.js +10 -2
  49. package/dist/esm/design-tokens.js +2 -0
  50. package/dist/esm/iconMetadata.js +4 -0
  51. package/dist/esm/iconParts.js +46 -0
  52. package/dist/esm/icons/accessibility.js +12 -4
  53. package/dist/esm/icons/actions.js +87 -26
  54. package/dist/esm/icons/business.js +58 -29
  55. package/dist/esm/icons/ecommerce.js +1 -19
  56. package/dist/esm/icons/education.js +22 -10
  57. package/dist/esm/icons/files.js +70 -56
  58. package/dist/esm/icons/fun.js +37 -25
  59. package/dist/esm/icons/gaming.js +29 -5
  60. package/dist/esm/icons/health.js +11 -4
  61. package/dist/esm/icons/index.js +10 -9
  62. package/dist/esm/icons/input.js +75 -0
  63. package/dist/esm/icons/legal.js +4 -9
  64. package/dist/esm/icons/media.js +26 -11
  65. package/dist/esm/icons/navigation.js +4 -2
  66. package/dist/esm/icons/omniverk.js +19 -6
  67. package/dist/esm/icons/realestate.js +10 -4
  68. package/dist/esm/icons/saas.js +15 -4
  69. package/dist/esm/icons/science.js +6 -3
  70. package/dist/esm/icons/shapes.js +128 -32
  71. package/dist/esm/icons/sports.js +6 -2
  72. package/dist/esm/icons/ui.js +62 -21
  73. package/dist/esm/icons/weather.js +18 -8
  74. package/dist/esm/index.js +10 -9
  75. package/dist/esm/nicetodev-icons.css +1 -1
  76. package/dist/esm/resolver.js +55 -1
  77. package/dist/esm/rsc.js +1 -1
  78. package/dist/esm/utilities.js +4 -2
  79. package/dist/types/design-tokens.d.ts +2 -0
  80. package/dist/types/iconParts.d.ts +19 -0
  81. package/dist/types/icons/actions.d.ts +3 -0
  82. package/dist/types/icons/business.d.ts +2 -0
  83. package/dist/types/icons/ecommerce.d.ts +0 -2
  84. package/dist/types/icons/education.d.ts +1 -0
  85. package/dist/types/icons/files.d.ts +2 -1
  86. package/dist/types/icons/fun.d.ts +6 -1
  87. package/dist/types/icons/gaming.d.ts +2 -0
  88. package/dist/types/icons/index.d.ts +10 -9
  89. package/dist/types/icons/input.d.ts +53 -0
  90. package/dist/types/icons/omniverk.d.ts +0 -2
  91. package/dist/types/icons/shapes.d.ts +6 -0
  92. package/dist/types/icons/ui.d.ts +1 -0
  93. package/dist/types/types.d.ts +6 -0
  94. package/package.json +3 -1
@@ -29,6 +29,7 @@ var food = require('./food.js');
29
29
  var travel = require('./travel.js');
30
30
  var sports = require('./sports.js');
31
31
  var omniverk = require('./omniverk.js');
32
+ var input = require('./input.js');
32
33
 
33
34
  // Navigation
34
35
 
@@ -51,7 +52,9 @@ exports.NtdClipboard = actions.NtdClipboard;
51
52
  exports.NtdCopy = actions.NtdCopy;
52
53
  exports.NtdDownload = actions.NtdDownload;
53
54
  exports.NtdEdit = actions.NtdEdit;
55
+ exports.NtdEditDetail = actions.NtdEditDetail;
54
56
  exports.NtdFilter = actions.NtdFilter;
57
+ exports.NtdGroup = actions.NtdGroup;
55
58
  exports.NtdLink = actions.NtdLink;
56
59
  exports.NtdLock = actions.NtdLock;
57
60
  exports.NtdLogIn = actions.NtdLogIn;
@@ -68,10 +71,12 @@ exports.NtdShare = actions.NtdShare;
68
71
  exports.NtdSort = actions.NtdSort;
69
72
  exports.NtdTrash = actions.NtdTrash;
70
73
  exports.NtdUndo = actions.NtdUndo;
74
+ exports.NtdUngroup = actions.NtdUngroup;
71
75
  exports.NtdUnlock = actions.NtdUnlock;
72
76
  exports.NtdUpload = actions.NtdUpload;
73
77
  exports.NtdZoomIn = actions.NtdZoomIn;
74
78
  exports.NtdZoomOut = actions.NtdZoomOut;
79
+ exports.NtdAdmin = ui.NtdAdmin;
75
80
  exports.NtdBackspace = ui.NtdBackspace;
76
81
  exports.NtdBell = ui.NtdBell;
77
82
  exports.NtdBookmark = ui.NtdBookmark;
@@ -195,16 +200,16 @@ exports.NtdList = files.NtdList;
195
200
  exports.NtdMonitor = files.NtdMonitor;
196
201
  exports.NtdPackage = files.NtdPackage;
197
202
  exports.NtdPieChart = files.NtdPieChart;
203
+ exports.NtdShoppingCart = files.NtdShoppingCart;
198
204
  exports.NtdSmartphone = files.NtdSmartphone;
199
205
  exports.NtdTable = files.NtdTable;
200
206
  exports.NtdTarget = files.NtdTarget;
201
207
  exports.NtdTerminal = files.NtdTerminal;
202
208
  exports.NtdTruck = files.NtdTruck;
203
- exports.NtdZap = files.NtdZap;
204
209
  exports.NtdCrown = fun.NtdCrown;
205
210
  exports.NtdDice = fun.NtdDice;
206
211
  exports.NtdDumpsterFire = fun.NtdDumpsterFire;
207
- exports.NtdGamepad = fun.NtdGamepad;
212
+ exports.NtdGamepadOldschool = fun.NtdGamepadOldschool;
208
213
  exports.NtdGhost = fun.NtdGhost;
209
214
  exports.NtdLightning = fun.NtdLightning;
210
215
  exports.NtdPartyPopper = fun.NtdPartyPopper;
@@ -212,8 +217,10 @@ exports.NtdPuzzle = fun.NtdPuzzle;
212
217
  exports.NtdRocket = fun.NtdRocket;
213
218
  exports.NtdSad = fun.NtdSad;
214
219
  exports.NtdSkull = fun.NtdSkull;
220
+ exports.NtdSmile = fun.NtdSmile;
215
221
  exports.NtdSmiley = fun.NtdSmiley;
216
222
  exports.NtdTrophy = fun.NtdTrophy;
223
+ exports.NtdZap = fun.NtdZap;
217
224
  exports.NtdAnchor = weather.NtdAnchor;
218
225
  exports.NtdBug = weather.NtdBug;
219
226
  exports.NtdCompass = weather.NtdCompass;
@@ -234,6 +241,7 @@ exports.NtdTree = weather.NtdTree;
234
241
  exports.NtdUmbrella = weather.NtdUmbrella;
235
242
  exports.NtdWave = weather.NtdWave;
236
243
  exports.NtdWind = weather.NtdWind;
244
+ exports.NtdAngleBisector = shapes.NtdAngleBisector;
237
245
  exports.NtdArrowDownCircle = shapes.NtdArrowDownCircle;
238
246
  exports.NtdArrowLeftCircle = shapes.NtdArrowLeftCircle;
239
247
  exports.NtdArrowRightCircle = shapes.NtdArrowRightCircle;
@@ -247,11 +255,16 @@ exports.NtdCross = shapes.NtdCross;
247
255
  exports.NtdDiamond = shapes.NtdDiamond;
248
256
  exports.NtdHexagon = shapes.NtdHexagon;
249
257
  exports.NtdMaximize = shapes.NtdMaximize;
258
+ exports.NtdMidpoint = shapes.NtdMidpoint;
250
259
  exports.NtdMinimize = shapes.NtdMinimize;
251
260
  exports.NtdMove = shapes.NtdMove;
252
261
  exports.NtdOctagon = shapes.NtdOctagon;
262
+ exports.NtdParallel = shapes.NtdParallel;
253
263
  exports.NtdPentagon = shapes.NtdPentagon;
264
+ exports.NtdPerpendicular = shapes.NtdPerpendicular;
265
+ exports.NtdPoint = shapes.NtdPoint;
254
266
  exports.NtdRepeat = shapes.NtdRepeat;
267
+ exports.NtdSegment = shapes.NtdSegment;
255
268
  exports.NtdShuffle = shapes.NtdShuffle;
256
269
  exports.NtdSquare = shapes.NtdSquare;
257
270
  exports.NtdStar4 = shapes.NtdStar4;
@@ -264,6 +277,7 @@ exports.NtdClipboardCheck = business.NtdClipboardCheck;
264
277
  exports.NtdCoins = business.NtdCoins;
265
278
  exports.NtdDollar = business.NtdDollar;
266
279
  exports.NtdInvoice = business.NtdInvoice;
280
+ exports.NtdInvoiceDoc = business.NtdInvoiceDoc;
267
281
  exports.NtdKanban = business.NtdKanban;
268
282
  exports.NtdMilestone = business.NtdMilestone;
269
283
  exports.NtdPercent = business.NtdPercent;
@@ -320,13 +334,11 @@ exports.NtdCompare = ecommerce.NtdCompare;
320
334
  exports.NtdCoupon = ecommerce.NtdCoupon;
321
335
  exports.NtdDiscount = ecommerce.NtdDiscount;
322
336
  exports.NtdGiftCard = ecommerce.NtdGiftCard;
323
- exports.NtdInvoiceDoc = ecommerce.NtdInvoiceDoc;
324
337
  exports.NtdPayment = ecommerce.NtdPayment;
325
338
  exports.NtdPromoTag = ecommerce.NtdPromoTag;
326
339
  exports.NtdRefund = ecommerce.NtdRefund;
327
340
  exports.NtdReturn = ecommerce.NtdReturn;
328
341
  exports.NtdShipping = ecommerce.NtdShipping;
329
- exports.NtdShoppingCart = ecommerce.NtdShoppingCart;
330
342
  exports.NtdStorefront = ecommerce.NtdStorefront;
331
343
  exports.NtdWishlist = ecommerce.NtdWishlist;
332
344
  exports.NtdAirdrop = fintech.NtdAirdrop;
@@ -391,7 +403,8 @@ exports.NtdOmniVerkSpinner = brand.NtdOmniVerkSpinner;
391
403
  exports.NtdOmniVerkWatermark = brand.NtdOmniVerkWatermark;
392
404
  exports.NtdDiceGaming = gaming.NtdDice;
393
405
  exports.NtdDiscord = gaming.NtdDiscord;
394
- exports.NtdGamepadController = gaming.NtdGamepad;
406
+ exports.NtdGamepad = gaming.NtdGamepad;
407
+ exports.NtdGamepadController = gaming.NtdGamepadController;
395
408
  exports.NtdHealthBar = gaming.NtdHealthBar;
396
409
  exports.NtdJoystick = gaming.NtdJoystick;
397
410
  exports.NtdLeaderboard = gaming.NtdLeaderboard;
@@ -423,6 +436,7 @@ exports.NtdTraining = ai.NtdTraining;
423
436
  exports.aiIcons = ai.aiIcons;
424
437
  exports.NtdBackpack = education.NtdBackpack;
425
438
  exports.NtdBook = education.NtdBook;
439
+ exports.NtdBookBookmark = education.NtdBookBookmark;
426
440
  exports.NtdCalculatorEdu = education.NtdCalculator;
427
441
  exports.NtdCertificate = education.NtdCertificate;
428
442
  exports.NtdDiploma = education.NtdDiploma;
@@ -534,3 +548,47 @@ exports.NtdProject = omniverk.NtdProject;
534
548
  exports.NtdShipment = omniverk.NtdShipment;
535
549
  exports.NtdTax = omniverk.NtdTax;
536
550
  exports.NtdWorkflow = omniverk.NtdWorkflow;
551
+ exports.NtdKeyBackspace = input.NtdKeyBackspace;
552
+ exports.NtdKeyCaps = input.NtdKeyCaps;
553
+ exports.NtdKeyCommand = input.NtdKeyCommand;
554
+ exports.NtdKeyControl = input.NtdKeyControl;
555
+ exports.NtdKeyEnter = input.NtdKeyEnter;
556
+ exports.NtdKeyOption = input.NtdKeyOption;
557
+ exports.NtdKeyShift = input.NtdKeyShift;
558
+ exports.NtdKeySpace = input.NtdKeySpace;
559
+ exports.NtdKeyTab = input.NtdKeyTab;
560
+ exports.NtdPadDpad = input.NtdPadDpad;
561
+ exports.NtdPadDpadDown = input.NtdPadDpadDown;
562
+ exports.NtdPadDpadLeft = input.NtdPadDpadLeft;
563
+ exports.NtdPadDpadRight = input.NtdPadDpadRight;
564
+ exports.NtdPadDpadUp = input.NtdPadDpadUp;
565
+ exports.NtdPadGenericEast = input.NtdPadGenericEast;
566
+ exports.NtdPadGenericNorth = input.NtdPadGenericNorth;
567
+ exports.NtdPadGenericSouth = input.NtdPadGenericSouth;
568
+ exports.NtdPadGenericWest = input.NtdPadGenericWest;
569
+ exports.NtdPadHome = input.NtdPadHome;
570
+ exports.NtdPadLb = input.NtdPadLb;
571
+ exports.NtdPadLt = input.NtdPadLt;
572
+ exports.NtdPadNintendoA = input.NtdPadNintendoA;
573
+ exports.NtdPadNintendoB = input.NtdPadNintendoB;
574
+ exports.NtdPadNintendoX = input.NtdPadNintendoX;
575
+ exports.NtdPadNintendoY = input.NtdPadNintendoY;
576
+ exports.NtdPadPlaystationCircle = input.NtdPadPlaystationCircle;
577
+ exports.NtdPadPlaystationCross = input.NtdPadPlaystationCross;
578
+ exports.NtdPadPlaystationSquare = input.NtdPadPlaystationSquare;
579
+ exports.NtdPadPlaystationTriangle = input.NtdPadPlaystationTriangle;
580
+ exports.NtdPadRb = input.NtdPadRb;
581
+ exports.NtdPadRt = input.NtdPadRt;
582
+ exports.NtdPadSelect = input.NtdPadSelect;
583
+ exports.NtdPadStart = input.NtdPadStart;
584
+ exports.NtdPadStickLeft = input.NtdPadStickLeft;
585
+ exports.NtdPadStickLeftPress = input.NtdPadStickLeftPress;
586
+ exports.NtdPadStickRight = input.NtdPadStickRight;
587
+ exports.NtdPadStickRightPress = input.NtdPadStickRightPress;
588
+ exports.NtdPadXboxA = input.NtdPadXboxA;
589
+ exports.NtdPadXboxB = input.NtdPadXboxB;
590
+ exports.NtdPadXboxX = input.NtdPadXboxX;
591
+ exports.NtdPadXboxY = input.NtdPadXboxY;
592
+ exports.NtdRemoteBack = input.NtdRemoteBack;
593
+ exports.NtdRemoteMenu = input.NtdRemoteMenu;
594
+ exports.NtdRemoteOk = input.NtdRemoteOk;
@@ -0,0 +1,120 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var createIcon = require('../createIcon.js');
5
+
6
+ const RING = 'M12 3a9 9 0 1 0 0 18a9 9 0 1 0 0 -18z';
7
+ /** A round button: a disc with its symbol. */
8
+ function discGlyph(displayName, symbol) {
9
+ return createIcon.createIcon({
10
+ displayName,
11
+ paths: {
12
+ 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: symbol, stroke: accentColor, strokeOpacity: accentOpacity, strokeWidth: strokeWidth, strokeLinecap: "round", strokeLinejoin: "round", fill: "none" })] })),
13
+ outline: ({ primaryColor, strokeWidth }) => (jsxRuntime.jsx("path", { d: `${RING} ${symbol}`, stroke: primaryColor, strokeWidth: strokeWidth, strokeLinecap: "round", strokeLinejoin: "round", fill: "none" })),
14
+ duotone: ({ primaryColor, secondaryColor, secondaryOpacity, strokeWidth }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("circle", { cx: "12", cy: "12", r: "9", fill: secondaryColor, opacity: secondaryOpacity }), jsxRuntime.jsx("path", { d: `${RING} ${symbol}`, stroke: primaryColor, strokeWidth: strokeWidth, strokeLinecap: "round", strokeLinejoin: "round", fill: "none" })] })),
15
+ vivid: ({ primaryColor, accentColor }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("circle", { cx: "12", cy: "12", r: "10.5", fill: primaryColor }), jsxRuntime.jsx("path", { d: symbol, stroke: accentColor, strokeWidth: "2.4", strokeLinecap: "round", strokeLinejoin: "round", fill: "none" })] })),
16
+ },
17
+ });
18
+ }
19
+ /** Any other glyph: one stroked shape, bolder when solid, tinted when duotone. */
20
+ function shapeGlyph(displayName, d) {
21
+ return createIcon.createIcon({
22
+ displayName,
23
+ paths: {
24
+ solid: ({ primaryColor, strokeWidth }) => (jsxRuntime.jsx("path", { d: d, stroke: primaryColor, strokeWidth: strokeWidth * 1.3, strokeLinecap: "round", strokeLinejoin: "round", fill: "none" })),
25
+ outline: ({ primaryColor, strokeWidth }) => (jsxRuntime.jsx("path", { d: d, stroke: primaryColor, strokeWidth: strokeWidth, strokeLinecap: "round", strokeLinejoin: "round", fill: "none" })),
26
+ duotone: ({ primaryColor, secondaryColor, secondaryOpacity, strokeWidth }) => (jsxRuntime.jsx("path", { d: d, stroke: primaryColor, strokeWidth: strokeWidth, strokeLinecap: "round", strokeLinejoin: "round", fill: secondaryColor, fillOpacity: secondaryOpacity })),
27
+ vivid: ({ primaryColor }) => (jsxRuntime.jsx("path", { d: d, stroke: primaryColor, strokeWidth: "2.4", strokeLinecap: "round", strokeLinejoin: "round", fill: "none" })),
28
+ },
29
+ });
30
+ }
31
+ const NtdPadXboxA = /* @__PURE__ */ discGlyph('NtdPadXboxA', 'M9.25 16l2.75-8 2.75 8 M10.2 13.25h3.6');
32
+ const NtdPadXboxB = /* @__PURE__ */ discGlyph('NtdPadXboxB', 'M9.75 8v8 M9.75 8h2.5a2 2 0 0 1 0 4h-2.5 M9.75 12h3a2 2 0 0 1 0 4h-3');
33
+ const NtdPadXboxX = /* @__PURE__ */ discGlyph('NtdPadXboxX', 'M9.5 8l5 8 M14.5 8l-5 8');
34
+ const NtdPadXboxY = /* @__PURE__ */ discGlyph('NtdPadXboxY', 'M9.5 8l2.5 4 2.5-4 M12 12v4');
35
+ const NtdPadNintendoA = /* @__PURE__ */ discGlyph('NtdPadNintendoA', 'M9.25 16l2.75-8 2.75 8 M10.2 13.25h3.6');
36
+ const NtdPadNintendoB = /* @__PURE__ */ discGlyph('NtdPadNintendoB', 'M9.75 8v8 M9.75 8h2.5a2 2 0 0 1 0 4h-2.5 M9.75 12h3a2 2 0 0 1 0 4h-3');
37
+ const NtdPadNintendoX = /* @__PURE__ */ discGlyph('NtdPadNintendoX', 'M9.5 8l5 8 M14.5 8l-5 8');
38
+ const NtdPadNintendoY = /* @__PURE__ */ discGlyph('NtdPadNintendoY', 'M9.5 8l2.5 4 2.5-4 M12 12v4');
39
+ const NtdPadPlaystationCross = /* @__PURE__ */ discGlyph('NtdPadPlaystationCross', 'M9 9l6 6 M15 9l-6 6');
40
+ const NtdPadPlaystationCircle = /* @__PURE__ */ discGlyph('NtdPadPlaystationCircle', 'M12 8.25a3.75 3.75 0 1 0 0 7.5a3.75 3.75 0 1 0 0 -7.5z');
41
+ const NtdPadPlaystationSquare = /* @__PURE__ */ discGlyph('NtdPadPlaystationSquare', 'M8.5 8.5h7v7h-7z');
42
+ const NtdPadPlaystationTriangle = /* @__PURE__ */ discGlyph('NtdPadPlaystationTriangle', 'M12 8l4.5 7.5h-9z');
43
+ const NtdPadGenericNorth = /* @__PURE__ */ shapeGlyph('NtdPadGenericNorth', 'M12 3a3 3 0 1 0 0 6a3 3 0 1 0 0 -6z M12 6h.01 M18 10.25a1.75 1.75 0 1 0 0 3.5a1.75 1.75 0 1 0 0 -3.5z M6 10.25a1.75 1.75 0 1 0 0 3.5a1.75 1.75 0 1 0 0 -3.5z M12 16.25a1.75 1.75 0 1 0 0 3.5a1.75 1.75 0 1 0 0 -3.5z');
44
+ const NtdPadGenericEast = /* @__PURE__ */ shapeGlyph('NtdPadGenericEast', 'M12 4.25a1.75 1.75 0 1 0 0 3.5a1.75 1.75 0 1 0 0 -3.5z M18 9a3 3 0 1 0 0 6a3 3 0 1 0 0 -6z M18 12h.01 M6 10.25a1.75 1.75 0 1 0 0 3.5a1.75 1.75 0 1 0 0 -3.5z M12 16.25a1.75 1.75 0 1 0 0 3.5a1.75 1.75 0 1 0 0 -3.5z');
45
+ const NtdPadGenericWest = /* @__PURE__ */ shapeGlyph('NtdPadGenericWest', 'M12 4.25a1.75 1.75 0 1 0 0 3.5a1.75 1.75 0 1 0 0 -3.5z M18 10.25a1.75 1.75 0 1 0 0 3.5a1.75 1.75 0 1 0 0 -3.5z M6 9a3 3 0 1 0 0 6a3 3 0 1 0 0 -6z M6 12h.01 M12 16.25a1.75 1.75 0 1 0 0 3.5a1.75 1.75 0 1 0 0 -3.5z');
46
+ const NtdPadGenericSouth = /* @__PURE__ */ shapeGlyph('NtdPadGenericSouth', 'M12 4.25a1.75 1.75 0 1 0 0 3.5a1.75 1.75 0 1 0 0 -3.5z M18 10.25a1.75 1.75 0 1 0 0 3.5a1.75 1.75 0 1 0 0 -3.5z M6 10.25a1.75 1.75 0 1 0 0 3.5a1.75 1.75 0 1 0 0 -3.5z M12 15a3 3 0 1 0 0 6a3 3 0 1 0 0 -6z M12 18h.01');
47
+ const NtdPadLb = /* @__PURE__ */ shapeGlyph('NtdPadLb', 'M6 9h12a3 3 0 0 1 0 6H6a3 3 0 0 1 0-6z M7.5 12h.01');
48
+ const NtdPadRb = /* @__PURE__ */ shapeGlyph('NtdPadRb', 'M6 9h12a3 3 0 0 1 0 6H6a3 3 0 0 1 0-6z M16.5 12h.01');
49
+ const NtdPadLt = /* @__PURE__ */ shapeGlyph('NtdPadLt', 'M9 3h6a3 3 0 0 1 3 3v7a6 6 0 0 1-12 0V6a3 3 0 0 1 3-3z M9.5 7h.01');
50
+ const NtdPadRt = /* @__PURE__ */ shapeGlyph('NtdPadRt', 'M9 3h6a3 3 0 0 1 3 3v7a6 6 0 0 1-12 0V6a3 3 0 0 1 3-3z M14.5 7h.01');
51
+ const NtdPadStart = /* @__PURE__ */ discGlyph('NtdPadStart', 'M8.5 8.75h7 M8.5 12h7 M8.5 15.25h7');
52
+ const NtdPadSelect = /* @__PURE__ */ discGlyph('NtdPadSelect', 'M7.75 7.75h5.5v5.5h-5.5z M10.75 16.25h5.5v-5.5');
53
+ const NtdPadHome = /* @__PURE__ */ discGlyph('NtdPadHome', 'M7.95 12L12 8.6l4.05 3.4v4H7.95z');
54
+ const NtdPadDpad = /* @__PURE__ */ shapeGlyph('NtdPadDpad', 'M9 3h6v6h6v6h-6v6H9v-6H3V9h6z');
55
+ const NtdPadDpadUp = /* @__PURE__ */ shapeGlyph('NtdPadDpadUp', 'M9 3h6v6h6v6h-6v6H9v-6H3V9h6z M12 5.6l1.15 1.5h-2.3z');
56
+ const NtdPadDpadDown = /* @__PURE__ */ shapeGlyph('NtdPadDpadDown', 'M9 3h6v6h6v6h-6v6H9v-6H3V9h6z M12 18.4l1.15-1.5h-2.3z');
57
+ const NtdPadDpadLeft = /* @__PURE__ */ shapeGlyph('NtdPadDpadLeft', 'M9 3h6v6h6v6h-6v6H9v-6H3V9h6z M5.6 12l1.5-1.15v2.3z');
58
+ const NtdPadDpadRight = /* @__PURE__ */ shapeGlyph('NtdPadDpadRight', 'M9 3h6v6h6v6h-6v6H9v-6H3V9h6z M18.4 12l-1.5-1.15v2.3z');
59
+ const NtdPadStickLeft = /* @__PURE__ */ discGlyph('NtdPadStickLeft', 'M12 7.5a4.5 4.5 0 1 0 0 9a4.5 4.5 0 1 0 0 -9z M4.5 12h1');
60
+ const NtdPadStickRight = /* @__PURE__ */ discGlyph('NtdPadStickRight', 'M12 7.5a4.5 4.5 0 1 0 0 9a4.5 4.5 0 1 0 0 -9z M18.5 12h1');
61
+ const NtdPadStickLeftPress = /* @__PURE__ */ discGlyph('NtdPadStickLeftPress', 'M12 7.5a4.5 4.5 0 1 0 0 9a4.5 4.5 0 1 0 0 -9z M12 12h.01 M4.5 12h1');
62
+ const NtdPadStickRightPress = /* @__PURE__ */ discGlyph('NtdPadStickRightPress', 'M12 7.5a4.5 4.5 0 1 0 0 9a4.5 4.5 0 1 0 0 -9z M12 12h.01 M18.5 12h1');
63
+ const NtdRemoteOk = /* @__PURE__ */ discGlyph('NtdRemoteOk', 'M12 8.5a3.5 3.5 0 1 0 0 7a3.5 3.5 0 1 0 0 -7z');
64
+ const NtdRemoteBack = /* @__PURE__ */ shapeGlyph('NtdRemoteBack', 'M9 14l-4-4 4-4 M5 10h9a5 5 0 0 1 0 10h-2');
65
+ const NtdRemoteMenu = /* @__PURE__ */ shapeGlyph('NtdRemoteMenu', 'M4 6h16v12H4z M8 10h8 M8 14h8');
66
+ const NtdKeyCommand = /* @__PURE__ */ shapeGlyph('NtdKeyCommand', 'M9 9V6.5A2.5 2.5 0 1 0 6.5 9H9z M9 9h6 M9 9v6 M15 9V6.5A2.5 2.5 0 1 1 17.5 9H15z M15 9v6 M15 15H9 M15 15v2.5a2.5 2.5 0 1 0 2.5-2.5H15z M9 15H6.5A2.5 2.5 0 1 0 9 17.5V15z');
67
+ const NtdKeyOption = /* @__PURE__ */ shapeGlyph('NtdKeyOption', 'M4 6h5l6 12h5 M14 6h6');
68
+ const NtdKeyShift = /* @__PURE__ */ shapeGlyph('NtdKeyShift', 'M12 4l-8 8h4v8h8v-8h4z');
69
+ const NtdKeyControl = /* @__PURE__ */ shapeGlyph('NtdKeyControl', 'M7 14l5-5 5 5');
70
+ const NtdKeyEnter = /* @__PURE__ */ shapeGlyph('NtdKeyEnter', 'M20 5v7a3 3 0 0 1-3 3H5 M9 11l-4 4 4 4');
71
+ const NtdKeyTab = /* @__PURE__ */ shapeGlyph('NtdKeyTab', 'M4 12h14 M14 8l4 4-4 4 M20 6v12');
72
+ // On-screen keyboard keys (1.3.0 H1)
73
+ const NtdKeyBackspace = /* @__PURE__ */ shapeGlyph('NtdKeyBackspace', 'M21 5H9l-6 7 6 7h12a1 1 0 0 0 1-1V6a1 1 0 0 0-1-1z M17 9l-6 6 M11 9l6 6');
74
+ const NtdKeySpace = /* @__PURE__ */ shapeGlyph('NtdKeySpace', 'M4 10v4h16v-4');
75
+ const NtdKeyCaps = /* @__PURE__ */ shapeGlyph('NtdKeyCaps', 'M12 4l-7 7h4v5h6v-5h4z M8 20h8');
76
+
77
+ exports.NtdKeyBackspace = NtdKeyBackspace;
78
+ exports.NtdKeyCaps = NtdKeyCaps;
79
+ exports.NtdKeyCommand = NtdKeyCommand;
80
+ exports.NtdKeyControl = NtdKeyControl;
81
+ exports.NtdKeyEnter = NtdKeyEnter;
82
+ exports.NtdKeyOption = NtdKeyOption;
83
+ exports.NtdKeyShift = NtdKeyShift;
84
+ exports.NtdKeySpace = NtdKeySpace;
85
+ exports.NtdKeyTab = NtdKeyTab;
86
+ exports.NtdPadDpad = NtdPadDpad;
87
+ exports.NtdPadDpadDown = NtdPadDpadDown;
88
+ exports.NtdPadDpadLeft = NtdPadDpadLeft;
89
+ exports.NtdPadDpadRight = NtdPadDpadRight;
90
+ exports.NtdPadDpadUp = NtdPadDpadUp;
91
+ exports.NtdPadGenericEast = NtdPadGenericEast;
92
+ exports.NtdPadGenericNorth = NtdPadGenericNorth;
93
+ exports.NtdPadGenericSouth = NtdPadGenericSouth;
94
+ exports.NtdPadGenericWest = NtdPadGenericWest;
95
+ exports.NtdPadHome = NtdPadHome;
96
+ exports.NtdPadLb = NtdPadLb;
97
+ exports.NtdPadLt = NtdPadLt;
98
+ exports.NtdPadNintendoA = NtdPadNintendoA;
99
+ exports.NtdPadNintendoB = NtdPadNintendoB;
100
+ exports.NtdPadNintendoX = NtdPadNintendoX;
101
+ exports.NtdPadNintendoY = NtdPadNintendoY;
102
+ exports.NtdPadPlaystationCircle = NtdPadPlaystationCircle;
103
+ exports.NtdPadPlaystationCross = NtdPadPlaystationCross;
104
+ exports.NtdPadPlaystationSquare = NtdPadPlaystationSquare;
105
+ exports.NtdPadPlaystationTriangle = NtdPadPlaystationTriangle;
106
+ exports.NtdPadRb = NtdPadRb;
107
+ exports.NtdPadRt = NtdPadRt;
108
+ exports.NtdPadSelect = NtdPadSelect;
109
+ exports.NtdPadStart = NtdPadStart;
110
+ exports.NtdPadStickLeft = NtdPadStickLeft;
111
+ exports.NtdPadStickLeftPress = NtdPadStickLeftPress;
112
+ exports.NtdPadStickRight = NtdPadStickRight;
113
+ exports.NtdPadStickRightPress = NtdPadStickRightPress;
114
+ exports.NtdPadXboxA = NtdPadXboxA;
115
+ exports.NtdPadXboxB = NtdPadXboxB;
116
+ exports.NtdPadXboxX = NtdPadXboxX;
117
+ exports.NtdPadXboxY = NtdPadXboxY;
118
+ exports.NtdRemoteBack = NtdRemoteBack;
119
+ exports.NtdRemoteMenu = NtdRemoteMenu;
120
+ exports.NtdRemoteOk = NtdRemoteOk;
@@ -2,19 +2,14 @@
2
2
 
3
3
  var jsxRuntime = require('react/jsx-runtime');
4
4
  var createIcon = require('../createIcon.js');
5
+ var iconParts = require('../iconParts.js');
5
6
 
6
7
  /* ────────────────────────────────────────────────────────────────────────────
7
8
  LEGAL DOCUMENTS
8
9
  ───────────────────────────────────────────────────────────────────────────── */
9
- const NtdContract = /* @__PURE__ */ createIcon.createIcon({
10
- displayName: 'NtdContract',
11
- paths: {
12
- solid: ({ primaryColor }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: "M4 4a2 2 0 012-2h8l6 6v14a2 2 0 01-2 2H6a2 2 0 01-2-2V4z", fill: primaryColor }), jsxRuntime.jsx("path", { d: "M14 2v6h6", fill: "white", opacity: "0.3" }), jsxRuntime.jsx("path", { d: "M8 12h8M8 16h6", stroke: "white", strokeWidth: "1.5", strokeLinecap: "round" }), jsxRuntime.jsx("path", { d: "M10 20c2-1 3-2 4-2s2 1 2 2", stroke: "white", strokeWidth: "1.5", strokeLinecap: "round", fill: "none" })] })),
13
- outline: ({ primaryColor, strokeWidth }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: "M4 4a2 2 0 012-2h8l6 6v14a2 2 0 01-2 2H6a2 2 0 01-2-2V4z", stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" }), jsxRuntime.jsx("path", { d: "M14 2v6h6", stroke: primaryColor, strokeWidth: strokeWidth, strokeLinecap: "round", strokeLinejoin: "round" }), jsxRuntime.jsx("path", { d: "M8 12h8M8 16h6", stroke: primaryColor, strokeWidth: strokeWidth, strokeLinecap: "round" }), jsxRuntime.jsx("path", { d: "M10 20c2-1 3-2 4-2s2 1 2 2", stroke: primaryColor, strokeWidth: strokeWidth, strokeLinecap: "round", fill: "none" })] })),
14
- duotone: ({ primaryColor, secondaryColor, secondaryOpacity, strokeWidth }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: "M4 4a2 2 0 012-2h8l6 6v14a2 2 0 01-2 2H6a2 2 0 01-2-2V4z", fill: secondaryColor, opacity: secondaryOpacity }), jsxRuntime.jsx("path", { d: "M14 2v6h6", fill: primaryColor, opacity: "0.3" }), jsxRuntime.jsx("path", { d: "M4 4a2 2 0 012-2h8l6 6v14a2 2 0 01-2 2H6a2 2 0 01-2-2V4z", stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" }), jsxRuntime.jsx("path", { d: "M14 2v6h6", stroke: primaryColor, strokeWidth: strokeWidth, strokeLinecap: "round", strokeLinejoin: "round" }), jsxRuntime.jsx("path", { d: "M8 12h8M8 16h6", stroke: primaryColor, strokeWidth: strokeWidth, strokeLinecap: "round" }), jsxRuntime.jsx("path", { d: "M10 20c2-1 3-2 4-2s2 1 2 2", stroke: primaryColor, strokeWidth: strokeWidth, strokeLinecap: "round", fill: "none" })] })),
15
- vivid: ({ primaryColor, secondaryColor: _secondaryColor }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: "M4 4a2 2 0 012-2h8l6 6v14a2 2 0 01-2 2H6a2 2 0 01-2-2V4z", fill: primaryColor }), jsxRuntime.jsx("path", { d: "M4 4a2 2 0 012-2h8l6 6v14a2 2 0 01-2 2H6a2 2 0 01-2-2V4z", fill: "white", opacity: "0.08" }), jsxRuntime.jsx("path", { d: "M14 2v6h6", fill: "white", opacity: "0.3" }), jsxRuntime.jsx("path", { d: "M8 12h8M8 16h6", stroke: "white", strokeWidth: "1", strokeLinecap: "round" }), jsxRuntime.jsx("path", { d: "M10 20c2-1 3-2 4-2s2 1 2 2", stroke: "white", strokeWidth: "1", strokeLinecap: "round", fill: "none" })] })),
16
- },
17
- });
10
+ // NtdContract: NtdFile's page with two lines of text and two signature lines, left and right
11
+ // (the signature was a thick squiggle).
12
+ const NtdContract = /* @__PURE__ */ iconParts.paperIcon('NtdContract', 'M7.5 12h9M7.5 15.5h9M7.5 19h3.5M13 19h3.5');
18
13
  const NtdLegalDocument = /* @__PURE__ */ createIcon.createIcon({
19
14
  displayName: 'NtdLegalDocument',
20
15
  paths: {
@@ -2,6 +2,7 @@
2
2
 
3
3
  var jsxRuntime = require('react/jsx-runtime');
4
4
  var createIcon = require('../createIcon.js');
5
+ var iconParts = require('../iconParts.js');
5
6
 
6
7
  const NtdPlay = /* @__PURE__ */ createIcon.createIcon({
7
8
  displayName: 'NtdPlay',
@@ -112,22 +113,31 @@ const NtdMicrophoneOff = /* @__PURE__ */ createIcon.createIcon({
112
113
  vivid: ({ primaryColor, secondaryColor }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("rect", { x: "9", y: "1", width: "6", height: "12", rx: "3", fill: primaryColor }), jsxRuntime.jsx("path", { d: "M19 10v2a7 7 0 01-14 0v-2", stroke: secondaryColor, strokeWidth: "1.8", fill: "none" }), jsxRuntime.jsx("line", { x1: "12", y1: "19", x2: "12", y2: "23", stroke: secondaryColor, strokeWidth: "1.5" }), jsxRuntime.jsx("line", { x1: "8", y1: "23", x2: "16", y2: "23", stroke: secondaryColor, strokeWidth: "1.5" }), jsxRuntime.jsx("line", { x1: "2", y1: "2", x2: "22", y2: "22", stroke: secondaryColor, strokeWidth: "1.8" })] })),
113
114
  },
114
115
  });
116
+ // NtdMusic: the note heads are tilted ellipses whose right edge is the stem's right edge, and the
117
+ // stems end where that edge is vertical, so stem and head meet without a step (the heads stuck
118
+ // out right of the stems). The outline heads are the filled ones moved in by half a stroke, so
119
+ // their stroke meets the stem the same way.
120
+ const MUSIC_STEMS = 'M8.3 17.22V5l12-2v12.22';
115
121
  const NtdMusic = /* @__PURE__ */ createIcon.createIcon({
116
122
  displayName: 'NtdMusic',
117
123
  paths: {
118
- solid: ({ primaryColor, strokeWidth }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: "M9 18V5l12-2v13", stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" }), jsxRuntime.jsx("ellipse", { cx: "7", cy: "18", rx: "3.4", ry: "2.5", transform: "rotate(-22 7 18)", fill: primaryColor }), jsxRuntime.jsx("ellipse", { cx: "19", cy: "16", rx: "3.4", ry: "2.5", transform: "rotate(-22 19 16)", fill: primaryColor })] })),
119
- outline: ({ primaryColor, strokeWidth }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: "M9 18V5l12-2v13", stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" }), jsxRuntime.jsx("ellipse", { cx: "7", cy: "18", rx: "3.4", ry: "2.5", transform: "rotate(-22 7 18)", stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" }), jsxRuntime.jsx("ellipse", { cx: "19", cy: "16", rx: "3.4", ry: "2.5", transform: "rotate(-22 19 16)", stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" })] })),
120
- duotone: ({ primaryColor, secondaryColor, secondaryOpacity, strokeWidth }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: "M9 5l12-2v13", stroke: secondaryColor, strokeWidth: strokeWidth, fill: "none", opacity: secondaryOpacity + 0.2 }), jsxRuntime.jsx("path", { d: "M9 18V5l12-2v13", stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" }), jsxRuntime.jsx("ellipse", { cx: "7", cy: "18", rx: "3.4", ry: "2.5", transform: "rotate(-22 7 18)", fill: primaryColor }), jsxRuntime.jsx("ellipse", { cx: "19", cy: "16", rx: "3.4", ry: "2.5", transform: "rotate(-22 19 16)", fill: primaryColor })] })),
121
- vivid: ({ primaryColor, secondaryColor }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("ellipse", { cx: "7", cy: "18", rx: "3.4", ry: "2.5", transform: "rotate(-22 7 18)", fill: primaryColor }), jsxRuntime.jsx("ellipse", { cx: "7", cy: "18", rx: "3.4", ry: "2.5", transform: "rotate(-22 7 18)", fill: "white", opacity: "0.08" }), jsxRuntime.jsx("ellipse", { cx: "19", cy: "16", rx: "3.4", ry: "2.5", transform: "rotate(-22 19 16)", fill: secondaryColor }), jsxRuntime.jsx("path", { d: "M9 18V5l12-2v13", stroke: "white", strokeWidth: "1", fill: "none" })] })),
124
+ solid: ({ primaryColor, strokeWidth }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: MUSIC_STEMS, stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" }), jsxRuntime.jsxs("g", { fill: primaryColor, children: [jsxRuntime.jsx("ellipse", { cx: "5.97", cy: "18", rx: "3.5", ry: "2.3", transform: "rotate(-24 5.97 18)" }), jsxRuntime.jsx("ellipse", { cx: "17.97", cy: "16", rx: "3.5", ry: "2.3", transform: "rotate(-24 17.97 16)" })] })] })),
125
+ // the stems stop a unit higher: the square caps of `sharp` then end at the heads' edge
126
+ sharp: ({ primaryColor, strokeWidth }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: "M8.3 16.22V5l12-2v11.22", stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" }), jsxRuntime.jsxs("g", { fill: primaryColor, children: [jsxRuntime.jsx("ellipse", { cx: "5.97", cy: "18", rx: "3.5", ry: "2.3", transform: "rotate(-24 5.97 18)" }), jsxRuntime.jsx("ellipse", { cx: "17.97", cy: "16", rx: "3.5", ry: "2.3", transform: "rotate(-24 17.97 16)" })] })] })),
127
+ 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)" })] })] })),
128
+ duotone: ({ primaryColor, secondaryColor, secondaryOpacity, strokeWidth }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: "M8.3 5l12-2v12.22", stroke: secondaryColor, strokeWidth: strokeWidth, fill: "none", opacity: secondaryOpacity + 0.2 }), jsxRuntime.jsx("path", { d: MUSIC_STEMS, stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" }), jsxRuntime.jsxs("g", { fill: primaryColor, children: [jsxRuntime.jsx("ellipse", { cx: "5.97", cy: "18", rx: "3.5", ry: "2.3", transform: "rotate(-24 5.97 18)" }), jsxRuntime.jsx("ellipse", { cx: "17.97", cy: "16", rx: "3.5", ry: "2.3", transform: "rotate(-24 17.97 16)" })] })] })),
129
+ vivid: ({ primaryColor, secondaryColor, strokeWidth }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: MUSIC_STEMS, stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" }), jsxRuntime.jsx("ellipse", { cx: "5.97", cy: "18", rx: "3.5", ry: "2.3", transform: "rotate(-24 5.97 18)", fill: primaryColor }), jsxRuntime.jsx("ellipse", { cx: "17.97", cy: "16", rx: "3.5", ry: "2.3", transform: "rotate(-24 17.97 16)", fill: secondaryColor })] })),
122
130
  },
123
131
  });
132
+ // The flap is a cut through the envelope, kept inside it: its ends meet the sides flush (the
133
+ // round caps stuck out past the corners).
124
134
  const NtdMail = /* @__PURE__ */ createIcon.createIcon({
125
135
  displayName: 'NtdMail',
126
136
  paths: {
127
- solid: ({ primaryColor, accentColor, accentOpacity, strokeWidth: _strokeWidth }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("rect", { x: "2", y: "4", width: "20", height: "16", rx: "2", fill: primaryColor }), jsxRuntime.jsx("path", { d: "M22 6l-10 7L2 6", stroke: accentColor, strokeWidth: "1.5", fill: "none", opacity: accentOpacity })] })),
137
+ solid: ({ primaryColor, accentColor, accentOpacity, uid }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("rect", { x: "2", y: "4", width: "20", height: "16", rx: "2", fill: primaryColor }), iconParts.within(uid, 'flap', jsxRuntime.jsx("rect", { x: "2", y: "4", width: "20", height: "16", rx: "2" }), jsxRuntime.jsx("path", { d: "M22 6l-10 7L2 6", stroke: accentColor, strokeWidth: "1.5", fill: "none", opacity: accentOpacity }))] })),
128
138
  outline: ({ primaryColor, strokeWidth }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("rect", { x: "2", y: "4", width: "20", height: "16", rx: "2", stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" }), jsxRuntime.jsx("path", { d: "M22 6l-10 7L2 6", stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" })] })),
129
139
  duotone: ({ primaryColor, secondaryColor, secondaryOpacity, strokeWidth }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("rect", { x: "2", y: "4", width: "20", height: "16", rx: "2", fill: secondaryColor, opacity: secondaryOpacity }), jsxRuntime.jsx("rect", { x: "2", y: "4", width: "20", height: "16", rx: "2", stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" }), jsxRuntime.jsx("path", { d: "M22 6l-10 7L2 6", stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" })] })),
130
- vivid: ({ primaryColor, secondaryColor }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("rect", { x: "2", y: "4", width: "20", height: "16", rx: "2", fill: primaryColor }), jsxRuntime.jsx("rect", { x: "2", y: "4", width: "20", height: "16", rx: "2", fill: "white", opacity: "0.1" }), jsxRuntime.jsx("path", { d: "M22 6l-10 7L2 6", stroke: secondaryColor, strokeWidth: "1.8", fill: "none" })] })),
140
+ vivid: ({ primaryColor, secondaryColor, uid }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("rect", { x: "2", y: "4", width: "20", height: "16", rx: "2", fill: primaryColor }), jsxRuntime.jsx("rect", { x: "2", y: "4", width: "20", height: "16", rx: "2", fill: "white", opacity: "0.1" }), iconParts.within(uid, 'flap', jsxRuntime.jsx("rect", { x: "2", y: "4", width: "20", height: "16", rx: "2" }), jsxRuntime.jsx("path", { d: "M22 6l-10 7L2 6", stroke: secondaryColor, strokeWidth: "1.8", fill: "none" }))] })),
131
141
  },
132
142
  });
133
143
  // Inbox: a tray (open box seen from the front, the dip where letters land), next to NtdMail's
@@ -141,22 +151,27 @@ const NtdInbox = /* @__PURE__ */ createIcon.createIcon({
141
151
  vivid: ({ primaryColor, secondaryColor: _secondaryColor }) => (jsxRuntime.jsx("path", { d: "M5.45 5.11L2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11zM4.24 12h3.23l2 3h5.06l2-3h3.23l-2.68-5.37a.5.5 0 0 0-.45-.27H7.37a.5.5 0 0 0-.45.27z", fill: primaryColor, fillRule: "evenodd" })),
142
152
  },
143
153
  });
154
+ const PHONE_HANDSET = 'M22 16.92v3a2 2 0 01-2.18 2 19.79 19.79 0 01-8.63-3.07 19.5 19.5 0 01-6-6 19.79 19.79 0 01-3.07-8.67A2 2 0 014.11 2h3a2 2 0 012 1.72 12.84 12.84 0 00.7 2.81 2 2 0 01-.45 2.11L8.09 9.91a16 16 0 006 6l1.27-1.27a2 2 0 012.11-.45 12.84 12.84 0 002.81.7A2 2 0 0122 16.92z';
144
155
  const NtdPhone = /* @__PURE__ */ createIcon.createIcon({
145
156
  displayName: 'NtdPhone',
146
157
  paths: {
147
158
  solid: ({ primaryColor, strokeWidth: _strokeWidth }) => (jsxRuntime.jsx("path", { d: "M22 16.92v3a2 2 0 01-2.18 2 19.79 19.79 0 01-8.63-3.07 19.5 19.5 0 01-6-6 19.79 19.79 0 01-3.07-8.67A2 2 0 014.11 2h3a2 2 0 012 1.72 12.84 12.84 0 00.7 2.81 2 2 0 01-.45 2.11L8.09 9.91a16 16 0 006 6l1.27-1.27a2 2 0 012.11-.45 12.84 12.84 0 002.81.7A2 2 0 0122 16.92z", fill: primaryColor })),
148
159
  outline: ({ primaryColor, strokeWidth }) => (jsxRuntime.jsx("path", { d: "M22 16.92v3a2 2 0 01-2.18 2 19.79 19.79 0 01-8.63-3.07 19.5 19.5 0 01-6-6 19.79 19.79 0 01-3.07-8.67A2 2 0 014.11 2h3a2 2 0 012 1.72 12.84 12.84 0 00.7 2.81 2 2 0 01-.45 2.11L8.09 9.91a16 16 0 006 6l1.27-1.27a2 2 0 012.11-.45 12.84 12.84 0 002.81.7A2 2 0 0122 16.92z", stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" })),
149
- duotone: ({ primaryColor, secondaryColor, secondaryOpacity, strokeWidth }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: "M22 16.92v3a2 2 0 01-2.18 2 19.79 19.79 0 01-8.63-3.07 19.5 19.5 0 01-6-6 19.79 19.79 0 01-3.07-8.67A2 2 0 014.11 2h3a2 2 0 012 1.72 12.84 12.84 0 00.7 2.81 2 2 0 01-.45 2.11L8.09 9.91a16 16 0 006 6l1.27-1.27a2 2 0 012.11-.45 12.84 12.84 0 002.81.7A2 2 0 0122 16.92z", fill: secondaryColor, opacity: secondaryOpacity }), jsxRuntime.jsx("path", { d: "M22 16.92v3a2 2 0 01-2.18 2 19.79 19.79 0 01-8.63-3.07 19.5 19.5 0 01-6-6 19.79 19.79 0 01-3.07-8.67A2 2 0 014.11 2h3a2 2 0 012 1.72 12.84 12.84 0 00.7 2.81 2 2 0 01-.45 2.11L8.09 9.91a16 16 0 006 6l1.27-1.27a2 2 0 012.11-.45 12.84 12.84 0 002.81.7A2 2 0 0122 16.92z", stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" })] })),
160
+ // Fills only, a colour per part: the ear and mouth pieces primary, the grip between them
161
+ // secondary. The handset is symmetric about (x, y) -> (24 - y, 24 - x), so the two cuts are
162
+ // mirror images, each through the corner where an end piece meets the grip.
163
+ duotone: ({ primaryColor, secondaryColor, uid }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: PHONE_HANDSET, fill: secondaryColor }), iconParts.within(uid, 'ear', jsxRuntime.jsx("polygon", { points: "0,0 13,0 13,9.5 0,10.59" }), jsxRuntime.jsx("path", { d: PHONE_HANDSET, fill: primaryColor })), iconParts.within(uid, 'mouth', jsxRuntime.jsx("polygon", { points: "24,24 24,11 14.5,11 13.41,24" }), jsxRuntime.jsx("path", { d: PHONE_HANDSET, fill: primaryColor }))] })),
150
164
  vivid: ({ primaryColor, secondaryColor: _secondaryColor }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: "M22 16.92v3a2 2 0 01-2.18 2 19.79 19.79 0 01-8.63-3.07 19.5 19.5 0 01-6-6 19.79 19.79 0 01-3.07-8.67A2 2 0 014.11 2h3a2 2 0 012 1.72 12.84 12.84 0 00.7 2.81 2 2 0 01-.45 2.11L8.09 9.91a16 16 0 006 6l1.27-1.27a2 2 0 012.11-.45 12.84 12.84 0 002.81.7A2 2 0 0122 16.92z", fill: primaryColor }), jsxRuntime.jsx("path", { d: "M22 16.92v3a2 2 0 01-2.18 2 19.79 19.79 0 01-8.63-3.07 19.5 19.5 0 01-6-6 19.79 19.79 0 01-3.07-8.67A2 2 0 014.11 2h3a2 2 0 012 1.72 12.84 12.84 0 00.7 2.81 2 2 0 01-.45 2.11L8.09 9.91a16 16 0 006 6l1.27-1.27a2 2 0 012.11-.45 12.84 12.84 0 002.81.7A2 2 0 0122 16.92z", fill: "white", opacity: "0.1" })] })),
151
165
  },
152
166
  });
167
+ // The tail leaves the bubble's bottom edge 4 units in from the left (it ran down the left side).
153
168
  const NtdChat = /* @__PURE__ */ createIcon.createIcon({
154
169
  displayName: 'NtdChat',
155
170
  paths: {
156
- solid: ({ primaryColor, strokeWidth: _strokeWidth }) => (jsxRuntime.jsx("path", { d: "M21 15a2 2 0 01-2 2H7l-4 4V5a2 2 0 012-2h14a2 2 0 012 2v10z", fill: primaryColor })),
157
- outline: ({ primaryColor, strokeWidth }) => (jsxRuntime.jsx("path", { d: "M21 15a2 2 0 01-2 2H7l-4 4V5a2 2 0 012-2h14a2 2 0 012 2v10z", stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" })),
158
- duotone: ({ primaryColor, secondaryColor, secondaryOpacity, strokeWidth }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: "M21 15a2 2 0 01-2 2H7l-4 4V5a2 2 0 012-2h14a2 2 0 012 2v10z", fill: secondaryColor, opacity: secondaryOpacity }), jsxRuntime.jsx("path", { d: "M21 15a2 2 0 01-2 2H7l-4 4V5a2 2 0 012-2h14a2 2 0 012 2v10z", stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" })] })),
159
- vivid: ({ primaryColor, secondaryColor: _secondaryColor }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: "M21 15a2 2 0 01-2 2H7l-4 4V5a2 2 0 012-2h14a2 2 0 012 2v10z", fill: primaryColor }), jsxRuntime.jsx("path", { d: "M21 15a2 2 0 01-2 2H7l-4 4V5a2 2 0 012-2h14a2 2 0 012 2v10z", fill: "white", opacity: "0.1" })] })),
171
+ solid: ({ primaryColor, strokeWidth: _strokeWidth }) => (jsxRuntime.jsx("path", { d: "M5 3h14a2 2 0 012 2v10a2 2 0 01-2 2h-8l-4 4v-4H5a2 2 0 01-2-2V5a2 2 0 012-2z", fill: primaryColor })),
172
+ outline: ({ primaryColor, strokeWidth }) => (jsxRuntime.jsx("path", { d: "M5 3h14a2 2 0 012 2v10a2 2 0 01-2 2h-8l-4 4v-4H5a2 2 0 01-2-2V5a2 2 0 012-2z", stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" })),
173
+ duotone: ({ primaryColor, secondaryColor, secondaryOpacity, strokeWidth }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: "M5 3h14a2 2 0 012 2v10a2 2 0 01-2 2h-8l-4 4v-4H5a2 2 0 01-2-2V5a2 2 0 012-2z", fill: secondaryColor, opacity: secondaryOpacity }), jsxRuntime.jsx("path", { d: "M5 3h14a2 2 0 012 2v10a2 2 0 01-2 2h-8l-4 4v-4H5a2 2 0 01-2-2V5a2 2 0 012-2z", stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" })] })),
174
+ vivid: ({ primaryColor, secondaryColor: _secondaryColor }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: "M5 3h14a2 2 0 012 2v10a2 2 0 01-2 2h-8l-4 4v-4H5a2 2 0 01-2-2V5a2 2 0 012-2z", fill: primaryColor }), jsxRuntime.jsx("path", { d: "M5 3h14a2 2 0 012 2v10a2 2 0 01-2 2h-8l-4 4v-4H5a2 2 0 01-2-2V5a2 2 0 012-2z", fill: "white", opacity: "0.1" })] })),
160
175
  },
161
176
  });
162
177
  /* NtdSend — the paper plane read ~20% oversized next to the rest of the set,
@@ -84,13 +84,15 @@ const NtdMenu = /* @__PURE__ */ createIcon.createIcon({
84
84
  vivid: ({ primaryColor, secondaryColor }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("rect", { x: "3", y: "5", width: "18", height: "2", rx: "1", fill: primaryColor }), jsxRuntime.jsx("rect", { x: "3", y: "5", width: "18", height: "2", rx: "1", fill: "white", opacity: "0.08" }), jsxRuntime.jsx("rect", { x: "3", y: "11", width: "18", height: "2", rx: "1", fill: secondaryColor }), jsxRuntime.jsx("rect", { x: "3", y: "17", width: "18", height: "2", rx: "1", fill: "#3B82F6" })] })),
85
85
  },
86
86
  });
87
+ // The filled cross is drawn as two strokes at twice the stroke width, like NtdCheck: it was a
88
+ // fixed outline that did not follow `strokeWidth` at all.
87
89
  const NtdClose = /* @__PURE__ */ createIcon.createIcon({
88
90
  displayName: 'NtdClose',
89
91
  paths: {
90
- solid: ({ primaryColor }) => (jsxRuntime.jsx("path", { d: "M18.3 5.7a1 1 0 00-1.4 0L12 10.6 7.1 5.7a1 1 0 00-1.4 1.4L10.6 12l-4.9 4.9a1 1 0 001.4 1.4L12 13.4l4.9 4.9a1 1 0 001.4-1.4L13.4 12l4.9-4.9a1 1 0 000-1.4z", fill: primaryColor })),
92
+ solid: ({ primaryColor, strokeWidth }) => (jsxRuntime.jsx("path", { d: "M18 6L6 18M6 6l12 12", stroke: primaryColor, strokeWidth: strokeWidth * 2 })),
91
93
  outline: ({ primaryColor, strokeWidth }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("line", { x1: "6", y1: "6", x2: "18", y2: "18", stroke: primaryColor, strokeWidth: strokeWidth }), jsxRuntime.jsx("line", { x1: "18", y1: "6", x2: "6", y2: "18", stroke: primaryColor, strokeWidth: strokeWidth })] })),
92
94
  duotone: ({ primaryColor, secondaryColor, secondaryOpacity, strokeWidth }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("circle", { cx: "12", cy: "12", r: "9", fill: secondaryColor, opacity: secondaryOpacity }), jsxRuntime.jsx("line", { x1: "8", y1: "8", x2: "16", y2: "16", stroke: primaryColor, strokeWidth: strokeWidth }), jsxRuntime.jsx("line", { x1: "16", y1: "8", x2: "8", y2: "16", stroke: primaryColor, strokeWidth: strokeWidth })] })),
93
- vivid: ({ primaryColor, secondaryColor: _secondaryColor }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: "M18.3 5.7a1 1 0 00-1.4 0L12 10.6 7.1 5.7a1 1 0 00-1.4 1.4L10.6 12l-4.9 4.9a1 1 0 001.4 1.4L12 13.4l4.9 4.9a1 1 0 001.4-1.4L13.4 12l4.9-4.9a1 1 0 000-1.4z", fill: primaryColor }), jsxRuntime.jsx("path", { d: "M18.3 5.7a1 1 0 00-1.4 0L12 10.6 7.1 5.7a1 1 0 00-1.4 1.4L10.6 12l-4.9 4.9a1 1 0 001.4 1.4L12 13.4l4.9 4.9a1 1 0 001.4-1.4L13.4 12l4.9-4.9a1 1 0 000-1.4z", fill: "white", opacity: "0.1" })] })),
95
+ vivid: ({ primaryColor, strokeWidth }) => (jsxRuntime.jsx("path", { d: "M18 6L6 18M6 6l12 12", stroke: primaryColor, strokeWidth: strokeWidth * 2 })),
94
96
  },
95
97
  });
96
98
  const NtdMoreHorizontal = /* @__PURE__ */ createIcon.createIcon({
@@ -72,11 +72,16 @@ const NtdInsurance = /* @__PURE__ */ createIcon.createIcon({
72
72
  duotone: ({ primaryColor, secondaryColor, secondaryOpacity, strokeWidth }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: "M12 2l8 3v6c0 5-3.5 9-8 11-4.5-2-8-6-8-11V5l8-3z", fill: secondaryColor, opacity: secondaryOpacity }), jsxRuntime.jsx("path", { d: "M12 2l8 3v6c0 5-3.5 9-8 11-4.5-2-8-6-8-11V5l8-3z", stroke: primaryColor, strokeWidth: strokeWidth, fill: "none", strokeLinejoin: "round" }), jsxRuntime.jsx("path", { d: "M8.5 12l2.5 2.5L16 9", stroke: primaryColor, strokeWidth: "1.8", fill: "none", strokeLinecap: "round", strokeLinejoin: "round" })] })),
73
73
  },
74
74
  });
75
- /** Tax — percent on an official stamped badge (distinct from NtdPercent/NtdReceipt). */
75
+ /**
76
+ * Tax — percent on an official stamped badge (distinct from NtdPercent/NtdReceipt). Filled, the
77
+ * percent sign is in the accent colour (it was always white) and its dots are rings, the badge
78
+ * showing through their holes.
79
+ */
80
+ const TAX_DOTS = 'M9.2 7.3a1.9 1.9 0 100 3.8 1.9 1.9 0 100-3.8zM9.2 8.4a.8.8 0 100 1.6.8.8 0 100-1.6zM14.8 12.9a1.9 1.9 0 100 3.8 1.9 1.9 0 100-3.8zM14.8 14a.8.8 0 100 1.6.8.8 0 100-1.6z';
76
81
  const NtdTax = /* @__PURE__ */ createIcon.createIcon({
77
82
  displayName: 'NtdTax',
78
83
  paths: {
79
- solid: ({ primaryColor }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("circle", { cx: "12", cy: "12", r: "9.5", fill: primaryColor }), jsxRuntime.jsx("circle", { cx: "9.2", cy: "9.2", r: "1.6", fill: "white" }), jsxRuntime.jsx("circle", { cx: "14.8", cy: "14.8", r: "1.6", fill: "white" }), jsxRuntime.jsx("line", { x1: "15.5", y1: "8.5", x2: "8.5", y2: "15.5", stroke: "white", strokeWidth: "1.8", strokeLinecap: "round" })] })),
84
+ solid: ({ primaryColor, accentColor, accentOpacity }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("circle", { cx: "12", cy: "12", r: "9.5", fill: primaryColor }), jsxRuntime.jsxs("g", { opacity: accentOpacity, children: [jsxRuntime.jsx("path", { d: TAX_DOTS, fillRule: "evenodd", fill: accentColor }), jsxRuntime.jsx("line", { x1: "15.5", y1: "8.5", x2: "8.5", y2: "15.5", stroke: accentColor, strokeWidth: "1.8", strokeLinecap: "round" })] })] })),
80
85
  outline: ({ primaryColor, strokeWidth }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("circle", { cx: "12", cy: "12", r: "9.5", stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" }), jsxRuntime.jsx("circle", { cx: "9.2", cy: "9.2", r: "1.6", stroke: primaryColor, strokeWidth: "1.3", fill: "none" }), jsxRuntime.jsx("circle", { cx: "14.8", cy: "14.8", r: "1.6", stroke: primaryColor, strokeWidth: "1.3", fill: "none" }), jsxRuntime.jsx("line", { x1: "15.5", y1: "8.5", x2: "8.5", y2: "15.5", stroke: primaryColor, strokeWidth: "1.6", strokeLinecap: "round" })] })),
81
86
  duotone: ({ primaryColor, secondaryColor, secondaryOpacity, strokeWidth }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("circle", { cx: "12", cy: "12", r: "9.5", fill: secondaryColor, opacity: secondaryOpacity }), jsxRuntime.jsx("circle", { cx: "12", cy: "12", r: "9.5", stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" }), jsxRuntime.jsx("circle", { cx: "9.2", cy: "9.2", r: "1.6", stroke: primaryColor, strokeWidth: "1.3", fill: "none" }), jsxRuntime.jsx("circle", { cx: "14.8", cy: "14.8", r: "1.6", stroke: primaryColor, strokeWidth: "1.3", fill: "none" }), jsxRuntime.jsx("line", { x1: "15.5", y1: "8.5", x2: "8.5", y2: "15.5", stroke: primaryColor, strokeWidth: "1.6", strokeLinecap: "round" })] })),
82
87
  },
@@ -91,13 +96,21 @@ const NtdGym = /* @__PURE__ */ createIcon.createIcon({
91
96
  duotone: ({ primaryColor, secondaryColor, secondaryOpacity, strokeWidth }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("rect", { x: "5.5", y: "6", width: "2.6", height: "12", rx: "1", fill: secondaryColor, opacity: secondaryOpacity }), jsxRuntime.jsx("rect", { x: "15.9", y: "6", width: "2.6", height: "12", rx: "1", fill: secondaryColor, opacity: secondaryOpacity }), jsxRuntime.jsx("line", { x1: "8", y1: "12", x2: "16", y2: "12", stroke: primaryColor, strokeWidth: strokeWidth, strokeLinecap: "round" }), jsxRuntime.jsx("rect", { x: "2.5", y: "8", width: "3", height: "8", rx: "1", stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" }), jsxRuntime.jsx("rect", { x: "5.5", y: "6", width: "2.6", height: "12", rx: "1", stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" }), jsxRuntime.jsx("rect", { x: "18.5", y: "8", width: "3", height: "8", rx: "1", stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" }), jsxRuntime.jsx("rect", { x: "15.9", y: "6", width: "2.6", height: "12", rx: "1", stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" })] })),
92
97
  },
93
98
  });
94
- /** Lab — Erlenmeyer flask with liquid (distinct from NtdAIBrain/NtdActivity). */
99
+ /**
100
+ * Lab — Erlenmeyer flask with liquid (distinct from NtdAIBrain/NtdActivity). The liquid sits low
101
+ * and is the flask moved in by 1 — the glass is as thick at the walls as at the bottom (the
102
+ * liquid hugged the walls and the bottom looked twice as heavy). Filled: flask primary, liquid in
103
+ * the accent colour; only vivid has bubbles — accent dots in a secondary liquid.
104
+ */
105
+ const LAB_FLASK = 'M9 2h6v2h-1v5l5.2 9a2 2 0 01-1.7 3H6.5a2 2 0 01-1.7-3L10 9V4H9V2z';
106
+ const LAB_LIQUID = 'M7.4 15.5h9.2l1.73 3a1 1 0 01-.86 1.5H6.53a1 1 0 01-.86-1.5z';
95
107
  const NtdLab = /* @__PURE__ */ createIcon.createIcon({
96
108
  displayName: 'NtdLab',
97
109
  paths: {
98
- solid: ({ primaryColor, accentColor, accentOpacity }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: "M9 2h6v2h-1v5l5.2 9a2 2 0 01-1.7 3H6.5a2 2 0 01-1.7-3L10 9V4H9V2z", fill: primaryColor }), jsxRuntime.jsx("path", { d: "M7.6 14h8.8l2 3.5a1 1 0 01-.9 1.5H6.5a1 1 0 01-.9-1.5L7.6 14z", fill: accentColor, opacity: accentOpacity }), jsxRuntime.jsx("circle", { cx: "10.5", cy: "16.5", r: "0.9", fill: "white", opacity: "0.7" }), jsxRuntime.jsx("circle", { cx: "13.5", cy: "17.5", r: "0.7", fill: "white", opacity: "0.7" })] })),
99
- outline: ({ primaryColor, strokeWidth }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: "M9 2h6v2h-1v5l5.2 9a2 2 0 01-1.7 3H6.5a2 2 0 01-1.7-3L10 9V4H9V2z", stroke: primaryColor, strokeWidth: strokeWidth, fill: "none", strokeLinejoin: "round" }), jsxRuntime.jsx("line", { x1: "7.6", y1: "14", x2: "16.4", y2: "14", stroke: primaryColor, strokeWidth: "1.4" })] })),
100
- duotone: ({ primaryColor, secondaryColor, secondaryOpacity, strokeWidth }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: "M7.6 14h8.8l2 3.5a1 1 0 01-.9 1.5H6.5a1 1 0 01-.9-1.5L7.6 14z", fill: secondaryColor, opacity: secondaryOpacity }), jsxRuntime.jsx("path", { d: "M9 2h6v2h-1v5l5.2 9a2 2 0 01-1.7 3H6.5a2 2 0 01-1.7-3L10 9V4H9V2z", stroke: primaryColor, strokeWidth: strokeWidth, fill: "none", strokeLinejoin: "round" }), jsxRuntime.jsx("line", { x1: "7.6", y1: "14", x2: "16.4", y2: "14", stroke: primaryColor, strokeWidth: "1.4" })] })),
110
+ solid: ({ primaryColor, accentColor, accentOpacity }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: LAB_FLASK, fill: primaryColor }), jsxRuntime.jsx("path", { d: LAB_LIQUID, fill: accentColor, opacity: accentOpacity })] })),
111
+ vivid: ({ primaryColor, secondaryColor, accentColor, accentOpacity }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: LAB_FLASK, fill: primaryColor }), jsxRuntime.jsx("path", { d: LAB_LIQUID, fill: secondaryColor }), jsxRuntime.jsxs("g", { fill: accentColor, opacity: accentOpacity, children: [jsxRuntime.jsx("circle", { cx: "10.5", cy: "17.6", r: "0.9" }), jsxRuntime.jsx("circle", { cx: "13.6", cy: "18.7", r: "0.7" })] })] })),
112
+ outline: ({ primaryColor, strokeWidth }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: "M9 2h6v2h-1v5l5.2 9a2 2 0 01-1.7 3H6.5a2 2 0 01-1.7-3L10 9V4H9V2z", stroke: primaryColor, strokeWidth: strokeWidth, fill: "none", strokeLinejoin: "round" }), jsxRuntime.jsx("line", { x1: "6.3", y1: "15.5", x2: "17.7", y2: "15.5", stroke: primaryColor, strokeWidth: "1.4" })] })),
113
+ duotone: ({ primaryColor, secondaryColor, secondaryOpacity, strokeWidth }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: LAB_LIQUID, fill: secondaryColor, opacity: secondaryOpacity }), jsxRuntime.jsx("path", { d: "M9 2h6v2h-1v5l5.2 9a2 2 0 01-1.7 3H6.5a2 2 0 01-1.7-3L10 9V4H9V2z", stroke: primaryColor, strokeWidth: strokeWidth, fill: "none", strokeLinejoin: "round" }), jsxRuntime.jsx("line", { x1: "6.3", y1: "15.5", x2: "17.7", y2: "15.5", stroke: primaryColor, strokeWidth: "1.4" })] })),
101
114
  },
102
115
  });
103
116
 
@@ -2,6 +2,7 @@
2
2
 
3
3
  var jsxRuntime = require('react/jsx-runtime');
4
4
  var createIcon = require('../createIcon.js');
5
+ var iconParts = require('../iconParts.js');
5
6
 
6
7
  /* ────────────────────────────────────────────────────────────────────────────
7
8
  RESIDENTIAL
@@ -111,13 +112,18 @@ const NtdBathroom = /* @__PURE__ */ createIcon.createIcon({
111
112
  vivid: ({ primaryColor, secondaryColor }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: "M4 12h16v4a4 4 0 01-4 4H8a4 4 0 01-4-4v-4z", fill: primaryColor }), jsxRuntime.jsx("path", { d: "M4 12h16v4a4 4 0 01-4 4H8a4 4 0 01-4-4v-4z", fill: "white", opacity: "0.08" }), jsxRuntime.jsx("circle", { cx: "14", cy: "6", r: "2", fill: secondaryColor }), jsxRuntime.jsx("path", { d: "M6 12V6a4 4 0 018 0", stroke: "white", strokeWidth: "1", fill: "none" }), jsxRuntime.jsx("path", { d: "M6 20v2M18 20v2", stroke: "white", strokeWidth: "1", strokeLinecap: "round" })] })),
112
113
  },
113
114
  });
115
+ // NtdGarage: the door is drawn as in the outline — frame and two slats — in the accent colour on
116
+ // the filled building (it was a 30% white patch with white lines), kept inside the building. The
117
+ // duotone is fills only: building primary, door secondary, its frame and slats primary.
118
+ const GARAGE = 'M12 2L2 8v12a2 2 0 002 2h16a2 2 0 002-2V8L12 2z';
119
+ const GARAGE_DOOR = 'M5 22V12h14v10M5 15h14M5 18h14';
114
120
  const NtdGarage = /* @__PURE__ */ createIcon.createIcon({
115
121
  displayName: 'NtdGarage',
116
122
  paths: {
117
- solid: ({ primaryColor }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: "M12 2L2 8v12a2 2 0 002 2h16a2 2 0 002-2V8L12 2z", fill: primaryColor }), jsxRuntime.jsx("rect", { x: "5", y: "12", width: "14", height: "10", fill: "white", opacity: "0.3" }), jsxRuntime.jsx("path", { d: "M5 14h14M5 17h14M5 20h14", stroke: "white", strokeWidth: "1.5" })] })),
118
- outline: ({ primaryColor, strokeWidth }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: "M12 2L2 8v12a2 2 0 002 2h16a2 2 0 002-2V8L12 2z", stroke: primaryColor, strokeWidth: strokeWidth, fill: "none", strokeLinejoin: "round" }), jsxRuntime.jsx("rect", { x: "5", y: "12", width: "14", height: "10", stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" }), jsxRuntime.jsx("path", { d: "M5 15h14M5 18h14", stroke: primaryColor, strokeWidth: strokeWidth })] })),
119
- duotone: ({ primaryColor, secondaryColor, secondaryOpacity, strokeWidth }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: "M12 2L2 8v12a2 2 0 002 2h16a2 2 0 002-2V8L12 2z", fill: secondaryColor, opacity: secondaryOpacity }), jsxRuntime.jsx("path", { d: "M12 2L2 8v12a2 2 0 002 2h16a2 2 0 002-2V8L12 2z", stroke: primaryColor, strokeWidth: strokeWidth, fill: "none", strokeLinejoin: "round" }), jsxRuntime.jsx("rect", { x: "5", y: "12", width: "14", height: "10", fill: primaryColor, opacity: "0.3", stroke: primaryColor, strokeWidth: strokeWidth }), jsxRuntime.jsx("path", { d: "M5 15h14M5 18h14", stroke: primaryColor, strokeWidth: strokeWidth })] })),
120
- vivid: ({ primaryColor, secondaryColor: _secondaryColor }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: "M12 2L2 8v12a2 2 0 002 2h16a2 2 0 002-2V8L12 2z", fill: primaryColor }), jsxRuntime.jsx("path", { d: "M12 2L2 8v12a2 2 0 002 2h16a2 2 0 002-2V8L12 2z", fill: "white", opacity: "0.08" }), jsxRuntime.jsx("rect", { x: "5", y: "12", width: "14", height: "10", fill: "white", opacity: "0.3" }), jsxRuntime.jsx("path", { d: "M5 14h14M5 17h14M5 20h14", stroke: "white", strokeWidth: "1" })] })),
123
+ solid: ({ primaryColor, accentColor, accentOpacity, strokeWidth, uid }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: GARAGE, fill: primaryColor }), iconParts.within(uid, 'door', jsxRuntime.jsx("path", { d: GARAGE }), jsxRuntime.jsx("path", { d: GARAGE_DOOR, stroke: accentColor, strokeWidth: strokeWidth, opacity: accentOpacity, fill: "none" }))] })),
124
+ outline: ({ primaryColor, strokeWidth }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: GARAGE, stroke: primaryColor, strokeWidth: strokeWidth, fill: "none", strokeLinejoin: "round" }), jsxRuntime.jsx("rect", { x: "5", y: "12", width: "14", height: "10", stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" }), jsxRuntime.jsx("path", { d: "M5 15h14M5 18h14", stroke: primaryColor, strokeWidth: strokeWidth })] })),
125
+ duotone: ({ primaryColor, secondaryColor, strokeWidth, uid }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: GARAGE, fill: primaryColor }), jsxRuntime.jsx("rect", { x: "5", y: "12", width: "14", height: "10", fill: secondaryColor }), iconParts.within(uid, 'door', jsxRuntime.jsx("path", { d: GARAGE }), jsxRuntime.jsx("path", { d: GARAGE_DOOR, stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" }))] })),
126
+ vivid: ({ primaryColor, secondaryColor, strokeWidth, uid }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: GARAGE, fill: primaryColor }), jsxRuntime.jsx("path", { d: GARAGE, fill: "white", opacity: "0.08" }), iconParts.within(uid, 'door', jsxRuntime.jsx("path", { d: GARAGE }), jsxRuntime.jsx("path", { d: GARAGE_DOOR, stroke: secondaryColor, strokeWidth: strokeWidth, fill: "none" }))] })),
121
127
  },
122
128
  });
123
129
  const NtdPool = /* @__PURE__ */ createIcon.createIcon({