rn-iconify 1.0.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (657) hide show
  1. package/README.md +47 -235
  2. package/babel.js +14 -0
  3. package/lib/commonjs/IconRenderer.js +91 -4
  4. package/lib/commonjs/IconRenderer.js.map +1 -1
  5. package/lib/commonjs/accessibility/AccessibilityProvider.js +189 -0
  6. package/lib/commonjs/accessibility/AccessibilityProvider.js.map +1 -0
  7. package/lib/commonjs/accessibility/index.js +87 -0
  8. package/lib/commonjs/accessibility/index.js.map +1 -0
  9. package/lib/commonjs/accessibility/types.js +6 -0
  10. package/lib/commonjs/accessibility/types.js.map +1 -0
  11. package/lib/commonjs/accessibility/useAccessibleIcon.js +119 -0
  12. package/lib/commonjs/accessibility/useAccessibleIcon.js.map +1 -0
  13. package/lib/commonjs/accessibility/utils.js +231 -0
  14. package/lib/commonjs/accessibility/utils.js.map +1 -0
  15. package/lib/commonjs/alias/Icon.js +113 -0
  16. package/lib/commonjs/alias/Icon.js.map +1 -0
  17. package/lib/commonjs/alias/IconAliasContext.js +177 -0
  18. package/lib/commonjs/alias/IconAliasContext.js.map +1 -0
  19. package/lib/commonjs/alias/createIconAliases.js +222 -0
  20. package/lib/commonjs/alias/createIconAliases.js.map +1 -0
  21. package/lib/commonjs/alias/index.js +57 -0
  22. package/lib/commonjs/alias/index.js.map +1 -0
  23. package/lib/commonjs/alias/types.js +6 -0
  24. package/lib/commonjs/alias/types.js.map +1 -0
  25. package/lib/commonjs/animated/AnimatedIcon.js +116 -0
  26. package/lib/commonjs/animated/AnimatedIcon.js.map +1 -0
  27. package/lib/commonjs/animated/index.js +76 -0
  28. package/lib/commonjs/animated/index.js.map +1 -0
  29. package/lib/commonjs/animated/presets.js +220 -0
  30. package/lib/commonjs/animated/presets.js.map +1 -0
  31. package/lib/commonjs/animated/types.js +71 -0
  32. package/lib/commonjs/animated/types.js.map +1 -0
  33. package/lib/commonjs/animated/useIconAnimation.js +313 -0
  34. package/lib/commonjs/animated/useIconAnimation.js.map +1 -0
  35. package/lib/commonjs/babel/ast-utils.js +214 -0
  36. package/lib/commonjs/babel/ast-utils.js.map +1 -0
  37. package/lib/commonjs/babel/cache-writer.js +281 -0
  38. package/lib/commonjs/babel/cache-writer.js.map +1 -0
  39. package/lib/commonjs/babel/collector.js +219 -0
  40. package/lib/commonjs/babel/collector.js.map +1 -0
  41. package/lib/commonjs/babel/index.js +104 -0
  42. package/lib/commonjs/babel/index.js.map +1 -0
  43. package/lib/commonjs/babel/plugin.js +226 -0
  44. package/lib/commonjs/babel/plugin.js.map +1 -0
  45. package/lib/commonjs/babel/types.js +485 -0
  46. package/lib/commonjs/babel/types.js.map +1 -0
  47. package/lib/commonjs/bundle/index.js +213 -0
  48. package/lib/commonjs/bundle/index.js.map +1 -0
  49. package/lib/commonjs/cache/CacheManager.js +105 -6
  50. package/lib/commonjs/cache/CacheManager.js.map +1 -1
  51. package/lib/commonjs/cli/commands/analyze.js +171 -0
  52. package/lib/commonjs/cli/commands/analyze.js.map +1 -0
  53. package/lib/commonjs/cli/commands/bundle.js +214 -0
  54. package/lib/commonjs/cli/commands/bundle.js.map +1 -0
  55. package/lib/commonjs/cli/index.js +142 -0
  56. package/lib/commonjs/cli/index.js.map +1 -0
  57. package/lib/commonjs/cli/parser.js +260 -0
  58. package/lib/commonjs/cli/parser.js.map +1 -0
  59. package/lib/commonjs/cli/types.js +42 -0
  60. package/lib/commonjs/cli/types.js.map +1 -0
  61. package/lib/commonjs/config/ConfigManager.js +182 -0
  62. package/lib/commonjs/config/ConfigManager.js.map +1 -0
  63. package/lib/commonjs/config/index.js +44 -0
  64. package/lib/commonjs/config/index.js.map +1 -0
  65. package/lib/commonjs/config/types.js +55 -0
  66. package/lib/commonjs/config/types.js.map +1 -0
  67. package/lib/commonjs/createIconSet.js +49 -11
  68. package/lib/commonjs/createIconSet.js.map +1 -1
  69. package/lib/commonjs/explorer/IconExplorer.js +827 -0
  70. package/lib/commonjs/explorer/IconExplorer.js.map +1 -0
  71. package/lib/commonjs/explorer/iconSets.js +303 -0
  72. package/lib/commonjs/explorer/iconSets.js.map +1 -0
  73. package/lib/commonjs/explorer/index.js +93 -0
  74. package/lib/commonjs/explorer/index.js.map +1 -0
  75. package/lib/commonjs/explorer/types.js +6 -0
  76. package/lib/commonjs/explorer/types.js.map +1 -0
  77. package/lib/commonjs/explorer/useExplorer.js +359 -0
  78. package/lib/commonjs/explorer/useExplorer.js.map +1 -0
  79. package/lib/commonjs/index.js +618 -12
  80. package/lib/commonjs/index.js.map +1 -1
  81. package/lib/commonjs/navigation/createDrawerIcon.js +129 -0
  82. package/lib/commonjs/navigation/createDrawerIcon.js.map +1 -0
  83. package/lib/commonjs/navigation/createHeaderIcon.js +185 -0
  84. package/lib/commonjs/navigation/createHeaderIcon.js.map +1 -0
  85. package/lib/commonjs/navigation/createTabBarIcon.js +178 -0
  86. package/lib/commonjs/navigation/createTabBarIcon.js.map +1 -0
  87. package/lib/commonjs/navigation/index.js +83 -0
  88. package/lib/commonjs/navigation/index.js.map +1 -0
  89. package/lib/commonjs/navigation/types.js +94 -0
  90. package/lib/commonjs/navigation/types.js.map +1 -0
  91. package/lib/commonjs/navigation/useNavigationIcon.js +128 -0
  92. package/lib/commonjs/navigation/useNavigationIcon.js.map +1 -0
  93. package/lib/commonjs/network/IconifyAPI.js +154 -14
  94. package/lib/commonjs/network/IconifyAPI.js.map +1 -1
  95. package/lib/commonjs/network/index.js +18 -0
  96. package/lib/commonjs/network/index.js.map +1 -1
  97. package/lib/commonjs/performance/PerformanceMonitor.js +327 -0
  98. package/lib/commonjs/performance/PerformanceMonitor.js.map +1 -0
  99. package/lib/commonjs/performance/index.js +43 -0
  100. package/lib/commonjs/performance/index.js.map +1 -0
  101. package/lib/commonjs/performance/types.js +2 -0
  102. package/lib/commonjs/performance/types.js.map +1 -0
  103. package/lib/commonjs/placeholder/PlaceholderFactory.js +111 -0
  104. package/lib/commonjs/placeholder/PlaceholderFactory.js.map +1 -0
  105. package/lib/commonjs/placeholder/Pulse.js +77 -0
  106. package/lib/commonjs/placeholder/Pulse.js.map +1 -0
  107. package/lib/commonjs/placeholder/Shimmer.js +95 -0
  108. package/lib/commonjs/placeholder/Shimmer.js.map +1 -0
  109. package/lib/commonjs/placeholder/Skeleton.js +52 -0
  110. package/lib/commonjs/placeholder/Skeleton.js.map +1 -0
  111. package/lib/commonjs/placeholder/index.js +41 -0
  112. package/lib/commonjs/placeholder/index.js.map +1 -0
  113. package/lib/commonjs/placeholder/types.js +40 -0
  114. package/lib/commonjs/placeholder/types.js.map +1 -0
  115. package/lib/commonjs/theme/IconThemeProvider.js +96 -0
  116. package/lib/commonjs/theme/IconThemeProvider.js.map +1 -0
  117. package/lib/commonjs/theme/context.js +53 -0
  118. package/lib/commonjs/theme/context.js.map +1 -0
  119. package/lib/commonjs/theme/index.js +52 -0
  120. package/lib/commonjs/theme/index.js.map +1 -0
  121. package/lib/commonjs/theme/types.js +39 -0
  122. package/lib/commonjs/theme/types.js.map +1 -0
  123. package/lib/commonjs/theme/useIconTheme.js +121 -0
  124. package/lib/commonjs/theme/useIconTheme.js.map +1 -0
  125. package/lib/module/IconRenderer.js +92 -5
  126. package/lib/module/IconRenderer.js.map +1 -1
  127. package/lib/module/accessibility/AccessibilityProvider.js +179 -0
  128. package/lib/module/accessibility/AccessibilityProvider.js.map +1 -0
  129. package/lib/module/accessibility/index.js +42 -0
  130. package/lib/module/accessibility/index.js.map +1 -0
  131. package/lib/module/accessibility/types.js +2 -0
  132. package/lib/module/accessibility/types.js.map +1 -0
  133. package/lib/module/accessibility/useAccessibleIcon.js +112 -0
  134. package/lib/module/accessibility/useAccessibleIcon.js.map +1 -0
  135. package/lib/module/accessibility/utils.js +221 -0
  136. package/lib/module/accessibility/utils.js.map +1 -0
  137. package/lib/module/alias/Icon.js +105 -0
  138. package/lib/module/alias/Icon.js.map +1 -0
  139. package/lib/module/alias/IconAliasContext.js +166 -0
  140. package/lib/module/alias/IconAliasContext.js.map +1 -0
  141. package/lib/module/alias/createIconAliases.js +213 -0
  142. package/lib/module/alias/createIconAliases.js.map +1 -0
  143. package/lib/module/alias/index.js +45 -0
  144. package/lib/module/alias/index.js.map +1 -0
  145. package/lib/module/alias/types.js +2 -0
  146. package/lib/module/alias/types.js.map +1 -0
  147. package/lib/module/animated/AnimatedIcon.js +109 -0
  148. package/lib/module/animated/AnimatedIcon.js.map +1 -0
  149. package/lib/module/animated/index.js +80 -0
  150. package/lib/module/animated/index.js.map +1 -0
  151. package/lib/module/animated/presets.js +209 -0
  152. package/lib/module/animated/presets.js.map +1 -0
  153. package/lib/module/animated/types.js +65 -0
  154. package/lib/module/animated/types.js.map +1 -0
  155. package/lib/module/animated/useIconAnimation.js +306 -0
  156. package/lib/module/animated/useIconAnimation.js.map +1 -0
  157. package/lib/module/babel/ast-utils.js +201 -0
  158. package/lib/module/babel/ast-utils.js.map +1 -0
  159. package/lib/module/babel/cache-writer.js +269 -0
  160. package/lib/module/babel/cache-writer.js.map +1 -0
  161. package/lib/module/babel/collector.js +214 -0
  162. package/lib/module/babel/collector.js.map +1 -0
  163. package/lib/module/babel/index.js +51 -0
  164. package/lib/module/babel/index.js.map +1 -0
  165. package/lib/module/babel/plugin.js +220 -0
  166. package/lib/module/babel/plugin.js.map +1 -0
  167. package/lib/module/babel/types.js +476 -0
  168. package/lib/module/babel/types.js.map +1 -0
  169. package/lib/module/bundle/index.js +205 -0
  170. package/lib/module/bundle/index.js.map +1 -0
  171. package/lib/module/cache/CacheManager.js +106 -6
  172. package/lib/module/cache/CacheManager.js.map +1 -1
  173. package/lib/module/cli/commands/analyze.js +166 -0
  174. package/lib/module/cli/commands/analyze.js.map +1 -0
  175. package/lib/module/cli/commands/bundle.js +208 -0
  176. package/lib/module/cli/commands/bundle.js.map +1 -0
  177. package/lib/module/cli/index.js +140 -0
  178. package/lib/module/cli/index.js.map +1 -0
  179. package/lib/module/cli/parser.js +251 -0
  180. package/lib/module/cli/parser.js.map +1 -0
  181. package/lib/module/cli/types.js +36 -0
  182. package/lib/module/cli/types.js.map +1 -0
  183. package/lib/module/components/index.js +27 -1
  184. package/lib/module/components/index.js.map +1 -1
  185. package/lib/module/config/ConfigManager.js +173 -0
  186. package/lib/module/config/ConfigManager.js.map +1 -0
  187. package/lib/module/config/index.js +28 -0
  188. package/lib/module/config/index.js.map +1 -0
  189. package/lib/module/config/types.js +49 -0
  190. package/lib/module/config/types.js.map +1 -0
  191. package/lib/module/createIconSet.js +49 -11
  192. package/lib/module/createIconSet.js.map +1 -1
  193. package/lib/module/explorer/IconExplorer.js +817 -0
  194. package/lib/module/explorer/IconExplorer.js.map +1 -0
  195. package/lib/module/explorer/iconSets.js +291 -0
  196. package/lib/module/explorer/iconSets.js.map +1 -0
  197. package/lib/module/explorer/index.js +42 -0
  198. package/lib/module/explorer/index.js.map +1 -0
  199. package/lib/module/explorer/types.js +2 -0
  200. package/lib/module/explorer/types.js.map +1 -0
  201. package/lib/module/explorer/useExplorer.js +353 -0
  202. package/lib/module/explorer/useExplorer.js.map +1 -0
  203. package/lib/module/index.js +26 -11
  204. package/lib/module/index.js.map +1 -1
  205. package/lib/module/navigation/createDrawerIcon.js +121 -0
  206. package/lib/module/navigation/createDrawerIcon.js.map +1 -0
  207. package/lib/module/navigation/createHeaderIcon.js +175 -0
  208. package/lib/module/navigation/createHeaderIcon.js.map +1 -0
  209. package/lib/module/navigation/createTabBarIcon.js +168 -0
  210. package/lib/module/navigation/createTabBarIcon.js.map +1 -0
  211. package/lib/module/navigation/index.js +59 -0
  212. package/lib/module/navigation/index.js.map +1 -0
  213. package/lib/module/navigation/types.js +88 -0
  214. package/lib/module/navigation/types.js.map +1 -0
  215. package/lib/module/navigation/useNavigationIcon.js +121 -0
  216. package/lib/module/navigation/useNavigationIcon.js.map +1 -0
  217. package/lib/module/network/IconifyAPI.js +152 -14
  218. package/lib/module/network/IconifyAPI.js.map +1 -1
  219. package/lib/module/network/index.js +1 -1
  220. package/lib/module/network/index.js.map +1 -1
  221. package/lib/module/performance/PerformanceMonitor.js +317 -0
  222. package/lib/module/performance/PerformanceMonitor.js.map +1 -0
  223. package/lib/module/performance/index.js +26 -0
  224. package/lib/module/performance/index.js.map +1 -0
  225. package/lib/module/performance/types.js +2 -0
  226. package/lib/module/performance/types.js.map +1 -0
  227. package/lib/module/placeholder/PlaceholderFactory.js +105 -0
  228. package/lib/module/placeholder/PlaceholderFactory.js.map +1 -0
  229. package/lib/module/placeholder/Pulse.js +70 -0
  230. package/lib/module/placeholder/Pulse.js.map +1 -0
  231. package/lib/module/placeholder/Shimmer.js +88 -0
  232. package/lib/module/placeholder/Shimmer.js.map +1 -0
  233. package/lib/module/placeholder/Skeleton.js +45 -0
  234. package/lib/module/placeholder/Skeleton.js.map +1 -0
  235. package/lib/module/placeholder/index.js +15 -0
  236. package/lib/module/placeholder/index.js.map +1 -0
  237. package/lib/module/placeholder/types.js +34 -0
  238. package/lib/module/placeholder/types.js.map +1 -0
  239. package/lib/module/theme/IconThemeProvider.js +89 -0
  240. package/lib/module/theme/IconThemeProvider.js.map +1 -0
  241. package/lib/module/theme/context.js +47 -0
  242. package/lib/module/theme/context.js.map +1 -0
  243. package/lib/module/theme/index.js +19 -0
  244. package/lib/module/theme/index.js.map +1 -0
  245. package/lib/module/theme/types.js +33 -0
  246. package/lib/module/theme/types.js.map +1 -0
  247. package/lib/module/theme/useIconTheme.js +114 -0
  248. package/lib/module/theme/useIconTheme.js.map +1 -0
  249. package/lib/typescript/IconRenderer.d.ts +1 -1
  250. package/lib/typescript/IconRenderer.d.ts.map +1 -1
  251. package/lib/typescript/accessibility/AccessibilityProvider.d.ts +57 -0
  252. package/lib/typescript/accessibility/AccessibilityProvider.d.ts.map +1 -0
  253. package/lib/typescript/accessibility/index.d.ts +37 -0
  254. package/lib/typescript/accessibility/index.d.ts.map +1 -0
  255. package/lib/typescript/accessibility/types.d.ts +130 -0
  256. package/lib/typescript/accessibility/types.d.ts.map +1 -0
  257. package/lib/typescript/accessibility/useAccessibleIcon.d.ts +111 -0
  258. package/lib/typescript/accessibility/useAccessibleIcon.d.ts.map +1 -0
  259. package/lib/typescript/accessibility/utils.d.ts +29 -0
  260. package/lib/typescript/accessibility/utils.d.ts.map +1 -0
  261. package/lib/typescript/alias/Icon.d.ts +38 -0
  262. package/lib/typescript/alias/Icon.d.ts.map +1 -0
  263. package/lib/typescript/alias/IconAliasContext.d.ts +52 -0
  264. package/lib/typescript/alias/IconAliasContext.d.ts.map +1 -0
  265. package/lib/typescript/alias/createIconAliases.d.ts +77 -0
  266. package/lib/typescript/alias/createIconAliases.d.ts.map +1 -0
  267. package/lib/typescript/alias/index.d.ts +36 -0
  268. package/lib/typescript/alias/index.d.ts.map +1 -0
  269. package/lib/typescript/alias/types.d.ts +115 -0
  270. package/lib/typescript/alias/types.d.ts.map +1 -0
  271. package/lib/typescript/animated/AnimatedIcon.d.ts +45 -0
  272. package/lib/typescript/animated/AnimatedIcon.d.ts.map +1 -0
  273. package/lib/typescript/animated/index.d.ts +70 -0
  274. package/lib/typescript/animated/index.d.ts.map +1 -0
  275. package/lib/typescript/animated/presets.d.ts +35 -0
  276. package/lib/typescript/animated/presets.d.ts.map +1 -0
  277. package/lib/typescript/animated/types.d.ts +196 -0
  278. package/lib/typescript/animated/types.d.ts.map +1 -0
  279. package/lib/typescript/animated/useIconAnimation.d.ts +64 -0
  280. package/lib/typescript/animated/useIconAnimation.d.ts.map +1 -0
  281. package/lib/typescript/babel/ast-utils.d.ts +52 -0
  282. package/lib/typescript/babel/ast-utils.d.ts.map +1 -0
  283. package/lib/typescript/babel/cache-writer.d.ts +56 -0
  284. package/lib/typescript/babel/cache-writer.d.ts.map +1 -0
  285. package/lib/typescript/babel/collector.d.ts +107 -0
  286. package/lib/typescript/babel/collector.d.ts.map +1 -0
  287. package/lib/typescript/babel/index.d.ts +47 -0
  288. package/lib/typescript/babel/index.d.ts.map +1 -0
  289. package/lib/typescript/babel/plugin.d.ts +17 -0
  290. package/lib/typescript/babel/plugin.d.ts.map +1 -0
  291. package/lib/typescript/babel/types.d.ts +129 -0
  292. package/lib/typescript/babel/types.d.ts.map +1 -0
  293. package/lib/typescript/bundle/index.d.ts +161 -0
  294. package/lib/typescript/bundle/index.d.ts.map +1 -0
  295. package/lib/typescript/cache/CacheManager.d.ts +52 -4
  296. package/lib/typescript/cache/CacheManager.d.ts.map +1 -1
  297. package/lib/typescript/cli/commands/analyze.d.ts +10 -0
  298. package/lib/typescript/cli/commands/analyze.d.ts.map +1 -0
  299. package/lib/typescript/cli/commands/bundle.d.ts +10 -0
  300. package/lib/typescript/cli/commands/bundle.d.ts.map +1 -0
  301. package/lib/typescript/cli/index.d.ts +7 -0
  302. package/lib/typescript/cli/index.d.ts.map +1 -0
  303. package/lib/typescript/cli/parser.d.ts +18 -0
  304. package/lib/typescript/cli/parser.d.ts.map +1 -0
  305. package/lib/typescript/cli/types.d.ts +157 -0
  306. package/lib/typescript/cli/types.d.ts.map +1 -0
  307. package/lib/typescript/components/Academicons.d.ts +1 -1
  308. package/lib/typescript/components/AkarIcons.d.ts +1 -1
  309. package/lib/typescript/components/AntDesign.d.ts +1 -1
  310. package/lib/typescript/components/Arcticons.d.ts +1 -1
  311. package/lib/typescript/components/Basil.d.ts +1 -1
  312. package/lib/typescript/components/Bi.d.ts +1 -1
  313. package/lib/typescript/components/BitcoinIcons.d.ts +1 -1
  314. package/lib/typescript/components/Bpmn.d.ts +1 -1
  315. package/lib/typescript/components/Brandico.d.ts +1 -1
  316. package/lib/typescript/components/Bx.d.ts +1 -1
  317. package/lib/typescript/components/Bxl.d.ts +1 -1
  318. package/lib/typescript/components/Bxs.d.ts +1 -1
  319. package/lib/typescript/components/Bytesize.d.ts +1 -1
  320. package/lib/typescript/components/Carbon.d.ts +1 -1
  321. package/lib/typescript/components/Catppuccin.d.ts +1 -1
  322. package/lib/typescript/components/Cbi.d.ts +1 -1
  323. package/lib/typescript/components/Charm.d.ts +1 -1
  324. package/lib/typescript/components/Ci.d.ts +1 -1
  325. package/lib/typescript/components/Cib.d.ts +1 -1
  326. package/lib/typescript/components/Cif.d.ts +1 -1
  327. package/lib/typescript/components/Cil.d.ts +1 -1
  328. package/lib/typescript/components/CircleFlags.d.ts +1 -1
  329. package/lib/typescript/components/Circum.d.ts +1 -1
  330. package/lib/typescript/components/Clarity.d.ts +1 -1
  331. package/lib/typescript/components/Codex.d.ts +1 -1
  332. package/lib/typescript/components/Codicon.d.ts +1 -1
  333. package/lib/typescript/components/Covid.d.ts +1 -1
  334. package/lib/typescript/components/Cryptocurrency.d.ts +1 -1
  335. package/lib/typescript/components/CryptocurrencyColor.d.ts +1 -1
  336. package/lib/typescript/components/Cuida.d.ts +1 -1
  337. package/lib/typescript/components/Dashicons.d.ts +1 -1
  338. package/lib/typescript/components/Devicon.d.ts +1 -1
  339. package/lib/typescript/components/DeviconPlain.d.ts +1 -1
  340. package/lib/typescript/components/DinkieIcons.d.ts +1 -1
  341. package/lib/typescript/components/DuoIcons.d.ts +1 -1
  342. package/lib/typescript/components/Ei.d.ts +1 -1
  343. package/lib/typescript/components/El.d.ts +1 -1
  344. package/lib/typescript/components/EmojioneMonotone.d.ts +1 -1
  345. package/lib/typescript/components/Entypo.d.ts +1 -1
  346. package/lib/typescript/components/EntypoSocial.d.ts +1 -1
  347. package/lib/typescript/components/EosIcons.d.ts +1 -1
  348. package/lib/typescript/components/Ep.d.ts +1 -1
  349. package/lib/typescript/components/Et.d.ts +1 -1
  350. package/lib/typescript/components/Eva.d.ts +1 -1
  351. package/lib/typescript/components/F7.d.ts +1 -1
  352. package/lib/typescript/components/Fa.d.ts +1 -1
  353. package/lib/typescript/components/Fa6Brands.d.ts +1 -1
  354. package/lib/typescript/components/Fa6Regular.d.ts +1 -1
  355. package/lib/typescript/components/Fa6Solid.d.ts +1 -1
  356. package/lib/typescript/components/Fa7Brands.d.ts +1 -1
  357. package/lib/typescript/components/Fa7Regular.d.ts +1 -1
  358. package/lib/typescript/components/Fa7Solid.d.ts +1 -1
  359. package/lib/typescript/components/FaBrands.d.ts +1 -1
  360. package/lib/typescript/components/FaRegular.d.ts +1 -1
  361. package/lib/typescript/components/FaSolid.d.ts +1 -1
  362. package/lib/typescript/components/Fad.d.ts +1 -1
  363. package/lib/typescript/components/Famicons.d.ts +1 -1
  364. package/lib/typescript/components/Fe.d.ts +1 -1
  365. package/lib/typescript/components/Feather.d.ts +1 -1
  366. package/lib/typescript/components/FileIcons.d.ts +1 -1
  367. package/lib/typescript/components/Flag.d.ts +1 -1
  368. package/lib/typescript/components/Flagpack.d.ts +1 -1
  369. package/lib/typescript/components/FlatUi.d.ts +1 -1
  370. package/lib/typescript/components/Flowbite.d.ts +1 -1
  371. package/lib/typescript/components/Fluent.d.ts +1 -1
  372. package/lib/typescript/components/FluentColor.d.ts +1 -1
  373. package/lib/typescript/components/FluentEmoji.d.ts +1 -1
  374. package/lib/typescript/components/FluentEmojiFlat.d.ts +1 -1
  375. package/lib/typescript/components/FluentEmojiHighContrast.d.ts +1 -1
  376. package/lib/typescript/components/FluentMdl2.d.ts +1 -1
  377. package/lib/typescript/components/Fontelico.d.ts +1 -1
  378. package/lib/typescript/components/Fontisto.d.ts +1 -1
  379. package/lib/typescript/components/Formkit.d.ts +1 -1
  380. package/lib/typescript/components/Foundation.d.ts +1 -1
  381. package/lib/typescript/components/Gala.d.ts +1 -1
  382. package/lib/typescript/components/GameIcons.d.ts +1 -1
  383. package/lib/typescript/components/Garden.d.ts +1 -1
  384. package/lib/typescript/components/Geo.d.ts +1 -1
  385. package/lib/typescript/components/Gg.d.ts +1 -1
  386. package/lib/typescript/components/Gis.d.ts +1 -1
  387. package/lib/typescript/components/GravityUi.d.ts +1 -1
  388. package/lib/typescript/components/Gridicons.d.ts +1 -1
  389. package/lib/typescript/components/GrommetIcons.d.ts +1 -1
  390. package/lib/typescript/components/Guidance.d.ts +1 -1
  391. package/lib/typescript/components/Healthicons.d.ts +1 -1
  392. package/lib/typescript/components/Heroicons.d.ts +1 -1
  393. package/lib/typescript/components/HeroiconsOutline.d.ts +1 -1
  394. package/lib/typescript/components/HeroiconsSolid.d.ts +1 -1
  395. package/lib/typescript/components/Hugeicons.d.ts +1 -1
  396. package/lib/typescript/components/Humbleicons.d.ts +1 -1
  397. package/lib/typescript/components/Ic.d.ts +1 -1
  398. package/lib/typescript/components/IcomoonFree.d.ts +1 -1
  399. package/lib/typescript/components/IconPark.d.ts +1 -1
  400. package/lib/typescript/components/IconParkOutline.d.ts +1 -1
  401. package/lib/typescript/components/IconParkSolid.d.ts +1 -1
  402. package/lib/typescript/components/IconParkTwotone.d.ts +1 -1
  403. package/lib/typescript/components/Iconamoon.d.ts +1 -1
  404. package/lib/typescript/components/Iconoir.d.ts +1 -1
  405. package/lib/typescript/components/Icons8.d.ts +1 -1
  406. package/lib/typescript/components/Il.d.ts +1 -1
  407. package/lib/typescript/components/Ion.d.ts +1 -1
  408. package/lib/typescript/components/Iwwa.d.ts +1 -1
  409. package/lib/typescript/components/Ix.d.ts +1 -1
  410. package/lib/typescript/components/Jam.d.ts +1 -1
  411. package/lib/typescript/components/La.d.ts +1 -1
  412. package/lib/typescript/components/LetsIcons.d.ts +1 -1
  413. package/lib/typescript/components/LineMd.d.ts +1 -1
  414. package/lib/typescript/components/Lineicons.d.ts +1 -1
  415. package/lib/typescript/components/Logos.d.ts +1 -1
  416. package/lib/typescript/components/Ls.d.ts +1 -1
  417. package/lib/typescript/components/Lsicon.d.ts +1 -1
  418. package/lib/typescript/components/Lucide.d.ts +1 -1
  419. package/lib/typescript/components/LucideLab.d.ts +1 -1
  420. package/lib/typescript/components/Mage.d.ts +1 -1
  421. package/lib/typescript/components/Majesticons.d.ts +1 -1
  422. package/lib/typescript/components/Maki.d.ts +1 -1
  423. package/lib/typescript/components/Map.d.ts +1 -1
  424. package/lib/typescript/components/Marketeq.d.ts +1 -1
  425. package/lib/typescript/components/MaterialIconTheme.d.ts +1 -1
  426. package/lib/typescript/components/MaterialSymbols.d.ts +1 -1
  427. package/lib/typescript/components/MaterialSymbolsLight.d.ts +1 -1
  428. package/lib/typescript/components/Mdi.d.ts +1 -1
  429. package/lib/typescript/components/MdiLight.d.ts +1 -1
  430. package/lib/typescript/components/MedicalIcon.d.ts +1 -1
  431. package/lib/typescript/components/Memory.d.ts +1 -1
  432. package/lib/typescript/components/Meteocons.d.ts +1 -1
  433. package/lib/typescript/components/MeteorIcons.d.ts +1 -1
  434. package/lib/typescript/components/Mi.d.ts +1 -1
  435. package/lib/typescript/components/Mingcute.d.ts +1 -1
  436. package/lib/typescript/components/MonoIcons.d.ts +1 -1
  437. package/lib/typescript/components/Mynaui.d.ts +1 -1
  438. package/lib/typescript/components/Nimbus.d.ts +1 -1
  439. package/lib/typescript/components/Nonicons.d.ts +1 -1
  440. package/lib/typescript/components/Nrk.d.ts +1 -1
  441. package/lib/typescript/components/Octicon.d.ts +1 -1
  442. package/lib/typescript/components/Oi.d.ts +1 -1
  443. package/lib/typescript/components/Ooui.d.ts +1 -1
  444. package/lib/typescript/components/Oui.d.ts +1 -1
  445. package/lib/typescript/components/Pajamas.d.ts +1 -1
  446. package/lib/typescript/components/Pepicons.d.ts +1 -1
  447. package/lib/typescript/components/PepiconsPencil.d.ts +1 -1
  448. package/lib/typescript/components/PepiconsPop.d.ts +1 -1
  449. package/lib/typescript/components/PepiconsPrint.d.ts +1 -1
  450. package/lib/typescript/components/Ph.d.ts +1 -1
  451. package/lib/typescript/components/Picon.d.ts +1 -1
  452. package/lib/typescript/components/Pixel.d.ts +1 -1
  453. package/lib/typescript/components/Pixelarticons.d.ts +1 -1
  454. package/lib/typescript/components/Prime.d.ts +1 -1
  455. package/lib/typescript/components/Proicons.d.ts +1 -1
  456. package/lib/typescript/components/Ps.d.ts +1 -1
  457. package/lib/typescript/components/QlementineIcons.d.ts +1 -1
  458. package/lib/typescript/components/Quill.d.ts +1 -1
  459. package/lib/typescript/components/RadixIcons.d.ts +1 -1
  460. package/lib/typescript/components/Raphael.d.ts +1 -1
  461. package/lib/typescript/components/Ri.d.ts +1 -1
  462. package/lib/typescript/components/RivetIcons.d.ts +1 -1
  463. package/lib/typescript/components/Roentgen.d.ts +1 -1
  464. package/lib/typescript/components/Si.d.ts +1 -1
  465. package/lib/typescript/components/SiGlyph.d.ts +1 -1
  466. package/lib/typescript/components/Sidekickicons.d.ts +1 -1
  467. package/lib/typescript/components/SimpleIcons.d.ts +1 -1
  468. package/lib/typescript/components/SimpleLineIcons.d.ts +1 -1
  469. package/lib/typescript/components/SkillIcons.d.ts +1 -1
  470. package/lib/typescript/components/Solar.d.ts +1 -1
  471. package/lib/typescript/components/Stash.d.ts +1 -1
  472. package/lib/typescript/components/Streamline.d.ts +1 -1
  473. package/lib/typescript/components/StreamlineBlock.d.ts +1 -1
  474. package/lib/typescript/components/StreamlineColor.d.ts +1 -1
  475. package/lib/typescript/components/StreamlineCyber.d.ts +1 -1
  476. package/lib/typescript/components/StreamlineCyberColor.d.ts +1 -1
  477. package/lib/typescript/components/StreamlineEmojis.d.ts +1 -1
  478. package/lib/typescript/components/StreamlineFlex.d.ts +1 -1
  479. package/lib/typescript/components/StreamlineFlexColor.d.ts +1 -1
  480. package/lib/typescript/components/StreamlineFreehand.d.ts +1 -1
  481. package/lib/typescript/components/StreamlineFreehandColor.d.ts +1 -1
  482. package/lib/typescript/components/StreamlineKameleonColor.d.ts +1 -1
  483. package/lib/typescript/components/StreamlineLogos.d.ts +1 -1
  484. package/lib/typescript/components/StreamlinePixel.d.ts +1 -1
  485. package/lib/typescript/components/StreamlinePlump.d.ts +1 -1
  486. package/lib/typescript/components/StreamlinePlumpColor.d.ts +1 -1
  487. package/lib/typescript/components/StreamlineSharp.d.ts +1 -1
  488. package/lib/typescript/components/StreamlineSharpColor.d.ts +1 -1
  489. package/lib/typescript/components/StreamlineStickiesColor.d.ts +1 -1
  490. package/lib/typescript/components/StreamlineUltimate.d.ts +1 -1
  491. package/lib/typescript/components/StreamlineUltimateColor.d.ts +1 -1
  492. package/lib/typescript/components/Subway.d.ts +1 -1
  493. package/lib/typescript/components/SvgSpinners.d.ts +1 -1
  494. package/lib/typescript/components/SystemUicons.d.ts +1 -1
  495. package/lib/typescript/components/Tabler.d.ts +1 -1
  496. package/lib/typescript/components/Tdesign.d.ts +1 -1
  497. package/lib/typescript/components/Teenyicons.d.ts +1 -1
  498. package/lib/typescript/components/Temaki.d.ts +1 -1
  499. package/lib/typescript/components/Token.d.ts +1 -1
  500. package/lib/typescript/components/TokenBranded.d.ts +1 -1
  501. package/lib/typescript/components/Topcoat.d.ts +1 -1
  502. package/lib/typescript/components/Typcn.d.ts +1 -1
  503. package/lib/typescript/components/Uil.d.ts +1 -1
  504. package/lib/typescript/components/Uim.d.ts +1 -1
  505. package/lib/typescript/components/Uis.d.ts +1 -1
  506. package/lib/typescript/components/Uit.d.ts +1 -1
  507. package/lib/typescript/components/Uiw.d.ts +1 -1
  508. package/lib/typescript/components/Unjs.d.ts +1 -1
  509. package/lib/typescript/components/Vaadin.d.ts +1 -1
  510. package/lib/typescript/components/Vs.d.ts +1 -1
  511. package/lib/typescript/components/VscodeIcons.d.ts +1 -1
  512. package/lib/typescript/components/Websymbol.d.ts +1 -1
  513. package/lib/typescript/components/Weui.d.ts +1 -1
  514. package/lib/typescript/components/Whh.d.ts +1 -1
  515. package/lib/typescript/components/Wi.d.ts +1 -1
  516. package/lib/typescript/components/Wpf.d.ts +1 -1
  517. package/lib/typescript/components/Zmdi.d.ts +1 -1
  518. package/lib/typescript/components/Zondicons.d.ts +1 -1
  519. package/lib/typescript/components/index.d.ts +38 -1
  520. package/lib/typescript/components/index.d.ts.map +1 -1
  521. package/lib/typescript/config/ConfigManager.d.ts +102 -0
  522. package/lib/typescript/config/ConfigManager.d.ts.map +1 -0
  523. package/lib/typescript/config/index.d.ts +22 -0
  524. package/lib/typescript/config/index.d.ts.map +1 -0
  525. package/lib/typescript/config/types.d.ts +112 -0
  526. package/lib/typescript/config/types.d.ts.map +1 -0
  527. package/lib/typescript/createIconSet.d.ts +1 -1
  528. package/lib/typescript/createIconSet.d.ts.map +1 -1
  529. package/lib/typescript/explorer/IconExplorer.d.ts +54 -0
  530. package/lib/typescript/explorer/IconExplorer.d.ts.map +1 -0
  531. package/lib/typescript/explorer/iconSets.d.ts +35 -0
  532. package/lib/typescript/explorer/iconSets.d.ts.map +1 -0
  533. package/lib/typescript/explorer/index.d.ts +33 -0
  534. package/lib/typescript/explorer/index.d.ts.map +1 -0
  535. package/lib/typescript/explorer/types.d.ts +329 -0
  536. package/lib/typescript/explorer/types.d.ts.map +1 -0
  537. package/lib/typescript/explorer/useExplorer.d.ts +18 -0
  538. package/lib/typescript/explorer/useExplorer.d.ts.map +1 -0
  539. package/lib/typescript/index.d.ts +25 -4
  540. package/lib/typescript/index.d.ts.map +1 -1
  541. package/lib/typescript/navigation/createDrawerIcon.d.ts +74 -0
  542. package/lib/typescript/navigation/createDrawerIcon.d.ts.map +1 -0
  543. package/lib/typescript/navigation/createHeaderIcon.d.ts +145 -0
  544. package/lib/typescript/navigation/createHeaderIcon.d.ts.map +1 -0
  545. package/lib/typescript/navigation/createTabBarIcon.d.ts +99 -0
  546. package/lib/typescript/navigation/createTabBarIcon.d.ts.map +1 -0
  547. package/lib/typescript/navigation/index.d.ts +51 -0
  548. package/lib/typescript/navigation/index.d.ts.map +1 -0
  549. package/lib/typescript/navigation/types.d.ts +149 -0
  550. package/lib/typescript/navigation/types.d.ts.map +1 -0
  551. package/lib/typescript/navigation/useNavigationIcon.d.ts +91 -0
  552. package/lib/typescript/navigation/useNavigationIcon.d.ts.map +1 -0
  553. package/lib/typescript/network/IconifyAPI.d.ts +32 -0
  554. package/lib/typescript/network/IconifyAPI.d.ts.map +1 -1
  555. package/lib/typescript/network/index.d.ts +2 -1
  556. package/lib/typescript/network/index.d.ts.map +1 -1
  557. package/lib/typescript/performance/PerformanceMonitor.d.ts +76 -0
  558. package/lib/typescript/performance/PerformanceMonitor.d.ts.map +1 -0
  559. package/lib/typescript/performance/index.d.ts +21 -0
  560. package/lib/typescript/performance/index.d.ts.map +1 -0
  561. package/lib/typescript/performance/types.d.ts +156 -0
  562. package/lib/typescript/performance/types.d.ts.map +1 -0
  563. package/lib/typescript/placeholder/PlaceholderFactory.d.ts +44 -0
  564. package/lib/typescript/placeholder/PlaceholderFactory.d.ts.map +1 -0
  565. package/lib/typescript/placeholder/Pulse.d.ts +18 -0
  566. package/lib/typescript/placeholder/Pulse.d.ts.map +1 -0
  567. package/lib/typescript/placeholder/Shimmer.d.ts +19 -0
  568. package/lib/typescript/placeholder/Shimmer.d.ts.map +1 -0
  569. package/lib/typescript/placeholder/Skeleton.d.ts +18 -0
  570. package/lib/typescript/placeholder/Skeleton.d.ts.map +1 -0
  571. package/lib/typescript/placeholder/index.d.ts +12 -0
  572. package/lib/typescript/placeholder/index.d.ts.map +1 -0
  573. package/lib/typescript/placeholder/types.d.ts +63 -0
  574. package/lib/typescript/placeholder/types.d.ts.map +1 -0
  575. package/lib/typescript/theme/IconThemeProvider.d.ts +64 -0
  576. package/lib/typescript/theme/IconThemeProvider.d.ts.map +1 -0
  577. package/lib/typescript/theme/context.d.ts +24 -0
  578. package/lib/typescript/theme/context.d.ts.map +1 -0
  579. package/lib/typescript/theme/index.d.ts +10 -0
  580. package/lib/typescript/theme/index.d.ts.map +1 -0
  581. package/lib/typescript/theme/types.d.ts +85 -0
  582. package/lib/typescript/theme/types.d.ts.map +1 -0
  583. package/lib/typescript/theme/useIconTheme.d.ts +78 -0
  584. package/lib/typescript/theme/useIconTheme.d.ts.map +1 -0
  585. package/lib/typescript/types/index.d.ts +58 -1
  586. package/lib/typescript/types/index.d.ts.map +1 -1
  587. package/package.json +41 -3
  588. package/src/IconRenderer.tsx +91 -4
  589. package/src/accessibility/AccessibilityProvider.tsx +220 -0
  590. package/src/accessibility/index.ts +63 -0
  591. package/src/accessibility/types.ts +152 -0
  592. package/src/accessibility/useAccessibleIcon.ts +220 -0
  593. package/src/accessibility/utils.ts +180 -0
  594. package/src/alias/Icon.tsx +113 -0
  595. package/src/alias/IconAliasContext.tsx +180 -0
  596. package/src/alias/createIconAliases.tsx +233 -0
  597. package/src/alias/index.ts +59 -0
  598. package/src/alias/types.ts +132 -0
  599. package/src/animated/AnimatedIcon.tsx +116 -0
  600. package/src/animated/index.ts +97 -0
  601. package/src/animated/presets.ts +211 -0
  602. package/src/animated/types.ts +239 -0
  603. package/src/animated/useIconAnimation.ts +383 -0
  604. package/src/babel/ast-utils.ts +219 -0
  605. package/src/babel/cache-writer.ts +323 -0
  606. package/src/babel/collector.ts +224 -0
  607. package/src/babel/index.ts +60 -0
  608. package/src/babel/plugin.ts +254 -0
  609. package/src/babel/types.ts +717 -0
  610. package/src/bundle/index.ts +313 -0
  611. package/src/cache/CacheManager.ts +123 -6
  612. package/src/cli/commands/analyze.ts +195 -0
  613. package/src/cli/commands/bundle.ts +231 -0
  614. package/src/cli/index.ts +153 -0
  615. package/src/cli/parser.ts +275 -0
  616. package/src/cli/types.ts +187 -0
  617. package/src/components/index.ts +52 -1
  618. package/src/config/ConfigManager.ts +196 -0
  619. package/src/config/index.ts +34 -0
  620. package/src/config/types.ts +149 -0
  621. package/src/createIconSet.tsx +48 -9
  622. package/src/explorer/IconExplorer.tsx +844 -0
  623. package/src/explorer/iconSets.ts +334 -0
  624. package/src/explorer/index.ts +64 -0
  625. package/src/explorer/types.ts +392 -0
  626. package/src/explorer/useExplorer.ts +390 -0
  627. package/src/index.ts +218 -9
  628. package/src/navigation/createDrawerIcon.tsx +113 -0
  629. package/src/navigation/createHeaderIcon.tsx +213 -0
  630. package/src/navigation/createTabBarIcon.tsx +180 -0
  631. package/src/navigation/index.ts +80 -0
  632. package/src/navigation/types.ts +155 -0
  633. package/src/navigation/useNavigationIcon.tsx +156 -0
  634. package/src/network/IconifyAPI.ts +182 -14
  635. package/src/network/index.ts +11 -1
  636. package/src/performance/PerformanceMonitor.ts +367 -0
  637. package/src/performance/index.ts +39 -0
  638. package/src/performance/types.ts +185 -0
  639. package/src/placeholder/PlaceholderFactory.tsx +133 -0
  640. package/src/placeholder/Pulse.tsx +86 -0
  641. package/src/placeholder/Shimmer.tsx +104 -0
  642. package/src/placeholder/Skeleton.tsx +52 -0
  643. package/src/placeholder/index.ts +21 -0
  644. package/src/placeholder/types.ts +78 -0
  645. package/src/theme/IconThemeProvider.tsx +94 -0
  646. package/src/theme/context.ts +51 -0
  647. package/src/theme/index.ts +19 -0
  648. package/src/theme/types.ts +108 -0
  649. package/src/theme/useIconTheme.ts +119 -0
  650. package/src/types/index.ts +78 -1
  651. package/lib/commonjs/components/Phosphor.js +0 -493
  652. package/lib/commonjs/components/Phosphor.js.map +0 -1
  653. package/lib/module/components/Phosphor.js +0 -488
  654. package/lib/module/components/Phosphor.js.map +0 -1
  655. package/lib/typescript/components/Phosphor.d.ts +0 -472
  656. package/lib/typescript/components/Phosphor.d.ts.map +0 -1
  657. package/src/components/Phosphor.tsx +0 -506
@@ -0,0 +1,367 @@
1
+ /**
2
+ * PerformanceMonitor - Tracks icon loading performance
3
+ * Provides metrics, statistics, and insights for optimization
4
+ */
5
+
6
+ import { ConfigManager } from '../config';
7
+ import type {
8
+ IconLoadEvent,
9
+ LoadEventType,
10
+ CacheStatistics,
11
+ PerformanceSummary,
12
+ PerformanceReport,
13
+ PerformanceListener,
14
+ } from './types';
15
+
16
+ /**
17
+ * Performance monitoring state
18
+ */
19
+ let isEnabled = false;
20
+ let startTime = Date.now();
21
+ const events: IconLoadEvent[] = [];
22
+ const listeners: PerformanceListener[] = [];
23
+ const iconLoadCounts = new Map<string, number>();
24
+ const iconLoadTimes = new Map<string, number[]>();
25
+
26
+ /**
27
+ * Counter statistics
28
+ */
29
+ let stats = {
30
+ memoryHits: 0,
31
+ bundledHits: 0,
32
+ diskHits: 0,
33
+ networkFetches: 0,
34
+ errors: 0,
35
+ };
36
+
37
+ /**
38
+ * Get max history size from config
39
+ */
40
+ function getMaxHistorySize(): number {
41
+ return ConfigManager.getPerformanceConfig().maxHistorySize;
42
+ }
43
+
44
+ /**
45
+ * Calculate percentile from sorted array
46
+ */
47
+ function percentile(sortedArr: number[], p: number): number {
48
+ if (sortedArr.length === 0) return 0;
49
+ const index = Math.ceil((p / 100) * sortedArr.length) - 1;
50
+ return sortedArr[Math.max(0, index)];
51
+ }
52
+
53
+ /**
54
+ * Performance Monitor API
55
+ */
56
+ export const PerformanceMonitor = {
57
+ /**
58
+ * Enable performance monitoring
59
+ */
60
+ enable(): void {
61
+ isEnabled = true;
62
+ startTime = Date.now();
63
+ ConfigManager.setConfig({ performance: { enabled: true } });
64
+ },
65
+
66
+ /**
67
+ * Disable performance monitoring
68
+ */
69
+ disable(): void {
70
+ isEnabled = false;
71
+ ConfigManager.setConfig({ performance: { enabled: false } });
72
+ },
73
+
74
+ /**
75
+ * Check if monitoring is enabled
76
+ */
77
+ isEnabled(): boolean {
78
+ return isEnabled || ConfigManager.getPerformanceConfig().enabled;
79
+ },
80
+
81
+ /**
82
+ * Record an icon load event
83
+ */
84
+ recordEvent(iconName: string, type: LoadEventType, duration: number, error?: string): void {
85
+ if (!PerformanceMonitor.isEnabled()) return;
86
+
87
+ const event: IconLoadEvent = {
88
+ iconName,
89
+ type,
90
+ duration,
91
+ timestamp: Date.now(),
92
+ error,
93
+ };
94
+
95
+ // Update statistics
96
+ switch (type) {
97
+ case 'memory_hit':
98
+ stats.memoryHits++;
99
+ break;
100
+ case 'bundled_hit':
101
+ stats.bundledHits++;
102
+ break;
103
+ case 'disk_hit':
104
+ stats.diskHits++;
105
+ break;
106
+ case 'network_fetch':
107
+ stats.networkFetches++;
108
+ break;
109
+ case 'error':
110
+ stats.errors++;
111
+ break;
112
+ }
113
+
114
+ // Track per-icon stats
115
+ const count = (iconLoadCounts.get(iconName) ?? 0) + 1;
116
+ iconLoadCounts.set(iconName, count);
117
+
118
+ const times = iconLoadTimes.get(iconName) ?? [];
119
+ times.push(duration);
120
+ iconLoadTimes.set(iconName, times);
121
+
122
+ // Add to events history
123
+ events.push(event);
124
+
125
+ // Trim history if needed
126
+ const maxSize = getMaxHistorySize();
127
+ while (events.length > maxSize) {
128
+ events.shift();
129
+ }
130
+
131
+ // Notify listeners
132
+ listeners.forEach((listener) => {
133
+ try {
134
+ listener(event);
135
+ } catch (e) {
136
+ // Ignore listener errors
137
+ }
138
+ });
139
+ },
140
+
141
+ /**
142
+ * Subscribe to performance events
143
+ * Returns unsubscribe function
144
+ */
145
+ subscribe(listener: PerformanceListener): () => void {
146
+ listeners.push(listener);
147
+ return () => {
148
+ const index = listeners.indexOf(listener);
149
+ if (index > -1) {
150
+ listeners.splice(index, 1);
151
+ }
152
+ };
153
+ },
154
+
155
+ /**
156
+ * Get cache statistics
157
+ */
158
+ getCacheStats(): CacheStatistics {
159
+ const totalRequests =
160
+ stats.memoryHits + stats.bundledHits + stats.diskHits + stats.networkFetches + stats.errors;
161
+ const hits = stats.memoryHits + stats.bundledHits + stats.diskHits;
162
+
163
+ return {
164
+ memoryHits: stats.memoryHits,
165
+ bundledHits: stats.bundledHits,
166
+ diskHits: stats.diskHits,
167
+ networkFetches: stats.networkFetches,
168
+ errors: stats.errors,
169
+ totalRequests,
170
+ hitRate: totalRequests > 0 ? hits / totalRequests : 0,
171
+ };
172
+ },
173
+
174
+ /**
175
+ * Get performance summary
176
+ */
177
+ getSummary(): PerformanceSummary {
178
+ const durations = events
179
+ .filter((e) => e.type !== 'error')
180
+ .map((e) => e.duration)
181
+ .sort((a, b) => a - b);
182
+
183
+ const totalLoads = durations.length;
184
+ const totalErrors = events.filter((e) => e.type === 'error').length;
185
+
186
+ if (totalLoads === 0) {
187
+ return {
188
+ avgLoadTime: 0,
189
+ minLoadTime: 0,
190
+ maxLoadTime: 0,
191
+ p50LoadTime: 0,
192
+ p90LoadTime: 0,
193
+ p99LoadTime: 0,
194
+ totalLoads: 0,
195
+ totalErrors,
196
+ uptime: Date.now() - startTime,
197
+ };
198
+ }
199
+
200
+ const sum = durations.reduce((a, b) => a + b, 0);
201
+
202
+ return {
203
+ avgLoadTime: sum / totalLoads,
204
+ minLoadTime: durations[0],
205
+ maxLoadTime: durations[durations.length - 1],
206
+ p50LoadTime: percentile(durations, 50),
207
+ p90LoadTime: percentile(durations, 90),
208
+ p99LoadTime: percentile(durations, 99),
209
+ totalLoads,
210
+ totalErrors,
211
+ uptime: Date.now() - startTime,
212
+ };
213
+ },
214
+
215
+ /**
216
+ * Get full performance report
217
+ */
218
+ getReport(): PerformanceReport {
219
+ const summary = PerformanceMonitor.getSummary();
220
+ const cacheStats = PerformanceMonitor.getCacheStats();
221
+
222
+ // Calculate avg load times by type
223
+ const byType = {
224
+ memory: [] as number[],
225
+ bundled: [] as number[],
226
+ disk: [] as number[],
227
+ network: [] as number[],
228
+ };
229
+
230
+ events.forEach((e) => {
231
+ if (e.type === 'memory_hit') byType.memory.push(e.duration);
232
+ else if (e.type === 'bundled_hit') byType.bundled.push(e.duration);
233
+ else if (e.type === 'disk_hit') byType.disk.push(e.duration);
234
+ else if (e.type === 'network_fetch') byType.network.push(e.duration);
235
+ });
236
+
237
+ const avg = (arr: number[]) => (arr.length ? arr.reduce((a, b) => a + b, 0) / arr.length : 0);
238
+
239
+ // Get slowest icons
240
+ const slowestIcons = Array.from(iconLoadTimes.entries())
241
+ .map(([iconName, times]) => ({
242
+ iconName,
243
+ avgDuration: avg(times),
244
+ count: times.length,
245
+ }))
246
+ .sort((a, b) => b.avgDuration - a.avgDuration)
247
+ .slice(0, 10);
248
+
249
+ // Get most used icons
250
+ const mostUsedIcons = Array.from(iconLoadCounts.entries())
251
+ .map(([iconName, count]) => ({ iconName, count }))
252
+ .sort((a, b) => b.count - a.count)
253
+ .slice(0, 10);
254
+
255
+ return {
256
+ summary,
257
+ cacheStats,
258
+ loadTimesByType: {
259
+ memory: avg(byType.memory),
260
+ bundled: avg(byType.bundled),
261
+ disk: avg(byType.disk),
262
+ network: avg(byType.network),
263
+ },
264
+ slowestIcons,
265
+ mostUsedIcons,
266
+ recentEvents: events.slice(-100),
267
+ generatedAt: Date.now(),
268
+ };
269
+ },
270
+
271
+ /**
272
+ * Reset all performance data
273
+ */
274
+ reset(): void {
275
+ events.length = 0;
276
+ iconLoadCounts.clear();
277
+ iconLoadTimes.clear();
278
+ stats = {
279
+ memoryHits: 0,
280
+ bundledHits: 0,
281
+ diskHits: 0,
282
+ networkFetches: 0,
283
+ errors: 0,
284
+ };
285
+ startTime = Date.now();
286
+ },
287
+
288
+ /**
289
+ * Get raw events (for debugging)
290
+ */
291
+ getEvents(): IconLoadEvent[] {
292
+ return [...events];
293
+ },
294
+
295
+ /**
296
+ * Format report as string (for console output)
297
+ */
298
+ formatReport(): string {
299
+ const report = PerformanceMonitor.getReport();
300
+ const { summary, cacheStats, loadTimesByType } = report;
301
+
302
+ const lines = [
303
+ '┌─────────────────────────────────────────────────────┐',
304
+ '│ rn-iconify Performance Report │',
305
+ '├─────────────────────────────────────────────────────┤',
306
+ `│ Total Loads: ${summary.totalLoads.toString().padEnd(10)} │ Errors: ${summary.totalErrors.toString().padEnd(8)} │`,
307
+ `│ Cache Hit Rate: ${(cacheStats.hitRate * 100).toFixed(1)}% │`,
308
+ '├─────────────────────────────────────────────────────┤',
309
+ '│ Load Times │',
310
+ `│ Average: ${summary.avgLoadTime.toFixed(2)}ms │`,
311
+ `│ Min: ${summary.minLoadTime.toFixed(2)}ms │ Max: ${summary.maxLoadTime.toFixed(2)}ms │`,
312
+ `│ P50: ${summary.p50LoadTime.toFixed(2)}ms │ P90: ${summary.p90LoadTime.toFixed(2)}ms │ P99: ${summary.p99LoadTime.toFixed(2)}ms │`,
313
+ '├─────────────────────────────────────────────────────┤',
314
+ '│ By Source │',
315
+ `│ Memory: ${loadTimesByType.memory.toFixed(2)}ms (${cacheStats.memoryHits} hits) │`,
316
+ `│ Bundled: ${loadTimesByType.bundled.toFixed(2)}ms (${cacheStats.bundledHits} hits) │`,
317
+ `│ Disk: ${loadTimesByType.disk.toFixed(2)}ms (${cacheStats.diskHits} hits) │`,
318
+ `│ Network: ${loadTimesByType.network.toFixed(2)}ms (${cacheStats.networkFetches} fetches) │`,
319
+ '└─────────────────────────────────────────────────────┘',
320
+ ];
321
+
322
+ if (report.slowestIcons.length > 0) {
323
+ lines.push('');
324
+ lines.push('🐌 Slowest Icons:');
325
+ report.slowestIcons.slice(0, 5).forEach((icon, i) => {
326
+ lines.push(
327
+ ` ${i + 1}. ${icon.iconName} (${icon.avgDuration.toFixed(2)}ms avg, ${icon.count}x)`
328
+ );
329
+ });
330
+ }
331
+
332
+ return lines.join('\n');
333
+ },
334
+ };
335
+
336
+ /**
337
+ * Enable performance monitoring
338
+ * Alias for PerformanceMonitor.enable()
339
+ */
340
+ export function enablePerformanceMonitoring(): void {
341
+ PerformanceMonitor.enable();
342
+ }
343
+
344
+ /**
345
+ * Disable performance monitoring
346
+ * Alias for PerformanceMonitor.disable()
347
+ */
348
+ export function disablePerformanceMonitoring(): void {
349
+ PerformanceMonitor.disable();
350
+ }
351
+
352
+ /**
353
+ * Get performance report
354
+ * Alias for PerformanceMonitor.getReport()
355
+ */
356
+ export function getPerformanceReport(): PerformanceReport {
357
+ return PerformanceMonitor.getReport();
358
+ }
359
+
360
+ /**
361
+ * Print formatted performance report to console
362
+ */
363
+ export function printPerformanceReport(): void {
364
+ console.log(PerformanceMonitor.formatReport());
365
+ }
366
+
367
+ export default PerformanceMonitor;
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Performance Monitoring Module
3
+ * Track and analyze icon loading performance
4
+ *
5
+ * @example
6
+ * ```tsx
7
+ * import { enablePerformanceMonitoring, getPerformanceReport } from 'rn-iconify';
8
+ *
9
+ * // Enable monitoring
10
+ * enablePerformanceMonitoring();
11
+ *
12
+ * // Later, get the report
13
+ * const report = getPerformanceReport();
14
+ * console.log(`Cache hit rate: ${report.cacheStats.hitRate * 100}%`);
15
+ * console.log(`Avg load time: ${report.summary.avgLoadTime}ms`);
16
+ * ```
17
+ */
18
+
19
+ // Types
20
+ export type {
21
+ IconLoadEvent,
22
+ LoadEventType,
23
+ CacheStatistics,
24
+ PerformanceSummary,
25
+ PerformanceReport,
26
+ PerformanceListener,
27
+ } from './types';
28
+
29
+ // PerformanceMonitor
30
+ export {
31
+ PerformanceMonitor,
32
+ enablePerformanceMonitoring,
33
+ disablePerformanceMonitoring,
34
+ getPerformanceReport,
35
+ printPerformanceReport,
36
+ } from './PerformanceMonitor';
37
+
38
+ // Default export
39
+ export { PerformanceMonitor as default } from './PerformanceMonitor';
@@ -0,0 +1,185 @@
1
+ /**
2
+ * Performance monitoring types for rn-iconify
3
+ */
4
+
5
+ /**
6
+ * Icon load event type
7
+ */
8
+ export type LoadEventType = 'memory_hit' | 'bundled_hit' | 'disk_hit' | 'network_fetch' | 'error';
9
+
10
+ /**
11
+ * Single icon load event
12
+ */
13
+ export interface IconLoadEvent {
14
+ /**
15
+ * Icon name (e.g., "mdi:home")
16
+ */
17
+ iconName: string;
18
+
19
+ /**
20
+ * Event type
21
+ */
22
+ type: LoadEventType;
23
+
24
+ /**
25
+ * Load time in milliseconds
26
+ */
27
+ duration: number;
28
+
29
+ /**
30
+ * Timestamp of the event
31
+ */
32
+ timestamp: number;
33
+
34
+ /**
35
+ * Error message if type is 'error'
36
+ */
37
+ error?: string;
38
+ }
39
+
40
+ /**
41
+ * Cache statistics
42
+ */
43
+ export interface CacheStatistics {
44
+ /**
45
+ * Number of memory cache hits
46
+ */
47
+ memoryHits: number;
48
+
49
+ /**
50
+ * Number of bundled icon hits
51
+ */
52
+ bundledHits: number;
53
+
54
+ /**
55
+ * Number of disk cache hits
56
+ */
57
+ diskHits: number;
58
+
59
+ /**
60
+ * Number of network fetches
61
+ */
62
+ networkFetches: number;
63
+
64
+ /**
65
+ * Number of errors
66
+ */
67
+ errors: number;
68
+
69
+ /**
70
+ * Total requests
71
+ */
72
+ totalRequests: number;
73
+
74
+ /**
75
+ * Cache hit rate (0-1)
76
+ */
77
+ hitRate: number;
78
+ }
79
+
80
+ /**
81
+ * Performance summary
82
+ */
83
+ export interface PerformanceSummary {
84
+ /**
85
+ * Average load time in milliseconds
86
+ */
87
+ avgLoadTime: number;
88
+
89
+ /**
90
+ * Minimum load time in milliseconds
91
+ */
92
+ minLoadTime: number;
93
+
94
+ /**
95
+ * Maximum load time in milliseconds
96
+ */
97
+ maxLoadTime: number;
98
+
99
+ /**
100
+ * 50th percentile (median) load time
101
+ */
102
+ p50LoadTime: number;
103
+
104
+ /**
105
+ * 90th percentile load time
106
+ */
107
+ p90LoadTime: number;
108
+
109
+ /**
110
+ * 99th percentile load time
111
+ */
112
+ p99LoadTime: number;
113
+
114
+ /**
115
+ * Total icons loaded
116
+ */
117
+ totalLoads: number;
118
+
119
+ /**
120
+ * Total errors
121
+ */
122
+ totalErrors: number;
123
+
124
+ /**
125
+ * Uptime since monitoring started (ms)
126
+ */
127
+ uptime: number;
128
+ }
129
+
130
+ /**
131
+ * Complete performance report
132
+ */
133
+ export interface PerformanceReport {
134
+ /**
135
+ * Performance summary
136
+ */
137
+ summary: PerformanceSummary;
138
+
139
+ /**
140
+ * Cache statistics
141
+ */
142
+ cacheStats: CacheStatistics;
143
+
144
+ /**
145
+ * Load time breakdown by type
146
+ */
147
+ loadTimesByType: {
148
+ memory: number;
149
+ bundled: number;
150
+ disk: number;
151
+ network: number;
152
+ };
153
+
154
+ /**
155
+ * Top slowest icons
156
+ */
157
+ slowestIcons: Array<{
158
+ iconName: string;
159
+ avgDuration: number;
160
+ count: number;
161
+ }>;
162
+
163
+ /**
164
+ * Most frequently loaded icons
165
+ */
166
+ mostUsedIcons: Array<{
167
+ iconName: string;
168
+ count: number;
169
+ }>;
170
+
171
+ /**
172
+ * Recent events
173
+ */
174
+ recentEvents: IconLoadEvent[];
175
+
176
+ /**
177
+ * Report timestamp
178
+ */
179
+ generatedAt: number;
180
+ }
181
+
182
+ /**
183
+ * Performance listener callback
184
+ */
185
+ export type PerformanceListener = (event: IconLoadEvent) => void;
@@ -0,0 +1,133 @@
1
+ /**
2
+ * PlaceholderFactory
3
+ * Creates the appropriate placeholder component based on type
4
+ */
5
+
6
+ import React, { isValidElement } from 'react';
7
+ import { View, StyleSheet } from 'react-native';
8
+ import { Skeleton } from './Skeleton';
9
+ import { Pulse } from './Pulse';
10
+ import { Shimmer } from './Shimmer';
11
+ import type { PlaceholderType, PlaceholderConfig, PlaceholderPreset } from './types';
12
+
13
+ /**
14
+ * Props for PlaceholderFactory
15
+ */
16
+ export interface PlaceholderFactoryProps extends PlaceholderConfig {
17
+ /**
18
+ * Type of placeholder to render
19
+ */
20
+ type: PlaceholderType;
21
+
22
+ /**
23
+ * Width of the placeholder
24
+ */
25
+ width: number;
26
+
27
+ /**
28
+ * Height of the placeholder
29
+ */
30
+ height: number;
31
+
32
+ /**
33
+ * Test ID for testing
34
+ */
35
+ testID?: string;
36
+ }
37
+
38
+ /**
39
+ * Check if a value is a valid PlaceholderPreset
40
+ */
41
+ function isPlaceholderPreset(value: unknown): value is PlaceholderPreset {
42
+ return typeof value === 'string' && ['skeleton', 'pulse', 'shimmer'].includes(value);
43
+ }
44
+
45
+ /**
46
+ * PlaceholderFactory - renders the appropriate placeholder component
47
+ *
48
+ * @example
49
+ * ```tsx
50
+ * // Using preset
51
+ * <PlaceholderFactory type="shimmer" width={24} height={24} />
52
+ *
53
+ * // Using custom component
54
+ * <PlaceholderFactory type={<ActivityIndicator />} width={24} height={24} />
55
+ * ```
56
+ */
57
+ export function PlaceholderFactory({
58
+ type,
59
+ width,
60
+ height,
61
+ color,
62
+ highlightColor,
63
+ duration,
64
+ borderRadius,
65
+ testID,
66
+ }: PlaceholderFactoryProps): React.ReactElement | null {
67
+ // Handle preset strings
68
+ if (isPlaceholderPreset(type)) {
69
+ const props = {
70
+ width,
71
+ height,
72
+ color,
73
+ highlightColor,
74
+ duration,
75
+ borderRadius,
76
+ testID,
77
+ };
78
+
79
+ switch (type) {
80
+ case 'skeleton':
81
+ return <Skeleton {...props} />;
82
+ case 'pulse':
83
+ return <Pulse {...props} />;
84
+ case 'shimmer':
85
+ return <Shimmer {...props} />;
86
+ default:
87
+ // TypeScript exhaustive check
88
+ const _exhaustive: never = type;
89
+ return _exhaustive;
90
+ }
91
+ }
92
+
93
+ // Handle custom ReactNode
94
+ if (isValidElement(type)) {
95
+ return (
96
+ <View style={[styles.customContainer, { width, height }]} testID={testID}>
97
+ {type}
98
+ </View>
99
+ );
100
+ }
101
+
102
+ // Handle null/undefined - render nothing
103
+ if (type === null || type === undefined) {
104
+ return null;
105
+ }
106
+
107
+ // Fallback to skeleton for any other value
108
+ if (__DEV__) {
109
+ console.warn(
110
+ `[rn-iconify] Invalid placeholder type: ${String(type)}. ` +
111
+ `Expected 'skeleton', 'pulse', 'shimmer', or a ReactNode.`
112
+ );
113
+ }
114
+
115
+ return (
116
+ <Skeleton
117
+ width={width}
118
+ height={height}
119
+ color={color}
120
+ borderRadius={borderRadius}
121
+ testID={testID}
122
+ />
123
+ );
124
+ }
125
+
126
+ PlaceholderFactory.displayName = 'PlaceholderFactory';
127
+
128
+ const styles = StyleSheet.create({
129
+ customContainer: {
130
+ alignItems: 'center',
131
+ justifyContent: 'center',
132
+ },
133
+ });