@nice2dev/icons 1.2.2 → 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 (74) hide show
  1. package/CHANGELOG.md +499 -0
  2. package/README.md +146 -134
  3. package/dist/cjs/NiceIconPicker.js +17 -19
  4. package/dist/cjs/createIcon.js +10 -2
  5. package/dist/cjs/iconParts.js +49 -0
  6. package/dist/cjs/icons/accessibility.js +12 -4
  7. package/dist/cjs/icons/actions.js +67 -25
  8. package/dist/cjs/icons/business.js +58 -28
  9. package/dist/cjs/icons/ecommerce.js +0 -20
  10. package/dist/cjs/icons/education.js +22 -9
  11. package/dist/cjs/icons/files.js +70 -56
  12. package/dist/cjs/icons/fun.js +39 -25
  13. package/dist/cjs/icons/gaming.js +29 -4
  14. package/dist/cjs/icons/health.js +11 -4
  15. package/dist/cjs/icons/index.js +55 -5
  16. package/dist/cjs/icons/input.js +120 -0
  17. package/dist/cjs/icons/legal.js +4 -9
  18. package/dist/cjs/icons/media.js +26 -11
  19. package/dist/cjs/icons/navigation.js +4 -2
  20. package/dist/cjs/icons/omniverk.js +19 -6
  21. package/dist/cjs/icons/realestate.js +10 -4
  22. package/dist/cjs/icons/saas.js +15 -4
  23. package/dist/cjs/icons/science.js +6 -3
  24. package/dist/cjs/icons/shapes.js +66 -31
  25. package/dist/cjs/icons/sports.js +6 -2
  26. package/dist/cjs/icons/ui.js +62 -20
  27. package/dist/cjs/icons/weather.js +18 -8
  28. package/dist/cjs/index.js +55 -5
  29. package/dist/cjs/nicetodev-icons.css +1 -1
  30. package/dist/cjs/resolver.js +46 -1
  31. package/dist/cjs/rsc.js +1 -1
  32. package/dist/esm/NiceIconPicker.js +19 -21
  33. package/dist/esm/createIcon.js +10 -2
  34. package/dist/esm/iconParts.js +46 -0
  35. package/dist/esm/icons/accessibility.js +12 -4
  36. package/dist/esm/icons/actions.js +67 -26
  37. package/dist/esm/icons/business.js +58 -29
  38. package/dist/esm/icons/ecommerce.js +1 -19
  39. package/dist/esm/icons/education.js +22 -10
  40. package/dist/esm/icons/files.js +70 -56
  41. package/dist/esm/icons/fun.js +37 -25
  42. package/dist/esm/icons/gaming.js +29 -5
  43. package/dist/esm/icons/health.js +11 -4
  44. package/dist/esm/icons/index.js +9 -8
  45. package/dist/esm/icons/input.js +75 -0
  46. package/dist/esm/icons/legal.js +4 -9
  47. package/dist/esm/icons/media.js +26 -11
  48. package/dist/esm/icons/navigation.js +4 -2
  49. package/dist/esm/icons/omniverk.js +19 -6
  50. package/dist/esm/icons/realestate.js +10 -4
  51. package/dist/esm/icons/saas.js +15 -4
  52. package/dist/esm/icons/science.js +6 -3
  53. package/dist/esm/icons/shapes.js +66 -31
  54. package/dist/esm/icons/sports.js +6 -2
  55. package/dist/esm/icons/ui.js +62 -21
  56. package/dist/esm/icons/weather.js +18 -8
  57. package/dist/esm/index.js +9 -8
  58. package/dist/esm/nicetodev-icons.css +1 -1
  59. package/dist/esm/resolver.js +46 -1
  60. package/dist/esm/rsc.js +1 -1
  61. package/dist/types/iconParts.d.ts +19 -0
  62. package/dist/types/icons/actions.d.ts +1 -0
  63. package/dist/types/icons/business.d.ts +2 -0
  64. package/dist/types/icons/ecommerce.d.ts +0 -2
  65. package/dist/types/icons/education.d.ts +1 -0
  66. package/dist/types/icons/files.d.ts +2 -1
  67. package/dist/types/icons/fun.d.ts +6 -1
  68. package/dist/types/icons/gaming.d.ts +2 -0
  69. package/dist/types/icons/index.d.ts +9 -8
  70. package/dist/types/icons/input.d.ts +53 -0
  71. package/dist/types/icons/omniverk.d.ts +0 -2
  72. package/dist/types/icons/ui.d.ts +1 -0
  73. package/dist/types/types.d.ts +6 -0
  74. package/package.json +3 -3
@@ -7,15 +7,6 @@ var createIcon = require('../createIcon.js');
7
7
  // E-Commerce Icons
8
8
  // Shopping cart, checkout, wishlist, compare, shipping, returns, promo, etc.
9
9
  // ═══════════════════════════════════════════════════════════════════════════════
10
- const NtdShoppingCart = /* @__PURE__ */ createIcon.createIcon({
11
- displayName: 'NtdShoppingCart',
12
- paths: {
13
- solid: ({ primaryColor, accentColor, accentOpacity }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: "M6 6h15l-1.5 9H7.5L6 6z", fill: primaryColor }), jsxRuntime.jsx("circle", { cx: "9", cy: "20", r: "1.5", fill: primaryColor }), jsxRuntime.jsx("circle", { cx: "18", cy: "20", r: "1.5", fill: primaryColor }), jsxRuntime.jsx("path", { d: "M1 1h4l1 4", stroke: accentColor, strokeWidth: "2", opacity: accentOpacity, fill: "none" })] })),
14
- outline: ({ primaryColor, strokeWidth }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: "M6 6h15l-1.5 9H7.5L6 6z", stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" }), jsxRuntime.jsx("circle", { cx: "9", cy: "20", r: "1.5", stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" }), jsxRuntime.jsx("circle", { cx: "18", cy: "20", r: "1.5", stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" }), jsxRuntime.jsx("path", { d: "M1 1h4l1 4", stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" })] })),
15
- duotone: ({ primaryColor, secondaryColor, secondaryOpacity, strokeWidth }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: "M6 6h15l-1.5 9H7.5L6 6z", fill: secondaryColor, opacity: secondaryOpacity }), jsxRuntime.jsx("path", { d: "M6 6h15l-1.5 9H7.5L6 6z", stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" }), jsxRuntime.jsx("circle", { cx: "9", cy: "20", r: "1.5", fill: primaryColor }), jsxRuntime.jsx("circle", { cx: "18", cy: "20", r: "1.5", fill: primaryColor }), jsxRuntime.jsx("path", { d: "M1 1h4l1 4", stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" })] })),
16
- vivid: ({ primaryColor, secondaryColor }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: "M6 6h15l-1.5 9H7.5L6 6z", fill: primaryColor }), jsxRuntime.jsx("path", { d: "M6 6h15l-1.5 9H7.5L6 6z", fill: "white", opacity: "0.08" }), jsxRuntime.jsx("circle", { cx: "9", cy: "20", r: "1.5", fill: secondaryColor }), jsxRuntime.jsx("circle", { cx: "18", cy: "20", r: "1.5", fill: "#F59E0B" }), jsxRuntime.jsx("path", { d: "M1 1h4l1 4", stroke: "white", strokeWidth: "1", opacity: "0.35", fill: "none" })] })),
17
- },
18
- });
19
10
  const NtdCartAdd = /* @__PURE__ */ createIcon.createIcon({
20
11
  displayName: 'NtdCartAdd',
21
12
  paths: {
@@ -133,15 +124,6 @@ const NtdPayment = /* @__PURE__ */ createIcon.createIcon({
133
124
  vivid: ({ primaryColor, secondaryColor }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("rect", { x: "2", y: "5", width: "20", height: "14", rx: "2", fill: primaryColor }), jsxRuntime.jsx("rect", { x: "2", y: "5", width: "20", height: "14", rx: "2", fill: "white", opacity: "0.08" }), jsxRuntime.jsx("rect", { x: "2", y: "9", width: "20", height: "3", fill: secondaryColor }), jsxRuntime.jsx("rect", { x: "5", y: "15", width: "4", height: "2", rx: "0.5", fill: "#F59E0B" }), jsxRuntime.jsx("rect", { x: "11", y: "15", width: "3", height: "2", rx: "0.5", fill: "#EF4444" })] })),
134
125
  },
135
126
  });
136
- const NtdInvoiceDoc = /* @__PURE__ */ createIcon.createIcon({
137
- displayName: 'NtdInvoiceDoc',
138
- paths: {
139
- solid: ({ primaryColor, accentColor, accentOpacity }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: "M14 2H6a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V8l-6-6z", fill: primaryColor }), jsxRuntime.jsx("path", { d: "M14 2v6h6", fill: accentColor, opacity: accentOpacity * 0.5 }), jsxRuntime.jsx("rect", { x: "8", y: "12", width: "8", height: "1", rx: "0.5", fill: accentColor, opacity: accentOpacity }), jsxRuntime.jsx("rect", { x: "8", y: "15", width: "6", height: "1", rx: "0.5", fill: accentColor, opacity: accentOpacity }), jsxRuntime.jsx("rect", { x: "8", y: "18", width: "4", height: "1", rx: "0.5", fill: accentColor, opacity: accentOpacity })] })),
140
- outline: ({ primaryColor, strokeWidth }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: "M14 2H6a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V8l-6-6z", stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" }), jsxRuntime.jsx("path", { d: "M14 2v6h6", stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" }), jsxRuntime.jsx("path", { d: "M8 12h8M8 15h6M8 18h4", stroke: primaryColor, strokeWidth: strokeWidth * 0.75 })] })),
141
- duotone: ({ primaryColor, secondaryColor, secondaryOpacity, strokeWidth }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: "M14 2H6a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V8l-6-6z", fill: secondaryColor, opacity: secondaryOpacity }), jsxRuntime.jsx("path", { d: "M14 2H6a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V8l-6-6z", stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" }), jsxRuntime.jsx("path", { d: "M14 2v6h6", stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" }), jsxRuntime.jsx("path", { d: "M8 12h8M8 15h6M8 18h4", stroke: primaryColor, strokeWidth: strokeWidth * 0.75 })] })),
142
- vivid: ({ primaryColor, secondaryColor }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: "M14 2H6a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V8l-6-6z", fill: primaryColor }), jsxRuntime.jsx("path", { d: "M14 2H6a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V8l-6-6z", fill: "white", opacity: "0.08" }), jsxRuntime.jsx("path", { d: "M14 2v6h6", fill: secondaryColor }), jsxRuntime.jsx("rect", { x: "8", y: "12", width: "8", height: "1", rx: "0.5", fill: "#F59E0B" }), jsxRuntime.jsx("rect", { x: "8", y: "15", width: "6", height: "1", rx: "0.5", fill: "#EF4444" }), jsxRuntime.jsx("rect", { x: "8", y: "18", width: "4", height: "1", rx: "0.5", fill: "#10B981" })] })),
143
- },
144
- });
145
127
  const NtdRefund = /* @__PURE__ */ createIcon.createIcon({
146
128
  displayName: 'NtdRefund',
147
129
  paths: {
@@ -159,12 +141,10 @@ exports.NtdCompare = NtdCompare;
159
141
  exports.NtdCoupon = NtdCoupon;
160
142
  exports.NtdDiscount = NtdDiscount;
161
143
  exports.NtdGiftCard = NtdGiftCard;
162
- exports.NtdInvoiceDoc = NtdInvoiceDoc;
163
144
  exports.NtdPayment = NtdPayment;
164
145
  exports.NtdPromoTag = NtdPromoTag;
165
146
  exports.NtdRefund = NtdRefund;
166
147
  exports.NtdReturn = NtdReturn;
167
148
  exports.NtdShipping = NtdShipping;
168
- exports.NtdShoppingCart = NtdShoppingCart;
169
149
  exports.NtdStorefront = NtdStorefront;
170
150
  exports.NtdWishlist = NtdWishlist;
@@ -45,15 +45,27 @@ const NtdUniversity = /* @__PURE__ */ createIcon.createIcon({
45
45
  /* ────────────────────────────────────────────────────────────────────────────
46
46
  LEARNING TOOLS
47
47
  ───────────────────────────────────────────────────────────────────────────── */
48
- const NtdBook = /* @__PURE__ */ createIcon.createIcon({
49
- displayName: 'NtdBook',
50
- paths: {
51
- solid: ({ primaryColor }) => (jsxRuntime.jsx("path", { d: "M4 4a2 2 0 012-2h12a2 2 0 012 2v16a2 2 0 01-2 2H6a2 2 0 01-2-2V4zm3 2v2h10V6H7zm0 4v2h10v-2H7z", fill: primaryColor })),
52
- outline: ({ primaryColor, strokeWidth }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("rect", { x: "4", y: "2", width: "16", height: "20", rx: "2", stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" }), jsxRuntime.jsx("path", { d: "M7 6h10M7 10h10", stroke: primaryColor, strokeWidth: strokeWidth, strokeLinecap: "round" })] })),
53
- duotone: ({ primaryColor, secondaryColor, secondaryOpacity, strokeWidth }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("rect", { x: "4", y: "2", width: "16", height: "20", rx: "2", fill: secondaryColor, opacity: secondaryOpacity }), jsxRuntime.jsx("rect", { x: "4", y: "2", width: "16", height: "20", rx: "2", stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" }), jsxRuntime.jsx("path", { d: "M7 6h10M7 10h10", stroke: primaryColor, strokeWidth: strokeWidth, strokeLinecap: "round" })] })),
54
- vivid: ({ primaryColor, secondaryColor: _secondaryColor }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: "M4 4a2 2 0 012-2h12a2 2 0 012 2v16a2 2 0 01-2 2H6a2 2 0 01-2-2V4zm3 2v2h10V6H7zm0 4v2h10v-2H7z", fill: primaryColor }), jsxRuntime.jsx("path", { d: "M4 4a2 2 0 012-2h12a2 2 0 012 2v16a2 2 0 01-2 2H6a2 2 0 01-2-2V4zm3 2v2h10V6H7zm0 4v2h10v-2H7z", fill: "white", opacity: "0.1" })] })),
55
- },
56
- });
48
+ // NtdBook: a closed book, not a page — the rounded spine on the left, the block of pages showing
49
+ // at the bottom between the front cover and the line of the back cover, reaching almost to the
50
+ // right edge. The cover is plain, so another glyph can sit on it; NtdBookBookmark adds a ribbon.
51
+ const BOOK_SILHOUETTE = 'M7 2h12a1 1 0 011 1v17a1 1 0 01-1 1H7a2.5 2.5 0 01-2.5-2.5v-14A2.5 2.5 0 017 2z';
52
+ const BOOK_PAGES = 'M7.4 17.6h12.2v2.3H7.4a1.15 1.15 0 010-2.3z';
53
+ const BOOK_RIBBON = 'M9.5 2v6.5l1.75-1.3L13 8.5V2z';
54
+ const BOOK_OUTLINE = 'M4.5 18.5v-14A2.5 2.5 0 017 2h12a1 1 0 011 1v17a1 1 0 01-1 1H7a2.5 2.5 0 010-5h13';
55
+ /** The book, with the ribbon bookmark or without it. */
56
+ function bookIcon(displayName, ribbon) {
57
+ return createIcon.createIcon({
58
+ displayName,
59
+ paths: {
60
+ solid: ({ primaryColor, accentColor, accentOpacity }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: BOOK_SILHOUETTE, fill: primaryColor }), jsxRuntime.jsxs("g", { fill: accentColor, opacity: accentOpacity, children: [jsxRuntime.jsx("path", { d: BOOK_PAGES }), ribbon && jsxRuntime.jsx("path", { d: BOOK_RIBBON })] })] })),
61
+ outline: ({ primaryColor, strokeWidth }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: BOOK_OUTLINE, stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" }), ribbon && (jsxRuntime.jsx("path", { d: "M9.5 2.5v6l1.75-1.3L13 8.5v-6", stroke: primaryColor, strokeWidth: strokeWidth * 0.75, fill: "none" }))] })),
62
+ duotone: ({ primaryColor, secondaryColor, secondaryOpacity, strokeWidth }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: BOOK_SILHOUETTE, fill: secondaryColor, opacity: secondaryOpacity }), jsxRuntime.jsx("path", { d: BOOK_OUTLINE, stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" }), ribbon && jsxRuntime.jsx("path", { d: BOOK_RIBBON, fill: primaryColor })] })),
63
+ vivid: ({ primaryColor, secondaryColor, accentColor, accentOpacity }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: BOOK_SILHOUETTE, fill: primaryColor }), jsxRuntime.jsx("path", { d: BOOK_SILHOUETTE, fill: "white", opacity: "0.1" }), jsxRuntime.jsx("path", { d: BOOK_PAGES, fill: accentColor, opacity: accentOpacity }), ribbon && jsxRuntime.jsx("path", { d: BOOK_RIBBON, fill: secondaryColor })] })),
64
+ },
65
+ });
66
+ }
67
+ const NtdBook = /* @__PURE__ */ bookIcon('NtdBook', false);
68
+ const NtdBookBookmark = /* @__PURE__ */ bookIcon('NtdBookBookmark', true);
57
69
  const NtdOpenBook = /* @__PURE__ */ createIcon.createIcon({
58
70
  displayName: 'NtdOpenBook',
59
71
  paths: {
@@ -193,6 +205,7 @@ const educationIcons = {
193
205
 
194
206
  exports.NtdBackpack = NtdBackpack;
195
207
  exports.NtdBook = NtdBook;
208
+ exports.NtdBookBookmark = NtdBookBookmark;
196
209
  exports.NtdCalculator = NtdCalculator;
197
210
  exports.NtdCertificate = NtdCertificate;
198
211
  exports.NtdDiploma = NtdDiploma;
@@ -2,41 +2,30 @@
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
- const NtdFile = /* @__PURE__ */ createIcon.createIcon({
7
- displayName: 'NtdFile',
8
- paths: {
9
- solid: ({ primaryColor, strokeWidth: _strokeWidth }) => (jsxRuntime.jsx("path", { d: "M13 2H6a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V9l-7-7z", fill: primaryColor })),
10
- outline: ({ primaryColor, strokeWidth }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: "M13 2H6a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V9l-7-7z", stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" }), jsxRuntime.jsx("path", { d: "M13 2v7h7", stroke: primaryColor, strokeWidth: strokeWidth })] })),
11
- duotone: ({ primaryColor, secondaryColor, secondaryOpacity, strokeWidth }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: "M13 2H6a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V9l-7-7z", fill: secondaryColor, opacity: secondaryOpacity }), jsxRuntime.jsx("path", { d: "M13 2H6a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V9l-7-7z", stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" }), jsxRuntime.jsx("path", { d: "M13 2v7h7", stroke: primaryColor, strokeWidth: strokeWidth, fill: primaryColor, opacity: secondaryOpacity + 0.1 })] })),
12
- vivid: ({ primaryColor, secondaryColor: _secondaryColor }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: "M13 2H6a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V9l-7-7z", fill: primaryColor }), jsxRuntime.jsx("path", { d: "M13 2H6a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V9l-7-7z", fill: "white", opacity: "0.1" })] })),
13
- },
14
- });
15
- const NtdFileText = /* @__PURE__ */ createIcon.createIcon({
16
- displayName: 'NtdFileText',
17
- paths: {
18
- solid: ({ primaryColor, accentColor, accentOpacity, strokeWidth: _strokeWidth }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: "M13 2H6a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V9l-7-7z", fill: primaryColor }), jsxRuntime.jsx("line", { x1: "8", y1: "13", x2: "16", y2: "13", stroke: accentColor, strokeWidth: "1.5", opacity: accentOpacity }), jsxRuntime.jsx("line", { x1: "8", y1: "17", x2: "14", y2: "17", stroke: accentColor, strokeWidth: "1.5", opacity: accentOpacity })] })),
19
- outline: ({ primaryColor, strokeWidth }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: "M13 2H6a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V9l-7-7z", stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" }), jsxRuntime.jsx("path", { d: "M13 2v7h7", stroke: primaryColor, strokeWidth: strokeWidth }), jsxRuntime.jsx("line", { x1: "8", y1: "13", x2: "16", y2: "13", stroke: primaryColor, strokeWidth: strokeWidth }), jsxRuntime.jsx("line", { x1: "8", y1: "17", x2: "14", y2: "17", stroke: primaryColor, strokeWidth: strokeWidth })] })),
20
- duotone: ({ primaryColor, secondaryColor, secondaryOpacity, strokeWidth }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: "M13 2H6a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V9l-7-7z", fill: secondaryColor, opacity: secondaryOpacity }), jsxRuntime.jsx("path", { d: "M13 2H6a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V9l-7-7z", stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" }), jsxRuntime.jsx("path", { d: "M13 2v7h7", stroke: primaryColor, strokeWidth: strokeWidth }), jsxRuntime.jsx("line", { x1: "8", y1: "13", x2: "16", y2: "13", stroke: primaryColor, strokeWidth: strokeWidth }), jsxRuntime.jsx("line", { x1: "8", y1: "17", x2: "14", y2: "17", stroke: primaryColor, strokeWidth: strokeWidth })] })),
21
- vivid: ({ primaryColor, secondaryColor }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: "M13 2H6a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V9l-7-7z", fill: primaryColor }), jsxRuntime.jsx("path", { d: "M13 2H6a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V9l-7-7z", fill: "white", opacity: "0.1" }), jsxRuntime.jsx("line", { x1: "8", y1: "13", x2: "16", y2: "13", stroke: secondaryColor, strokeWidth: "1.8" }), jsxRuntime.jsx("line", { x1: "8", y1: "17", x2: "14", y2: "17", stroke: "#3B82F6", strokeWidth: "1.5" })] })),
22
- },
23
- });
7
+ // NtdFile is the page every paper icon is drawn on (`paperIcon` in iconParts.tsx): the fold is
8
+ // 8 now (7 before — the duotone's stroked fold looked the largest), secondary when the page is
9
+ // filled, square in `sharp`.
10
+ const NtdFile = /* @__PURE__ */ iconParts.paperIcon('NtdFile');
11
+ const NtdFileText = /* @__PURE__ */ iconParts.paperIcon('NtdFileText', 'M7.5 9.5h3M7.5 13.5h9M7.5 17.5h9');
12
+ // The folder tab runs 2 → 11 before its slope (2 → 9 before), in NtdFolder and NtdFolderOpen.
24
13
  const NtdFolder = /* @__PURE__ */ createIcon.createIcon({
25
14
  displayName: 'NtdFolder',
26
15
  paths: {
27
- solid: ({ primaryColor, strokeWidth: _strokeWidth }) => (jsxRuntime.jsx("path", { d: "M22 19a2 2 0 01-2 2H4a2 2 0 01-2-2V5a2 2 0 012-2h5l2 3h9a2 2 0 012 2v11z", fill: primaryColor })),
28
- outline: ({ primaryColor, strokeWidth }) => (jsxRuntime.jsx("path", { d: "M22 19a2 2 0 01-2 2H4a2 2 0 01-2-2V5a2 2 0 012-2h5l2 3h9a2 2 0 012 2v11z", stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" })),
29
- duotone: ({ primaryColor, secondaryColor, secondaryOpacity, strokeWidth }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: "M22 19a2 2 0 01-2 2H4a2 2 0 01-2-2V5a2 2 0 012-2h5l2 3h9a2 2 0 012 2v11z", fill: secondaryColor, opacity: secondaryOpacity }), jsxRuntime.jsx("path", { d: "M22 19a2 2 0 01-2 2H4a2 2 0 01-2-2V5a2 2 0 012-2h5l2 3h9a2 2 0 012 2v11z", stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" })] })),
30
- vivid: ({ primaryColor, secondaryColor: _secondaryColor }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: "M22 19a2 2 0 01-2 2H4a2 2 0 01-2-2V5a2 2 0 012-2h5l2 3h9a2 2 0 012 2v11z", fill: primaryColor }), jsxRuntime.jsx("path", { d: "M22 19a2 2 0 01-2 2H4a2 2 0 01-2-2V5a2 2 0 012-2h5l2 3h9a2 2 0 012 2v11z", fill: "white", opacity: "0.1" })] })),
16
+ solid: ({ primaryColor, strokeWidth: _strokeWidth }) => (jsxRuntime.jsx("path", { d: "M22 19a2 2 0 01-2 2H4a2 2 0 01-2-2V5a2 2 0 012-2h7l2 3h7a2 2 0 012 2v11z", fill: primaryColor })),
17
+ outline: ({ primaryColor, strokeWidth }) => (jsxRuntime.jsx("path", { d: "M22 19a2 2 0 01-2 2H4a2 2 0 01-2-2V5a2 2 0 012-2h7l2 3h7a2 2 0 012 2v11z", stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" })),
18
+ duotone: ({ primaryColor, secondaryColor, secondaryOpacity, strokeWidth }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: "M22 19a2 2 0 01-2 2H4a2 2 0 01-2-2V5a2 2 0 012-2h7l2 3h7a2 2 0 012 2v11z", fill: secondaryColor, opacity: secondaryOpacity }), jsxRuntime.jsx("path", { d: "M22 19a2 2 0 01-2 2H4a2 2 0 01-2-2V5a2 2 0 012-2h7l2 3h7a2 2 0 012 2v11z", stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" })] })),
19
+ vivid: ({ primaryColor, secondaryColor: _secondaryColor }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: "M22 19a2 2 0 01-2 2H4a2 2 0 01-2-2V5a2 2 0 012-2h7l2 3h7a2 2 0 012 2v11z", fill: primaryColor }), jsxRuntime.jsx("path", { d: "M22 19a2 2 0 01-2 2H4a2 2 0 01-2-2V5a2 2 0 012-2h7l2 3h7a2 2 0 012 2v11z", fill: "white", opacity: "0.1" })] })),
31
20
  },
32
21
  });
33
22
  const NtdFolderOpen = /* @__PURE__ */ createIcon.createIcon({
34
23
  displayName: 'NtdFolderOpen',
35
24
  paths: {
36
- solid: ({ primaryColor, strokeWidth }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: "M22 19a2 2 0 01-2 2H4a2 2 0 01-2-2V5a2 2 0 012-2h5l2 3h9a2 2 0 012 2v11z", fill: primaryColor, opacity: "0.3" }), jsxRuntime.jsx("path", { d: "M2 10h20M4 21l2-11h16l-2 11H4z", stroke: primaryColor, strokeWidth: strokeWidth, fill: primaryColor })] })),
37
- outline: ({ primaryColor, strokeWidth }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: "M22 19a2 2 0 01-2 2H4a2 2 0 01-2-2V5a2 2 0 012-2h5l2 3h9a2 2 0 012 2v11z", stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" }), jsxRuntime.jsx("path", { d: "M2 10h20", stroke: primaryColor, strokeWidth: strokeWidth })] })),
38
- duotone: ({ primaryColor, secondaryColor, secondaryOpacity, strokeWidth }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: "M22 19a2 2 0 01-2 2H4a2 2 0 01-2-2V5a2 2 0 012-2h5l2 3h9a2 2 0 012 2v11z", fill: secondaryColor, opacity: secondaryOpacity }), jsxRuntime.jsx("path", { d: "M22 19a2 2 0 01-2 2H4a2 2 0 01-2-2V5a2 2 0 012-2h5l2 3h9a2 2 0 012 2v11z", stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" }), jsxRuntime.jsx("path", { d: "M2 10h20", stroke: primaryColor, strokeWidth: strokeWidth })] })),
39
- vivid: ({ primaryColor, secondaryColor }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: "M22 19a2 2 0 01-2 2H4a2 2 0 01-2-2V5a2 2 0 012-2h5l2 3h9a2 2 0 012 2v11z", fill: primaryColor, opacity: "0.3" }), jsxRuntime.jsx("path", { d: "M22 19a2 2 0 01-2 2H4a2 2 0 01-2-2V5a2 2 0 012-2h5l2 3h9a2 2 0 012 2v11z", fill: "white", opacity: "0.08" }), jsxRuntime.jsx("path", { d: "M2 10h20M4 21l2-11h16l-2 11H4z", stroke: secondaryColor, strokeWidth: "2", fill: secondaryColor })] })),
25
+ solid: ({ primaryColor, strokeWidth }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: "M22 19a2 2 0 01-2 2H4a2 2 0 01-2-2V5a2 2 0 012-2h7l2 3h7a2 2 0 012 2v11z", fill: primaryColor, opacity: "0.3" }), jsxRuntime.jsx("path", { d: "M2 10h20M4 21l2-11h16l-2 11H4z", stroke: primaryColor, strokeWidth: strokeWidth, fill: primaryColor })] })),
26
+ outline: ({ primaryColor, strokeWidth }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: "M22 19a2 2 0 01-2 2H4a2 2 0 01-2-2V5a2 2 0 012-2h7l2 3h7a2 2 0 012 2v11z", stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" }), jsxRuntime.jsx("path", { d: "M2 10h20", stroke: primaryColor, strokeWidth: strokeWidth })] })),
27
+ duotone: ({ primaryColor, secondaryColor, secondaryOpacity, strokeWidth }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: "M22 19a2 2 0 01-2 2H4a2 2 0 01-2-2V5a2 2 0 012-2h7l2 3h7a2 2 0 012 2v11z", fill: secondaryColor, opacity: secondaryOpacity }), jsxRuntime.jsx("path", { d: "M22 19a2 2 0 01-2 2H4a2 2 0 01-2-2V5a2 2 0 012-2h7l2 3h7a2 2 0 012 2v11z", stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" }), jsxRuntime.jsx("path", { d: "M2 10h20", stroke: primaryColor, strokeWidth: strokeWidth })] })),
28
+ vivid: ({ primaryColor, secondaryColor }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: "M22 19a2 2 0 01-2 2H4a2 2 0 01-2-2V5a2 2 0 012-2h7l2 3h7a2 2 0 012 2v11z", fill: primaryColor, opacity: "0.3" }), jsxRuntime.jsx("path", { d: "M22 19a2 2 0 01-2 2H4a2 2 0 01-2-2V5a2 2 0 012-2h7l2 3h7a2 2 0 012 2v11z", fill: "white", opacity: "0.08" }), jsxRuntime.jsx("path", { d: "M2 10h20M4 21l2-11h16l-2 11H4z", stroke: secondaryColor, strokeWidth: "2", fill: secondaryColor })] })),
40
29
  },
41
30
  });
42
31
  const NtdArchive = /* @__PURE__ */ createIcon.createIcon({
@@ -48,13 +37,21 @@ const NtdArchive = /* @__PURE__ */ createIcon.createIcon({
48
37
  vivid: ({ primaryColor, secondaryColor }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("rect", { x: "2", y: "3", width: "20", height: "5", rx: "1", fill: primaryColor }), jsxRuntime.jsx("rect", { x: "2", y: "3", width: "20", height: "5", rx: "1", fill: "white", opacity: "0.08" }), jsxRuntime.jsx("path", { d: "M4 8v11a2 2 0 002 2h12a2 2 0 002-2V8", fill: secondaryColor, opacity: "0.7" }), jsxRuntime.jsx("line", { x1: "10", y1: "12", x2: "14", y2: "12", stroke: "white", strokeWidth: "1", opacity: "0.4" })] })),
49
38
  },
50
39
  });
40
+ // NtdDatabase: a cylinder of three discs, its silhouette — sides, bottom and the back of the top —
41
+ // one path, so no seam shows where a separate cap met the body. The filled variants draw no line
42
+ // along the cap's front edge (it set the cap apart as a fourth disc), and the gaps between the
43
+ // discs are bands between two parallel arcs, 1.3 high everywhere and cut square at the sides — a
44
+ // stroked arc clipped to the body thinned to a wedge along the sides.
45
+ const DB_SILHOUETTE = 'M4 5.5v13a8 2.6 0 0016 0v-13a8 2.6 0 00-16 0z';
46
+ const DB_GAPS = 'M4 9.18a8 2.6 0 0016 0v1.3a8 2.6 0 01-16 0zM4 13.52a8 2.6 0 0016 0v1.3a8 2.6 0 01-16 0z';
51
47
  const NtdDatabase = /* @__PURE__ */ createIcon.createIcon({
52
48
  displayName: 'NtdDatabase',
53
49
  paths: {
54
- solid: ({ primaryColor, strokeWidth }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("ellipse", { cx: "12", cy: "5", rx: "9", ry: "3", fill: primaryColor }), jsxRuntime.jsx("path", { d: "M21 12c0 1.66-4.03 3-9 3s-9-1.34-9-3", stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" }), jsxRuntime.jsx("path", { d: "M3 5v14c0 1.66 4.03 3 9 3s9-1.34 9-3V5", stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" })] })),
55
- outline: ({ primaryColor, strokeWidth }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("ellipse", { cx: "12", cy: "5", rx: "9", ry: "3", stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" }), jsxRuntime.jsx("path", { d: "M21 12c0 1.66-4.03 3-9 3s-9-1.34-9-3", stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" }), jsxRuntime.jsx("path", { d: "M3 5v14c0 1.66 4.03 3 9 3s9-1.34 9-3V5", stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" })] })),
56
- duotone: ({ primaryColor, secondaryColor, secondaryOpacity, strokeWidth }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("ellipse", { cx: "12", cy: "5", rx: "9", ry: "3", fill: secondaryColor, opacity: secondaryOpacity }), jsxRuntime.jsx("path", { d: "M3 5v14c0 1.66 4.03 3 9 3s9-1.34 9-3V5", fill: secondaryColor, opacity: secondaryOpacity * 0.5 }), jsxRuntime.jsx("ellipse", { cx: "12", cy: "5", rx: "9", ry: "3", stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" }), jsxRuntime.jsx("path", { d: "M21 12c0 1.66-4.03 3-9 3s-9-1.34-9-3", stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" }), jsxRuntime.jsx("path", { d: "M3 5v14c0 1.66 4.03 3 9 3s9-1.34 9-3V5", stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" })] })),
57
- vivid: ({ primaryColor, secondaryColor }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("ellipse", { cx: "12", cy: "5", rx: "9", ry: "3", fill: primaryColor }), jsxRuntime.jsx("ellipse", { cx: "12", cy: "5", rx: "9", ry: "3", fill: "white", opacity: "0.1" }), jsxRuntime.jsx("path", { d: "M21 12c0 1.66-4.03 3-9 3s-9-1.34-9-3", stroke: secondaryColor, strokeWidth: "1.8", fill: "none" }), jsxRuntime.jsx("path", { d: "M3 5v14c0 1.66 4.03 3 9 3s9-1.34 9-3V5", stroke: "#3B82F6", strokeWidth: "1.5", fill: "none" })] })),
50
+ solid: ({ primaryColor, accentColor, accentOpacity }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: DB_SILHOUETTE, fill: primaryColor }), jsxRuntime.jsx("path", { d: DB_GAPS, fill: accentColor, opacity: accentOpacity })] })),
51
+ outline: ({ primaryColor, strokeWidth }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("ellipse", { cx: "12", cy: "5.5", rx: "8", ry: "2.6", stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" }), jsxRuntime.jsx("path", { d: "M4 5.5v13a8 2.6 0 0016 0v-13M4 9.83a8 2.6 0 0016 0M4 14.17a8 2.6 0 0016 0", stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" })] })),
52
+ // one tint for the cap and the body: the cap in full secondary read as a separate disc
53
+ duotone: ({ primaryColor, secondaryColor, secondaryOpacity, strokeWidth }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: DB_SILHOUETTE, fill: secondaryColor, opacity: secondaryOpacity }), jsxRuntime.jsx("ellipse", { cx: "12", cy: "5.5", rx: "8", ry: "2.6", stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" }), jsxRuntime.jsx("path", { d: "M4 5.5v13a8 2.6 0 0016 0v-13M4 9.83a8 2.6 0 0016 0M4 14.17a8 2.6 0 0016 0", stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" })] })),
54
+ vivid: ({ primaryColor, secondaryColor }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: DB_SILHOUETTE, fill: primaryColor }), jsxRuntime.jsx("ellipse", { cx: "12", cy: "5.5", rx: "8", ry: "2.6", fill: "white", opacity: "0.25" }), jsxRuntime.jsx("path", { d: DB_GAPS, fill: secondaryColor })] })),
58
55
  },
59
56
  });
60
57
  const NtdCloud = /* @__PURE__ */ createIcon.createIcon({
@@ -84,13 +81,16 @@ const NtdCloudDownload = /* @__PURE__ */ createIcon.createIcon({
84
81
  vivid: ({ primaryColor, secondaryColor }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: "M18 10h-1.26A8 8 0 109 20h9a5 5 0 000-10z", fill: primaryColor, opacity: "0.2", stroke: primaryColor, strokeWidth: "2" }), jsxRuntime.jsx("path", { d: "M18 10h-1.26A8 8 0 109 20h9a5 5 0 000-10z", fill: "white", opacity: "0.1" }), jsxRuntime.jsx("path", { d: "M8 17l4 4 4-4M12 12v9", stroke: secondaryColor, strokeWidth: "1.8" })] })),
85
82
  },
86
83
  });
84
+ // The prompt marks are twice the stroke width on the filled screen (like NtdCheck), and a little
85
+ // larger everywhere so the heavy ones do not run together.
86
+ const TERMINAL_PROMPT = 'M6 8.5l4.5 3.5L6 15.5M12.5 16.5H18';
87
87
  const NtdTerminal = /* @__PURE__ */ createIcon.createIcon({
88
88
  displayName: 'NtdTerminal',
89
89
  paths: {
90
- solid: ({ primaryColor, accentColor, accentOpacity, strokeWidth }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("rect", { x: "2", y: "3", width: "20", height: "18", rx: "2", fill: primaryColor }), jsxRuntime.jsx("path", { d: "M6 9l4 3-4 3", stroke: accentColor, strokeWidth: strokeWidth, opacity: accentOpacity }), jsxRuntime.jsx("line", { x1: "12", y1: "17", x2: "18", y2: "17", stroke: accentColor, strokeWidth: strokeWidth, opacity: accentOpacity })] })),
91
- outline: ({ primaryColor, strokeWidth }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("rect", { x: "2", y: "3", width: "20", height: "18", rx: "2", stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" }), jsxRuntime.jsx("path", { d: "M6 9l4 3-4 3", stroke: primaryColor, strokeWidth: strokeWidth }), jsxRuntime.jsx("line", { x1: "12", y1: "17", x2: "18", y2: "17", stroke: primaryColor, strokeWidth: strokeWidth })] })),
92
- duotone: ({ primaryColor, secondaryColor, secondaryOpacity, strokeWidth }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("rect", { x: "2", y: "3", width: "20", height: "18", rx: "2", fill: secondaryColor, opacity: secondaryOpacity }), jsxRuntime.jsx("rect", { x: "2", y: "3", width: "20", height: "18", rx: "2", stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" }), jsxRuntime.jsx("path", { d: "M6 9l4 3-4 3", stroke: primaryColor, strokeWidth: strokeWidth }), jsxRuntime.jsx("line", { x1: "12", y1: "17", x2: "18", y2: "17", stroke: primaryColor, strokeWidth: strokeWidth })] })),
93
- vivid: ({ primaryColor, secondaryColor }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("rect", { x: "2", y: "3", width: "20", height: "18", rx: "2", fill: primaryColor }), jsxRuntime.jsx("rect", { x: "2", y: "3", width: "20", height: "18", rx: "2", fill: "white", opacity: "0.1" }), jsxRuntime.jsx("path", { d: "M6 9l4 3-4 3", stroke: secondaryColor, strokeWidth: "1.8" }), jsxRuntime.jsx("line", { x1: "12", y1: "17", x2: "18", y2: "17", stroke: "#3B82F6", strokeWidth: "1.5" })] })),
90
+ solid: ({ primaryColor, accentColor, accentOpacity, strokeWidth }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("rect", { x: "2", y: "3", width: "20", height: "18", rx: "2", fill: primaryColor }), jsxRuntime.jsx("path", { d: TERMINAL_PROMPT, stroke: accentColor, strokeWidth: strokeWidth * 2, opacity: accentOpacity, fill: "none" })] })),
91
+ outline: ({ primaryColor, strokeWidth }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("rect", { x: "2", y: "3", width: "20", height: "18", rx: "2", stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" }), jsxRuntime.jsx("path", { d: TERMINAL_PROMPT, stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" })] })),
92
+ duotone: ({ primaryColor, secondaryColor, secondaryOpacity, strokeWidth }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("rect", { x: "2", y: "3", width: "20", height: "18", rx: "2", fill: secondaryColor, opacity: secondaryOpacity }), jsxRuntime.jsx("rect", { x: "2", y: "3", width: "20", height: "18", rx: "2", stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" }), jsxRuntime.jsx("path", { d: TERMINAL_PROMPT, stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" })] })),
93
+ vivid: ({ primaryColor, secondaryColor, strokeWidth }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("rect", { x: "2", y: "3", width: "20", height: "18", rx: "2", fill: primaryColor }), jsxRuntime.jsx("rect", { x: "2", y: "3", width: "20", height: "18", rx: "2", fill: "white", opacity: "0.1" }), jsxRuntime.jsx("path", { d: TERMINAL_PROMPT, stroke: secondaryColor, strokeWidth: strokeWidth * 2, fill: "none" })] })),
94
94
  },
95
95
  });
96
96
  const NtdCode = /* @__PURE__ */ createIcon.createIcon({
@@ -183,22 +183,21 @@ const NtdCpu = /* @__PURE__ */ createIcon.createIcon({
183
183
  vivid: ({ primaryColor, secondaryColor }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("rect", { x: "4", y: "4", width: "16", height: "16", rx: "2", fill: primaryColor, opacity: "0.15", stroke: primaryColor, strokeWidth: "2" }), jsxRuntime.jsx("rect", { x: "4", y: "4", width: "16", height: "16", rx: "2", fill: "white", opacity: "0.08" }), jsxRuntime.jsx("rect", { x: "9", y: "9", width: "6", height: "6", rx: "1", fill: secondaryColor }), jsxRuntime.jsx("path", { d: "M9 1v3M15 1v3M9 20v3M15 20v3M20 9h3M20 14h3M1 9h3M1 14h3", stroke: "white", strokeWidth: "1" })] })),
184
184
  },
185
185
  });
186
- const NtdZap = /* @__PURE__ */ createIcon.createIcon({
187
- displayName: 'NtdZap',
188
- paths: {
189
- solid: ({ primaryColor, strokeWidth: _strokeWidth }) => (jsxRuntime.jsx("path", { d: "M13 2L3 14h9l-1 8 10-12h-9l1-8z", fill: primaryColor })),
190
- outline: ({ primaryColor, strokeWidth }) => (jsxRuntime.jsx("path", { d: "M13 2L3 14h9l-1 8 10-12h-9l1-8z", stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" })),
191
- duotone: ({ primaryColor, secondaryColor, secondaryOpacity, strokeWidth }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: "M13 2L3 14h9l-1 8 10-12h-9l1-8z", fill: secondaryColor, opacity: secondaryOpacity }), jsxRuntime.jsx("path", { d: "M13 2L3 14h9l-1 8 10-12h-9l1-8z", stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" })] })),
192
- vivid: ({ primaryColor, secondaryColor: _secondaryColor }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: "M13 2L3 14h9l-1 8 10-12h-9l1-8z", fill: primaryColor }), jsxRuntime.jsx("path", { d: "M13 2L3 14h9l-1 8 10-12h-9l1-8z", fill: "white", opacity: "0.1" })] })),
193
- },
194
- });
186
+ // NtdKey: the bow top right with its hole on the key's axis, the blade running down-left to two
187
+ // teeth (it was the stroked key with the bow bottom left). Drawn along its own axis and turned
188
+ // 135°: bow r 6 at (16, 8), blade 3.2 wide.
189
+ const KEY = 'M10.78 10.96L3.2 18.54L7.3 22.64L8.72 21.22L7.87 20.37L8.79 19.46L9.64 20.3L11.05 18.89L9.21 17.05L13.04 13.22A6 6 0 1 0 10.78 10.96Z';
190
+ const KEY_BLADE = 'M10.78 10.96L3.2 18.54L7.3 22.64L8.72 21.22L7.87 20.37L8.79 19.46L9.64 20.3L11.05 18.89L9.21 17.05L13.04 13.22A6 6 0 0 1 10.78 10.96Z';
191
+ const KEY_BOW = 'M16 2a6 6 0 100 12 6 6 0 100-12z';
192
+ const KEY_HOLE = 'M17.84 4.56a1.6 1.6 0 100 3.2 1.6 1.6 0 100-3.2z';
195
193
  const NtdKey = /* @__PURE__ */ createIcon.createIcon({
196
194
  displayName: 'NtdKey',
197
195
  paths: {
198
- solid: ({ primaryColor, strokeWidth }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: "M21 2l-2 2m-7.61 7.61a5.5 5.5 0 11-7.78 7.78 5.5 5.5 0 017.78-7.78zm0 0L15.5 7.5m0 0l3 3L22 7l-3-3m-3.5 3.5L19 4", stroke: primaryColor, strokeWidth: strokeWidth }), jsxRuntime.jsx("circle", { cx: "7.5", cy: "16.5", r: "1.5", fill: primaryColor })] })),
199
- outline: ({ primaryColor, strokeWidth }) => (jsxRuntime.jsx("path", { d: "M21 2l-2 2m-7.61 7.61a5.5 5.5 0 11-7.78 7.78 5.5 5.5 0 017.78-7.78zm0 0L15.5 7.5m0 0l3 3L22 7l-3-3m-3.5 3.5L19 4", stroke: primaryColor, strokeWidth: strokeWidth })),
200
- duotone: ({ primaryColor, secondaryColor, secondaryOpacity, strokeWidth }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("circle", { cx: "8", cy: "16", r: "5", fill: secondaryColor, opacity: secondaryOpacity }), jsxRuntime.jsx("path", { d: "M21 2l-2 2m-7.61 7.61a5.5 5.5 0 11-7.78 7.78 5.5 5.5 0 017.78-7.78zm0 0L15.5 7.5m0 0l3 3L22 7l-3-3m-3.5 3.5L19 4", stroke: primaryColor, strokeWidth: strokeWidth }), jsxRuntime.jsx("circle", { cx: "7.5", cy: "16.5", r: "1.5", fill: primaryColor })] })),
201
- vivid: ({ primaryColor, secondaryColor }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("circle", { cx: "7.5", cy: "16.5", r: "1.5", fill: primaryColor }), jsxRuntime.jsx("circle", { cx: "7.5", cy: "16.5", r: "1.5", fill: "white", opacity: "0.1" }), jsxRuntime.jsx("path", { d: "M21 2l-2 2m-7.61 7.61a5.5 5.5 0 11-7.78 7.78 5.5 5.5 0 017.78-7.78zm0 0L15.5 7.5m0 0l3 3L22 7l-3-3m-3.5 3.5L19 4", stroke: secondaryColor, strokeWidth: "1.8" })] })),
196
+ solid: ({ primaryColor }) => (jsxRuntime.jsx("path", { d: `${KEY}${KEY_HOLE}`, fillRule: "evenodd", fill: primaryColor })),
197
+ outline: ({ primaryColor, strokeWidth }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: KEY, stroke: primaryColor, strokeWidth: strokeWidth, strokeLinejoin: "miter", fill: "none" }), jsxRuntime.jsx("path", { d: KEY_HOLE, fill: primaryColor })] })),
198
+ // fills only: the blade secondary, the bow primary
199
+ duotone: ({ primaryColor, secondaryColor }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: KEY_BLADE, fill: secondaryColor }), jsxRuntime.jsx("path", { d: `${KEY_BOW}${KEY_HOLE}`, fillRule: "evenodd", fill: primaryColor })] })),
200
+ vivid: ({ primaryColor, secondaryColor }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: `${KEY}${KEY_HOLE}`, fillRule: "evenodd", fill: primaryColor }), jsxRuntime.jsx("path", { d: KEY_BLADE, fill: secondaryColor, opacity: "0.5" })] })),
202
201
  },
203
202
  });
204
203
  const NtdAward = /* @__PURE__ */ createIcon.createIcon({
@@ -219,22 +218,37 @@ const NtdCoffee = /* @__PURE__ */ createIcon.createIcon({
219
218
  vivid: ({ primaryColor, secondaryColor }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: "M18 8h1a4 4 0 010 8h-1M2 8h16v9a4 4 0 01-4 4H6a4 4 0 01-4-4V8z", fill: primaryColor }), jsxRuntime.jsx("path", { d: "M18 8h1a4 4 0 010 8h-1M2 8h16v9a4 4 0 01-4 4H6a4 4 0 01-4-4V8z", fill: "white", opacity: "0.1" }), jsxRuntime.jsx("line", { x1: "6", y1: "1", x2: "6", y2: "4", stroke: secondaryColor, strokeWidth: "1.8" }), jsxRuntime.jsx("line", { x1: "10", y1: "1", x2: "10", y2: "4", stroke: "#3B82F6", strokeWidth: "1.5" }), jsxRuntime.jsx("line", { x1: "14", y1: "1", x2: "14", y2: "4", stroke: "#3B82F6", strokeWidth: "1.5" })] })),
220
219
  },
221
220
  });
221
+ // NtdCart: the basket a trapeze in primary (it was a 15 % wash), the handle running on down the
222
+ // basket's left side into the base rail, the wheels secondary, the basket's bars cut into it in
223
+ // the accent colour.
224
+ const CART_FRAME = 'M2 3.5h2.3l3.3 12.9H19.3';
225
+ const CART_BASKET = 'M5.07 6.5H21.3l-1.7 7.1H6.88z';
226
+ const CART_BARS = 'M11.3 5v10M15.9 5v10M3 10.05h20';
222
227
  const NtdCart = /* @__PURE__ */ createIcon.createIcon({
223
228
  displayName: 'NtdCart',
224
229
  paths: {
225
- solid: ({ primaryColor, strokeWidth }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: "M1 1h4l2.68 13.39a2 2 0 002 1.61h9.72a2 2 0 002-1.61L23 6H6", fill: primaryColor, opacity: "0.15", stroke: primaryColor, strokeWidth: strokeWidth }), jsxRuntime.jsx("circle", { cx: "9", cy: "21", r: "1.5", fill: primaryColor }), jsxRuntime.jsx("circle", { cx: "20", cy: "21", r: "1.5", fill: primaryColor })] })),
226
- outline: ({ primaryColor, strokeWidth }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: "M1 1h4l2.68 13.39a2 2 0 002 1.61h9.72a2 2 0 002-1.61L23 6H6", stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" }), jsxRuntime.jsx("circle", { cx: "9", cy: "21", r: "1", stroke: primaryColor, strokeWidth: "1.5", fill: "none" }), jsxRuntime.jsx("circle", { cx: "20", cy: "21", r: "1", stroke: primaryColor, strokeWidth: "1.5", fill: "none" })] })),
227
- duotone: ({ primaryColor, secondaryColor, secondaryOpacity, strokeWidth }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: "M6 6h17l-1.68 8.39a2 2 0 01-2 1.61H9.68a2 2 0 01-2-1.61L6 6z", fill: secondaryColor, opacity: secondaryOpacity }), jsxRuntime.jsx("path", { d: "M1 1h4l2.68 13.39a2 2 0 002 1.61h9.72a2 2 0 002-1.61L23 6H6", stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" }), jsxRuntime.jsx("circle", { cx: "9", cy: "21", r: "1.5", fill: primaryColor }), jsxRuntime.jsx("circle", { cx: "20", cy: "21", r: "1.5", fill: primaryColor })] })),
228
- vivid: ({ primaryColor, secondaryColor }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: "M1 1h4l2.68 13.39a2 2 0 002 1.61h9.72a2 2 0 002-1.61L23 6H6", fill: primaryColor, opacity: "0.15", stroke: primaryColor, strokeWidth: "2" }), jsxRuntime.jsx("path", { d: "M1 1h4l2.68 13.39a2 2 0 002 1.61h9.72a2 2 0 002-1.61L23 6H6", fill: "white", opacity: "0.08" }), jsxRuntime.jsx("circle", { cx: "9", cy: "21", r: "1.5", fill: secondaryColor }), jsxRuntime.jsx("circle", { cx: "20", cy: "21", r: "1.5", fill: "#3B82F6" })] })),
230
+ solid: ({ primaryColor, secondaryColor, accentColor, accentOpacity, strokeWidth, uid }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: CART_FRAME, stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" }), jsxRuntime.jsx("path", { d: CART_BASKET, fill: primaryColor }), iconParts.within(uid, 'bars', jsxRuntime.jsx("path", { d: CART_BASKET }), jsxRuntime.jsx("path", { d: CART_BARS, stroke: accentColor, strokeWidth: "1.3", opacity: accentOpacity })), jsxRuntime.jsx("circle", { cx: "9.4", cy: "20", r: "1.8", fill: secondaryColor }), jsxRuntime.jsx("circle", { cx: "18.2", cy: "20", r: "1.8", fill: secondaryColor })] })),
231
+ outline: ({ primaryColor, strokeWidth }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: CART_FRAME, stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" }), jsxRuntime.jsx("path", { d: CART_BASKET, stroke: primaryColor, strokeWidth: strokeWidth, strokeLinejoin: "round", fill: "none" }), jsxRuntime.jsx("circle", { cx: "9.4", cy: "20", r: "1.4", stroke: primaryColor, strokeWidth: strokeWidth }), jsxRuntime.jsx("circle", { cx: "18.2", cy: "20", r: "1.4", stroke: primaryColor, strokeWidth: strokeWidth })] })),
232
+ duotone: ({ primaryColor, secondaryColor, secondaryOpacity, strokeWidth }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: CART_BASKET, fill: secondaryColor, opacity: secondaryOpacity }), jsxRuntime.jsx("path", { d: CART_FRAME, stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" }), jsxRuntime.jsx("path", { d: CART_BASKET, stroke: primaryColor, strokeWidth: strokeWidth, strokeLinejoin: "round", fill: "none" }), jsxRuntime.jsx("circle", { cx: "9.4", cy: "20", r: "1.8", fill: primaryColor }), jsxRuntime.jsx("circle", { cx: "18.2", cy: "20", r: "1.8", fill: primaryColor })] })),
233
+ vivid: ({ primaryColor, secondaryColor, accentColor, accentOpacity, strokeWidth, uid }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: CART_FRAME, stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" }), jsxRuntime.jsx("path", { d: CART_BASKET, fill: primaryColor }), jsxRuntime.jsx("path", { d: CART_BASKET, fill: "white", opacity: "0.12" }), iconParts.within(uid, 'bars', jsxRuntime.jsx("path", { d: CART_BASKET }), jsxRuntime.jsx("path", { d: CART_BARS, stroke: accentColor, strokeWidth: "1.3", opacity: accentOpacity })), jsxRuntime.jsx("circle", { cx: "9.4", cy: "20", r: "1.8", fill: secondaryColor }), jsxRuntime.jsx("circle", { cx: "18.2", cy: "20", r: "1.8", fill: secondaryColor })] })),
229
234
  },
230
235
  });
236
+ /** @deprecated A second cart next to {@link NtdCart} — use that. */
237
+ const NtdShoppingCart = NtdCart;
238
+ // NtdCreditCard: the back of a real card — the magnetic stripe high up and edge to edge (kept
239
+ // inside the card, so it meets the sides flush), the signature panel long and to the left, the
240
+ // CVV box small on the right. The details are accent coloured, so a cutout keeps them.
241
+ const CARD_BODY = { x: 1.5, y: 4.5, width: 21, height: 15, rx: 2 };
242
+ const CARD_STRIPE = { x: 1.5, y: 7, width: 21, height: 3.6 };
243
+ const CARD_SIGNATURE = { x: 4, y: 13.6, width: 11.5, height: 2.2, rx: 0.6 };
244
+ const CARD_CVV = { x: 16.6, y: 13.6, width: 3.6, height: 2.2, rx: 0.6 };
231
245
  const NtdCreditCard = /* @__PURE__ */ createIcon.createIcon({
232
246
  displayName: 'NtdCreditCard',
233
247
  paths: {
234
- solid: ({ primaryColor, accentColor, accentOpacity, strokeWidth }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("rect", { x: "1", y: "4", width: "22", height: "16", rx: "2", fill: primaryColor }), jsxRuntime.jsx("line", { x1: "1", y1: "10", x2: "23", y2: "10", stroke: accentColor, strokeWidth: strokeWidth, opacity: accentOpacity })] })),
235
- outline: ({ primaryColor, strokeWidth }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("rect", { x: "1", y: "4", width: "22", height: "16", rx: "2", stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" }), jsxRuntime.jsx("line", { x1: "1", y1: "10", x2: "23", y2: "10", stroke: primaryColor, strokeWidth: strokeWidth })] })),
236
- duotone: ({ primaryColor, secondaryColor, secondaryOpacity, strokeWidth }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("rect", { x: "1", y: "4", width: "22", height: "16", rx: "2", fill: secondaryColor, opacity: secondaryOpacity }), jsxRuntime.jsx("rect", { x: "1", y: "4", width: "22", height: "6", rx: "2", fill: primaryColor, opacity: secondaryOpacity + 0.2 }), jsxRuntime.jsx("rect", { x: "1", y: "4", width: "22", height: "16", rx: "2", stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" }), jsxRuntime.jsx("line", { x1: "1", y1: "10", x2: "23", y2: "10", stroke: primaryColor, strokeWidth: strokeWidth })] })),
237
- vivid: ({ primaryColor, secondaryColor }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("rect", { x: "1", y: "4", width: "22", height: "16", rx: "2", fill: primaryColor }), jsxRuntime.jsx("rect", { x: "1", y: "4", width: "22", height: "16", rx: "2", fill: "white", opacity: "0.1" }), jsxRuntime.jsx("line", { x1: "1", y1: "10", x2: "23", y2: "10", stroke: secondaryColor, strokeWidth: "1.8" })] })),
248
+ solid: ({ primaryColor, accentColor, accentOpacity, uid }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("rect", { ...CARD_BODY, fill: primaryColor }), iconParts.within(uid, 'stripe', jsxRuntime.jsx("rect", { ...CARD_BODY }), jsxRuntime.jsx("rect", { ...CARD_STRIPE, fill: accentColor, opacity: accentOpacity })), jsxRuntime.jsx("rect", { ...CARD_SIGNATURE, fill: accentColor, opacity: accentOpacity }), jsxRuntime.jsx("rect", { ...CARD_CVV, fill: accentColor, opacity: accentOpacity })] })),
249
+ outline: ({ primaryColor, strokeWidth, uid }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("rect", { ...CARD_BODY, stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" }), iconParts.within(uid, 'stripe', jsxRuntime.jsx("rect", { ...CARD_BODY }), jsxRuntime.jsx("rect", { ...CARD_STRIPE, fill: primaryColor })), jsxRuntime.jsx("path", { d: "M5 14.7h9.5M17.6 14.7h1.6", stroke: primaryColor, strokeWidth: strokeWidth })] })),
250
+ duotone: ({ primaryColor, secondaryColor, secondaryOpacity, strokeWidth, uid }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("rect", { ...CARD_BODY, fill: secondaryColor, opacity: secondaryOpacity }), iconParts.within(uid, 'stripe', jsxRuntime.jsx("rect", { ...CARD_BODY }), jsxRuntime.jsx("rect", { ...CARD_STRIPE, fill: primaryColor })), jsxRuntime.jsx("rect", { ...CARD_SIGNATURE, fill: primaryColor }), jsxRuntime.jsx("rect", { ...CARD_CVV, fill: primaryColor }), jsxRuntime.jsx("rect", { ...CARD_BODY, stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" })] })),
251
+ 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 })] })),
238
252
  },
239
253
  });
240
254
  const NtdPieChart = /* @__PURE__ */ createIcon.createIcon({
@@ -308,9 +322,9 @@ exports.NtdList = NtdList;
308
322
  exports.NtdMonitor = NtdMonitor;
309
323
  exports.NtdPackage = NtdPackage;
310
324
  exports.NtdPieChart = NtdPieChart;
325
+ exports.NtdShoppingCart = NtdShoppingCart;
311
326
  exports.NtdSmartphone = NtdSmartphone;
312
327
  exports.NtdTable = NtdTable;
313
328
  exports.NtdTarget = NtdTarget;
314
329
  exports.NtdTerminal = NtdTerminal;
315
330
  exports.NtdTruck = NtdTruck;
316
- exports.NtdZap = NtdZap;
@@ -21,8 +21,9 @@ const NtdRocket = /* @__PURE__ */ createIcon.createIcon({
21
21
  vivid: ({ primaryColor, secondaryColor }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: "M12 2C12 2 8 6 8 12c0 2 .5 4 1 5h6c.5-1 1-3 1-5 0-6-4-10-4-10z", fill: primaryColor }), jsxRuntime.jsx("path", { d: "M12 2C12 2 8 6 8 12c0 2 .5 4 1 5h6c.5-1 1-3 1-5 0-6-4-10-4-10z", fill: "white", opacity: "0.08" }), jsxRuntime.jsx("circle", { cx: "12", cy: "10", r: "2", fill: secondaryColor }), jsxRuntime.jsx("path", { d: "M8 12L5 15l1 3 2-2", fill: "#F59E0B" }), jsxRuntime.jsx("path", { d: "M16 12l3 3-1 3-2-2", fill: "#EF4444" }), jsxRuntime.jsx("path", { d: "M9 17h6l-1 5h-4l-1-5z", fill: "#8B5CF6" })] })),
22
22
  },
23
23
  });
24
- const NtdGamepad = /* @__PURE__ */ createIcon.createIcon({
25
- displayName: 'NtdGamepad',
24
+ /** The flat pad of the 16-bit era. The modern one is NtdGamepad (gaming.tsx). */
25
+ const NtdGamepadOldschool = /* @__PURE__ */ createIcon.createIcon({
26
+ displayName: 'NtdGamepadOldschool',
26
27
  paths: {
27
28
  solid: ({ primaryColor, accentColor, accentOpacity, strokeWidth }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: "M6 11h4M8 9v4", stroke: accentColor, strokeWidth: strokeWidth, opacity: accentOpacity }), jsxRuntime.jsx("path", { d: "M2 12a4 4 0 014-4h12a4 4 0 014 4v2a4 4 0 01-4 4H6a4 4 0 01-4-4v-2z", fill: primaryColor }), jsxRuntime.jsx("path", { d: "M6 11h4M8 9v4", stroke: accentColor, strokeWidth: strokeWidth, opacity: accentOpacity }), jsxRuntime.jsx("circle", { cx: "15", cy: "10", r: "1", fill: accentColor, opacity: accentOpacity }), jsxRuntime.jsx("circle", { cx: "18", cy: "13", r: "1", fill: accentColor, opacity: accentOpacity })] })),
28
29
  outline: ({ primaryColor, strokeWidth }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: "M2 12a4 4 0 014-4h12a4 4 0 014 4v2a4 4 0 01-4 4H6a4 4 0 01-4-4v-2z", stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" }), jsxRuntime.jsx("path", { d: "M6 11h4M8 9v4", stroke: primaryColor, strokeWidth: strokeWidth }), jsxRuntime.jsx("circle", { cx: "15", cy: "10", r: "1", fill: primaryColor }), jsxRuntime.jsx("circle", { cx: "18", cy: "13", r: "1", fill: primaryColor })] })),
@@ -75,24 +76,29 @@ const NtdDice = /* @__PURE__ */ createIcon.createIcon({
75
76
  vivid: ({ primaryColor, secondaryColor }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("rect", { x: "3", y: "3", width: "18", height: "18", rx: "3", fill: primaryColor }), jsxRuntime.jsx("rect", { x: "3", y: "3", width: "18", height: "18", rx: "3", fill: "white", opacity: "0.08" }), jsxRuntime.jsx("circle", { cx: "8", cy: "8", r: "1.5", fill: secondaryColor }), jsxRuntime.jsx("circle", { cx: "16", cy: "8", r: "1.5", fill: "#F59E0B" }), jsxRuntime.jsx("circle", { cx: "12", cy: "12", r: "1.5", fill: "#EF4444" }), jsxRuntime.jsx("circle", { cx: "8", cy: "16", r: "1.5", fill: "#8B5CF6" }), jsxRuntime.jsx("circle", { cx: "16", cy: "16", r: "1.5", fill: "#8B5CF6" })] })),
76
77
  },
77
78
  });
78
- const NtdSmiley = /* @__PURE__ */ createIcon.createIcon({
79
- displayName: 'NtdSmiley',
80
- paths: {
81
- solid: ({ primaryColor, accentColor, accentOpacity, strokeWidth: _strokeWidth }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("circle", { cx: "12", cy: "12", r: "10", fill: primaryColor }), jsxRuntime.jsx("circle", { cx: "9", cy: "10", r: "1.2", fill: accentColor, opacity: accentOpacity }), jsxRuntime.jsx("circle", { cx: "15", cy: "10", r: "1.2", fill: accentColor, opacity: accentOpacity }), jsxRuntime.jsx("path", { d: "M8 14s1.5 3 4 3 4-3 4-3", stroke: accentColor, strokeWidth: "1.5", fill: "none", opacity: accentOpacity })] })),
82
- 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("circle", { cx: "9", cy: "10", r: "1.2", fill: primaryColor }), jsxRuntime.jsx("circle", { cx: "15", cy: "10", r: "1.2", fill: primaryColor }), jsxRuntime.jsx("path", { d: "M8 14s1.5 3 4 3 4-3 4-3", stroke: primaryColor, strokeWidth: "1.5", fill: "none" })] })),
83
- 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("circle", { cx: "9", cy: "10", r: "1.2", fill: primaryColor }), jsxRuntime.jsx("circle", { cx: "15", cy: "10", r: "1.2", fill: primaryColor }), jsxRuntime.jsx("path", { d: "M8 14s1.5 3 4 3 4-3 4-3", stroke: primaryColor, strokeWidth: "1.5", fill: "none" })] })),
84
- 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: "9", cy: "10", r: "1.2", fill: secondaryColor }), jsxRuntime.jsx("circle", { cx: "15", cy: "10", r: "1.2", fill: "#F59E0B" }), jsxRuntime.jsx("path", { d: "M8 14s1.5 3 4 3 4-3 4-3", stroke: "white", strokeWidth: "1", fill: "none", opacity: "0.35" })] })),
85
- },
86
- });
87
- const NtdSad = /* @__PURE__ */ createIcon.createIcon({
88
- displayName: 'NtdSad',
89
- paths: {
90
- solid: ({ primaryColor, accentColor, accentOpacity, strokeWidth: _strokeWidth }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("circle", { cx: "12", cy: "12", r: "10", fill: primaryColor }), jsxRuntime.jsx("circle", { cx: "9", cy: "10", r: "1.2", fill: accentColor, opacity: accentOpacity }), jsxRuntime.jsx("circle", { cx: "15", cy: "10", r: "1.2", fill: accentColor, opacity: accentOpacity }), jsxRuntime.jsx("path", { d: "M16 17s-1.5-3-4-3-4 3-4 3", stroke: accentColor, strokeWidth: "1.5", fill: "none", opacity: accentOpacity })] })),
91
- 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("circle", { cx: "9", cy: "10", r: "1.2", fill: primaryColor }), jsxRuntime.jsx("circle", { cx: "15", cy: "10", r: "1.2", fill: primaryColor }), jsxRuntime.jsx("path", { d: "M16 17s-1.5-3-4-3-4 3-4 3", stroke: primaryColor, strokeWidth: "1.5", fill: "none" })] })),
92
- 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("circle", { cx: "9", cy: "10", r: "1.2", fill: primaryColor }), jsxRuntime.jsx("circle", { cx: "15", cy: "10", r: "1.2", fill: primaryColor }), jsxRuntime.jsx("path", { d: "M16 17s-1.5-3-4-3-4 3-4 3", stroke: primaryColor, strokeWidth: "1.5", fill: "none" })] })),
93
- 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: "9", cy: "10", r: "1.2", fill: secondaryColor }), jsxRuntime.jsx("circle", { cx: "15", cy: "10", r: "1.2", fill: "#F59E0B" }), jsxRuntime.jsx("path", { d: "M16 17s-1.5-3-4-3-4 3-4 3", stroke: "white", strokeWidth: "1", fill: "none", opacity: "0.35" })] })),
94
- },
95
- });
79
+ /** The two oval eyes every face shares, 6.8 apart. */
80
+ const FACE_EYES = 'M8.6 7.55a1.35 1.75 0 100 3.5 1.35 1.75 0 100-3.5zM15.4 7.55a1.35 1.75 0 100 3.5 1.35 1.75 0 100-3.5z';
81
+ /**
82
+ * An emotion face (NtdSmile, NtdSad, …): the r10 head and the eyes are the same in every one, an
83
+ * emotion is only its `mouth`, so a new one is one more call. The mouth is a stroke with round ends
84
+ * and follows the variant's weight.
85
+ */
86
+ function faceIcon(displayName, mouth) {
87
+ return createIcon.createIcon({
88
+ displayName,
89
+ paths: {
90
+ 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: FACE_EYES, fill: accentColor, opacity: accentOpacity }), jsxRuntime.jsx("path", { d: mouth, stroke: accentColor, strokeOpacity: accentOpacity, strokeWidth: strokeWidth, strokeLinecap: "round", fill: "none" })] })),
91
+ 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: FACE_EYES, fill: primaryColor }), jsxRuntime.jsx("path", { d: mouth, stroke: primaryColor, strokeWidth: strokeWidth, strokeLinecap: "round", fill: "none" })] })),
92
+ // Fills only: the tinted head, the face on it in primary — no ring around the head.
93
+ 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("path", { d: FACE_EYES, fill: primaryColor }), jsxRuntime.jsx("path", { d: mouth, stroke: primaryColor, strokeWidth: strokeWidth, strokeLinecap: "round", fill: "none" })] })),
94
+ vivid: ({ primaryColor, accentColor }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("circle", { cx: "12", cy: "12", r: "10", fill: primaryColor }), jsxRuntime.jsx("path", { d: "M5.4 7.6a8 8 0 016.6-3.6", stroke: "white", strokeWidth: "1.6", strokeLinecap: "round", opacity: "0.35", fill: "none" }), jsxRuntime.jsx("path", { d: FACE_EYES, fill: accentColor }), jsxRuntime.jsx("path", { d: mouth, stroke: accentColor, strokeWidth: "2.2", strokeLinecap: "round", fill: "none" })] })),
95
+ },
96
+ });
97
+ }
98
+ const NtdSmile = /* @__PURE__ */ faceIcon('NtdSmile', 'M7 14c1.2 2.5 3 3.8 5 3.8s3.8-1.3 5-3.8');
99
+ /** @deprecated Renamed to {@link NtdSmile} in 1.3.0 — the same icon. */
100
+ const NtdSmiley = NtdSmile;
101
+ const NtdSad = /* @__PURE__ */ faceIcon('NtdSad', 'M7.8 17.3c1-1.75 2.4-2.65 4.2-2.65s3.2.9 4.2 2.65');
96
102
  const NtdSkull = /* @__PURE__ */ createIcon.createIcon({
97
103
  displayName: 'NtdSkull',
98
104
  paths: {
@@ -111,20 +117,26 @@ const NtdGhost = /* @__PURE__ */ createIcon.createIcon({
111
117
  vivid: ({ primaryColor, secondaryColor }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: "M12 2a8 8 0 00-8 8v12l3-3 3 3 2-2 2 2 3-3 3 3V10a8 8 0 00-8-8z", fill: primaryColor }), jsxRuntime.jsx("path", { d: "M12 2a8 8 0 00-8 8v12l3-3 3 3 2-2 2 2 3-3 3 3V10a8 8 0 00-8-8z", fill: "white", opacity: "0.08" }), jsxRuntime.jsx("circle", { cx: "9", cy: "10", r: "1.5", fill: secondaryColor }), jsxRuntime.jsx("circle", { cx: "15", cy: "10", r: "1.5", fill: "#F59E0B" })] })),
112
118
  },
113
119
  });
120
+ // NtdLightning: the step in the middle of the bolt slants, its two inner corners on a diagonal —
121
+ // they sat one above the other, so the duotone's two triangles met along a vertical line.
122
+ const LIGHTNING = '14,2 3,13.5 10.4,13.5 10,22 21,10.5 13.6,10.5';
114
123
  const NtdLightning = /* @__PURE__ */ createIcon.createIcon({
115
124
  displayName: 'NtdLightning',
116
125
  paths: {
117
- solid: ({ primaryColor, strokeWidth: _strokeWidth }) => (jsxRuntime.jsx("polygon", { points: "13,2 3,14 12,14 11,22 21,10 12,10", fill: primaryColor })),
118
- outline: ({ primaryColor, strokeWidth }) => (jsxRuntime.jsx("polygon", { points: "13,2 3,14 12,14 11,22 21,10 12,10", stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" })),
119
- duotone: ({ primaryColor, secondaryColor, secondaryOpacity, strokeWidth }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("polygon", { points: "13,2 3,14 12,14 11,22 21,10 12,10", fill: secondaryColor, opacity: secondaryOpacity }), jsxRuntime.jsx("polygon", { points: "13,2 3,14 12,14 11,22 21,10 12,10", stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" })] })),
120
- vivid: ({ primaryColor, secondaryColor: _secondaryColor }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("polygon", { points: "13,2 3,14 12,14 11,22 21,10 12,10", fill: primaryColor }), jsxRuntime.jsx("polygon", { points: "13,2 3,14 12,14 11,22 21,10 12,10", fill: "white", opacity: "0.1" })] })),
126
+ solid: ({ primaryColor }) => jsxRuntime.jsx("polygon", { points: LIGHTNING, fill: primaryColor }),
127
+ outline: ({ primaryColor, strokeWidth }) => (jsxRuntime.jsx("polygon", { points: LIGHTNING, stroke: primaryColor, strokeWidth: strokeWidth, fill: "none" })),
128
+ // the bolt's two triangles, a colour each, meeting along the slanted step — no outline
129
+ duotone: ({ primaryColor, secondaryColor }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("polygon", { points: "14,2 3,13.5 10.4,13.5 13.6,10.5", fill: primaryColor }), jsxRuntime.jsx("polygon", { points: "13.6,10.5 21,10.5 10,22 10.4,13.5", fill: secondaryColor })] })),
130
+ vivid: ({ primaryColor }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("polygon", { points: LIGHTNING, fill: primaryColor }), jsxRuntime.jsx("polygon", { points: LIGHTNING, fill: "white", opacity: "0.1" })] })),
121
131
  },
122
132
  });
133
+ /** @deprecated The same bolt as {@link NtdLightning} — use that. */
134
+ const NtdZap = NtdLightning;
123
135
 
124
136
  exports.NtdCrown = NtdCrown;
125
137
  exports.NtdDice = NtdDice;
126
138
  exports.NtdDumpsterFire = NtdDumpsterFire;
127
- exports.NtdGamepad = NtdGamepad;
139
+ exports.NtdGamepadOldschool = NtdGamepadOldschool;
128
140
  exports.NtdGhost = NtdGhost;
129
141
  exports.NtdLightning = NtdLightning;
130
142
  exports.NtdPartyPopper = NtdPartyPopper;
@@ -132,5 +144,7 @@ exports.NtdPuzzle = NtdPuzzle;
132
144
  exports.NtdRocket = NtdRocket;
133
145
  exports.NtdSad = NtdSad;
134
146
  exports.NtdSkull = NtdSkull;
147
+ exports.NtdSmile = NtdSmile;
135
148
  exports.NtdSmiley = NtdSmiley;
136
149
  exports.NtdTrophy = NtdTrophy;
150
+ exports.NtdZap = NtdZap;