@nice2dev/icons 1.4.2 → 1.4.4

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 (90) hide show
  1. package/CHANGELOG.md +57 -0
  2. package/dist/cjs/NiceIconStacker.js +36 -2
  3. package/dist/cjs/createIcon.js +25 -6
  4. package/dist/cjs/iconParts.js +33 -12
  5. package/dist/cjs/iconValue.js +6 -1
  6. package/dist/cjs/icons/actions.js +86 -122
  7. package/dist/cjs/icons/ai.js +0 -178
  8. package/dist/cjs/icons/business.js +172 -120
  9. package/dist/cjs/icons/ecommerce.js +18 -74
  10. package/dist/cjs/icons/education.js +235 -487
  11. package/dist/cjs/icons/files.js +193 -461
  12. package/dist/cjs/icons/fintech.js +38 -74
  13. package/dist/cjs/icons/food.js +117 -194
  14. package/dist/cjs/icons/fun.js +176 -57
  15. package/dist/cjs/icons/gaming.js +2 -2
  16. package/dist/cjs/icons/health.js +1 -1
  17. package/dist/cjs/icons/index.js +32 -10
  18. package/dist/cjs/icons/legal.js +1 -109
  19. package/dist/cjs/icons/media.js +67 -8
  20. package/dist/cjs/icons/navigation.js +4 -4
  21. package/dist/cjs/icons/omniverk.js +14 -6
  22. package/dist/cjs/icons/realestate.js +99 -98
  23. package/dist/cjs/icons/roman.js +111 -0
  24. package/dist/cjs/icons/science.js +74 -165
  25. package/dist/cjs/icons/shapes.js +58 -39
  26. package/dist/cjs/icons/smarthome.js +18 -16
  27. package/dist/cjs/icons/social.js +22 -20
  28. package/dist/cjs/icons/sports.js +89 -159
  29. package/dist/cjs/icons/sustainability.js +26 -48
  30. package/dist/cjs/icons/travel.js +209 -477
  31. package/dist/cjs/icons/ui.js +140 -240
  32. package/dist/cjs/icons/weather.js +30 -56
  33. package/dist/cjs/index.js +67 -43
  34. package/dist/cjs/stackedIcon.js +19 -0
  35. package/dist/cjs/stacking.js +104 -2
  36. package/dist/esm/NiceIconStacker.js +37 -3
  37. package/dist/esm/createIcon.js +27 -8
  38. package/dist/esm/iconParts.js +33 -12
  39. package/dist/esm/iconValue.js +6 -1
  40. package/dist/esm/icons/actions.js +86 -122
  41. package/dist/esm/icons/ai.js +0 -178
  42. package/dist/esm/icons/business.js +172 -120
  43. package/dist/esm/icons/ecommerce.js +18 -74
  44. package/dist/esm/icons/education.js +236 -488
  45. package/dist/esm/icons/files.js +193 -461
  46. package/dist/esm/icons/fintech.js +38 -74
  47. package/dist/esm/icons/food.js +118 -195
  48. package/dist/esm/icons/fun.js +179 -60
  49. package/dist/esm/icons/gaming.js +2 -2
  50. package/dist/esm/icons/health.js +1 -1
  51. package/dist/esm/icons/index.js +43 -21
  52. package/dist/esm/icons/legal.js +1 -109
  53. package/dist/esm/icons/media.js +67 -8
  54. package/dist/esm/icons/navigation.js +4 -4
  55. package/dist/esm/icons/omniverk.js +15 -7
  56. package/dist/esm/icons/realestate.js +100 -99
  57. package/dist/esm/icons/roman.js +111 -0
  58. package/dist/esm/icons/science.js +74 -165
  59. package/dist/esm/icons/shapes.js +58 -39
  60. package/dist/esm/icons/smarthome.js +18 -16
  61. package/dist/esm/icons/social.js +22 -20
  62. package/dist/esm/icons/sports.js +89 -159
  63. package/dist/esm/icons/sustainability.js +26 -48
  64. package/dist/esm/icons/travel.js +209 -477
  65. package/dist/esm/icons/ui.js +140 -240
  66. package/dist/esm/icons/weather.js +30 -56
  67. package/dist/esm/index.js +45 -21
  68. package/dist/esm/nicetodev-icons.css +1 -1
  69. package/dist/esm/stackedIcon.js +19 -0
  70. package/dist/esm/stacking.js +105 -3
  71. package/dist/types/createIcon.d.ts +14 -1
  72. package/dist/types/iconParts.d.ts +9 -6
  73. package/dist/types/icons/ai.d.ts +0 -4
  74. package/dist/types/icons/business.d.ts +1 -0
  75. package/dist/types/icons/education.d.ts +2 -4
  76. package/dist/types/icons/files.d.ts +3 -1
  77. package/dist/types/icons/fintech.d.ts +1 -1
  78. package/dist/types/icons/fun.d.ts +23 -0
  79. package/dist/types/icons/index.d.ts +14 -12
  80. package/dist/types/icons/legal.d.ts +0 -2
  81. package/dist/types/icons/media.d.ts +1 -0
  82. package/dist/types/icons/realestate.d.ts +17 -1
  83. package/dist/types/icons/roman.d.ts +76 -0
  84. package/dist/types/icons/science.d.ts +0 -2
  85. package/dist/types/icons/ui.d.ts +6 -1
  86. package/dist/types/index.d.ts +2 -1
  87. package/dist/types/stackedIcon.d.ts +11 -0
  88. package/dist/types/stacking.d.ts +48 -1
  89. package/dist/types/types.d.ts +17 -2
  90. package/package.json +2 -2
@@ -360,105 +360,6 @@ const NtdMicroscope = /* @__PURE__ */ createIcon.createIcon({
360
360
  ] })
361
361
  }
362
362
  });
363
- const NtdDna = /* @__PURE__ */ createIcon.createIcon({
364
- displayName: "NtdDna",
365
- paths: {
366
- solid: ({ primaryColor }) => /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
367
- /* @__PURE__ */ jsxRuntime.jsx(
368
- "path",
369
- {
370
- d: "M6 2c0 4 6 6 6 10s-6 6-6 10M18 2c0 4-6 6-6 10s6 6 6 10",
371
- stroke: primaryColor,
372
- strokeWidth: "2.5",
373
- fill: "none",
374
- strokeLinecap: "round"
375
- }
376
- ),
377
- /* @__PURE__ */ jsxRuntime.jsx(
378
- "path",
379
- {
380
- d: "M6 6h12M6 12h12M6 18h12",
381
- stroke: primaryColor,
382
- strokeWidth: "2",
383
- strokeLinecap: "round"
384
- }
385
- )
386
- ] }),
387
- outline: ({ primaryColor, strokeWidth }) => /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
388
- /* @__PURE__ */ jsxRuntime.jsx(
389
- "path",
390
- {
391
- d: "M6 2c0 4 6 6 6 10s-6 6-6 10M18 2c0 4-6 6-6 10s6 6 6 10",
392
- stroke: primaryColor,
393
- strokeWidth,
394
- fill: "none",
395
- strokeLinecap: "round"
396
- }
397
- ),
398
- /* @__PURE__ */ jsxRuntime.jsx(
399
- "path",
400
- {
401
- d: "M6 6h12M6 12h12M6 18h12",
402
- stroke: primaryColor,
403
- strokeWidth,
404
- strokeLinecap: "round"
405
- }
406
- )
407
- ] }),
408
- duotone: ({ primaryColor, secondaryColor, secondaryOpacity, strokeWidth }) => /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
409
- /* @__PURE__ */ jsxRuntime.jsx(
410
- "path",
411
- {
412
- d: "M6 6h12M6 12h12M6 18h12",
413
- stroke: secondaryColor,
414
- strokeWidth: strokeWidth * 2,
415
- strokeLinecap: "round",
416
- opacity: secondaryOpacity
417
- }
418
- ),
419
- /* @__PURE__ */ jsxRuntime.jsx(
420
- "path",
421
- {
422
- d: "M6 2c0 4 6 6 6 10s-6 6-6 10M18 2c0 4-6 6-6 10s6 6 6 10",
423
- stroke: primaryColor,
424
- strokeWidth,
425
- fill: "none",
426
- strokeLinecap: "round"
427
- }
428
- ),
429
- /* @__PURE__ */ jsxRuntime.jsx(
430
- "path",
431
- {
432
- d: "M6 6h12M6 12h12M6 18h12",
433
- stroke: primaryColor,
434
- strokeWidth,
435
- strokeLinecap: "round"
436
- }
437
- )
438
- ] }),
439
- vivid: ({ primaryColor, secondaryColor }) => /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
440
- /* @__PURE__ */ jsxRuntime.jsx(
441
- "path",
442
- {
443
- d: "M6 2c0 4 6 6 6 10s-6 6-6 10M18 2c0 4-6 6-6 10s6 6 6 10",
444
- stroke: primaryColor,
445
- strokeWidth: "2",
446
- fill: "none",
447
- strokeLinecap: "round"
448
- }
449
- ),
450
- /* @__PURE__ */ jsxRuntime.jsx(
451
- "path",
452
- {
453
- d: "M6 6h12M6 12h12M6 18h12",
454
- stroke: secondaryColor,
455
- strokeWidth: "2",
456
- strokeLinecap: "round"
457
- }
458
- )
459
- ] })
460
- }
461
- });
462
363
  function atomOrbits(stroke, width, opacity) {
463
364
  return /* @__PURE__ */ jsxRuntime.jsxs("g", { stroke, strokeWidth: width, opacity, fill: "none", children: [
464
365
  /* @__PURE__ */ jsxRuntime.jsx("ellipse", { cx: "12", cy: "12", rx: "10", ry: "4" }),
@@ -550,33 +451,43 @@ const NtdRadiation = /* @__PURE__ */ createIcon.createIcon({
550
451
  ] })
551
452
  }
552
453
  });
553
- const NUKE_CAP = "M7.2 12.1A3.4 3.4 0 1 1 7.64 5.33A4.6 4.6 0 0 1 16.36 5.33A3.4 3.4 0 1 1 16.8 12.1Q12 9.1 7.2 12.1Z";
554
- const NUKE_STEM = "M10.7 10V16.6Q10.4 20.4 6.8 21.5H17.2Q13.6 20.4 13.3 16.6V10Z";
555
- const NUKE_STEM_OPEN = "M10.7 10.71V16.6Q10.4 20.4 6.8 21.5H17.2Q13.6 20.4 13.3 16.6V10.71";
556
- const NUKE_CAP_ROUND_CORE = "M7.2 11.35A2.65 2.65 0 1 1 8.19 6.24A3.85 3.85 0 0 1 15.81 6.24A2.65 2.65 0 1 1 16.8 11.35Q12 8.35 7.2 11.35Z";
557
- const NUKE_STEM_ROUND_CORE = "M11.45 10.75V16.6Q11.2 19.6 9.1 20.75H14.9Q12.8 19.6 12.55 16.6V10.75Z";
454
+ const NUKE_SILHOUETTE = "M10.7 13.22A1.8 1.8 0 0 1 7.37 12.9A3.4 3.4 0 1 1 7.64 6.13A4.6 4.6 0 0 1 16.36 6.13A3.4 3.4 0 1 1 16.63 12.9A1.8 1.8 0 0 1 13.3 13.22L13.3 16.6Q13.6 20.4 17.2 21.5H6.8Q10.4 20.4 10.7 16.6Z";
455
+ const NUKE_CAP = "M10.87 12.06A1.8 1.8 0 0 1 7.37 12.9A3.4 3.4 0 1 1 7.64 6.13A4.6 4.6 0 0 1 16.36 6.13A3.4 3.4 0 1 1 16.63 12.9A1.8 1.8 0 0 1 13.13 12.06A4.6 4.6 0 0 1 10.87 12.06Z";
456
+ const NUKE_STEM = "M10.7 11V16.6Q10.4 20.4 6.8 21.5H17.2Q13.6 20.4 13.3 16.6V11Z";
457
+ const NUKE_PUFFS = [
458
+ [7.2, 9.5, 3.4],
459
+ [12, 7.6, 4.6],
460
+ [16.8, 9.5, 3.4],
461
+ [9.1, 12.4, 1.8],
462
+ [14.9, 12.4, 1.8]
463
+ ];
464
+ const NUKE_STEM_ROUND_CORE = "M11.45 11.75V16.6Q11.2 19.6 9.1 20.75H14.9Q12.8 19.6 12.55 16.6V11.75Z";
558
465
  const NtdNuke = /* @__PURE__ */ createIcon.createIcon({
559
466
  displayName: "NtdNuke",
560
467
  paths: {
561
- // the wireframe re-draws this as lines: there the stem stays open where it enters the cap
562
- solid: ({ primaryColor, variant }) => /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
468
+ solid: ({ primaryColor }) => /* @__PURE__ */ jsxRuntime.jsx("path", { d: NUKE_SILHOUETTE, fill: primaryColor }),
469
+ rounded: ({ primaryColor }) => /* @__PURE__ */ jsxRuntime.jsxs("g", { fill: primaryColor, children: [
563
470
  /* @__PURE__ */ jsxRuntime.jsx(
564
471
  "path",
565
472
  {
566
- d: variant === "wireframe" ? NUKE_STEM_OPEN : NUKE_STEM,
567
- fill: variant === "wireframe" ? "none" : primaryColor
473
+ d: NUKE_STEM_ROUND_CORE,
474
+ stroke: primaryColor,
475
+ strokeWidth: "1.5",
476
+ strokeLinejoin: "round"
568
477
  }
569
478
  ),
570
- /* @__PURE__ */ jsxRuntime.jsx("path", { d: NUKE_CAP, fill: primaryColor })
571
- ] }),
572
- rounded: ({ primaryColor }) => /* @__PURE__ */ jsxRuntime.jsxs("g", { fill: primaryColor, stroke: primaryColor, strokeWidth: "1.5", strokeLinejoin: "round", children: [
573
- /* @__PURE__ */ jsxRuntime.jsx("path", { d: NUKE_STEM_ROUND_CORE }),
574
- /* @__PURE__ */ jsxRuntime.jsx("path", { d: NUKE_CAP_ROUND_CORE })
575
- ] }),
576
- outline: ({ primaryColor, strokeWidth }) => /* @__PURE__ */ jsxRuntime.jsxs("g", { stroke: primaryColor, strokeWidth, strokeLinejoin: "miter", fill: "none", children: [
577
- /* @__PURE__ */ jsxRuntime.jsx("path", { d: NUKE_CAP }),
578
- /* @__PURE__ */ jsxRuntime.jsx("path", { d: NUKE_STEM_OPEN })
479
+ NUKE_PUFFS.map(([cx, cy, r]) => /* @__PURE__ */ jsxRuntime.jsx("circle", { cx, cy, r }, `${cx}-${cy}`))
579
480
  ] }),
481
+ outline: ({ primaryColor, strokeWidth }) => /* @__PURE__ */ jsxRuntime.jsx(
482
+ "path",
483
+ {
484
+ d: NUKE_SILHOUETTE,
485
+ stroke: primaryColor,
486
+ strokeWidth,
487
+ strokeLinejoin: "round",
488
+ fill: "none"
489
+ }
490
+ ),
580
491
  duotone: ({ primaryColor, secondaryColor }) => /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
581
492
  /* @__PURE__ */ jsxRuntime.jsx("path", { d: NUKE_STEM, fill: secondaryColor }),
582
493
  /* @__PURE__ */ jsxRuntime.jsx("path", { d: NUKE_CAP, fill: primaryColor })
@@ -599,22 +510,35 @@ const MOLECULE_RING = 1.1;
599
510
  function molecule(ring, centre, width) {
600
511
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
601
512
  /* @__PURE__ */ jsxRuntime.jsx("path", { d: MOLECULE_BONDS, stroke: ring, strokeWidth: width, fill: "none" }),
602
- MOLECULE_ATOMS.map(([cx, cy, r]) => /* @__PURE__ */ jsxRuntime.jsxs("g", { children: [
603
- /* @__PURE__ */ jsxRuntime.jsx("circle", { cx, cy, r, fill: ring }),
604
- /* @__PURE__ */ jsxRuntime.jsx("circle", { cx, cy, r: r - MOLECULE_RING, fill: centre })
605
- ] }, `${cx}-${cy}`))
513
+ MOLECULE_ATOMS.map(
514
+ ([cx, cy, r], i) => i === 0 ? /* @__PURE__ */ jsxRuntime.jsxs("g", { children: [
515
+ /* @__PURE__ */ jsxRuntime.jsx("circle", { cx, cy, r, fill: ring }),
516
+ /* @__PURE__ */ jsxRuntime.jsx("circle", { cx, cy, r: r - MOLECULE_RING, fill: centre })
517
+ ] }, `${cx}-${cy}`) : /* @__PURE__ */ jsxRuntime.jsx(
518
+ "circle",
519
+ {
520
+ cx,
521
+ cy,
522
+ r: r - MOLECULE_RING / 2,
523
+ stroke: ring,
524
+ strokeWidth: MOLECULE_RING,
525
+ fill: "none"
526
+ },
527
+ `${cx}-${cy}`
528
+ )
529
+ )
606
530
  ] });
607
531
  }
608
532
  const NtdMolecule = /* @__PURE__ */ createIcon.createIcon({
609
533
  displayName: "NtdMolecule",
610
534
  paths: {
611
- solid: ({ primaryColor, accentColor, strokeWidth }) => molecule(primaryColor, accentColor, strokeWidth * 2),
535
+ solid: ({ primaryColor, accentColor, strokeWidth }) => molecule(primaryColor, accentColor, strokeWidth * 1.4),
612
536
  outline: ({ primaryColor, strokeWidth }) => /* @__PURE__ */ jsxRuntime.jsxs("g", { stroke: primaryColor, strokeWidth, fill: "none", children: [
613
537
  /* @__PURE__ */ jsxRuntime.jsx("path", { d: MOLECULE_BONDS }),
614
538
  MOLECULE_ATOMS.map(([cx, cy, r]) => /* @__PURE__ */ jsxRuntime.jsx("circle", { cx, cy, r: r - strokeWidth / 2 }, `${cx}-${cy}`))
615
539
  ] }),
616
- duotone: ({ primaryColor, secondaryColor, strokeWidth }) => molecule(primaryColor, secondaryColor, strokeWidth * 2),
617
- vivid: ({ primaryColor, secondaryColor, strokeWidth }) => molecule(primaryColor, secondaryColor, strokeWidth * 2)
540
+ duotone: ({ primaryColor, secondaryColor, strokeWidth }) => molecule(primaryColor, secondaryColor, strokeWidth * 1.4),
541
+ vivid: ({ primaryColor, secondaryColor, strokeWidth }) => molecule(primaryColor, secondaryColor, strokeWidth * 1.4)
618
542
  }
619
543
  });
620
544
  const NtdPeriodictable = /* @__PURE__ */ createIcon.createIcon({
@@ -877,52 +801,39 @@ const NtdPeriodictable = /* @__PURE__ */ createIcon.createIcon({
877
801
  ] })
878
802
  }
879
803
  });
880
- const NtdMagnet = /* @__PURE__ */ createIcon.createIcon({
881
- displayName: "NtdMagnet",
882
- paths: {
883
- solid: ({ primaryColor }) => /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
884
- /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M4 10a8 8 0 0116 0v6h-5v-6a3 3 0 00-6 0v6H4v-6z", fill: primaryColor }),
885
- /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M4 10h5M15 10h5", stroke: "white", strokeWidth: "2" }),
886
- /* @__PURE__ */ jsxRuntime.jsx("text", { x: "6.5", y: "19", textAnchor: "middle", fill: "white", fontSize: "4", fontWeight: "bold", children: "S" }),
887
- /* @__PURE__ */ jsxRuntime.jsx("text", { x: "17.5", y: "19", textAnchor: "middle", fill: "white", fontSize: "4", fontWeight: "bold", children: "N" })
888
- ] }),
889
- outline: ({ primaryColor, strokeWidth }) => /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
804
+ const MAGNET = "M4 10.8a8 8 0 0116 0v10h-5v-10a3 3 0 00-6 0v10H4z";
805
+ const MAGNET_LEFT = "M4 10.8a8 8 0 018-8v5a3 3 0 00-3 3v10H4z";
806
+ const MAGNET_RIGHT = "M12 2.8a8 8 0 018 8v10h-5v-10a3 3 0 00-3-3z";
807
+ function magnetFilled({ primaryColor, strokeWidth, uid }, right, rightOpacity, edge) {
808
+ return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
809
+ /* @__PURE__ */ jsxRuntime.jsx("path", { d: MAGNET_LEFT, fill: primaryColor }),
810
+ /* @__PURE__ */ jsxRuntime.jsx("path", { d: MAGNET_RIGHT, fill: right, opacity: rightOpacity }),
811
+ edge && iconParts.within(
812
+ uid,
813
+ "magnet",
814
+ /* @__PURE__ */ jsxRuntime.jsx("path", { d: MAGNET_RIGHT }),
890
815
  /* @__PURE__ */ jsxRuntime.jsx(
891
816
  "path",
892
817
  {
893
- d: "M4 10a8 8 0 0116 0v6h-5v-6a3 3 0 00-6 0v6H4v-6z",
818
+ d: MAGNET_RIGHT,
894
819
  stroke: primaryColor,
895
- strokeWidth,
820
+ strokeWidth: strokeWidth * 2.4,
896
821
  fill: "none"
897
822
  }
898
- ),
899
- /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M4 10h5M15 10h5", stroke: primaryColor, strokeWidth })
823
+ )
824
+ )
825
+ ] });
826
+ }
827
+ const NtdMagnet = /* @__PURE__ */ createIcon.createIcon({
828
+ displayName: "NtdMagnet",
829
+ paths: {
830
+ solid: (p) => magnetFilled(p, p.accentColor, p.accentOpacity, true),
831
+ outline: ({ primaryColor, strokeWidth }) => /* @__PURE__ */ jsxRuntime.jsxs("g", { stroke: primaryColor, strokeWidth, fill: "none", children: [
832
+ /* @__PURE__ */ jsxRuntime.jsx("path", { d: MAGNET, strokeLinejoin: "round" }),
833
+ /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M12 2.8v5" })
900
834
  ] }),
901
- duotone: iconParts.swapDuotone(({ primaryColor, secondaryColor, secondaryOpacity, strokeWidth }) => /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
902
- /* @__PURE__ */ jsxRuntime.jsx(
903
- "path",
904
- {
905
- d: "M4 10a8 8 0 0116 0v6h-5v-6a3 3 0 00-6 0v6H4v-6z",
906
- fill: secondaryColor,
907
- opacity: secondaryOpacity
908
- }
909
- ),
910
- /* @__PURE__ */ jsxRuntime.jsx(
911
- "path",
912
- {
913
- d: "M4 10a8 8 0 0116 0v6h-5v-6a3 3 0 00-6 0v6H4v-6z",
914
- stroke: primaryColor,
915
- strokeWidth,
916
- fill: "none"
917
- }
918
- ),
919
- /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M4 10h5M15 10h5", stroke: primaryColor, strokeWidth })
920
- ] })),
921
- vivid: ({ primaryColor, secondaryColor: _secondaryColor }) => /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
922
- /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M4 10a8 8 0 0116 0v6h-5v-6a3 3 0 00-6 0v6H4v-6z", fill: primaryColor }),
923
- /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M4 10a8 8 0 0116 0v6h-5v-6a3 3 0 00-6 0v6H4v-6z", fill: "white", opacity: "0.1" }),
924
- /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M4 10h5M15 10h5", stroke: "white", strokeWidth: "1.8" })
925
- ] })
835
+ duotone: (p) => magnetFilled(p, p.secondaryColor, 1, false),
836
+ vivid: (p) => magnetFilled(p, p.secondaryColor, 1, true)
926
837
  }
927
838
  });
928
839
  const NtdTelescope = /* @__PURE__ */ createIcon.createIcon({
@@ -1409,7 +1320,6 @@ const scienceIcons = {
1409
1320
  NtdTestTube,
1410
1321
  NtdPetriDish,
1411
1322
  NtdMicroscope,
1412
- NtdDna,
1413
1323
  NtdAtom,
1414
1324
  NtdRadiation,
1415
1325
  NtdNuke,
@@ -1425,7 +1335,6 @@ const scienceIcons = {
1425
1335
  };
1426
1336
  exports.NtdAtom = NtdAtom;
1427
1337
  exports.NtdBeaker = NtdBeaker;
1428
- exports.NtdDna = NtdDna;
1429
1338
  exports.NtdExperiment = NtdExperiment;
1430
1339
  exports.NtdFlask = NtdFlask;
1431
1340
  exports.NtdHypothesis = NtdHypothesis;
@@ -1008,46 +1008,37 @@ const NtdRepeat = /* @__PURE__ */ createIcon.createIcon({
1008
1008
  }
1009
1009
  });
1010
1010
  const SHUFFLE_HEADS = ["M18 3l3 3-3 3", "M18 15l3 3-3 3"];
1011
- const SHUFFLE_UNDER = [
1012
- [5, 6],
1013
- [11, 6],
1014
- [11, 18],
1015
- [17, 18]
1016
- ];
1017
- const SHUFFLE_CROSS = [11, 12];
1018
- const shufflePoint = (p) => `${+p[0].toFixed(2)} ${+p[1].toFixed(2)}`;
1019
- function shuffleArrows(over, under, width) {
1011
+ const SHUFFLE_OVER_CURVE = "M5 18C11 18 11 6 17 6";
1012
+ const SHUFFLE_UNDER_CURVE = "M5 6C11 6 11 18 17 18";
1013
+ function shuffleArrows(over, under, width, mask, maskOpacity, strokeWidth) {
1020
1014
  const back = 21 - width * 0.35;
1021
- const [p0, p1, p2, p3] = SHUFFLE_UNDER;
1022
- const lerp = (a, b, t) => a.map((v, i) => v + (b[i] - v) * t);
1023
- const at = (t) => {
1024
- const a = lerp(p0, p1, t);
1025
- const b = lerp(p1, p2, t);
1026
- const d = lerp(a, b, t);
1027
- return [a, d, lerp(d, lerp(b, lerp(p2, p3, t), t), t)];
1028
- };
1029
- const gap = Math.min(width * 0.5, 1);
1030
- const clear = (width * 0.5 + gap + width * 0.5 * 0.6) / 0.8 + width * 0.5;
1031
- let lo = 0;
1032
- let hi = 0.5;
1033
- for (let i = 0; i < 24; i += 1) {
1034
- const mid = (lo + hi) / 2;
1035
- const end2 = at(mid)[2];
1036
- if (Math.hypot(end2[0] - SHUFFLE_CROSS[0], end2[1] - SHUFFLE_CROSS[1]) > clear) {
1037
- lo = mid;
1038
- } else {
1039
- hi = mid;
1040
- }
1041
- }
1042
- const [c1, c2, end] = at(lo);
1043
- const turn = (p) => p.map((v, i) => 2 * SHUFFLE_CROSS[i] - v);
1044
- const underPath = `M3 6H5C${shufflePoint(c1)} ${shufflePoint(c2)} ${shufflePoint(end)}M${shufflePoint(turn(end))}C${shufflePoint(turn(c2))} ${shufflePoint(turn(c1))} 17 18H${back}`;
1045
1015
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1046
- /* @__PURE__ */ jsxRuntime.jsx("path", { d: `${SHUFFLE_HEADS[1]}${underPath}`, stroke: under, strokeWidth: width, fill: "none" }),
1047
1016
  /* @__PURE__ */ jsxRuntime.jsx(
1048
1017
  "path",
1049
1018
  {
1050
- d: `${SHUFFLE_HEADS[0]}M3 18H5C11 18 11 6 17 6H${back}`,
1019
+ d: `${SHUFFLE_HEADS[1]}M3 6H5${SHUFFLE_UNDER_CURVE.slice(SHUFFLE_UNDER_CURVE.indexOf("C"))}H${back}`,
1020
+ stroke: under,
1021
+ strokeWidth: width,
1022
+ fill: "none"
1023
+ }
1024
+ ),
1025
+ /* @__PURE__ */ jsxRuntime.jsx(
1026
+ "path",
1027
+ {
1028
+ d: SHUFFLE_OVER_CURVE,
1029
+ pathLength: 1,
1030
+ strokeDasharray: "0 0.37 0.26 1",
1031
+ stroke: mask,
1032
+ strokeOpacity: maskOpacity,
1033
+ strokeWidth: width + strokeWidth * 1.2,
1034
+ strokeLinecap: "butt",
1035
+ fill: "none"
1036
+ }
1037
+ ),
1038
+ /* @__PURE__ */ jsxRuntime.jsx(
1039
+ "path",
1040
+ {
1041
+ d: `${SHUFFLE_HEADS[0]}M3 18H5${SHUFFLE_OVER_CURVE.slice(SHUFFLE_OVER_CURVE.indexOf("C"))}H${back}`,
1051
1042
  stroke: over,
1052
1043
  strokeWidth: width,
1053
1044
  fill: "none"
@@ -1058,10 +1049,38 @@ function shuffleArrows(over, under, width) {
1058
1049
  const NtdShuffle = /* @__PURE__ */ createIcon.createIcon({
1059
1050
  displayName: "NtdShuffle",
1060
1051
  paths: {
1061
- solid: ({ primaryColor, strokeWidth }) => shuffleArrows(primaryColor, primaryColor, strokeWidth * 2),
1062
- outline: ({ primaryColor, strokeWidth }) => shuffleArrows(primaryColor, primaryColor, strokeWidth),
1063
- duotone: ({ primaryColor, secondaryColor, strokeWidth }) => shuffleArrows(primaryColor, secondaryColor, strokeWidth * 2),
1064
- vivid: ({ primaryColor, secondaryColor, strokeWidth }) => shuffleArrows(primaryColor, secondaryColor, strokeWidth * 2)
1052
+ solid: ({ primaryColor, accentColor, accentOpacity, strokeWidth }) => shuffleArrows(
1053
+ primaryColor,
1054
+ primaryColor,
1055
+ strokeWidth * 2,
1056
+ accentColor,
1057
+ accentOpacity,
1058
+ strokeWidth
1059
+ ),
1060
+ outline: ({ primaryColor, accentColor, accentOpacity, strokeWidth }) => shuffleArrows(
1061
+ primaryColor,
1062
+ primaryColor,
1063
+ strokeWidth,
1064
+ accentColor,
1065
+ accentOpacity,
1066
+ strokeWidth
1067
+ ),
1068
+ duotone: ({ primaryColor, secondaryColor, accentColor, accentOpacity, strokeWidth }) => shuffleArrows(
1069
+ primaryColor,
1070
+ secondaryColor,
1071
+ strokeWidth * 2,
1072
+ accentColor,
1073
+ accentOpacity,
1074
+ strokeWidth
1075
+ ),
1076
+ vivid: ({ primaryColor, secondaryColor, accentColor, accentOpacity, strokeWidth }) => shuffleArrows(
1077
+ primaryColor,
1078
+ secondaryColor,
1079
+ strokeWidth * 2,
1080
+ accentColor,
1081
+ accentOpacity,
1082
+ strokeWidth
1083
+ )
1065
1084
  }
1066
1085
  });
1067
1086
  const NtdPoint = /* @__PURE__ */ createIcon.createIcon({
@@ -550,37 +550,39 @@ const NtdSmartPlug = /* @__PURE__ */ createIcon.createIcon({
550
550
  ] })
551
551
  }
552
552
  });
553
- const THERMO_BODY = "M13.75 13.56V4.25a1.75 1.75 0 00-3.5 0v9.31a4.4 4.4 0 103.5 0z";
553
+ const THERMO_BODY = "M14.3 13.85V4.3a2.3 2.3 0 00-4.6 0v9.55a4.4 4.4 0 104.6 0z";
554
+ const THERMO_BODY_SHARP = "M14.3 13.85V2H9.7v11.85a4.4 4.4 0 104.6 0z";
554
555
  const THERMO_BALL = { cx: 12, cy: 17.6, r: 2.6 };
555
- const THERMO_COLUMN = "M12 4.6V17";
556
- const THERMO_MARKS = "M17 4h3M17 8h3M17 12h3";
557
- function thermometer(body, mercury, marks, width) {
556
+ const THERMO_COLUMN = "M12 5.4V17";
557
+ const THERMO_MARKS = "M16.4 5h2.4M16.4 7.4h1.4M16.4 9.8h2.4M16.4 12.2h1.4";
558
+ function thermometer(body, mercury, marks, width, bodyPath = THERMO_BODY) {
558
559
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
559
- /* @__PURE__ */ jsxRuntime.jsx("path", { d: THERMO_BODY, fill: body }),
560
+ /* @__PURE__ */ jsxRuntime.jsx("path", { d: bodyPath, fill: body }),
560
561
  /* @__PURE__ */ jsxRuntime.jsx("circle", { ...THERMO_BALL, fill: mercury }),
561
- /* @__PURE__ */ jsxRuntime.jsx("path", { d: THERMO_COLUMN, stroke: mercury, strokeWidth: 1.2 }),
562
+ /* @__PURE__ */ jsxRuntime.jsx("path", { d: THERMO_COLUMN, stroke: mercury, strokeWidth: 2 }),
562
563
  /* @__PURE__ */ jsxRuntime.jsx("path", { d: THERMO_MARKS, stroke: marks, strokeWidth: width })
563
564
  ] });
564
565
  }
565
566
  const NtdTemperatureSensor = /* @__PURE__ */ createIcon.createIcon({
566
567
  displayName: "NtdTemperatureSensor",
567
568
  paths: {
568
- solid: ({ primaryColor, accentColor, strokeWidth }) => thermometer(primaryColor, accentColor, primaryColor, strokeWidth * 1.5),
569
+ solid: ({ primaryColor, accentColor, strokeWidth }) => thermometer(primaryColor, accentColor, primaryColor, strokeWidth),
570
+ sharp: ({ primaryColor, accentColor, strokeWidth }) => thermometer(primaryColor, accentColor, primaryColor, strokeWidth, THERMO_BODY_SHARP),
569
571
  outline: ({ primaryColor, strokeWidth }) => /* @__PURE__ */ jsxRuntime.jsxs("g", { stroke: primaryColor, strokeWidth, fill: "none", children: [
570
572
  /* @__PURE__ */ jsxRuntime.jsx("path", { d: THERMO_BODY }),
571
573
  /* @__PURE__ */ jsxRuntime.jsx("circle", { ...THERMO_BALL, r: 2 }),
572
- /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M12 4.6V15.6" }),
574
+ /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M12 5.4V15.6" }),
573
575
  /* @__PURE__ */ jsxRuntime.jsx("path", { d: THERMO_MARKS })
574
576
  ] }),
575
- duotone: ({ primaryColor, secondaryColor, strokeWidth }) => thermometer(primaryColor, secondaryColor, secondaryColor, strokeWidth * 1.5),
576
- vivid: ({ primaryColor, secondaryColor, strokeWidth }) => thermometer(primaryColor, secondaryColor, secondaryColor, strokeWidth * 1.5)
577
+ duotone: ({ primaryColor, secondaryColor, strokeWidth }) => thermometer(primaryColor, secondaryColor, secondaryColor, strokeWidth),
578
+ vivid: ({ primaryColor, secondaryColor, strokeWidth }) => thermometer(primaryColor, secondaryColor, secondaryColor, strokeWidth)
577
579
  }
578
580
  });
579
- const FRIDGE_BODY = { x: 5, y: 2, width: 14, height: 19, rx: 2 };
580
- const FRIDGE_FREEZER = "M7 2H17A2 2 0 0 1 19 4V8.4H5V4A2 2 0 0 1 7 2Z";
581
- const FRIDGE_GAP = "M4 8.4H20";
582
- const FRIDGE_HANDLES = "M8 4.4V6.6M8 10.6V14.6";
583
- const FRIDGE_FEET = "M7 21v1.2M17 21v1.2";
581
+ const FRIDGE_BODY = { x: 5, y: 2.4, width: 14, height: 19, rx: 2 };
582
+ const FRIDGE_FREEZER = "M7 2.4H17A2 2 0 0 1 19 4.4V9.8H5V4.4A2 2 0 0 1 7 2.4Z";
583
+ const FRIDGE_GAP = "M4 9.8H20";
584
+ const FRIDGE_HANDLES = "M8 4.6V7.6M8 11.8V14.8";
585
+ const FRIDGE_FEET = "M7 21.4v0.7M17 21.4v0.7";
584
586
  function fridgeFilled({ primaryColor, accentColor, strokeWidth, uid }, freezer) {
585
587
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
586
588
  /* @__PURE__ */ jsxRuntime.jsx("path", { d: FRIDGE_FEET, stroke: primaryColor, strokeWidth: strokeWidth * 2 }),
@@ -603,7 +605,7 @@ const NtdRefrigerator = /* @__PURE__ */ createIcon.createIcon({
603
605
  solid: (props) => fridgeFilled(props, props.primaryColor),
604
606
  outline: ({ primaryColor, strokeWidth }) => /* @__PURE__ */ jsxRuntime.jsxs("g", { stroke: primaryColor, strokeWidth, fill: "none", children: [
605
607
  /* @__PURE__ */ jsxRuntime.jsx("rect", { ...FRIDGE_BODY }),
606
- /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M5 8.4H19" }),
608
+ /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M5 9.8H19" }),
607
609
  /* @__PURE__ */ jsxRuntime.jsx("path", { d: FRIDGE_HANDLES }),
608
610
  /* @__PURE__ */ jsxRuntime.jsx("path", { d: FRIDGE_FEET })
609
611
  ] }),
@@ -295,30 +295,32 @@ const NtdThumbsDown = /* @__PURE__ */ createIcon.createIcon({
295
295
  }
296
296
  });
297
297
  const NtdBellRing = /* @__PURE__ */ iconParts.bellIcon("NtdBellRing", true);
298
+ const MEGA_BOX = { x: 2.5, y: 8, width: 5.5, height: 6, rx: 1.5 };
299
+ const MEGA_HORN = "M8 8L18.5 3.5V18.5L8 14Z";
300
+ const MEGA_GRIP = "M9.5 14.65L12.8 16.05L12 21a1 1 0 01-1 .8H9.6a1 1 0 01-1-1.2z";
301
+ const MEGA_RIM = { cx: 18.5, cy: 11, rx: 2, ry: 7.5 };
302
+ const MEGA_OPENING = { cx: 18.9, cy: 11, rx: 1.1, ry: 6 };
303
+ function megaphoneFilled(horn, parts, opening, openingOpacity) {
304
+ return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
305
+ /* @__PURE__ */ jsxRuntime.jsx("path", { d: MEGA_GRIP, fill: parts }),
306
+ /* @__PURE__ */ jsxRuntime.jsx("rect", { ...MEGA_BOX, fill: parts }),
307
+ /* @__PURE__ */ jsxRuntime.jsx("path", { d: MEGA_HORN, fill: horn }),
308
+ /* @__PURE__ */ jsxRuntime.jsx("ellipse", { ...MEGA_RIM, fill: horn }),
309
+ opening && /* @__PURE__ */ jsxRuntime.jsx("ellipse", { ...MEGA_OPENING, fill: opening, opacity: openingOpacity })
310
+ ] });
311
+ }
298
312
  const NtdMegaphone = /* @__PURE__ */ createIcon.createIcon({
299
313
  displayName: "NtdMegaphone",
300
314
  paths: {
301
- solid: ({ primaryColor, secondaryColor, strokeWidth }) => /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
302
- /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M21 4v16l-8-4H5a2 2 0 01-2-2V10a2 2 0 012-2h8l8-4z", fill: primaryColor }),
303
- /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M5 16l-1 4h4l1-4", stroke: secondaryColor, strokeWidth, fill: "none" })
315
+ solid: ({ primaryColor, accentColor, accentOpacity }) => megaphoneFilled(primaryColor, primaryColor, accentColor, accentOpacity),
316
+ outline: ({ primaryColor, strokeWidth }) => /* @__PURE__ */ jsxRuntime.jsxs("g", { stroke: primaryColor, strokeWidth, strokeLinejoin: "miter", fill: "none", children: [
317
+ /* @__PURE__ */ jsxRuntime.jsx("rect", { ...MEGA_BOX }),
318
+ /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M8 8L18.5 3.5M8 14L18.5 18.5" }),
319
+ /* @__PURE__ */ jsxRuntime.jsx("ellipse", { ...MEGA_RIM }),
320
+ /* @__PURE__ */ jsxRuntime.jsx("path", { d: MEGA_GRIP })
304
321
  ] }),
305
- outline: ({ primaryColor, strokeWidth }) => /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
306
- /* @__PURE__ */ jsxRuntime.jsx(
307
- "path",
308
- {
309
- d: "M21 4v16l-8-4H5a2 2 0 01-2-2V10a2 2 0 012-2h8l8-4z",
310
- stroke: primaryColor,
311
- strokeWidth,
312
- fill: "none"
313
- }
314
- ),
315
- /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M5 16l-1 4h4l1-4", stroke: primaryColor, strokeWidth, fill: "none" })
316
- ] }),
317
- vivid: ({ primaryColor, secondaryColor }) => /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
318
- /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M21 4v16l-8-4H5a2 2 0 01-2-2V10a2 2 0 012-2h8l8-4z", fill: primaryColor }),
319
- /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M21 4v16l-8-4H5a2 2 0 01-2-2V10a2 2 0 012-2h8l8-4z", fill: "white", opacity: "0.1" }),
320
- /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M5 16l-1 4h4l1-4", stroke: secondaryColor, strokeWidth: "1.8", fill: "none" })
321
- ] })
322
+ duotone: ({ primaryColor, secondaryColor }) => megaphoneFilled(primaryColor, secondaryColor, null, 1),
323
+ vivid: ({ primaryColor, secondaryColor, accentColor, accentOpacity }) => megaphoneFilled(primaryColor, secondaryColor, accentColor, accentOpacity)
322
324
  }
323
325
  });
324
326
  const NtdQrCode = /* @__PURE__ */ createIcon.createIcon({