@nice2dev/icons 1.4.2 → 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 +53 -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,10 +1,7 @@
1
1
  import { jsxs, Fragment, jsx } from "react/jsx-runtime";
2
2
  import { createIcon } from "../createIcon.js";
3
3
  import { paperIcon, swapDuotone } from "../iconParts.js";
4
- const NtdContract = /* @__PURE__ */ paperIcon(
5
- "NtdContract",
6
- "M7.5 12h9M7.5 15.5h9M7.5 19h3.5M13 19h3.5"
7
- );
4
+ const NtdContract = /* @__PURE__ */ paperIcon("NtdContract", "M7.5 13h9M7.5 19h3M13.5 19h3");
8
5
  const NtdLegalDocument = /* @__PURE__ */ createIcon({
9
6
  displayName: "NtdLegalDocument",
10
7
  paths: {
@@ -844,109 +841,6 @@ const NtdCompliance = /* @__PURE__ */ createIcon({
844
841
  ] })
845
842
  }
846
843
  });
847
- const NtdCertified = /* @__PURE__ */ createIcon({
848
- displayName: "NtdCertified",
849
- paths: {
850
- solid: ({ primaryColor }) => /* @__PURE__ */ jsxs(Fragment, { children: [
851
- /* @__PURE__ */ jsx(
852
- "path",
853
- {
854
- d: "M12 2l2.4 4.8 5.3.8-3.8 3.7.9 5.3-4.8-2.5-4.8 2.5.9-5.3-3.8-3.7 5.3-.8L12 2z",
855
- fill: primaryColor
856
- }
857
- ),
858
- /* @__PURE__ */ jsx(
859
- "path",
860
- {
861
- d: "M9 12l2 2 4-4",
862
- stroke: "white",
863
- strokeWidth: "1.5",
864
- strokeLinecap: "round",
865
- strokeLinejoin: "round"
866
- }
867
- )
868
- ] }),
869
- outline: ({ primaryColor, strokeWidth }) => /* @__PURE__ */ jsxs(Fragment, { children: [
870
- /* @__PURE__ */ jsx(
871
- "path",
872
- {
873
- d: "M12 2l2.4 4.8 5.3.8-3.8 3.7.9 5.3-4.8-2.5-4.8 2.5.9-5.3-3.8-3.7 5.3-.8L12 2z",
874
- stroke: primaryColor,
875
- strokeWidth,
876
- fill: "none",
877
- strokeLinejoin: "round"
878
- }
879
- ),
880
- /* @__PURE__ */ jsx(
881
- "path",
882
- {
883
- d: "M9 11l2 2 4-4",
884
- stroke: primaryColor,
885
- strokeWidth,
886
- strokeLinecap: "round",
887
- strokeLinejoin: "round"
888
- }
889
- )
890
- ] }),
891
- duotone: ({ primaryColor, secondaryColor, secondaryOpacity, strokeWidth }) => /* @__PURE__ */ jsxs(Fragment, { children: [
892
- /* @__PURE__ */ jsx(
893
- "path",
894
- {
895
- d: "M12 2l2.4 4.8 5.3.8-3.8 3.7.9 5.3-4.8-2.5-4.8 2.5.9-5.3-3.8-3.7 5.3-.8L12 2z",
896
- fill: secondaryColor,
897
- opacity: secondaryOpacity
898
- }
899
- ),
900
- /* @__PURE__ */ jsx(
901
- "path",
902
- {
903
- d: "M12 2l2.4 4.8 5.3.8-3.8 3.7.9 5.3-4.8-2.5-4.8 2.5.9-5.3-3.8-3.7 5.3-.8L12 2z",
904
- stroke: primaryColor,
905
- strokeWidth,
906
- fill: "none",
907
- strokeLinejoin: "round"
908
- }
909
- ),
910
- /* @__PURE__ */ jsx(
911
- "path",
912
- {
913
- d: "M9 11l2 2 4-4",
914
- stroke: primaryColor,
915
- strokeWidth,
916
- strokeLinecap: "round",
917
- strokeLinejoin: "round"
918
- }
919
- )
920
- ] }),
921
- vivid: ({ primaryColor, secondaryColor: _secondaryColor }) => /* @__PURE__ */ jsxs(Fragment, { children: [
922
- /* @__PURE__ */ jsx(
923
- "path",
924
- {
925
- d: "M12 2l2.4 4.8 5.3.8-3.8 3.7.9 5.3-4.8-2.5-4.8 2.5.9-5.3-3.8-3.7 5.3-.8L12 2z",
926
- fill: primaryColor
927
- }
928
- ),
929
- /* @__PURE__ */ jsx(
930
- "path",
931
- {
932
- d: "M12 2l2.4 4.8 5.3.8-3.8 3.7.9 5.3-4.8-2.5-4.8 2.5.9-5.3-3.8-3.7 5.3-.8L12 2z",
933
- fill: "white",
934
- opacity: "0.1"
935
- }
936
- ),
937
- /* @__PURE__ */ jsx(
938
- "path",
939
- {
940
- d: "M9 12l2 2 4-4",
941
- stroke: "white",
942
- strokeWidth: "1.8",
943
- strokeLinecap: "round",
944
- strokeLinejoin: "round"
945
- }
946
- )
947
- ] })
948
- }
949
- });
950
844
  const NtdAudit = /* @__PURE__ */ createIcon({
951
845
  displayName: "NtdAudit",
952
846
  paths: {
@@ -1084,13 +978,11 @@ const legalIcons = {
1084
978
  NtdTrademark,
1085
979
  NtdPatent,
1086
980
  NtdCompliance,
1087
- NtdCertified,
1088
981
  NtdAudit
1089
982
  };
1090
983
  export {
1091
984
  NtdAudit,
1092
985
  NtdCcpa,
1093
- NtdCertified,
1094
986
  NtdCompliance,
1095
987
  NtdContract,
1096
988
  NtdCookieConsent,
@@ -985,10 +985,11 @@ const NtdPalette = /* @__PURE__ */ createIcon({
985
985
  ] })
986
986
  }
987
987
  });
988
- const BRUSH_HANDLE = "M19.35 2.81A1.3 1.3 0 0 1 21.19 4.65L13.91 12.49L11.51 10.09Z";
989
- const BRUSH_FERRULE = "M11.08 9.67L14.33 12.92L11.36 15.89L8.11 12.64Z";
990
- const BRUSH_BRISTLES = "M8.11 12.64L11.36 15.89C9.95 18.43 7.76 20.49 2.81 21.19C3.51 16.24 5.57 14.05 8.11 12.64Z";
991
- const BRUSH_CUTS = "M10.37 8.96L15.04 13.63M7.4 11.93L12.07 16.6";
988
+ const BRUSH_TURN = "rotate(45 12 12)";
989
+ const BRUSH_HANDLE = "M11 0.6A1 1 0 0 1 13 0.6L13.3 10.4H10.7Z";
990
+ const BRUSH_FERRULE = "M10.7 10.4H13.3L14.1 13.2H9.9Z";
991
+ const BRUSH_BRISTLES = "M9.9 13.2H14.1C14.8 15.4 15.2 18.4 12 24.2C8.8 18.4 9.2 15.4 9.9 13.2Z";
992
+ const BRUSH_CUTS = "M8 10.4H16M8 13.2H16";
992
993
  function brushFilled(handle, ferrule, bristles, ferruleOpacity = 1) {
993
994
  return /* @__PURE__ */ jsxs(Fragment, { children: [
994
995
  /* @__PURE__ */ jsx("path", { d: BRUSH_HANDLE, fill: handle }),
@@ -999,26 +1000,36 @@ function brushFilled(handle, ferrule, bristles, ferruleOpacity = 1) {
999
1000
  const NtdBrush = /* @__PURE__ */ createIcon({
1000
1001
  displayName: "NtdBrush",
1001
1002
  paths: {
1002
- solid: ({ primaryColor, accentColor, accentOpacity, uid }) => /* @__PURE__ */ jsxs(Fragment, { children: [
1003
+ solid: ({ primaryColor, accentColor, accentOpacity, strokeWidth, uid }) => /* @__PURE__ */ jsxs("g", { transform: BRUSH_TURN, children: [
1003
1004
  brushFilled(primaryColor, primaryColor, primaryColor),
1004
1005
  within(
1005
1006
  uid,
1006
1007
  "brush",
1007
1008
  /* @__PURE__ */ jsx("path", { d: `${BRUSH_HANDLE}${BRUSH_FERRULE}${BRUSH_BRISTLES}` }),
1008
- /* @__PURE__ */ jsx("path", { d: BRUSH_CUTS, stroke: accentColor, strokeWidth: "1", opacity: accentOpacity })
1009
+ /* @__PURE__ */ jsx(
1010
+ "path",
1011
+ {
1012
+ d: BRUSH_CUTS,
1013
+ stroke: accentColor,
1014
+ strokeWidth: strokeWidth * 0.8,
1015
+ opacity: accentOpacity
1016
+ }
1017
+ )
1009
1018
  )
1010
1019
  ] }),
1011
1020
  outline: ({ primaryColor, strokeWidth }) => /* @__PURE__ */ jsx(
1012
1021
  "path",
1013
1022
  {
1014
1023
  d: `${BRUSH_HANDLE}${BRUSH_FERRULE}${BRUSH_BRISTLES}`,
1024
+ transform: BRUSH_TURN,
1015
1025
  stroke: primaryColor,
1016
1026
  strokeWidth,
1027
+ strokeLinejoin: "round",
1017
1028
  fill: "none"
1018
1029
  }
1019
1030
  ),
1020
- duotone: ({ primaryColor, secondaryColor }) => brushFilled(primaryColor, primaryColor, secondaryColor),
1021
- vivid: ({ primaryColor, secondaryColor, accentColor, accentOpacity }) => brushFilled(primaryColor, accentColor, secondaryColor, accentOpacity)
1031
+ duotone: ({ primaryColor, secondaryColor }) => /* @__PURE__ */ jsx("g", { transform: BRUSH_TURN, children: brushFilled(primaryColor, primaryColor, secondaryColor) }),
1032
+ vivid: ({ primaryColor, secondaryColor, accentColor, accentOpacity }) => /* @__PURE__ */ jsx("g", { transform: BRUSH_TURN, children: brushFilled(primaryColor, accentColor, secondaryColor, accentOpacity) })
1022
1033
  }
1023
1034
  });
1024
1035
  const NtdPenTool = /* @__PURE__ */ createIcon({
@@ -1118,11 +1129,59 @@ const NtdSpline = /* @__PURE__ */ createIcon({
1118
1129
  ) })
1119
1130
  }
1120
1131
  });
1132
+ const DROPPER_BULB = "M9 7V5a3 3 0 016 0v2z";
1133
+ const DROPPER_COLLAR = { x: 7.5, y: 7, width: 9, height: 2, rx: 0.5 };
1134
+ const DROPPER_TUBE = { x: 10, y: 9, width: 4, height: 8.5 };
1135
+ const DROPPER_TIP = "M10 17.5h4l-1.25 3.5h-1.5z";
1136
+ const DROPPER_LIQUID = { x: 10.9, y: 12.6, width: 2.2, height: 4.9 };
1137
+ const DROPPER_DROP = "M5 19.2c.9 1.1 1.4 1.8 1.4 2.4a1.4 1.4 0 01-2.8 0c0-.6.5-1.3 1.4-2.4z";
1138
+ const DROPPER_TURN = "rotate(45 12 12)";
1139
+ function dropperFilled(body, bulb, liquid, liquidOpacity) {
1140
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
1141
+ /* @__PURE__ */ jsxs("g", { transform: DROPPER_TURN, children: [
1142
+ /* @__PURE__ */ jsx("path", { d: DROPPER_BULB, fill: bulb }),
1143
+ /* @__PURE__ */ jsx("rect", { ...DROPPER_COLLAR, fill: body }),
1144
+ /* @__PURE__ */ jsx("rect", { ...DROPPER_TUBE, fill: body }),
1145
+ /* @__PURE__ */ jsx("path", { d: DROPPER_TIP, fill: body }),
1146
+ /* @__PURE__ */ jsx("rect", { ...DROPPER_LIQUID, fill: liquid, opacity: liquidOpacity })
1147
+ ] }),
1148
+ /* @__PURE__ */ jsx("path", { d: DROPPER_DROP, fill: body })
1149
+ ] });
1150
+ }
1151
+ const NtdEyeDropper = /* @__PURE__ */ createIcon({
1152
+ displayName: "NtdEyeDropper",
1153
+ paths: {
1154
+ solid: ({ primaryColor, accentColor, accentOpacity }) => dropperFilled(primaryColor, primaryColor, accentColor, accentOpacity),
1155
+ outline: ({ primaryColor, strokeWidth }) => /* @__PURE__ */ jsxs(Fragment, { children: [
1156
+ /* @__PURE__ */ jsxs(
1157
+ "g",
1158
+ {
1159
+ transform: DROPPER_TURN,
1160
+ stroke: primaryColor,
1161
+ strokeWidth,
1162
+ strokeLinejoin: "miter",
1163
+ fill: "none",
1164
+ children: [
1165
+ /* @__PURE__ */ jsx("path", { d: DROPPER_BULB }),
1166
+ /* @__PURE__ */ jsx("rect", { ...DROPPER_COLLAR }),
1167
+ /* @__PURE__ */ jsx("rect", { ...DROPPER_TUBE }),
1168
+ /* @__PURE__ */ jsx("path", { d: DROPPER_TIP }),
1169
+ /* @__PURE__ */ jsx("path", { d: "M12 13v3.5" })
1170
+ ]
1171
+ }
1172
+ ),
1173
+ /* @__PURE__ */ jsx("path", { d: DROPPER_DROP, stroke: primaryColor, strokeWidth, fill: "none" })
1174
+ ] }),
1175
+ duotone: ({ primaryColor, secondaryColor }) => dropperFilled(primaryColor, secondaryColor, secondaryColor, 1),
1176
+ vivid: ({ primaryColor, secondaryColor, accentColor, accentOpacity }) => dropperFilled(primaryColor, secondaryColor, accentColor, accentOpacity)
1177
+ }
1178
+ });
1121
1179
  export {
1122
1180
  NtdBluetooth,
1123
1181
  NtdBrush,
1124
1182
  NtdCamera,
1125
1183
  NtdChat,
1184
+ NtdEyeDropper,
1126
1185
  NtdImage,
1127
1186
  NtdInbox,
1128
1187
  NtdMail,
@@ -386,13 +386,13 @@ const NtdExternalLink = /* @__PURE__ */ createIcon({
386
386
  }
387
387
  });
388
388
  const REFRESH_TOP = {
389
- tail: "M6.34 7.89A7 7 0 0 1 17.98 8.37",
390
- start: [6.34, 7.89],
389
+ tail: "M5.51 9.38A7 7 0 0 1 17.98 8.37",
390
+ start: [5.51, 9.38],
391
391
  head: "M14.59 8.46L17.89 12.9L21.77 8.96z"
392
392
  };
393
393
  const REFRESH_BOTTOM = {
394
- tail: "M17.66 16.11A7 7 0 0 1 6.02 15.63",
395
- start: [17.66, 16.11],
394
+ tail: "M18.49 14.62A7 7 0 0 1 6.02 15.63",
395
+ start: [18.49, 14.62],
396
396
  head: "M9.41 15.54L6.11 11.1L2.23 15.04z"
397
397
  };
398
398
  function refreshArrows(top, bottom, strokeWidth, roundTail = true) {
@@ -1,6 +1,6 @@
1
1
  import { jsxs, Fragment, jsx } from "react/jsx-runtime";
2
2
  import { createIcon } from "../createIcon.js";
3
- import { swapDuotone, CUTLERY_FORK, CUTLERY_KNIFE, CUTLERY_FORK_LINES } from "../iconParts.js";
3
+ import { swapDuotone, CUTLERY_FORK, CUTLERY_KNIFE } from "../iconParts.js";
4
4
  const NtdProduct = /* @__PURE__ */ createIcon({
5
5
  displayName: "NtdProduct",
6
6
  paths: {
@@ -291,14 +291,22 @@ const NtdShipment = /* @__PURE__ */ createIcon({
291
291
  });
292
292
  const FOOD_FORK = CUTLERY_FORK;
293
293
  const FOOD_KNIFE = CUTLERY_KNIFE;
294
- const FOOD_FORK_LINES = CUTLERY_FORK_LINES;
294
+ const FOOD_PLATE = { cx: 12.25, cy: 12, r: 6.75 };
295
295
  function placeSetting(plate, cutlery, ringWidth, filled) {
296
296
  return /* @__PURE__ */ jsxs(Fragment, { children: [
297
- /* @__PURE__ */ jsx("circle", { cx: "12.1", cy: "12", r: "6.6", stroke: plate, strokeWidth: ringWidth, fill: "none" }),
298
- /* @__PURE__ */ jsx("circle", { cx: "12.1", cy: "12", r: "3.6", stroke: plate, strokeWidth: ringWidth, fill: "none" }),
299
- filled ? /* @__PURE__ */ jsx("path", { d: `${FOOD_FORK}${FOOD_KNIFE}`, fill: cutlery }) : /* @__PURE__ */ jsxs("g", { stroke: cutlery, strokeWidth: ringWidth, fill: "none", children: [
300
- /* @__PURE__ */ jsx("path", { d: FOOD_FORK_LINES }),
301
- /* @__PURE__ */ jsx("path", { d: FOOD_KNIFE, strokeLinejoin: "miter" })
297
+ /* @__PURE__ */ jsx("circle", { ...FOOD_PLATE, stroke: plate, strokeWidth: ringWidth, fill: "none" }),
298
+ filled ? /* @__PURE__ */ jsx("path", { d: `${FOOD_FORK}${FOOD_KNIFE}`, fill: cutlery }) : /* @__PURE__ */ jsxs(Fragment, { children: [
299
+ /* @__PURE__ */ jsx("path", { d: FOOD_FORK, fill: cutlery }),
300
+ /* @__PURE__ */ jsx(
301
+ "path",
302
+ {
303
+ d: FOOD_KNIFE,
304
+ stroke: cutlery,
305
+ strokeWidth: ringWidth,
306
+ strokeLinejoin: "miter",
307
+ fill: "none"
308
+ }
309
+ )
302
310
  ] })
303
311
  ] });
304
312
  }
@@ -59,12 +59,14 @@ const NtdHouse = /* @__PURE__ */ createIcon({
59
59
  });
60
60
  const APARTMENT = { x: 4.5, y: 4, width: 15, height: 18, rx: 2 };
61
61
  const APARTMENT_WINDOWS = [
62
- { x: 7.25, y: 7 },
63
- { x: 13.75, y: 7 },
64
- { x: 7.25, y: 13 },
65
- { x: 13.75, y: 13 }
62
+ { x: 6.3, y: 7 },
63
+ { x: 10.6, y: 7 },
64
+ { x: 14.9, y: 7 },
65
+ { x: 6.3, y: 12.2 },
66
+ { x: 10.6, y: 12.2 },
67
+ { x: 14.9, y: 12.2 }
66
68
  ];
67
- const APARTMENT_DOOR = { x: 10.25, y: 18, width: 3.5, height: 4 };
69
+ const APARTMENT_DOOR = { x: 10.5, y: 18, width: 3, height: 4 };
68
70
  const APARTMENT_DOOR_SILL = { ...APARTMENT_DOOR, height: 3.25 };
69
71
  const NtdApartment = /* @__PURE__ */ createIcon({
70
72
  displayName: "NtdApartment",
@@ -74,25 +76,25 @@ const NtdApartment = /* @__PURE__ */ createIcon({
74
76
  solid: ({ primaryColor, accentColor, accentOpacity }) => /* @__PURE__ */ jsxs(Fragment, { children: [
75
77
  /* @__PURE__ */ jsx("rect", { ...APARTMENT, fill: primaryColor }),
76
78
  /* @__PURE__ */ jsxs("g", { fill: accentColor, opacity: accentOpacity, children: [
77
- APARTMENT_WINDOWS.map((w) => /* @__PURE__ */ jsx("rect", { ...w, width: "3", height: "3", rx: "0.5" }, `${w.x}-${w.y}`)),
79
+ APARTMENT_WINDOWS.map((w) => /* @__PURE__ */ jsx("rect", { ...w, width: "2.8", height: "3", rx: "0.5" }, `${w.x}-${w.y}`)),
78
80
  /* @__PURE__ */ jsx("rect", { ...APARTMENT_DOOR_SILL })
79
81
  ] })
80
82
  ] }),
81
83
  outline: ({ primaryColor, strokeWidth }) => /* @__PURE__ */ jsxs("g", { stroke: primaryColor, strokeWidth, fill: "none", children: [
82
84
  /* @__PURE__ */ jsx("rect", { ...APARTMENT }),
83
- APARTMENT_WINDOWS.map((w) => /* @__PURE__ */ jsx("rect", { ...w, width: "3", height: "3", rx: "0.5" }, `${w.x}-${w.y}`)),
85
+ APARTMENT_WINDOWS.map((w) => /* @__PURE__ */ jsx("rect", { ...w, width: "2.8", height: "3", rx: "0.5" }, `${w.x}-${w.y}`)),
84
86
  /* @__PURE__ */ jsx("rect", { ...APARTMENT_DOOR })
85
87
  ] }),
86
88
  duotone: ({ primaryColor, secondaryColor }) => /* @__PURE__ */ jsxs(Fragment, { children: [
87
89
  /* @__PURE__ */ jsx("rect", { ...APARTMENT, fill: primaryColor }),
88
90
  /* @__PURE__ */ jsxs("g", { fill: secondaryColor, children: [
89
- APARTMENT_WINDOWS.map((w) => /* @__PURE__ */ jsx("rect", { ...w, width: "3", height: "3", rx: "0.5" }, `${w.x}-${w.y}`)),
91
+ APARTMENT_WINDOWS.map((w) => /* @__PURE__ */ jsx("rect", { ...w, width: "2.8", height: "3", rx: "0.5" }, `${w.x}-${w.y}`)),
90
92
  /* @__PURE__ */ jsx("rect", { ...APARTMENT_DOOR })
91
93
  ] })
92
94
  ] }),
93
95
  vivid: ({ primaryColor, secondaryColor, accentColor, accentOpacity }) => /* @__PURE__ */ jsxs(Fragment, { children: [
94
96
  /* @__PURE__ */ jsx("rect", { ...APARTMENT, fill: primaryColor }),
95
- /* @__PURE__ */ jsx("g", { fill: secondaryColor, children: APARTMENT_WINDOWS.map((w) => /* @__PURE__ */ jsx("rect", { ...w, width: "3", height: "3", rx: "0.5" }, `${w.x}-${w.y}`)) }),
97
+ /* @__PURE__ */ jsx("g", { fill: secondaryColor, children: APARTMENT_WINDOWS.map((w) => /* @__PURE__ */ jsx("rect", { ...w, width: "2.8", height: "3", rx: "0.5" }, `${w.x}-${w.y}`)) }),
96
98
  /* @__PURE__ */ jsx("rect", { ...APARTMENT_DOOR, fill: accentColor, opacity: accentOpacity })
97
99
  ] })
98
100
  }
@@ -419,107 +421,101 @@ const NtdOfficeBuilding = /* @__PURE__ */ createIcon({
419
421
  ] })
420
422
  }
421
423
  });
422
- const WAREHOUSE = "M1.5 9.2L12 3.5L22.5 9.2V21H18.5V11H5.5V21H1.5Z";
423
- const WAREHOUSE_BOXES = [
424
- [6.6, 21, 5, 4.6],
425
- [12.4, 21, 5, 4.6],
426
- [9.5, 15.6, 5, 3.5]
424
+ const RACK_SLOTS = [
425
+ [0.9, 6, 4.2],
426
+ [7.8, 5.3, 3.4],
427
+ [0.9, 5.2, 3.6],
428
+ [6.9, 6.2, 4.2]
427
429
  ];
428
- function boxRects(boxes) {
429
- return boxes.map(([x, bottom, w, h]) => `M${x} ${bottom - h}h${w}v${h}h${-w}Z`).join("");
430
+ const round = (n) => Math.round(n * 1e3) / 1e3;
431
+ function rackGeometry(f, width, boxes) {
432
+ const heavy = width * 1.35;
433
+ const middle = (f.top + f.bottom) / 2;
434
+ const half = width / 2;
435
+ const lines = `M${f.left} ${f.top}V${f.floor}M${f.right} ${f.top}V${f.floor}M${f.left} ${middle}H${f.right}M${f.left} ${f.top}H${f.right}M${f.left} ${f.bottom}H${f.right}`;
436
+ const rect = (x, y, w, h) => `M${round(x)} ${round(y)}h${round(w)}v${round(h)}h${round(-w)}Z`;
437
+ const frame = [
438
+ rect(f.left - half, f.top - heavy / 2, width, f.floor - f.top + heavy / 2),
439
+ rect(f.right - half, f.top - heavy / 2, width, f.floor - f.top + heavy / 2),
440
+ rect(f.left - half, f.top - heavy / 2, f.right - f.left + width, heavy),
441
+ rect(f.left, middle - half, f.right - f.left, width),
442
+ rect(f.left, f.bottom - heavy / 2, f.right - f.left, heavy)
443
+ ].join("");
444
+ const levels = [
445
+ { floor: f.bottom - heavy / 2, ceiling: middle + half },
446
+ { floor: middle - half, ceiling: f.top + heavy / 2 }
447
+ ];
448
+ const scale = (f.right - f.left) / 16;
449
+ const rects = RACK_SLOTS.slice(0, boxes).map(([x, w, h], i) => {
450
+ const level = levels[Math.floor(i / 2)];
451
+ const gap = 0.6 * scale;
452
+ const bh = Math.min(h * scale, level.floor - level.ceiling - gap - 0.4 * scale);
453
+ return rect(f.left + half + x * scale, level.floor - gap - bh, w * scale, bh);
454
+ }).join("");
455
+ return { lines, frame, rects };
430
456
  }
431
- function boxTapes(boxes) {
432
- return boxes.map(([x, bottom, w, h]) => `M${x + w / 2} ${bottom - h}v${h * 0.42}`).join("");
433
- }
434
- function storageBoxes(boxes, fill, tape, width, uid, name) {
435
- const rects = boxRects(boxes);
436
- return /* @__PURE__ */ jsxs(Fragment, { children: [
437
- /* @__PURE__ */ jsx("path", { d: rects, fill }),
438
- within(
439
- uid,
440
- name,
441
- /* @__PURE__ */ jsx("path", { d: rects }),
442
- /* @__PURE__ */ jsx("path", { d: boxTapes(boxes), stroke: tape, strokeWidth: width, fill: "none" })
443
- )
444
- ] });
445
- }
446
- function warehouseFilled({ primaryColor, accentColor, strokeWidth, uid }, boxes) {
457
+ function rackDrawing(f, boxes, frame, fill, width, outline) {
458
+ const g = rackGeometry(f, width, boxes);
459
+ if (outline) {
460
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
461
+ /* @__PURE__ */ jsx("path", { d: g.lines, stroke: frame, strokeWidth: width, strokeLinecap: "butt", fill: "none" }),
462
+ g.rects && /* @__PURE__ */ jsx("path", { d: g.rects, stroke: fill, strokeWidth: width, strokeLinejoin: "miter", fill: "none" })
463
+ ] });
464
+ }
447
465
  return /* @__PURE__ */ jsxs(Fragment, { children: [
448
- /* @__PURE__ */ jsx("path", { d: WAREHOUSE, fill: primaryColor }),
449
- storageBoxes(WAREHOUSE_BOXES, boxes, accentColor, strokeWidth, uid, "boxes")
466
+ /* @__PURE__ */ jsx("path", { d: g.frame, fill: frame }),
467
+ g.rects && /* @__PURE__ */ jsx("path", { d: g.rects, fill })
450
468
  ] });
451
469
  }
452
- function warehouseLines(color, width) {
453
- return /* @__PURE__ */ jsxs("g", { stroke: color, strokeWidth: width, strokeLinejoin: "miter", fill: "none", children: [
454
- /* @__PURE__ */ jsx("path", { d: WAREHOUSE }),
455
- /* @__PURE__ */ jsx("path", { d: boxRects(WAREHOUSE_BOXES) }),
456
- /* @__PURE__ */ jsx("path", { d: boxTapes(WAREHOUSE_BOXES) })
457
- ] });
470
+ const SHELF_RACK = { left: 4, right: 20, top: 3, bottom: 18.5, floor: 21.5 };
471
+ function shelfRackIcon(displayName, boxes) {
472
+ return createIcon({
473
+ displayName,
474
+ paths: {
475
+ solid: ({ primaryColor, strokeWidth, variant }) => variant === "wireframe" ? rackDrawing(SHELF_RACK, boxes, primaryColor, primaryColor, 1, true) : rackDrawing(SHELF_RACK, boxes, primaryColor, primaryColor, strokeWidth * 2, false),
476
+ outline: ({ primaryColor, strokeWidth }) => rackDrawing(SHELF_RACK, boxes, primaryColor, primaryColor, strokeWidth, true),
477
+ duotone: ({ primaryColor, secondaryColor, strokeWidth }) => rackDrawing(SHELF_RACK, boxes, primaryColor, secondaryColor, strokeWidth * 2, false),
478
+ vivid: ({ primaryColor, secondaryColor, strokeWidth }) => rackDrawing(SHELF_RACK, boxes, primaryColor, secondaryColor, strokeWidth * 2, false)
479
+ }
480
+ });
458
481
  }
459
- const NtdWarehouse = /* @__PURE__ */ createIcon({
460
- displayName: "NtdWarehouse",
461
- paths: {
462
- solid: (props) => props.variant === "wireframe" ? warehouseLines(props.primaryColor, 1) : warehouseFilled(props, props.primaryColor),
463
- outline: ({ primaryColor, strokeWidth }) => warehouseLines(primaryColor, strokeWidth),
464
- duotone: (props) => warehouseFilled(props, props.secondaryColor),
465
- vivid: (props) => warehouseFilled(props, props.secondaryColor)
466
- }
467
- });
468
- const RACK_UPRIGHTS = "M4 3V21M20 3V21";
469
- const RACK_SHELVES = [8.5, 14.75, 21];
470
- const RACK_BOXES = [
471
- [
472
- [6.2, 5, 4],
473
- [12.4, 3.6, 3]
474
- ],
475
- [
476
- [6.2, 3.6, 3.4],
477
- [11, 5.2, 4.4]
478
- ],
479
- [
480
- [6.2, 5.4, 4.6],
481
- [12.8, 4.4, 3.4]
482
- ]
482
+ const NtdShelfRack = /* @__PURE__ */ shelfRackIcon("NtdShelfRack", 0);
483
+ const NtdShelfRackQuarter = /* @__PURE__ */ shelfRackIcon("NtdShelfRackQuarter", 1);
484
+ const NtdShelfRackHalf = /* @__PURE__ */ shelfRackIcon("NtdShelfRackHalf", 2);
485
+ const NtdShelfRackThreeQuarters = /* @__PURE__ */ shelfRackIcon(
486
+ "NtdShelfRackThreeQuarters",
487
+ 3
488
+ );
489
+ const NtdShelfRackFull = /* @__PURE__ */ shelfRackIcon("NtdShelfRackFull", 4);
490
+ const SHELF_RACK_STEPS = [
491
+ NtdShelfRack,
492
+ NtdShelfRackQuarter,
493
+ NtdShelfRackHalf,
494
+ NtdShelfRackThreeQuarters,
495
+ NtdShelfRackFull
483
496
  ];
484
- function rackBoxes(width) {
485
- return RACK_SHELVES.flatMap(
486
- (y, i) => RACK_BOXES[i].map(([x, w, h]) => [x, y - width / 2, w, h])
487
- );
497
+ function shelfRackIconFor(level) {
498
+ const clamped = Number.isNaN(level) ? 0 : Math.min(1, Math.max(0, level));
499
+ return SHELF_RACK_STEPS[Math.round(clamped * 4)];
488
500
  }
489
- function rackFrame(color, width) {
490
- return /* @__PURE__ */ jsx(
491
- "path",
492
- {
493
- d: `${RACK_UPRIGHTS}${RACK_SHELVES.map((y) => `M4 ${y}H20`).join("")}`,
494
- stroke: color,
495
- strokeWidth: width,
496
- fill: "none"
497
- }
498
- );
499
- }
500
- function rackFilled({ primaryColor, accentColor, strokeWidth, uid }, boxes) {
501
- const width = strokeWidth * 2;
501
+ const WAREHOUSE = "M1.5 9.2L12 3.5L22.5 9.2V21H19.5V11H4.5V21H1.5Z";
502
+ const WAREHOUSE_RACKS = [
503
+ { left: 6.25, right: 11.25, top: 12.75, bottom: 19.25, floor: 21 },
504
+ { left: 12.75, right: 17.75, top: 12.75, bottom: 19.25, floor: 21 }
505
+ ];
506
+ function warehouseDrawing(hall, rackFrame, boxes, width, outline) {
502
507
  return /* @__PURE__ */ jsxs(Fragment, { children: [
503
- rackFrame(primaryColor, width),
504
- storageBoxes(rackBoxes(width), boxes, accentColor, strokeWidth, uid, "rack")
508
+ outline ? /* @__PURE__ */ jsx("path", { d: WAREHOUSE, stroke: hall, strokeWidth: width, strokeLinejoin: "miter", fill: "none" }) : /* @__PURE__ */ jsx("path", { d: WAREHOUSE, fill: hall }),
509
+ WAREHOUSE_RACKS.map((f) => /* @__PURE__ */ jsx("g", { children: rackDrawing(f, 4, rackFrame, boxes, outline ? width : width * 0.6, outline) }, f.left))
505
510
  ] });
506
511
  }
507
- const NtdShelfRack = /* @__PURE__ */ createIcon({
508
- displayName: "NtdShelfRack",
512
+ const NtdWarehouse = /* @__PURE__ */ createIcon({
513
+ displayName: "NtdWarehouse",
509
514
  paths: {
510
- solid: (props) => rackFilled(props, props.primaryColor),
511
- outline: ({ primaryColor, strokeWidth }) => {
512
- const boxes = rackBoxes(strokeWidth);
513
- return /* @__PURE__ */ jsxs(Fragment, { children: [
514
- rackFrame(primaryColor, strokeWidth),
515
- /* @__PURE__ */ jsxs("g", { stroke: primaryColor, strokeWidth, strokeLinejoin: "miter", fill: "none", children: [
516
- /* @__PURE__ */ jsx("path", { d: boxRects(boxes) }),
517
- /* @__PURE__ */ jsx("path", { d: boxTapes(boxes) })
518
- ] })
519
- ] });
520
- },
521
- duotone: (props) => rackFilled(props, props.secondaryColor),
522
- vivid: (props) => rackFilled(props, props.secondaryColor)
515
+ solid: ({ primaryColor, strokeWidth, variant }) => variant === "wireframe" ? warehouseDrawing(primaryColor, primaryColor, primaryColor, 1, true) : warehouseDrawing(primaryColor, primaryColor, primaryColor, strokeWidth * 2, false),
516
+ outline: ({ primaryColor, strokeWidth }) => warehouseDrawing(primaryColor, primaryColor, primaryColor, strokeWidth, true),
517
+ duotone: ({ primaryColor, secondaryColor, strokeWidth }) => warehouseDrawing(primaryColor, primaryColor, secondaryColor, strokeWidth * 2, false),
518
+ vivid: ({ primaryColor, secondaryColor, strokeWidth }) => warehouseDrawing(primaryColor, primaryColor, secondaryColor, strokeWidth * 2, false)
523
519
  }
524
520
  });
525
521
  const NtdKey = /* @__PURE__ */ createIcon({
@@ -1579,9 +1575,14 @@ export {
1579
1575
  NtdOfficeBuilding,
1580
1576
  NtdPool,
1581
1577
  NtdShelfRack,
1578
+ NtdShelfRackFull,
1579
+ NtdShelfRackHalf,
1580
+ NtdShelfRackQuarter,
1581
+ NtdShelfRackThreeQuarters,
1582
1582
  NtdSold,
1583
1583
  NtdSquareMeters,
1584
1584
  NtdVilla,
1585
1585
  NtdWarehouse,
1586
- realestateIcons
1586
+ realestateIcons,
1587
+ shelfRackIconFor
1587
1588
  };