@nice2dev/icons 1.3.16 → 1.3.18

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 (55) hide show
  1. package/CHANGELOG.md +47 -0
  2. package/README.md +21 -1
  3. package/dist/cjs/animationControls.js +10 -5
  4. package/dist/cjs/animationSpeed.js +102 -0
  5. package/dist/cjs/createIcon.js +68 -24
  6. package/dist/cjs/iconStyles.js +1171 -1081
  7. package/dist/cjs/icons/actions.js +2 -2
  8. package/dist/cjs/icons/brand.js +4 -747
  9. package/dist/cjs/icons/business.js +59 -23
  10. package/dist/cjs/icons/files.js +54 -54
  11. package/dist/cjs/icons/food.js +75 -557
  12. package/dist/cjs/icons/fun.js +51 -33
  13. package/dist/cjs/icons/index.js +0 -7
  14. package/dist/cjs/icons/navigation.js +26 -7
  15. package/dist/cjs/icons/omniverk.js +17 -244
  16. package/dist/cjs/icons/science.js +63 -170
  17. package/dist/cjs/icons/sports.js +45 -137
  18. package/dist/cjs/index.js +0 -7
  19. package/dist/cjs/reducedMotion.js +30 -0
  20. package/dist/cjs/smilAnimations.js +16 -3
  21. package/dist/cjs/utilities.js +4 -25
  22. package/dist/esm/animationControls.js +10 -5
  23. package/dist/esm/animationSpeed.js +102 -0
  24. package/dist/esm/createIcon.js +69 -25
  25. package/dist/esm/iconStyles.js +1171 -1081
  26. package/dist/esm/icons/actions.js +2 -2
  27. package/dist/esm/icons/brand.js +5 -748
  28. package/dist/esm/icons/business.js +59 -23
  29. package/dist/esm/icons/files.js +54 -54
  30. package/dist/esm/icons/food.js +74 -556
  31. package/dist/esm/icons/fun.js +51 -33
  32. package/dist/esm/icons/index.js +3 -10
  33. package/dist/esm/icons/navigation.js +26 -7
  34. package/dist/esm/icons/omniverk.js +17 -244
  35. package/dist/esm/icons/science.js +63 -170
  36. package/dist/esm/icons/sports.js +45 -137
  37. package/dist/esm/index.js +3 -10
  38. package/dist/esm/nicetodev-icons.css +1 -1
  39. package/dist/esm/reducedMotion.js +30 -0
  40. package/dist/esm/smilAnimations.js +16 -3
  41. package/dist/esm/utilities.js +5 -26
  42. package/dist/types/animationSpeed.d.ts +28 -0
  43. package/dist/types/createIcon.d.ts +6 -0
  44. package/dist/types/iconStyles.d.ts +12 -1
  45. package/dist/types/icons/brand.d.ts +0 -4
  46. package/dist/types/icons/food.d.ts +0 -3
  47. package/dist/types/icons/index.d.ts +3 -3
  48. package/dist/types/icons/omniverk.d.ts +0 -3
  49. package/dist/types/icons/science.d.ts +1 -1
  50. package/dist/types/reducedMotion.d.ts +6 -0
  51. package/dist/types/smilAnimations.d.ts +10 -2
  52. package/dist/types/types.d.ts +26 -0
  53. package/dist/types/utilities.d.ts +2 -2
  54. package/package.json +2 -2
  55. package/dist/cjs/nicetodev-icons.css +0 -1
@@ -550,142 +550,64 @@ const NtdRadiation = /* @__PURE__ */ createIcon.createIcon({
550
550
  ] })
551
551
  }
552
552
  });
553
- const NUKE_CAP = "M5.38 10.5A3.75 3.75 0 0 1 8.18 3.62A4.5 4.5 0 0 1 15.82 3.62A3.75 3.75 0 0 1 18.62 10.5Z";
554
- const NUKE_BASE = "M4 21.5V18.75A2.75 2.75 0 0 1 8.85 16.97A3.25 3.25 0 0 1 15.15 16.97A2.75 2.75 0 0 1 20 18.75V21.5Z";
555
- const NUKE_STEM = "M10.4 10H13.6L14.1 16.27H9.9Z";
556
- const NUKE_STEM_LINES = "M10.4 10.5L9.9 15.27M13.6 10.5L14.1 15.27";
557
- const NUKE_CAP_ROUND_CORE = "M5.59 9.75A3 3 0 0 1 8.54 4.54A3.75 3.75 0 0 1 15.46 4.54A3 3 0 0 1 18.41 9.75Z";
553
+ const NUKE_CAP = "M5.43 11.6A3.4 3.4 0 0 1 7.64 5.33A4.6 4.6 0 0 1 16.36 5.33A3.4 3.4 0 0 1 18.57 11.6Z";
554
+ const NUKE_STEM = "M10.7 11V16.6Q10.4 20.4 6.8 21.5H17.2Q13.6 20.4 13.3 16.6V11Z";
555
+ const NUKE_STEM_OPEN = "M10.7 11.6V16.6Q10.4 20.4 6.8 21.5H17.2Q13.6 20.4 13.3 16.6V11.6";
556
+ const NUKE_CAP_ROUND_CORE = "M5.65 10.85A2.65 2.65 0 0 1 8.19 6.24A3.85 3.85 0 0 1 15.81 6.24A2.65 2.65 0 0 1 18.35 10.85Z";
557
+ 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
558
  const NtdNuke = /* @__PURE__ */ createIcon.createIcon({
559
559
  displayName: "NtdNuke",
560
560
  paths: {
561
561
  solid: ({ primaryColor }) => /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
562
562
  /* @__PURE__ */ jsxRuntime.jsx("path", { d: NUKE_STEM, fill: primaryColor }),
563
- /* @__PURE__ */ jsxRuntime.jsx("path", { d: `${NUKE_CAP}${NUKE_BASE}`, fill: primaryColor })
563
+ /* @__PURE__ */ jsxRuntime.jsx("path", { d: NUKE_CAP, fill: primaryColor })
564
564
  ] }),
565
- rounded: ({ primaryColor }) => /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
566
- /* @__PURE__ */ jsxRuntime.jsx("path", { d: NUKE_STEM, fill: primaryColor }),
567
- /* @__PURE__ */ jsxRuntime.jsxs("g", { fill: primaryColor, stroke: primaryColor, strokeWidth: "1.5", strokeLinejoin: "round", children: [
568
- /* @__PURE__ */ jsxRuntime.jsx("path", { d: NUKE_CAP_ROUND_CORE }),
569
- /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "6.75", cy: "18.75", r: "2" }),
570
- /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "12", cy: "17.75", r: "2.5" }),
571
- /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "17.25", cy: "18.75", r: "2" }),
572
- /* @__PURE__ */ jsxRuntime.jsx("rect", { x: "4.75", y: "18.75", width: "14.5", height: "2" })
573
- ] })
565
+ rounded: ({ primaryColor }) => /* @__PURE__ */ jsxRuntime.jsxs("g", { fill: primaryColor, stroke: primaryColor, strokeWidth: "1.5", strokeLinejoin: "round", children: [
566
+ /* @__PURE__ */ jsxRuntime.jsx("path", { d: NUKE_STEM_ROUND_CORE }),
567
+ /* @__PURE__ */ jsxRuntime.jsx("path", { d: NUKE_CAP_ROUND_CORE })
574
568
  ] }),
575
- outline: ({ primaryColor, strokeWidth }) => /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
576
- /* @__PURE__ */ jsxRuntime.jsx(
577
- "path",
578
- {
579
- d: `${NUKE_CAP}${NUKE_BASE}`,
580
- stroke: primaryColor,
581
- strokeWidth,
582
- strokeLinejoin: "miter",
583
- fill: "none"
584
- }
585
- ),
586
- /* @__PURE__ */ jsxRuntime.jsx("path", { d: NUKE_STEM_LINES, stroke: primaryColor, strokeWidth, fill: "none" })
569
+ outline: ({ primaryColor, strokeWidth }) => /* @__PURE__ */ jsxRuntime.jsxs("g", { stroke: primaryColor, strokeWidth, strokeLinejoin: "miter", fill: "none", children: [
570
+ /* @__PURE__ */ jsxRuntime.jsx("path", { d: NUKE_CAP }),
571
+ /* @__PURE__ */ jsxRuntime.jsx("path", { d: NUKE_STEM_OPEN })
587
572
  ] }),
588
573
  duotone: ({ primaryColor, secondaryColor }) => /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
589
- /* @__PURE__ */ jsxRuntime.jsx("path", { d: `${NUKE_STEM}${NUKE_BASE}`, fill: secondaryColor }),
574
+ /* @__PURE__ */ jsxRuntime.jsx("path", { d: NUKE_STEM, fill: secondaryColor }),
590
575
  /* @__PURE__ */ jsxRuntime.jsx("path", { d: NUKE_CAP, fill: primaryColor })
591
576
  ] }),
592
577
  vivid: ({ primaryColor, secondaryColor }) => /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
593
- /* @__PURE__ */ jsxRuntime.jsx("path", { d: `${NUKE_STEM}${NUKE_BASE}`, fill: secondaryColor }),
578
+ /* @__PURE__ */ jsxRuntime.jsx("path", { d: NUKE_STEM, fill: secondaryColor }),
594
579
  /* @__PURE__ */ jsxRuntime.jsx("path", { d: NUKE_CAP, fill: primaryColor })
595
580
  ] })
596
581
  }
597
582
  });
583
+ const MOLECULE_ATOMS = [
584
+ [11.5, 12.6, 3.4],
585
+ [5, 7.4, 2.3],
586
+ [18.7, 5, 2.6],
587
+ [5.4, 18.7, 2.1],
588
+ [18.4, 18, 2.3]
589
+ ];
590
+ const MOLECULE_BONDS = "M8.85 10.48L6.8 8.84M13.84 10.13L16.91 6.89M9.1 15L6.88 17.22M14.18 14.7L16.59 16.58";
591
+ const MOLECULE_RING = 1.1;
592
+ function molecule(ring, centre, width) {
593
+ return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
594
+ /* @__PURE__ */ jsxRuntime.jsx("path", { d: MOLECULE_BONDS, stroke: ring, strokeWidth: width, fill: "none" }),
595
+ MOLECULE_ATOMS.map(([cx, cy, r]) => /* @__PURE__ */ jsxRuntime.jsxs("g", { children: [
596
+ /* @__PURE__ */ jsxRuntime.jsx("circle", { cx, cy, r, fill: ring }),
597
+ /* @__PURE__ */ jsxRuntime.jsx("circle", { cx, cy, r: r - MOLECULE_RING, fill: centre })
598
+ ] }, `${cx}-${cy}`))
599
+ ] });
600
+ }
598
601
  const NtdMolecule = /* @__PURE__ */ createIcon.createIcon({
599
602
  displayName: "NtdMolecule",
600
603
  paths: {
601
- solid: ({ primaryColor }) => /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
602
- /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "12", cy: "12", r: "4", fill: primaryColor }),
603
- /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "5", cy: "8", r: "3", fill: primaryColor }),
604
- /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "19", cy: "8", r: "3", fill: primaryColor }),
605
- /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "5", cy: "18", r: "2.5", fill: primaryColor }),
606
- /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "19", cy: "18", r: "2.5", fill: primaryColor }),
607
- /* @__PURE__ */ jsxRuntime.jsx(
608
- "path",
609
- {
610
- d: "M9 10l-2-1M15 10l2-1M9 14l-3 3M15 14l3 3",
611
- stroke: primaryColor,
612
- strokeWidth: "2",
613
- strokeLinecap: "round"
614
- }
615
- )
616
- ] }),
617
- outline: ({ primaryColor, strokeWidth }) => /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
618
- /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "12", cy: "12", r: "4", stroke: primaryColor, strokeWidth, fill: "none" }),
619
- /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "5", cy: "8", r: "3", stroke: primaryColor, strokeWidth, fill: "none" }),
620
- /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "19", cy: "8", r: "3", stroke: primaryColor, strokeWidth, fill: "none" }),
621
- /* @__PURE__ */ jsxRuntime.jsx(
622
- "circle",
623
- {
624
- cx: "5",
625
- cy: "18",
626
- r: "2.5",
627
- stroke: primaryColor,
628
- strokeWidth,
629
- fill: "none"
630
- }
631
- ),
632
- /* @__PURE__ */ jsxRuntime.jsx(
633
- "circle",
634
- {
635
- cx: "19",
636
- cy: "18",
637
- r: "2.5",
638
- stroke: primaryColor,
639
- strokeWidth,
640
- fill: "none"
641
- }
642
- ),
643
- /* @__PURE__ */ jsxRuntime.jsx(
644
- "path",
645
- {
646
- d: "M9 10l-2-1M15 10l2-1M9 14l-3 3M15 14l3 3",
647
- stroke: primaryColor,
648
- strokeWidth,
649
- strokeLinecap: "round"
650
- }
651
- )
604
+ solid: ({ primaryColor, accentColor, strokeWidth }) => molecule(primaryColor, accentColor, strokeWidth * 2),
605
+ outline: ({ primaryColor, strokeWidth }) => /* @__PURE__ */ jsxRuntime.jsxs("g", { stroke: primaryColor, strokeWidth, fill: "none", children: [
606
+ /* @__PURE__ */ jsxRuntime.jsx("path", { d: MOLECULE_BONDS }),
607
+ MOLECULE_ATOMS.map(([cx, cy, r]) => /* @__PURE__ */ jsxRuntime.jsx("circle", { cx, cy, r: r - strokeWidth / 2 }, `${cx}-${cy}`))
652
608
  ] }),
653
- duotone: ({ primaryColor, secondaryColor, secondaryOpacity, strokeWidth }) => /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
654
- /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "12", cy: "12", r: "4", fill: secondaryColor, opacity: secondaryOpacity }),
655
- /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "5", cy: "8", r: "3", fill: secondaryColor, opacity: secondaryOpacity }),
656
- /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "19", cy: "8", r: "3", fill: secondaryColor, opacity: secondaryOpacity }),
657
- /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "12", cy: "12", r: "4", stroke: primaryColor, strokeWidth, fill: "none" }),
658
- /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "5", cy: "8", r: "3", stroke: primaryColor, strokeWidth, fill: "none" }),
659
- /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "19", cy: "8", r: "3", stroke: primaryColor, strokeWidth, fill: "none" }),
660
- /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "5", cy: "18", r: "2.5", fill: primaryColor }),
661
- /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "19", cy: "18", r: "2.5", fill: primaryColor }),
662
- /* @__PURE__ */ jsxRuntime.jsx(
663
- "path",
664
- {
665
- d: "M9 10l-2-1M15 10l2-1M9 14l-3 3M15 14l3 3",
666
- stroke: primaryColor,
667
- strokeWidth,
668
- strokeLinecap: "round"
669
- }
670
- )
671
- ] }),
672
- vivid: ({ primaryColor, secondaryColor }) => /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
673
- /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "12", cy: "12", r: "4", fill: primaryColor }),
674
- /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "12", cy: "12", r: "4", fill: "white", opacity: "0.08" }),
675
- /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "5", cy: "8", r: "3", fill: secondaryColor }),
676
- /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "19", cy: "8", r: "3", fill: "#8B5CF6" }),
677
- /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "5", cy: "18", r: "2.5", fill: "#06B6D4" }),
678
- /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "19", cy: "18", r: "2.5", fill: "#F59E0B" }),
679
- /* @__PURE__ */ jsxRuntime.jsx(
680
- "path",
681
- {
682
- d: "M9 10l-2-1M15 10l2-1M9 14l-3 3M15 14l3 3",
683
- stroke: "white",
684
- strokeWidth: "1",
685
- strokeLinecap: "round"
686
- }
687
- )
688
- ] })
609
+ duotone: ({ primaryColor, secondaryColor, strokeWidth }) => molecule(primaryColor, secondaryColor, strokeWidth * 2),
610
+ vivid: ({ primaryColor, secondaryColor, strokeWidth }) => molecule(primaryColor, secondaryColor, strokeWidth * 2)
689
611
  }
690
612
  });
691
613
  const NtdPeriodictable = /* @__PURE__ */ createIcon.createIcon({
@@ -1096,69 +1018,40 @@ const NtdTelescope = /* @__PURE__ */ createIcon.createIcon({
1096
1018
  ] })
1097
1019
  }
1098
1020
  });
1021
+ const PLANET_BACK = ["M1 12A11 3 0 0 1 6.5 9.4", "M17.5 9.4A11 3 0 0 1 23 12"];
1022
+ const PLANET_BACK_EDGE = ["M1 12A11 3 0 0 1 4.29 9.86", "M19.71 9.86A11 3 0 0 1 23 12"];
1023
+ const PLANET_FRONT = ["M1 12A11 3 0 0 0 23 12"];
1024
+ function planetRing(arcs, ring, rim, width, rimWidth) {
1025
+ return /* @__PURE__ */ jsxRuntime.jsxs("g", { transform: "rotate(-20 12 12)", fill: "none", children: [
1026
+ arcs.map((d) => /* @__PURE__ */ jsxRuntime.jsx("path", { d, stroke: rim, strokeWidth: width + 2 * rimWidth }, `rim-${d}`)),
1027
+ arcs.map((d) => /* @__PURE__ */ jsxRuntime.jsx("path", { d, stroke: ring, strokeWidth: width }, d))
1028
+ ] });
1029
+ }
1099
1030
  const NtdPlanet = /* @__PURE__ */ createIcon.createIcon({
1100
1031
  displayName: "NtdPlanet",
1101
1032
  paths: {
1102
- solid: ({ primaryColor, secondaryColor }) => /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1103
- /* @__PURE__ */ jsxRuntime.jsxs("g", { transform: "rotate(-20 12 12)", stroke: secondaryColor, strokeWidth: "2", fill: "none", children: [
1104
- /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M1 12A11 3 0 0 1 4.29 9.86" }),
1105
- /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M19.71 9.86A11 3 0 0 1 23 12" })
1106
- ] }),
1033
+ // the wireframe re-draws this as lines: there the stubs stop at the disc too
1034
+ solid: ({ primaryColor, accentColor, variant }) => /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1035
+ planetRing(
1036
+ variant === "wireframe" ? PLANET_BACK_EDGE : PLANET_BACK,
1037
+ primaryColor,
1038
+ accentColor,
1039
+ 2,
1040
+ 0.55
1041
+ ),
1107
1042
  /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "12", cy: "12", r: "8", fill: primaryColor }),
1108
- /* @__PURE__ */ jsxRuntime.jsx(
1109
- "path",
1110
- {
1111
- d: "M1 12A11 3 0 0 0 23 12",
1112
- stroke: secondaryColor,
1113
- strokeWidth: "2",
1114
- fill: "none",
1115
- transform: "rotate(-20 12 12)"
1116
- }
1117
- )
1043
+ planetRing(PLANET_FRONT, primaryColor, accentColor, 2, 0.55)
1118
1044
  ] }),
1119
- outline: ({ primaryColor, secondaryColor, strokeWidth }) => /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1120
- /* @__PURE__ */ jsxRuntime.jsxs(
1121
- "g",
1122
- {
1123
- transform: "rotate(-20 12 12)",
1124
- stroke: secondaryColor,
1125
- strokeWidth,
1126
- fill: "none",
1127
- children: [
1128
- /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M1 12A11 3 0 0 1 4.29 9.86" }),
1129
- /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M19.71 9.86A11 3 0 0 1 23 12" })
1130
- ]
1131
- }
1132
- ),
1045
+ outline: ({ primaryColor, accentColor, strokeWidth }) => /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1046
+ planetRing(PLANET_BACK_EDGE, primaryColor, accentColor, strokeWidth, strokeWidth * 0.35),
1133
1047
  /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "12", cy: "12", r: "8", stroke: primaryColor, strokeWidth, fill: "none" }),
1134
- /* @__PURE__ */ jsxRuntime.jsx(
1135
- "path",
1136
- {
1137
- d: "M1 12A11 3 0 0 0 23 12",
1138
- stroke: secondaryColor,
1139
- strokeWidth,
1140
- fill: "none",
1141
- transform: "rotate(-20 12 12)"
1142
- }
1143
- )
1048
+ planetRing(PLANET_FRONT, primaryColor, accentColor, strokeWidth, strokeWidth * 0.35)
1144
1049
  ] }),
1145
- vivid: ({ primaryColor, secondaryColor }) => /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1146
- /* @__PURE__ */ jsxRuntime.jsxs("g", { transform: "rotate(-20 12 12)", stroke: secondaryColor, strokeWidth: "1.8", fill: "none", children: [
1147
- /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M1 12A11 3 0 0 1 4.29 9.86" }),
1148
- /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M19.71 9.86A11 3 0 0 1 23 12" })
1149
- ] }),
1050
+ vivid: ({ primaryColor, accentColor }) => /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1051
+ planetRing(PLANET_BACK, primaryColor, accentColor, 1.8, 0.55),
1150
1052
  /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "12", cy: "12", r: "8", fill: primaryColor }),
1151
1053
  /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "12", cy: "12", r: "8", fill: "white", opacity: "0.1" }),
1152
- /* @__PURE__ */ jsxRuntime.jsx(
1153
- "path",
1154
- {
1155
- d: "M1 12A11 3 0 0 0 23 12",
1156
- stroke: secondaryColor,
1157
- strokeWidth: "1.8",
1158
- fill: "none",
1159
- transform: "rotate(-20 12 12)"
1160
- }
1161
- )
1054
+ planetRing(PLANET_FRONT, primaryColor, accentColor, 1.8, 0.55)
1162
1055
  ] })
1163
1056
  }
1164
1057
  });
@@ -283,158 +283,66 @@ const NtdGolf = /* @__PURE__ */ createIcon.createIcon({
283
283
  ] })
284
284
  }
285
285
  });
286
+ const DB_PLATES = [
287
+ [2.4, 8.5, 2.2, 7],
288
+ [5, 6, 2.5, 12],
289
+ [16.5, 6, 2.5, 12],
290
+ [19.4, 8.5, 2.2, 7]
291
+ ];
292
+ function plates(fill, stroke) {
293
+ return DB_PLATES.map(([x, y, w, h]) => /* @__PURE__ */ jsxRuntime.jsx(
294
+ "rect",
295
+ {
296
+ x,
297
+ y,
298
+ width: w,
299
+ height: h,
300
+ rx: "0.8",
301
+ fill: fill ?? "none",
302
+ stroke: stroke?.color,
303
+ strokeWidth: stroke?.width
304
+ },
305
+ x
306
+ ));
307
+ }
286
308
  const NtdDumbbell = /* @__PURE__ */ createIcon.createIcon({
287
309
  displayName: "NtdDumbbell",
288
310
  paths: {
289
311
  solid: ({ primaryColor }) => /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
290
- /* @__PURE__ */ jsxRuntime.jsx("rect", { x: "6", y: "9", width: "12", height: "6", rx: "1", fill: primaryColor }),
291
- /* @__PURE__ */ jsxRuntime.jsx("rect", { x: "2", y: "7", width: "4", height: "10", rx: "1", fill: primaryColor }),
292
- /* @__PURE__ */ jsxRuntime.jsx("rect", { x: "18", y: "7", width: "4", height: "10", rx: "1", fill: primaryColor }),
293
- /* @__PURE__ */ jsxRuntime.jsx("rect", { x: "4", y: "10", width: "2", height: "4", fill: primaryColor }),
294
- /* @__PURE__ */ jsxRuntime.jsx("rect", { x: "18", y: "10", width: "2", height: "4", fill: primaryColor })
312
+ /* @__PURE__ */ jsxRuntime.jsx("rect", { x: "7.5", y: "11", width: "9", height: "2", fill: primaryColor }),
313
+ plates(primaryColor)
295
314
  ] }),
296
315
  outline: ({ primaryColor, strokeWidth }) => /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
297
- /* @__PURE__ */ jsxRuntime.jsx(
298
- "rect",
299
- {
300
- x: "6",
301
- y: "9",
302
- width: "12",
303
- height: "6",
304
- rx: "1",
305
- stroke: primaryColor,
306
- strokeWidth,
307
- fill: "none"
308
- }
309
- ),
310
- /* @__PURE__ */ jsxRuntime.jsx(
311
- "rect",
312
- {
313
- x: "2",
314
- y: "7",
315
- width: "4",
316
- height: "10",
317
- rx: "1",
318
- stroke: primaryColor,
319
- strokeWidth,
320
- fill: "none"
321
- }
322
- ),
323
- /* @__PURE__ */ jsxRuntime.jsx(
324
- "rect",
325
- {
326
- x: "18",
327
- y: "7",
328
- width: "4",
329
- height: "10",
330
- rx: "1",
331
- stroke: primaryColor,
332
- strokeWidth,
333
- fill: "none"
334
- }
335
- ),
336
- /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M6 12h-4M18 12h4", stroke: primaryColor, strokeWidth })
316
+ /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M7.5 11H16.5M7.5 13H16.5", stroke: primaryColor, strokeWidth }),
317
+ plates(void 0, { color: primaryColor, width: strokeWidth })
337
318
  ] }),
338
- duotone: ({ primaryColor, secondaryColor, secondaryOpacity, strokeWidth }) => /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
339
- /* @__PURE__ */ jsxRuntime.jsx(
340
- "rect",
341
- {
342
- x: "6",
343
- y: "9",
344
- width: "12",
345
- height: "6",
346
- rx: "1",
347
- fill: secondaryColor,
348
- opacity: secondaryOpacity,
349
- stroke: primaryColor,
350
- strokeWidth
351
- }
352
- ),
353
- /* @__PURE__ */ jsxRuntime.jsx("rect", { x: "2", y: "7", width: "4", height: "10", rx: "1", fill: primaryColor }),
354
- /* @__PURE__ */ jsxRuntime.jsx("rect", { x: "18", y: "7", width: "4", height: "10", rx: "1", fill: primaryColor })
319
+ duotone: ({ primaryColor, secondaryColor }) => /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
320
+ /* @__PURE__ */ jsxRuntime.jsx("rect", { x: "7.5", y: "11", width: "9", height: "2", fill: secondaryColor }),
321
+ plates(primaryColor)
355
322
  ] }),
356
323
  vivid: ({ primaryColor, secondaryColor }) => /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
357
- /* @__PURE__ */ jsxRuntime.jsx("rect", { x: "6", y: "9", width: "12", height: "6", rx: "1", fill: primaryColor }),
358
- /* @__PURE__ */ jsxRuntime.jsx("rect", { x: "6", y: "9", width: "12", height: "6", rx: "1", fill: "white", opacity: "0.08" }),
359
- /* @__PURE__ */ jsxRuntime.jsx("rect", { x: "2", y: "7", width: "4", height: "10", rx: "1", fill: secondaryColor }),
360
- /* @__PURE__ */ jsxRuntime.jsx("rect", { x: "18", y: "7", width: "4", height: "10", rx: "1", fill: "#EF4444" }),
361
- /* @__PURE__ */ jsxRuntime.jsx("rect", { x: "4", y: "10", width: "2", height: "4", fill: "#F59E0B" }),
362
- /* @__PURE__ */ jsxRuntime.jsx("rect", { x: "18", y: "10", width: "2", height: "4", fill: "#10B981" })
324
+ /* @__PURE__ */ jsxRuntime.jsx("rect", { x: "7.5", y: "11", width: "9", height: "2", fill: secondaryColor }),
325
+ plates(primaryColor)
363
326
  ] })
364
327
  }
365
328
  });
329
+ const RUN_BODY = "M13.9 8.1L11.3 13.4";
330
+ const RUN_NEAR = "M13.6 8.7L16.5 10.7L18.7 8.6M11.3 13.4L15.3 15L14.5 19.7L16.6 20.1";
331
+ const RUN_FAR = "M13.6 8.7L10.2 9.5L8.3 12.3M11.3 13.4L9.7 17.4L5.6 19.3";
332
+ function runner(near, far, width, headFill) {
333
+ return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
334
+ /* @__PURE__ */ jsxRuntime.jsx("path", { d: RUN_FAR, stroke: far, strokeWidth: width, fill: "none" }),
335
+ /* @__PURE__ */ jsxRuntime.jsx("path", { d: `${RUN_BODY}${RUN_NEAR}`, stroke: near, strokeWidth: width, fill: "none" }),
336
+ headFill ? /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "15.6", cy: "4.3", r: "2.3", fill: near }) : /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "15.6", cy: "4.3", r: "2.3", stroke: near, strokeWidth: width, fill: "none" })
337
+ ] });
338
+ }
366
339
  const NtdRunning = /* @__PURE__ */ createIcon.createIcon({
367
340
  displayName: "NtdRunning",
368
341
  paths: {
369
- solid: ({ primaryColor }) => /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
370
- /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "14", cy: "4", r: "2.5", fill: primaryColor }),
371
- /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M16 10l-4 1-2 5-4 2 1 2 5-2 2-4 4-1 2 6h2l-3-9h-3z", fill: primaryColor }),
372
- /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M10 11l-4 4-2 6h2l2-5 3-3", fill: primaryColor })
373
- ] }),
374
- outline: ({ primaryColor, strokeWidth }) => /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
375
- /* @__PURE__ */ jsxRuntime.jsx(
376
- "circle",
377
- {
378
- cx: "14",
379
- cy: "4",
380
- r: "2.5",
381
- stroke: primaryColor,
382
- strokeWidth,
383
- fill: "none"
384
- }
385
- ),
386
- /* @__PURE__ */ jsxRuntime.jsx(
387
- "path",
388
- {
389
- d: "M16 10l-4 1-2 5-4 2 1 2 5-2 2-4 4-1 2 6h2l-3-9h-3z",
390
- stroke: primaryColor,
391
- strokeWidth,
392
- fill: "none",
393
- strokeLinejoin: "round"
394
- }
395
- ),
396
- /* @__PURE__ */ jsxRuntime.jsx(
397
- "path",
398
- {
399
- d: "M10 11l-4 4-2 6h2l2-5 3-3",
400
- stroke: primaryColor,
401
- strokeWidth,
402
- fill: "none",
403
- strokeLinejoin: "round"
404
- }
405
- )
406
- ] }),
407
- duotone: ({ primaryColor, secondaryColor, secondaryOpacity, strokeWidth }) => /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
408
- /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "14", cy: "4", r: "2.5", fill: primaryColor }),
409
- /* @__PURE__ */ jsxRuntime.jsx(
410
- "path",
411
- {
412
- d: "M16 10l-4 1-2 5-4 2 1 2 5-2 2-4 4-1 2 6h2l-3-9h-3z",
413
- fill: secondaryColor,
414
- opacity: secondaryOpacity,
415
- stroke: primaryColor,
416
- strokeWidth,
417
- strokeLinejoin: "round"
418
- }
419
- ),
420
- /* @__PURE__ */ jsxRuntime.jsx(
421
- "path",
422
- {
423
- d: "M10 11l-4 4-2 6h2l2-5 3-3",
424
- fill: secondaryColor,
425
- opacity: secondaryOpacity,
426
- stroke: primaryColor,
427
- strokeWidth,
428
- strokeLinejoin: "round"
429
- }
430
- )
431
- ] }),
432
- vivid: ({ primaryColor, secondaryColor }) => /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
433
- /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "14", cy: "4", r: "2.5", fill: primaryColor }),
434
- /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "14", cy: "4", r: "2.5", fill: "white", opacity: "0.08" }),
435
- /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M16 10l-4 1-2 5-4 2 1 2 5-2 2-4 4-1 2 6h2l-3-9h-3z", fill: secondaryColor }),
436
- /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M10 11l-4 4-2 6h2l2-5 3-3", fill: "#EF4444" })
437
- ] })
342
+ solid: ({ primaryColor, strokeWidth }) => runner(primaryColor, primaryColor, strokeWidth * 2, true),
343
+ outline: ({ primaryColor, strokeWidth }) => runner(primaryColor, primaryColor, strokeWidth, false),
344
+ duotone: ({ primaryColor, secondaryColor, strokeWidth }) => runner(primaryColor, secondaryColor, strokeWidth * 2, true),
345
+ vivid: ({ primaryColor, secondaryColor, strokeWidth }) => runner(primaryColor, secondaryColor, strokeWidth * 2, true)
438
346
  }
439
347
  });
440
348
  const NtdYoga = /* @__PURE__ */ createIcon.createIcon({
package/dist/cjs/index.js CHANGED
@@ -345,7 +345,6 @@ exports.NtdToken = fintech.NtdToken;
345
345
  exports.NtdAlert = omniverk.NtdAlert;
346
346
  exports.NtdAlertBell = omniverk.NtdAlertBell;
347
347
  exports.NtdFood = omniverk.NtdFood;
348
- exports.NtdGym = omniverk.NtdGym;
349
348
  exports.NtdInsurance = omniverk.NtdInsurance;
350
349
  exports.NtdLab = omniverk.NtdLab;
351
350
  exports.NtdMeal = omniverk.NtdMeal;
@@ -562,10 +561,8 @@ exports.NtdBurger = food.NtdBurger;
562
561
  exports.NtdChefHat = food.NtdChefHat;
563
562
  exports.NtdCocktail = food.NtdCocktail;
564
563
  exports.NtdCoffeeFood = food.NtdCoffee;
565
- exports.NtdDelivery = food.NtdDelivery;
566
564
  exports.NtdForkKnife = food.NtdForkKnife;
567
565
  exports.NtdHotdog = food.NtdHotdog;
568
- exports.NtdPizzaFood = food.NtdPizza;
569
566
  exports.NtdPlate = food.NtdPlate;
570
567
  exports.NtdRecipe = food.NtdRecipe;
571
568
  exports.NtdRestaurant = food.NtdRestaurant;
@@ -750,7 +747,3 @@ exports.NtdRemoteOk = input.NtdRemoteOk;
750
747
  exports.NtdNiceToDev = brand.NtdNiceToDev;
751
748
  exports.NtdOmniVerk = brand.NtdOmniVerk;
752
749
  exports.NtdOmniVerkAnimated = brand.NtdOmniVerkAnimated;
753
- exports.NtdOmniVerkBadge = brand.NtdOmniVerkBadge;
754
- exports.NtdOmniVerkLogo = brand.NtdOmniVerkLogo;
755
- exports.NtdOmniVerkSpinner = brand.NtdOmniVerkSpinner;
756
- exports.NtdOmniVerkWatermark = brand.NtdOmniVerkWatermark;
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const React = require("react");
4
+ const QUERY = "(prefers-reduced-motion: reduce)";
5
+ const hasMatchMedia = () => typeof window !== "undefined" && typeof window.matchMedia === "function";
6
+ function subscribe(callback) {
7
+ if (!hasMatchMedia()) {
8
+ return () => {
9
+ };
10
+ }
11
+ const mq = window.matchMedia(QUERY);
12
+ if (typeof mq.addEventListener === "function") {
13
+ mq.addEventListener("change", callback);
14
+ return () => mq.removeEventListener("change", callback);
15
+ }
16
+ mq.addListener?.(callback);
17
+ return () => mq.removeListener?.(callback);
18
+ }
19
+ function snapshot() {
20
+ return hasMatchMedia() ? window.matchMedia(QUERY).matches === true : false;
21
+ }
22
+ function usePrefersReducedMotion() {
23
+ return React.useSyncExternalStore(subscribe, snapshot, () => false);
24
+ }
25
+ function useStillMotion(mode) {
26
+ const reduce = usePrefersReducedMotion();
27
+ return reduce && mode !== "ignore";
28
+ }
29
+ exports.usePrefersReducedMotion = usePrefersReducedMotion;
30
+ exports.useStillMotion = useStillMotion;
@@ -1,6 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const jsxRuntime = require("react/jsx-runtime");
4
+ const animationSpeed = require("./animationSpeed.js");
5
+ const reducedMotion = require("./reducedMotion.js");
4
6
  const DEFAULT_CONFIG = {
5
7
  duration: 1,
6
8
  repeatCount: "indefinite",
@@ -315,17 +317,28 @@ function generateSmilAnimation(config, center = { x: 12, y: 12 }) {
315
317
  }
316
318
  function SmilAnimationWrapper({
317
319
  animation,
318
- duration = 1,
320
+ duration,
321
+ animationSpeed: animationSpeed$1,
319
322
  repeatCount = "indefinite",
320
323
  easing = "ease-in-out",
321
324
  delay = 0,
322
325
  center = { x: 12, y: 12 },
326
+ reducedMotion: reducedMotion$1,
323
327
  children
324
328
  }) {
325
- const animationElements = generateSmilAnimation(
326
- { type: animation, duration, repeatCount, easing, delay },
329
+ const still = reducedMotion.useStillMotion(reducedMotion$1);
330
+ const generated = generateSmilAnimation(
331
+ {
332
+ type: animation,
333
+ // 1 s before 1.3.17; a given duration keeps its length
334
+ duration: (duration ?? 1) * animationSpeed.durationScale(duration !== void 0, animationSpeed$1),
335
+ repeatCount,
336
+ easing,
337
+ delay
338
+ },
327
339
  center
328
340
  );
341
+ const animationElements = still ? animationSpeed.stillTree(generated) : generated;
329
342
  const needsOriginTransform = [
330
343
  "heartbeat",
331
344
  "scale-pulse",
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
3
  const React = require("react");
4
+ const reducedMotion = require("./reducedMotion.js");
4
5
  /**
5
6
  * @file utilities.ts
6
7
  * @description Utility hooks and functions for @nice2dev/icons
@@ -87,31 +88,8 @@ function useIcon(iconName, options = {}) {
87
88
  }, [iconName, cache, fallback]);
88
89
  return state;
89
90
  }
90
- function subscribeToReducedMotion(callback) {
91
- if (typeof window === "undefined") {
92
- return () => {
93
- };
94
- }
95
- const mediaQuery = window.matchMedia("(prefers-reduced-motion: reduce)");
96
- const handler = () => callback();
97
- mediaQuery.addEventListener("change", handler);
98
- return () => mediaQuery.removeEventListener("change", handler);
99
- }
100
- function getReducedMotionSnapshot() {
101
- if (typeof window === "undefined") {
102
- return false;
103
- }
104
- return window.matchMedia("(prefers-reduced-motion: reduce)").matches;
105
- }
106
- function getReducedMotionServerSnapshot() {
107
- return false;
108
- }
109
91
  function useReducedMotion() {
110
- return React.useSyncExternalStore(
111
- subscribeToReducedMotion,
112
- getReducedMotionSnapshot,
113
- getReducedMotionServerSnapshot
114
- );
92
+ return reducedMotion.usePrefersReducedMotion();
115
93
  }
116
94
  async function preloadIcons(iconNames) {
117
95
  const results = /* @__PURE__ */ new Map();
@@ -145,7 +123,8 @@ function withReducedMotionProps(props, prefersReducedMotion) {
145
123
  ...props,
146
124
  animation: void 0,
147
125
  animationDuration: void 0,
148
- gradientAnimation: void 0
126
+ gradientAnimation: void 0,
127
+ smilAnimation: void 0
149
128
  };
150
129
  }
151
130
  function createAccessibleIconProps(options) {