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,155 @@
1
+ /**
2
+ * React Navigation Integration Types
3
+ * Type definitions for navigation icon helpers
4
+ */
5
+
6
+ import type { ReactNode } from 'react';
7
+ import type { StyleProp, ViewStyle } from 'react-native';
8
+
9
+ /**
10
+ * Props passed by React Navigation to tabBarIcon
11
+ */
12
+ export interface TabBarIconProps {
13
+ focused: boolean;
14
+ color: string;
15
+ size: number;
16
+ }
17
+
18
+ /**
19
+ * Props passed by React Navigation to drawerIcon
20
+ */
21
+ export interface DrawerIconProps {
22
+ focused: boolean;
23
+ color: string;
24
+ size: number;
25
+ }
26
+
27
+ /**
28
+ * Props passed by React Navigation to headerLeft/headerRight icons
29
+ */
30
+ export interface HeaderIconProps {
31
+ tintColor?: string;
32
+ pressColor?: string;
33
+ pressOpacity?: number;
34
+ }
35
+
36
+ /**
37
+ * Icon specification - can be a full name or alias
38
+ * @example 'mdi:home' or 'home' (if alias is registered)
39
+ */
40
+ export type IconSpec = string;
41
+
42
+ /**
43
+ * Configuration for tab bar icon
44
+ */
45
+ export interface TabBarIconConfig {
46
+ /**
47
+ * Icon to show when tab is focused
48
+ * Can be a full icon name (mdi:home) or alias (home)
49
+ */
50
+ focused: IconSpec;
51
+
52
+ /**
53
+ * Icon to show when tab is not focused
54
+ * If not provided, uses the focused icon with different styling
55
+ */
56
+ unfocused?: IconSpec;
57
+
58
+ /**
59
+ * Custom size override (default: uses navigation's size)
60
+ */
61
+ size?: number;
62
+
63
+ /**
64
+ * Custom color override for focused state
65
+ */
66
+ focusedColor?: string;
67
+
68
+ /**
69
+ * Custom color override for unfocused state
70
+ */
71
+ unfocusedColor?: string;
72
+
73
+ /**
74
+ * Additional style for the icon container
75
+ */
76
+ style?: StyleProp<ViewStyle>;
77
+
78
+ /**
79
+ * Accessibility label
80
+ */
81
+ accessibilityLabel?: string;
82
+ }
83
+
84
+ /**
85
+ * Simple config - just icon names
86
+ */
87
+ export type SimpleTabBarIconConfig = IconSpec | [IconSpec, IconSpec];
88
+
89
+ /**
90
+ * Configuration for drawer icon
91
+ */
92
+ export interface DrawerIconConfig {
93
+ /**
94
+ * Icon to show
95
+ */
96
+ icon: IconSpec;
97
+
98
+ /**
99
+ * Icon when drawer item is focused
100
+ */
101
+ focusedIcon?: IconSpec;
102
+
103
+ /**
104
+ * Custom size override
105
+ */
106
+ size?: number;
107
+
108
+ /**
109
+ * Additional style
110
+ */
111
+ style?: StyleProp<ViewStyle>;
112
+ }
113
+
114
+ /**
115
+ * Return type for createTabBarIcon
116
+ */
117
+ export type TabBarIconFunction = (props: TabBarIconProps) => ReactNode;
118
+
119
+ /**
120
+ * Return type for createDrawerIcon
121
+ */
122
+ export type DrawerIconFunction = (props: DrawerIconProps) => ReactNode;
123
+
124
+ /**
125
+ * Return type for createHeaderIcon
126
+ */
127
+ export type HeaderIconFunction = (props: HeaderIconProps) => ReactNode;
128
+
129
+ /**
130
+ * Navigation icon preset - common icon patterns
131
+ */
132
+ export interface NavigationIconPreset {
133
+ home: { focused: IconSpec; unfocused: IconSpec };
134
+ search: { focused: IconSpec; unfocused: IconSpec };
135
+ profile: { focused: IconSpec; unfocused: IconSpec };
136
+ settings: { focused: IconSpec; unfocused: IconSpec };
137
+ notifications: { focused: IconSpec; unfocused: IconSpec };
138
+ messages: { focused: IconSpec; unfocused: IconSpec };
139
+ favorites: { focused: IconSpec; unfocused: IconSpec };
140
+ cart: { focused: IconSpec; unfocused: IconSpec };
141
+ }
142
+
143
+ /**
144
+ * Default icon presets using popular icon sets
145
+ */
146
+ export const DEFAULT_NAVIGATION_PRESETS: NavigationIconPreset = {
147
+ home: { focused: 'mdi:home', unfocused: 'mdi:home-outline' },
148
+ search: { focused: 'mdi:magnify', unfocused: 'mdi:magnify' },
149
+ profile: { focused: 'mdi:account', unfocused: 'mdi:account-outline' },
150
+ settings: { focused: 'mdi:cog', unfocused: 'mdi:cog-outline' },
151
+ notifications: { focused: 'mdi:bell', unfocused: 'mdi:bell-outline' },
152
+ messages: { focused: 'mdi:message', unfocused: 'mdi:message-outline' },
153
+ favorites: { focused: 'mdi:heart', unfocused: 'mdi:heart-outline' },
154
+ cart: { focused: 'mdi:cart', unfocused: 'mdi:cart-outline' },
155
+ };
@@ -0,0 +1,156 @@
1
+ /**
2
+ * useNavigationIcon - Hook for creating navigation icons
3
+ * Provides a clean API for creating icons with navigation context
4
+ */
5
+
6
+ import React, { useMemo, useCallback } from 'react';
7
+ import { Icon } from '../alias';
8
+ import type {
9
+ TabBarIconProps,
10
+ DrawerIconProps,
11
+ TabBarIconFunction,
12
+ DrawerIconFunction,
13
+ } from './types';
14
+
15
+ // IconSpec is just a type alias for string (icon name)
16
+ type IconSpec = string;
17
+
18
+ /**
19
+ * Hook options
20
+ */
21
+ export interface UseNavigationIconOptions {
22
+ /**
23
+ * Default size for icons
24
+ * @default 24
25
+ */
26
+ defaultSize?: number;
27
+
28
+ /**
29
+ * Suffix for unfocused icon variants
30
+ * @default '-outline'
31
+ */
32
+ outlineSuffix?: string;
33
+ }
34
+
35
+ /**
36
+ * Return type for useNavigationIcon
37
+ */
38
+ export interface UseNavigationIconReturn {
39
+ /**
40
+ * Create a tab bar icon function
41
+ */
42
+ tabBarIcon: (focused: IconSpec, unfocused?: IconSpec) => TabBarIconFunction;
43
+
44
+ /**
45
+ * Create a drawer icon function
46
+ */
47
+ drawerIcon: (icon: IconSpec, focusedIcon?: IconSpec) => DrawerIconFunction;
48
+
49
+ /**
50
+ * Create an auto-outline tab bar icon
51
+ * Uses {name} for focused and {name}-outline for unfocused
52
+ */
53
+ autoTabBarIcon: (prefix: string, name: string) => TabBarIconFunction;
54
+
55
+ /**
56
+ * Render an icon directly with navigation props
57
+ */
58
+ renderIcon: (name: IconSpec, props: { color: string; size: number }) => React.ReactElement;
59
+ }
60
+
61
+ /**
62
+ * Hook for creating navigation icons with consistent styling
63
+ *
64
+ * @example Basic usage
65
+ * ```tsx
66
+ * import { useNavigationIcon } from 'rn-iconify/navigation';
67
+ *
68
+ * function MyTabs() {
69
+ * const { tabBarIcon, drawerIcon } = useNavigationIcon();
70
+ *
71
+ * return (
72
+ * <Tab.Navigator>
73
+ * <Tab.Screen
74
+ * name="Home"
75
+ * options={{
76
+ * tabBarIcon: tabBarIcon('mdi:home', 'mdi:home-outline'),
77
+ * }}
78
+ * />
79
+ * <Tab.Screen
80
+ * name="Settings"
81
+ * options={{
82
+ * tabBarIcon: tabBarIcon('mdi:cog'),
83
+ * }}
84
+ * />
85
+ * </Tab.Navigator>
86
+ * );
87
+ * }
88
+ * ```
89
+ *
90
+ * @example With auto-outline
91
+ * ```tsx
92
+ * const { autoTabBarIcon } = useNavigationIcon();
93
+ *
94
+ * <Tab.Screen
95
+ * options={{
96
+ * // Uses mdi:home (focused) and mdi:home-outline (unfocused)
97
+ * tabBarIcon: autoTabBarIcon('mdi', 'home'),
98
+ * }}
99
+ * />
100
+ * ```
101
+ */
102
+ export function useNavigationIcon(options: UseNavigationIconOptions = {}): UseNavigationIconReturn {
103
+ const { defaultSize = 24, outlineSuffix = '-outline' } = options;
104
+
105
+ // Create tab bar icon function
106
+ const tabBarIcon = useCallback(
107
+ (focused: IconSpec, unfocused?: IconSpec): TabBarIconFunction => {
108
+ return ({ focused: isFocused, color, size }: TabBarIconProps) => {
109
+ const iconName = isFocused ? focused : (unfocused ?? focused);
110
+ return <Icon name={iconName} size={size ?? defaultSize} color={color} />;
111
+ };
112
+ },
113
+ [defaultSize]
114
+ );
115
+
116
+ // Create drawer icon function
117
+ const drawerIcon = useCallback(
118
+ (icon: IconSpec, focusedIcon?: IconSpec): DrawerIconFunction => {
119
+ return ({ focused, color, size }: DrawerIconProps) => {
120
+ const iconName = focused && focusedIcon ? focusedIcon : icon;
121
+ return <Icon name={iconName} size={size ?? defaultSize} color={color} />;
122
+ };
123
+ },
124
+ [defaultSize]
125
+ );
126
+
127
+ // Create auto-outline tab bar icon
128
+ const autoTabBarIcon = useCallback(
129
+ (prefix: string, name: string): TabBarIconFunction => {
130
+ const focused = `${prefix}:${name}`;
131
+ const unfocused = `${prefix}:${name}${outlineSuffix}`;
132
+ return tabBarIcon(focused, unfocused);
133
+ },
134
+ [tabBarIcon, outlineSuffix]
135
+ );
136
+
137
+ // Render icon directly
138
+ const renderIcon = useCallback(
139
+ (name: IconSpec, props: { color: string; size: number }): React.ReactElement => {
140
+ return <Icon name={name} size={props.size ?? defaultSize} color={props.color} />;
141
+ },
142
+ [defaultSize]
143
+ );
144
+
145
+ return useMemo(
146
+ () => ({
147
+ tabBarIcon,
148
+ drawerIcon,
149
+ autoTabBarIcon,
150
+ renderIcon,
151
+ }),
152
+ [tabBarIcon, drawerIcon, autoTabBarIcon, renderIcon]
153
+ );
154
+ }
155
+
156
+ export default useNavigationIcon;
@@ -1,14 +1,26 @@
1
1
  /**
2
2
  * Iconify API Client
3
3
  * Handles fetching icon data from Iconify API
4
+ * Supports custom API servers via ConfigManager
4
5
  */
5
6
 
6
7
  import type { IconifyAPIResponse, IconifyIconData } from '../types';
8
+ import { ConfigManager } from '../config';
7
9
 
8
- const ICONIFY_API_BASE = 'https://api.iconify.design';
9
- const DEFAULT_TIMEOUT_MS = 30000; // 30 second timeout
10
- const MAX_RETRIES = 2;
11
- const RETRY_DELAY_MS = 1000;
10
+ /**
11
+ * Get current API configuration
12
+ */
13
+ function getAPISettings() {
14
+ const config = ConfigManager.getAPIConfig();
15
+ return {
16
+ baseUrl: config.apiUrl,
17
+ timeout: config.timeout,
18
+ retries: config.retries,
19
+ retryDelay: config.retryDelay,
20
+ headers: config.headers,
21
+ logging: config.logging,
22
+ };
23
+ }
12
24
 
13
25
  /**
14
26
  * Request deduplication map
@@ -22,18 +34,26 @@ const pendingRequests = new Map<string, Promise<string>>();
22
34
  async function fetchWithTimeout(
23
35
  url: string,
24
36
  options: RequestInit = {},
25
- timeoutMs: number = DEFAULT_TIMEOUT_MS
37
+ timeoutMs?: number
26
38
  ): Promise<Response> {
39
+ const settings = getAPISettings();
40
+ const effectiveTimeout = timeoutMs ?? settings.timeout;
27
41
  const controller = new AbortController();
28
- const timeoutId = setTimeout(() => controller.abort(), timeoutMs);
42
+ const timeoutId = setTimeout(() => controller.abort(), effectiveTimeout);
29
43
 
30
44
  // Merge abort signals if one is provided
31
45
  const signal = options.signal
32
46
  ? anySignal([options.signal, controller.signal])
33
47
  : controller.signal;
34
48
 
49
+ // Merge headers from config
50
+ const headers = {
51
+ ...settings.headers,
52
+ ...(options.headers as Record<string, string> | undefined),
53
+ };
54
+
35
55
  try {
36
- const response = await fetch(url, { ...options, signal });
56
+ const response = await fetch(url, { ...options, headers, signal });
37
57
  return response;
38
58
  } finally {
39
59
  clearTimeout(timeoutId);
@@ -150,16 +170,22 @@ export async function fetchIcon(iconName: string, signal?: AbortSignal): Promise
150
170
 
151
171
  // Create and store the request promise
152
172
  const requestPromise = (async () => {
173
+ const settings = getAPISettings();
153
174
  let lastError: Error | null = null;
154
175
 
155
- for (let attempt = 0; attempt <= MAX_RETRIES; attempt++) {
176
+ for (let attempt = 0; attempt <= settings.retries; attempt++) {
156
177
  try {
157
178
  // Check if already aborted
158
179
  if (signal?.aborted) {
159
180
  throw new DOMException('Aborted', 'AbortError');
160
181
  }
161
182
 
162
- const url = `${ICONIFY_API_BASE}/${prefix}.json?icons=${name}`;
183
+ const url = `${settings.baseUrl}/${prefix}.json?icons=${name}`;
184
+
185
+ if (settings.logging) {
186
+ console.log(`[rn-iconify] Fetching: ${url} (attempt ${attempt + 1})`);
187
+ }
188
+
163
189
  const response = await fetchWithTimeout(url, { signal });
164
190
 
165
191
  if (!response.ok) {
@@ -203,15 +229,20 @@ export async function fetchIcon(iconName: string, signal?: AbortSignal): Promise
203
229
  lastError = error instanceof Error ? error : new Error(String(error));
204
230
 
205
231
  // Wait before retrying (except on last attempt)
206
- if (attempt < MAX_RETRIES) {
207
- await new Promise((resolve) => setTimeout(resolve, RETRY_DELAY_MS * (attempt + 1)));
232
+ if (attempt < settings.retries) {
233
+ const delay = settings.retryDelay * (attempt + 1);
234
+ if (settings.logging) {
235
+ console.log(`[rn-iconify] Retry ${attempt + 1} in ${delay}ms...`);
236
+ }
237
+ await new Promise((resolve) => setTimeout(resolve, delay));
208
238
  }
209
239
  }
210
240
  }
211
241
 
212
242
  // All retries exhausted
213
243
  throw (
214
- lastError ?? new Error(`Failed to fetch icon "${iconName}" after ${MAX_RETRIES + 1} attempts`)
244
+ lastError ??
245
+ new Error(`Failed to fetch icon "${iconName}" after ${settings.retries + 1} attempts`)
215
246
  );
216
247
  })();
217
248
 
@@ -261,6 +292,7 @@ export async function fetchIconsBatch(
261
292
  }
262
293
 
263
294
  // Fetch each prefix group with error handling per group
295
+ const settings = getAPISettings();
264
296
  const fetchPromises = Array.from(byPrefix.entries()).map(async ([prefix, names]) => {
265
297
  try {
266
298
  // Check if aborted
@@ -271,7 +303,12 @@ export async function fetchIconsBatch(
271
303
 
272
304
  // Sort icon names alphabetically for consistent caching (Iconify best practice)
273
305
  const sortedNames = [...names].sort();
274
- const url = `${ICONIFY_API_BASE}/${prefix}.json?icons=${sortedNames.join(',')}`;
306
+ const url = `${settings.baseUrl}/${prefix}.json?icons=${sortedNames.join(',')}`;
307
+
308
+ if (settings.logging) {
309
+ console.log(`[rn-iconify] Batch fetching: ${url}`);
310
+ }
311
+
275
312
  const response = await fetchWithTimeout(url, { signal });
276
313
 
277
314
  if (!response.ok) {
@@ -321,12 +358,143 @@ export async function fetchIconsBatch(
321
358
  * Check if Iconify API is reachable
322
359
  */
323
360
  export async function checkAPIHealth(): Promise<boolean> {
361
+ const settings = getAPISettings();
324
362
  try {
325
- const response = await fetch(`${ICONIFY_API_BASE}/collections`, {
363
+ const response = await fetch(`${settings.baseUrl}/collections`, {
326
364
  method: 'HEAD',
365
+ headers: settings.headers,
327
366
  });
328
367
  return response.ok;
329
368
  } catch {
330
369
  return false;
331
370
  }
332
371
  }
372
+
373
+ /**
374
+ * Get the current API base URL
375
+ */
376
+ export function getAPIBaseUrl(): string {
377
+ return getAPISettings().baseUrl;
378
+ }
379
+
380
+ /**
381
+ * Icon collection info from Iconify API
382
+ */
383
+ export interface IconifyCollectionInfo {
384
+ prefix: string;
385
+ total: number;
386
+ title?: string;
387
+ icons: string[];
388
+ aliases?: Record<string, string>;
389
+ categories?: Record<string, string[]>;
390
+ }
391
+
392
+ /**
393
+ * Fetch all icons for a specific icon set from Iconify API
394
+ * @param prefix Icon set prefix (e.g., "mdi", "heroicons")
395
+ * @param signal Optional AbortSignal for cancellation
396
+ * @returns Collection info including all icon names
397
+ */
398
+ export async function fetchCollection(
399
+ prefix: string,
400
+ signal?: AbortSignal
401
+ ): Promise<IconifyCollectionInfo> {
402
+ // Validate prefix
403
+ if (!SAFE_NAME_PATTERN.test(prefix)) {
404
+ throw new Error(`Invalid icon set prefix: "${prefix}"`);
405
+ }
406
+
407
+ const settings = getAPISettings();
408
+ const url = `${settings.baseUrl}/collection?prefix=${prefix}`;
409
+
410
+ if (settings.logging) {
411
+ console.log(`[rn-iconify] Fetching collection: ${url}`);
412
+ }
413
+
414
+ const response = await fetchWithTimeout(url, { signal });
415
+
416
+ if (!response.ok) {
417
+ throw new Error(`HTTP ${response.status}: Failed to fetch collection "${prefix}"`);
418
+ }
419
+
420
+ const data = await response.json();
421
+
422
+ // Validate response structure
423
+ if (!data || typeof data !== 'object') {
424
+ throw new Error(`Invalid API response for collection "${prefix}"`);
425
+ }
426
+
427
+ // Build icons list from uncategorized or categories
428
+ let icons: string[] = [];
429
+
430
+ if (data.uncategorized && Array.isArray(data.uncategorized)) {
431
+ icons = [...data.uncategorized];
432
+ }
433
+
434
+ if (data.categories && typeof data.categories === 'object') {
435
+ for (const category of Object.values(data.categories)) {
436
+ if (Array.isArray(category)) {
437
+ icons.push(...category);
438
+ }
439
+ }
440
+ }
441
+
442
+ // Remove duplicates
443
+ icons = [...new Set(icons)];
444
+
445
+ return {
446
+ prefix,
447
+ total: data.total || icons.length,
448
+ title: data.title,
449
+ icons,
450
+ aliases: data.aliases,
451
+ categories: data.categories,
452
+ };
453
+ }
454
+
455
+ /**
456
+ * Search icons using Iconify API
457
+ * @param query Search query
458
+ * @param prefixes Optional array of icon set prefixes to search
459
+ * @param limit Maximum number of results
460
+ * @param signal Optional AbortSignal for cancellation
461
+ * @returns Array of icon names
462
+ */
463
+ export async function searchIconsAPI(
464
+ query: string,
465
+ prefixes?: string[],
466
+ limit: number = 100,
467
+ signal?: AbortSignal
468
+ ): Promise<string[]> {
469
+ const settings = getAPISettings();
470
+
471
+ // Build URL with query parameters
472
+ const params = new URLSearchParams();
473
+ params.set('query', query);
474
+ params.set('limit', String(limit));
475
+
476
+ if (prefixes && prefixes.length > 0) {
477
+ params.set('prefixes', prefixes.join(','));
478
+ }
479
+
480
+ const url = `${settings.baseUrl}/search?${params.toString()}`;
481
+
482
+ if (settings.logging) {
483
+ console.log(`[rn-iconify] Searching icons: ${url}`);
484
+ }
485
+
486
+ const response = await fetchWithTimeout(url, { signal });
487
+
488
+ if (!response.ok) {
489
+ throw new Error(`HTTP ${response.status}: Search failed`);
490
+ }
491
+
492
+ const data = await response.json();
493
+
494
+ // Response is an array of icon names
495
+ if (Array.isArray(data.icons)) {
496
+ return data.icons;
497
+ }
498
+
499
+ return [];
500
+ }
@@ -1 +1,11 @@
1
- export { fetchIcon, fetchIconsBatch, parseIconName, checkAPIHealth } from './IconifyAPI';
1
+ export {
2
+ fetchIcon,
3
+ fetchIconsBatch,
4
+ parseIconName,
5
+ checkAPIHealth,
6
+ getAPIBaseUrl,
7
+ fetchCollection,
8
+ searchIconsAPI,
9
+ } from './IconifyAPI';
10
+
11
+ export type { BatchFetchResult, IconifyCollectionInfo } from './IconifyAPI';