@nice2dev/icons 1.4.1 → 1.4.3

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
@@ -1,6 +1,6 @@
1
1
  import { jsxs, Fragment, jsx } from "react/jsx-runtime";
2
2
  import { createIcon } from "../createIcon.js";
3
- import { swapDuotone } from "../iconParts.js";
3
+ import { swapDuotone, within } from "../iconParts.js";
4
4
  const NtdGraduationCap = /* @__PURE__ */ createIcon({
5
5
  displayName: "NtdGraduationCap",
6
6
  paths: {
@@ -67,96 +67,6 @@ const NtdGraduationCap = /* @__PURE__ */ createIcon({
67
67
  ] })
68
68
  }
69
69
  });
70
- const NtdDiploma = /* @__PURE__ */ createIcon({
71
- displayName: "NtdDiploma",
72
- paths: {
73
- solid: ({ primaryColor }) => /* @__PURE__ */ jsxs(Fragment, { children: [
74
- /* @__PURE__ */ jsx("rect", { x: "3", y: "4", width: "18", height: "14", rx: "2", fill: primaryColor }),
75
- /* @__PURE__ */ jsx("path", { d: "M7 8h10M7 11h10M7 14h6", stroke: "white", strokeWidth: "1.5", strokeLinecap: "round" }),
76
- /* @__PURE__ */ jsx("circle", { cx: "17", cy: "14", r: "2", fill: "white" }),
77
- /* @__PURE__ */ jsx("path", { d: "M16 16l-1 4 2-1 2 1-1-4", fill: primaryColor })
78
- ] }),
79
- outline: ({ primaryColor, strokeWidth }) => /* @__PURE__ */ jsxs(Fragment, { children: [
80
- /* @__PURE__ */ jsx(
81
- "rect",
82
- {
83
- x: "3",
84
- y: "4",
85
- width: "18",
86
- height: "14",
87
- rx: "2",
88
- stroke: primaryColor,
89
- strokeWidth,
90
- fill: "none"
91
- }
92
- ),
93
- /* @__PURE__ */ jsx(
94
- "path",
95
- {
96
- d: "M7 8h10M7 11h10M7 14h6",
97
- stroke: primaryColor,
98
- strokeWidth,
99
- strokeLinecap: "round"
100
- }
101
- ),
102
- /* @__PURE__ */ jsx("circle", { cx: "17", cy: "14", r: "2", stroke: primaryColor, strokeWidth, fill: "none" }),
103
- /* @__PURE__ */ jsx(
104
- "path",
105
- {
106
- d: "M16 16l-1 4 2-1 2 1-1-4",
107
- stroke: primaryColor,
108
- strokeWidth,
109
- fill: "none"
110
- }
111
- )
112
- ] }),
113
- duotone: swapDuotone(({ primaryColor, secondaryColor, secondaryOpacity, strokeWidth }) => /* @__PURE__ */ jsxs(Fragment, { children: [
114
- /* @__PURE__ */ jsx(
115
- "rect",
116
- {
117
- x: "3",
118
- y: "4",
119
- width: "18",
120
- height: "14",
121
- rx: "2",
122
- fill: secondaryColor,
123
- opacity: secondaryOpacity
124
- }
125
- ),
126
- /* @__PURE__ */ jsx(
127
- "rect",
128
- {
129
- x: "3",
130
- y: "4",
131
- width: "18",
132
- height: "14",
133
- rx: "2",
134
- stroke: primaryColor,
135
- strokeWidth,
136
- fill: "none"
137
- }
138
- ),
139
- /* @__PURE__ */ jsx(
140
- "path",
141
- {
142
- d: "M7 8h10M7 11h10M7 14h6",
143
- stroke: primaryColor,
144
- strokeWidth,
145
- strokeLinecap: "round"
146
- }
147
- ),
148
- /* @__PURE__ */ jsx("circle", { cx: "17", cy: "14", r: "2", fill: primaryColor }),
149
- /* @__PURE__ */ jsx("path", { d: "M16 16l-1 4 2-1 2 1-1-4", fill: primaryColor })
150
- ] })),
151
- vivid: ({ primaryColor, secondaryColor: _secondaryColor }) => /* @__PURE__ */ jsxs(Fragment, { children: [
152
- /* @__PURE__ */ jsx("rect", { x: "3", y: "4", width: "18", height: "14", rx: "2", fill: primaryColor }),
153
- /* @__PURE__ */ jsx("rect", { x: "3", y: "4", width: "18", height: "14", rx: "2", fill: "white", opacity: "0.08" }),
154
- /* @__PURE__ */ jsx("circle", { cx: "17", cy: "14", r: "2", fill: "white" }),
155
- /* @__PURE__ */ jsx("path", { d: "M16 16l-1 4 2-1 2 1-1-4", fill: "#F59E0B" }),
156
- /* @__PURE__ */ jsx("path", { d: "M7 8h10M7 11h10M7 14h6", stroke: "white", strokeWidth: "1", strokeLinecap: "round" })
157
- ] })
158
- }
159
- });
160
70
  const NtdSchool = /* @__PURE__ */ createIcon({
161
71
  displayName: "NtdSchool",
162
72
  paths: {
@@ -728,370 +638,85 @@ const NtdWebinar = /* @__PURE__ */ createIcon({
728
638
  ] })
729
639
  }
730
640
  });
641
+ const CERT_SHEET = { x: 2, y: 4, width: 20, height: 14, rx: 2 };
642
+ const CERT_BORDER = { x: 3.75, y: 5.75, width: 16.5, height: 10.5, rx: 0.75 };
643
+ const CERT_TEXT = "M5.75 8.75h8.5M5.75 11.5h6";
644
+ const CERT_RIBBON = "M15 17h4v4.75l-2-1.5-2 1.5z";
645
+ const CERT_SEAL = { cx: 17, cy: 15, r: 3.25 };
646
+ function certificateFilled({ primaryColor, accentColor, accentOpacity, strokeWidth, uid }, seal, detail, detailOpacity) {
647
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
648
+ /* @__PURE__ */ jsx("path", { d: CERT_RIBBON, fill: seal }),
649
+ /* @__PURE__ */ jsx("rect", { ...CERT_SHEET, fill: primaryColor }),
650
+ within(
651
+ uid,
652
+ "certificate",
653
+ /* @__PURE__ */ jsx("rect", { ...CERT_SHEET }),
654
+ /* @__PURE__ */ jsxs(Fragment, { children: [
655
+ /* @__PURE__ */ jsx(
656
+ "rect",
657
+ {
658
+ ...CERT_BORDER,
659
+ stroke: detail,
660
+ strokeWidth: strokeWidth * 0.6,
661
+ opacity: detailOpacity,
662
+ fill: "none"
663
+ }
664
+ ),
665
+ /* @__PURE__ */ jsx("path", { d: CERT_TEXT, stroke: detail, strokeWidth: "1.25", opacity: detailOpacity })
666
+ ] })
667
+ ),
668
+ /* @__PURE__ */ jsx("circle", { ...CERT_SEAL, r: CERT_SEAL.r + 0.9, fill: accentColor, opacity: accentOpacity }),
669
+ /* @__PURE__ */ jsx("circle", { ...CERT_SEAL, fill: seal }),
670
+ /* @__PURE__ */ jsx(
671
+ "circle",
672
+ {
673
+ ...CERT_SEAL,
674
+ r: CERT_SEAL.r - 0.85,
675
+ stroke: detail === seal ? primaryColor : detail,
676
+ strokeWidth: strokeWidth * 0.6,
677
+ opacity: detailOpacity,
678
+ fill: "none"
679
+ }
680
+ )
681
+ ] });
682
+ }
731
683
  const NtdCertificate = /* @__PURE__ */ createIcon({
732
684
  displayName: "NtdCertificate",
685
+ perfectStackX: CERT_SEAL.cx,
686
+ perfectStackY: CERT_SEAL.cy,
687
+ perfectStackSize: 0.2,
733
688
  paths: {
734
- solid: ({ primaryColor }) => /* @__PURE__ */ jsxs(Fragment, { children: [
735
- /* @__PURE__ */ jsx("rect", { x: "2", y: "4", width: "20", height: "14", rx: "2", fill: primaryColor }),
736
- /* @__PURE__ */ jsx("path", { d: "M6 8h12M6 11h8", stroke: "white", strokeWidth: "1.5", strokeLinecap: "round" }),
737
- /* @__PURE__ */ jsx("circle", { cx: "17", cy: "14", r: "3", fill: "white" }),
738
- /* @__PURE__ */ jsx(
739
- "path",
740
- {
741
- d: "M17 17v4l-1.5-1-1.5 1v-4M17 17v4l1.5-1 1.5 1v-4",
742
- stroke: primaryColor,
743
- strokeWidth: "1.5"
744
- }
745
- ),
746
- /* @__PURE__ */ jsx(
747
- "path",
748
- {
749
- d: "M16 13l1 1 2-2",
750
- stroke: primaryColor,
751
- strokeWidth: "1.5",
752
- strokeLinecap: "round",
753
- strokeLinejoin: "round"
754
- }
755
- )
756
- ] }),
757
- outline: ({ primaryColor, strokeWidth }) => /* @__PURE__ */ jsxs(Fragment, { children: [
758
- /* @__PURE__ */ jsx(
759
- "rect",
760
- {
761
- x: "2",
762
- y: "4",
763
- width: "20",
764
- height: "14",
765
- rx: "2",
766
- stroke: primaryColor,
767
- strokeWidth,
768
- fill: "none"
769
- }
770
- ),
771
- /* @__PURE__ */ jsx(
772
- "path",
773
- {
774
- d: "M6 8h12M6 11h8",
775
- stroke: primaryColor,
776
- strokeWidth,
777
- strokeLinecap: "round"
778
- }
779
- ),
780
- /* @__PURE__ */ jsx("circle", { cx: "17", cy: "14", r: "3", stroke: primaryColor, strokeWidth, fill: "none" }),
781
- /* @__PURE__ */ jsx(
782
- "path",
783
- {
784
- d: "M15.5 17v4l1.5-1 1.5 1v-4",
785
- stroke: primaryColor,
786
- strokeWidth,
787
- fill: "none"
788
- }
789
- ),
790
- /* @__PURE__ */ jsx(
791
- "path",
792
- {
793
- d: "M16 13l1 1 2-2",
794
- stroke: primaryColor,
795
- strokeWidth,
796
- strokeLinecap: "round",
797
- strokeLinejoin: "round"
798
- }
799
- )
689
+ solid: (p) => certificateFilled(p, p.primaryColor, p.accentColor, p.accentOpacity),
690
+ outline: ({ primaryColor, strokeWidth }) => /* @__PURE__ */ jsxs("g", { stroke: primaryColor, strokeWidth, strokeLinejoin: "miter", fill: "none", children: [
691
+ /* @__PURE__ */ jsx("path", { d: "M14 18H4a2 2 0 01-2-2V6a2 2 0 012-2h16a2 2 0 012 2v6.6" }),
692
+ /* @__PURE__ */ jsx("path", { d: CERT_TEXT }),
693
+ /* @__PURE__ */ jsx("circle", { ...CERT_SEAL }),
694
+ /* @__PURE__ */ jsx("path", { d: "M15 17.6v4.15l2-1.5 2 1.5V17.6" })
800
695
  ] }),
801
- duotone: swapDuotone(({ primaryColor, secondaryColor, secondaryOpacity, strokeWidth }) => /* @__PURE__ */ jsxs(Fragment, { children: [
802
- /* @__PURE__ */ jsx(
803
- "rect",
804
- {
805
- x: "2",
806
- y: "4",
807
- width: "20",
808
- height: "14",
809
- rx: "2",
810
- fill: secondaryColor,
811
- opacity: secondaryOpacity
812
- }
813
- ),
814
- /* @__PURE__ */ jsx(
815
- "rect",
816
- {
817
- x: "2",
818
- y: "4",
819
- width: "20",
820
- height: "14",
821
- rx: "2",
822
- stroke: primaryColor,
823
- strokeWidth,
824
- fill: "none"
825
- }
826
- ),
827
- /* @__PURE__ */ jsx(
828
- "path",
829
- {
830
- d: "M6 8h12M6 11h8",
831
- stroke: primaryColor,
832
- strokeWidth,
833
- strokeLinecap: "round"
834
- }
835
- ),
836
- /* @__PURE__ */ jsx("circle", { cx: "17", cy: "14", r: "3", fill: primaryColor }),
837
- /* @__PURE__ */ jsx("path", { d: "M15.5 17v4l1.5-1 1.5 1v-4", fill: primaryColor }),
838
- /* @__PURE__ */ jsx(
839
- "path",
840
- {
841
- d: "M16 13l1 1 2-2",
842
- stroke: "white",
843
- strokeWidth: "1.5",
844
- strokeLinecap: "round",
845
- strokeLinejoin: "round"
846
- }
847
- )
848
- ] })),
849
- vivid: ({ primaryColor, secondaryColor: _secondaryColor }) => /* @__PURE__ */ jsxs(Fragment, { children: [
850
- /* @__PURE__ */ jsx("rect", { x: "2", y: "4", width: "20", height: "14", rx: "2", fill: primaryColor }),
851
- /* @__PURE__ */ jsx("rect", { x: "2", y: "4", width: "20", height: "14", rx: "2", fill: "white", opacity: "0.08" }),
852
- /* @__PURE__ */ jsx("circle", { cx: "17", cy: "14", r: "3", fill: "white" }),
853
- /* @__PURE__ */ jsx("path", { d: "M6 8h12M6 11h8", stroke: "white", strokeWidth: "1", strokeLinecap: "round" }),
854
- /* @__PURE__ */ jsx("path", { d: "M17 17v4l-1.5-1-1.5 1v-4M17 17v4l1.5-1 1.5 1v-4", stroke: "white", strokeWidth: "1" }),
855
- /* @__PURE__ */ jsx(
856
- "path",
857
- {
858
- d: "M16 13l1 1 2-2",
859
- stroke: "white",
860
- strokeWidth: "1",
861
- strokeLinecap: "round",
862
- strokeLinejoin: "round"
863
- }
864
- )
865
- ] })
696
+ duotone: (p) => certificateFilled(p, p.secondaryColor, p.secondaryColor, 1),
697
+ vivid: (p) => certificateFilled(p, p.secondaryColor, p.accentColor, p.accentOpacity)
866
698
  }
867
699
  });
700
+ const QUIZ_SHEET = { x: 3, y: 2, width: 18, height: 20, rx: 2 };
701
+ const QUIZ_QUESTION = "M6 6.5h12";
702
+ const QUIZ_BOXES = "M6 10.75h2.75v2.75H6zM6 15.75h2.75v2.75H6z";
703
+ const QUIZ_ANSWERS = "M11 12.1h7M11 17.1h5";
868
704
  const NtdQuiz = /* @__PURE__ */ createIcon({
869
705
  displayName: "NtdQuiz",
870
706
  paths: {
871
- solid: ({ primaryColor }) => /* @__PURE__ */ jsxs(Fragment, { children: [
872
- /* @__PURE__ */ jsx("rect", { x: "3", y: "2", width: "18", height: "20", rx: "2", fill: primaryColor }),
873
- /* @__PURE__ */ jsx("circle", { cx: "7", cy: "7", r: "1.5", fill: "white" }),
874
- /* @__PURE__ */ jsx("circle", { cx: "7", cy: "12", r: "1.5", fill: "white" }),
875
- /* @__PURE__ */ jsx("circle", { cx: "7", cy: "17", r: "1.5", fill: "white" }),
876
- /* @__PURE__ */ jsx("path", { d: "M11 7h7M11 12h7M11 17h5", stroke: "white", strokeWidth: "1.5", strokeLinecap: "round" }),
877
- /* @__PURE__ */ jsx(
878
- "path",
879
- {
880
- d: "M6.5 6.5l1 1M6.5 7.5l1-1",
881
- stroke: primaryColor,
882
- strokeWidth: "1",
883
- strokeLinecap: "round"
884
- }
885
- )
886
- ] }),
887
- outline: ({ primaryColor, strokeWidth }) => /* @__PURE__ */ jsxs(Fragment, { children: [
888
- /* @__PURE__ */ jsx(
889
- "rect",
890
- {
891
- x: "3",
892
- y: "2",
893
- width: "18",
894
- height: "20",
895
- rx: "2",
896
- stroke: primaryColor,
897
- strokeWidth,
898
- fill: "none"
899
- }
900
- ),
901
- /* @__PURE__ */ jsx("circle", { cx: "7", cy: "7", r: "1.5", stroke: primaryColor, strokeWidth, fill: "none" }),
902
- /* @__PURE__ */ jsx(
903
- "circle",
904
- {
905
- cx: "7",
906
- cy: "12",
907
- r: "1.5",
908
- stroke: primaryColor,
909
- strokeWidth,
910
- fill: "none"
911
- }
912
- ),
913
- /* @__PURE__ */ jsx(
914
- "circle",
915
- {
916
- cx: "7",
917
- cy: "17",
918
- r: "1.5",
919
- stroke: primaryColor,
920
- strokeWidth,
921
- fill: "none"
922
- }
923
- ),
924
- /* @__PURE__ */ jsx(
925
- "path",
926
- {
927
- d: "M11 7h7M11 12h7M11 17h5",
928
- stroke: primaryColor,
929
- strokeWidth,
930
- strokeLinecap: "round"
931
- }
932
- )
707
+ solid: ({ primaryColor, accentColor, accentOpacity, strokeWidth }) => /* @__PURE__ */ jsxs(Fragment, { children: [
708
+ /* @__PURE__ */ jsx("rect", { ...QUIZ_SHEET, fill: primaryColor }),
709
+ /* @__PURE__ */ jsxs("g", { stroke: accentColor, opacity: accentOpacity, fill: "none", children: [
710
+ /* @__PURE__ */ jsx("path", { d: QUIZ_QUESTION, strokeWidth: "1.5" }),
711
+ /* @__PURE__ */ jsx("path", { d: QUIZ_BOXES, strokeWidth, strokeLinejoin: "miter" }),
712
+ /* @__PURE__ */ jsx("path", { d: QUIZ_ANSWERS, strokeWidth: "1.25" })
713
+ ] })
933
714
  ] }),
934
- duotone: swapDuotone(({ primaryColor, secondaryColor, secondaryOpacity, strokeWidth }) => /* @__PURE__ */ jsxs(Fragment, { children: [
935
- /* @__PURE__ */ jsx(
936
- "rect",
937
- {
938
- x: "3",
939
- y: "2",
940
- width: "18",
941
- height: "20",
942
- rx: "2",
943
- fill: secondaryColor,
944
- opacity: secondaryOpacity
945
- }
946
- ),
947
- /* @__PURE__ */ jsx(
948
- "rect",
949
- {
950
- x: "3",
951
- y: "2",
952
- width: "18",
953
- height: "20",
954
- rx: "2",
955
- stroke: primaryColor,
956
- strokeWidth,
957
- fill: "none"
958
- }
959
- ),
960
- /* @__PURE__ */ jsx("circle", { cx: "7", cy: "7", r: "1.5", fill: primaryColor }),
961
- /* @__PURE__ */ jsx(
962
- "circle",
963
- {
964
- cx: "7",
965
- cy: "12",
966
- r: "1.5",
967
- stroke: primaryColor,
968
- strokeWidth,
969
- fill: "none"
970
- }
971
- ),
972
- /* @__PURE__ */ jsx(
973
- "circle",
974
- {
975
- cx: "7",
976
- cy: "17",
977
- r: "1.5",
978
- stroke: primaryColor,
979
- strokeWidth,
980
- fill: "none"
981
- }
982
- ),
983
- /* @__PURE__ */ jsx(
984
- "path",
985
- {
986
- d: "M11 7h7M11 12h7M11 17h5",
987
- stroke: primaryColor,
988
- strokeWidth,
989
- strokeLinecap: "round"
990
- }
991
- )
992
- ] })),
993
- vivid: ({ primaryColor, secondaryColor: _secondaryColor }) => /* @__PURE__ */ jsxs(Fragment, { children: [
994
- /* @__PURE__ */ jsx("rect", { x: "3", y: "2", width: "18", height: "20", rx: "2", fill: primaryColor }),
995
- /* @__PURE__ */ jsx("rect", { x: "3", y: "2", width: "18", height: "20", rx: "2", fill: "white", opacity: "0.08" }),
996
- /* @__PURE__ */ jsx("circle", { cx: "7", cy: "7", r: "1.5", fill: "white" }),
997
- /* @__PURE__ */ jsx("circle", { cx: "7", cy: "12", r: "1.5", fill: "white" }),
998
- /* @__PURE__ */ jsx("circle", { cx: "7", cy: "17", r: "1.5", fill: "white" }),
999
- /* @__PURE__ */ jsx("path", { d: "M11 7h7M11 12h7M11 17h5", stroke: "white", strokeWidth: "1", strokeLinecap: "round" }),
1000
- /* @__PURE__ */ jsx("path", { d: "M6.5 6.5l1 1M6.5 7.5l1-1", stroke: "white", strokeWidth: "1", strokeLinecap: "round" })
1001
- ] })
1002
- }
1003
- });
1004
- const NtdExam = /* @__PURE__ */ createIcon({
1005
- displayName: "NtdExam",
1006
- paths: {
1007
- solid: ({ primaryColor }) => /* @__PURE__ */ jsxs(Fragment, { children: [
1008
- /* @__PURE__ */ jsx("path", { d: "M4 4a2 2 0 012-2h8l6 6v14a2 2 0 01-2 2H6a2 2 0 01-2-2V4z", fill: primaryColor }),
1009
- /* @__PURE__ */ jsx("path", { d: "M14 2v6h6", fill: "white", opacity: "0.3" }),
1010
- /* @__PURE__ */ jsx("path", { d: "M8 12h8M8 15h8M8 18h5", stroke: "white", strokeWidth: "1.5", strokeLinecap: "round" }),
1011
- /* @__PURE__ */ jsx("text", { x: "12", y: "10", textAnchor: "middle", fill: "white", fontSize: "5", fontWeight: "bold", children: "A+" })
1012
- ] }),
1013
- outline: ({ primaryColor, strokeWidth }) => /* @__PURE__ */ jsxs(Fragment, { children: [
1014
- /* @__PURE__ */ jsx(
1015
- "path",
1016
- {
1017
- d: "M4 4a2 2 0 012-2h8l6 6v14a2 2 0 01-2 2H6a2 2 0 01-2-2V4z",
1018
- stroke: primaryColor,
1019
- strokeWidth,
1020
- fill: "none"
1021
- }
1022
- ),
1023
- /* @__PURE__ */ jsx(
1024
- "path",
1025
- {
1026
- d: "M14 2v6h6",
1027
- stroke: primaryColor,
1028
- strokeWidth,
1029
- strokeLinecap: "round",
1030
- strokeLinejoin: "round"
1031
- }
1032
- ),
1033
- /* @__PURE__ */ jsx(
1034
- "path",
1035
- {
1036
- d: "M8 12h8M8 15h8M8 18h5",
1037
- stroke: primaryColor,
1038
- strokeWidth,
1039
- strokeLinecap: "round"
1040
- }
1041
- ),
1042
- /* @__PURE__ */ jsx("text", { x: "12", y: "10", textAnchor: "middle", fill: primaryColor, fontSize: "5", fontWeight: "bold", children: "A+" })
1043
- ] }),
1044
- duotone: swapDuotone(({ primaryColor, secondaryColor, secondaryOpacity, strokeWidth }) => /* @__PURE__ */ jsxs(Fragment, { children: [
1045
- /* @__PURE__ */ jsx(
1046
- "path",
1047
- {
1048
- d: "M4 4a2 2 0 012-2h8l6 6v14a2 2 0 01-2 2H6a2 2 0 01-2-2V4z",
1049
- fill: secondaryColor,
1050
- opacity: secondaryOpacity
1051
- }
1052
- ),
1053
- /* @__PURE__ */ jsx("path", { d: "M14 2v6h6", fill: primaryColor, opacity: "0.3" }),
1054
- /* @__PURE__ */ jsx(
1055
- "path",
1056
- {
1057
- d: "M4 4a2 2 0 012-2h8l6 6v14a2 2 0 01-2 2H6a2 2 0 01-2-2V4z",
1058
- stroke: primaryColor,
1059
- strokeWidth,
1060
- fill: "none"
1061
- }
1062
- ),
1063
- /* @__PURE__ */ jsx(
1064
- "path",
1065
- {
1066
- d: "M14 2v6h6",
1067
- stroke: primaryColor,
1068
- strokeWidth,
1069
- strokeLinecap: "round",
1070
- strokeLinejoin: "round"
1071
- }
1072
- ),
1073
- /* @__PURE__ */ jsx(
1074
- "path",
1075
- {
1076
- d: "M8 12h8M8 15h8M8 18h5",
1077
- stroke: primaryColor,
1078
- strokeWidth,
1079
- strokeLinecap: "round"
1080
- }
1081
- )
1082
- ] })),
1083
- vivid: ({ primaryColor, secondaryColor: _secondaryColor }) => /* @__PURE__ */ jsxs(Fragment, { children: [
1084
- /* @__PURE__ */ jsx("path", { d: "M4 4a2 2 0 012-2h8l6 6v14a2 2 0 01-2 2H6a2 2 0 01-2-2V4z", fill: primaryColor }),
1085
- /* @__PURE__ */ jsx(
1086
- "path",
1087
- {
1088
- d: "M4 4a2 2 0 012-2h8l6 6v14a2 2 0 01-2 2H6a2 2 0 01-2-2V4z",
1089
- fill: "white",
1090
- opacity: "0.08"
1091
- }
1092
- ),
1093
- /* @__PURE__ */ jsx("path", { d: "M14 2v6h6", fill: "white", opacity: "0.3" }),
1094
- /* @__PURE__ */ jsx("path", { d: "M8 12h8M8 15h8M8 18h5", stroke: "white", strokeWidth: "1", strokeLinecap: "round" })
715
+ outline: ({ primaryColor, strokeWidth }) => /* @__PURE__ */ jsxs("g", { stroke: primaryColor, strokeWidth, strokeLinejoin: "miter", fill: "none", children: [
716
+ /* @__PURE__ */ jsx("rect", { ...QUIZ_SHEET }),
717
+ /* @__PURE__ */ jsx("path", { d: QUIZ_QUESTION }),
718
+ /* @__PURE__ */ jsx("path", { d: QUIZ_BOXES }),
719
+ /* @__PURE__ */ jsx("path", { d: QUIZ_ANSWERS })
1095
720
  ] })
1096
721
  }
1097
722
  });
@@ -1294,10 +919,19 @@ const NtdBackpack = /* @__PURE__ */ createIcon({
1294
919
  ] })
1295
920
  }
1296
921
  });
1297
- const CALC_BODY = { x: 4, y: 2, width: 16, height: 20, rx: 2 };
1298
- const CALC_DISPLAY = { x: 6.5, y: 4.5, width: 11, height: 4.5, rx: 1 };
1299
- const CALC_KEYS = "M6.6 11.2h2.6v2.2H6.6zM10.7 11.2h2.6v2.2h-2.6zM14.8 11.2h2.6v2.2h-2.6zM6.6 14.6h2.6v2.2H6.6zM10.7 14.6h2.6v2.2h-2.6zM14.8 14.6h2.6v2.2h-2.6zM6.6 18h2.6v2.2H6.6zM10.7 18h6.7v2.2h-6.7z";
1300
- function calculatorFilled({ primaryColor, accentColor, accentOpacity }, display, displayOpacity) {
922
+ const CALC_BODY = { x: 4.6, y: 2, width: 14.8, height: 20, rx: 2 };
923
+ const CALC_DISPLAY = { x: 6.8, y: 4.5, width: 10.4, height: 4.5, rx: 1 };
924
+ const CALC_KEYS = "M6.8 11h2.8v2.4H6.8zM10.6 11h2.8v2.4h-2.8zM14.4 11h2.8v2.4h-2.8zM6.8 14.4h2.8v2.4H6.8zM10.6 14.4h2.8v2.4h-2.8zM14.4 14.4h2.8v2.4h-2.8zM6.8 17.8h2.8v2.4H6.8zM10.6 17.8h6.6v2.4h-6.6z";
925
+ const CALC_DOTS = [
926
+ [8.2, 12.2],
927
+ [12, 12.2],
928
+ [15.8, 12.2],
929
+ [8.2, 15.6],
930
+ [12, 15.6],
931
+ [15.8, 15.6],
932
+ [8.2, 19]
933
+ ];
934
+ function calculatorFilled({ primaryColor, accentColor, accentOpacity, strokeWidth }, display, displayOpacity) {
1301
935
  return /* @__PURE__ */ jsxs(Fragment, { children: [
1302
936
  /* @__PURE__ */ jsx("rect", { ...CALC_BODY, fill: primaryColor }),
1303
937
  /* @__PURE__ */ jsx("rect", { ...CALC_DISPLAY, fill: display, opacity: displayOpacity }),
@@ -1306,7 +940,7 @@ function calculatorFilled({ primaryColor, accentColor, accentOpacity }, display,
1306
940
  {
1307
941
  d: CALC_KEYS,
1308
942
  stroke: accentColor,
1309
- strokeWidth: "1.1",
943
+ strokeWidth: strokeWidth * 0.6,
1310
944
  strokeLinejoin: "miter",
1311
945
  opacity: accentOpacity,
1312
946
  fill: "none"
@@ -1319,47 +953,20 @@ const NtdCalculator = /* @__PURE__ */ createIcon({
1319
953
  paths: {
1320
954
  solid: (props) => calculatorFilled(props, props.accentColor, props.accentOpacity),
1321
955
  outline: ({ primaryColor, strokeWidth }) => /* @__PURE__ */ jsxs(Fragment, { children: [
1322
- /* @__PURE__ */ jsx(
1323
- "rect",
1324
- {
1325
- x: "4",
1326
- y: "2",
1327
- width: "16",
1328
- height: "20",
1329
- rx: "2",
1330
- stroke: primaryColor,
1331
- strokeWidth,
1332
- fill: "none"
1333
- }
1334
- ),
1335
- /* @__PURE__ */ jsx(
1336
- "rect",
1337
- {
1338
- x: "6",
1339
- y: "4",
1340
- width: "12",
1341
- height: "5",
1342
- rx: "1",
1343
- stroke: primaryColor,
1344
- strokeWidth,
1345
- fill: "none"
1346
- }
1347
- ),
1348
- /* @__PURE__ */ jsx("circle", { cx: "8", cy: "12", r: "1", fill: primaryColor }),
1349
- /* @__PURE__ */ jsx("circle", { cx: "12", cy: "12", r: "1", fill: primaryColor }),
1350
- /* @__PURE__ */ jsx("circle", { cx: "16", cy: "12", r: "1", fill: primaryColor }),
1351
- /* @__PURE__ */ jsx("circle", { cx: "8", cy: "16", r: "1", fill: primaryColor }),
1352
- /* @__PURE__ */ jsx("circle", { cx: "12", cy: "16", r: "1", fill: primaryColor }),
1353
- /* @__PURE__ */ jsx("circle", { cx: "16", cy: "16", r: "1", fill: primaryColor }),
1354
- /* @__PURE__ */ jsx("circle", { cx: "8", cy: "20", r: "1", fill: primaryColor }),
1355
- /* @__PURE__ */ jsx("rect", { x: "11", y: "19", width: "6", height: "2", rx: "0.5", fill: primaryColor })
956
+ /* @__PURE__ */ jsxs("g", { stroke: primaryColor, strokeWidth, fill: "none", children: [
957
+ /* @__PURE__ */ jsx("rect", { ...CALC_BODY }),
958
+ /* @__PURE__ */ jsx("rect", { ...CALC_DISPLAY })
959
+ ] }),
960
+ /* @__PURE__ */ jsxs("g", { fill: primaryColor, children: [
961
+ CALC_DOTS.map(([cx, cy]) => /* @__PURE__ */ jsx("circle", { cx, cy, r: "1" }, `${cx},${cy}`)),
962
+ /* @__PURE__ */ jsx("rect", { x: "10.6", y: "18.4", width: "6.6", height: "1.2", rx: "0.5" })
963
+ ] })
1356
964
  ] }),
1357
965
  vivid: (props) => calculatorFilled(props, props.secondaryColor, 1)
1358
966
  }
1359
967
  });
1360
968
  const educationIcons = {
1361
969
  NtdGraduationCap,
1362
- NtdDiploma,
1363
970
  NtdSchool,
1364
971
  NtdUniversity,
1365
972
  NtdBook,
@@ -1371,19 +978,158 @@ const educationIcons = {
1371
978
  NtdWebinar,
1372
979
  NtdCertificate,
1373
980
  NtdQuiz,
1374
- NtdExam,
1375
981
  NtdFlashcard,
1376
982
  NtdBackpack,
1377
983
  NtdCalculator
1378
984
  };
985
+ const SCROLL_SHEET = { x: 6, y: 4.5, width: 12, height: 15 };
986
+ const SCROLL_ROLL_TOP = { x: 3.5, y: 3, width: 17, height: 3.5, rx: 1.75 };
987
+ const SCROLL_ROLL_BOTTOM = { x: 3.5, y: 17.5, width: 17, height: 3.5, rx: 1.75 };
988
+ const SCROLL_WRITING = "M8.5 10h7M8.5 12.5h7M8.5 15h4.5";
989
+ const SCROLL_EASE = { calcMode: "spline", keySplines: "0.34 1 0.64 1" };
990
+ function scrollParts(sheet, rolls, writing, writingOpacity, lineWidth, stacked, outline) {
991
+ const paint = (color) => outline ? { stroke: color, strokeWidth: lineWidth, fill: "none", strokeLinejoin: "miter" } : { fill: color };
992
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
993
+ /* @__PURE__ */ jsxs("rect", { ...SCROLL_SHEET, ...paint(sheet), children: [
994
+ /* @__PURE__ */ jsx("animate", { attributeName: "y", from: "10.5", to: "4.5", dur: "0.7s", fill: "freeze", ...SCROLL_EASE }),
995
+ /* @__PURE__ */ jsx(
996
+ "animate",
997
+ {
998
+ attributeName: "height",
999
+ from: "3",
1000
+ to: "15",
1001
+ dur: "0.7s",
1002
+ fill: "freeze",
1003
+ ...SCROLL_EASE
1004
+ }
1005
+ )
1006
+ ] }),
1007
+ !stacked && /* @__PURE__ */ jsx("path", { d: SCROLL_WRITING, stroke: writing, strokeWidth: lineWidth, opacity: writingOpacity, children: /* @__PURE__ */ jsx(
1008
+ "animate",
1009
+ {
1010
+ attributeName: "stroke-opacity",
1011
+ values: "0;0;1",
1012
+ keyTimes: "0;0.6;1",
1013
+ dur: "0.7s",
1014
+ fill: "freeze"
1015
+ }
1016
+ ) }),
1017
+ /* @__PURE__ */ jsxs("g", { children: [
1018
+ /* @__PURE__ */ jsx("rect", { ...SCROLL_ROLL_TOP, ...paint(rolls) }),
1019
+ /* @__PURE__ */ jsx(
1020
+ "animateTransform",
1021
+ {
1022
+ attributeName: "transform",
1023
+ type: "translate",
1024
+ from: "0 6",
1025
+ to: "0 0",
1026
+ dur: "0.7s",
1027
+ fill: "freeze",
1028
+ ...SCROLL_EASE
1029
+ }
1030
+ )
1031
+ ] }),
1032
+ /* @__PURE__ */ jsxs("g", { children: [
1033
+ /* @__PURE__ */ jsx("rect", { ...SCROLL_ROLL_BOTTOM, ...paint(rolls) }),
1034
+ /* @__PURE__ */ jsx(
1035
+ "animateTransform",
1036
+ {
1037
+ attributeName: "transform",
1038
+ type: "translate",
1039
+ from: "0 -6",
1040
+ to: "0 0",
1041
+ dur: "0.7s",
1042
+ fill: "freeze",
1043
+ ...SCROLL_EASE
1044
+ }
1045
+ )
1046
+ ] })
1047
+ ] });
1048
+ }
1049
+ const NtdScroll = /* @__PURE__ */ createIcon({
1050
+ displayName: "NtdScroll",
1051
+ animated: true,
1052
+ perfectStackX: 12,
1053
+ perfectStackY: 12,
1054
+ perfectStackSize: 0.45,
1055
+ paths: {
1056
+ solid: ({ primaryColor, accentColor, accentOpacity, strokeWidth, stacked }) => scrollParts(
1057
+ primaryColor,
1058
+ primaryColor,
1059
+ accentColor,
1060
+ accentOpacity,
1061
+ strokeWidth,
1062
+ stacked,
1063
+ false
1064
+ ),
1065
+ outline: ({ primaryColor, strokeWidth, stacked }) => scrollParts(primaryColor, primaryColor, primaryColor, 1, strokeWidth, stacked, true),
1066
+ duotone: ({ primaryColor, secondaryColor, strokeWidth, stacked }) => scrollParts(primaryColor, secondaryColor, secondaryColor, 1, strokeWidth, stacked, false),
1067
+ vivid: ({ primaryColor, secondaryColor, accentColor, accentOpacity, strokeWidth, stacked }) => scrollParts(
1068
+ primaryColor,
1069
+ secondaryColor,
1070
+ accentColor,
1071
+ accentOpacity,
1072
+ strokeWidth,
1073
+ stacked,
1074
+ false
1075
+ )
1076
+ }
1077
+ });
1078
+ const ROLLED_BODY = { x: 3, y: 8, width: 18, height: 8, rx: 4 };
1079
+ const ROLLED_SPIRAL = "M7 14a2 2 0 110-4a1 1 0 010 2";
1080
+ const ROLLED_RIBBON = { x: 13.25, y: 8, width: 1.75, height: 8 };
1081
+ function rolledFilled(body, end, detail, detailOpacity, width, uid) {
1082
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
1083
+ /* @__PURE__ */ jsx("rect", { ...ROLLED_BODY, fill: body }),
1084
+ within(
1085
+ uid,
1086
+ "rolled",
1087
+ /* @__PURE__ */ jsx("rect", { ...ROLLED_BODY }),
1088
+ /* @__PURE__ */ jsx("rect", { ...ROLLED_RIBBON, fill: detail, opacity: detailOpacity })
1089
+ ),
1090
+ /* @__PURE__ */ jsx("circle", { cx: "7", cy: "12", r: "4", fill: end }),
1091
+ /* @__PURE__ */ jsx(
1092
+ "path",
1093
+ {
1094
+ d: "M7 8a4 4 0 010 8",
1095
+ stroke: detail,
1096
+ strokeWidth: width * 0.75,
1097
+ opacity: detailOpacity,
1098
+ fill: "none"
1099
+ }
1100
+ ),
1101
+ /* @__PURE__ */ jsx(
1102
+ "path",
1103
+ {
1104
+ d: ROLLED_SPIRAL,
1105
+ stroke: detail,
1106
+ strokeWidth: width,
1107
+ opacity: detailOpacity,
1108
+ fill: "none"
1109
+ }
1110
+ )
1111
+ ] });
1112
+ }
1113
+ const NtdScrollRolled = /* @__PURE__ */ createIcon({
1114
+ displayName: "NtdScrollRolled",
1115
+ paths: {
1116
+ solid: ({ primaryColor, accentColor, accentOpacity, strokeWidth, uid }) => rolledFilled(primaryColor, primaryColor, accentColor, accentOpacity, strokeWidth, uid),
1117
+ outline: ({ primaryColor, strokeWidth }) => /* @__PURE__ */ jsxs("g", { stroke: primaryColor, strokeWidth, fill: "none", strokeLinejoin: "miter", children: [
1118
+ /* @__PURE__ */ jsx("rect", { ...ROLLED_BODY }),
1119
+ /* @__PURE__ */ jsx("circle", { cx: "7", cy: "12", r: "4" }),
1120
+ /* @__PURE__ */ jsx("path", { d: ROLLED_SPIRAL }),
1121
+ /* @__PURE__ */ jsx("path", { d: "M13.25 8v8M15 8v8" })
1122
+ ] }),
1123
+ duotone: ({ primaryColor, secondaryColor, strokeWidth, uid }) => rolledFilled(primaryColor, secondaryColor, primaryColor, 1, strokeWidth, uid),
1124
+ vivid: ({ primaryColor, secondaryColor, accentColor, accentOpacity, strokeWidth, uid }) => rolledFilled(primaryColor, secondaryColor, accentColor, accentOpacity, strokeWidth, uid)
1125
+ }
1126
+ });
1379
1127
  export {
1380
1128
  NtdBackpack,
1381
1129
  NtdBook,
1382
1130
  NtdBookBookmark,
1383
1131
  NtdCalculator,
1384
1132
  NtdCertificate,
1385
- NtdDiploma,
1386
- NtdExam,
1387
1133
  NtdFlashcard,
1388
1134
  NtdGraduationCap,
1389
1135
  NtdNotebook,
@@ -1393,6 +1139,8 @@ export {
1393
1139
  NtdPencil,
1394
1140
  NtdQuiz,
1395
1141
  NtdSchool,
1142
+ NtdScroll,
1143
+ NtdScrollRolled,
1396
1144
  NtdUniversity,
1397
1145
  NtdWebinar,
1398
1146
  educationIcons