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,180 @@
1
+ /**
2
+ * Icon Alias Context
3
+ * Provides alias resolution throughout the component tree
4
+ */
5
+
6
+ import React, { createContext, useContext, useMemo, useCallback, useState } from 'react';
7
+ import type { IconAliasContextValue, IconAliasProviderProps, IconAliasMap } from './types';
8
+
9
+ /**
10
+ * Default context value (no aliases)
11
+ */
12
+ const defaultContextValue: IconAliasContextValue = {
13
+ aliases: {},
14
+ resolveIcon: (name: string) => name,
15
+ isAlias: () => false,
16
+ registerAliases: () => {},
17
+ };
18
+
19
+ /**
20
+ * Icon Alias Context
21
+ */
22
+ export const IconAliasContext = createContext<IconAliasContextValue>(defaultContextValue);
23
+
24
+ /**
25
+ * Hook to access icon alias context
26
+ *
27
+ * @example
28
+ * ```tsx
29
+ * const { resolveIcon, isAlias } = useIconAliasContext();
30
+ * const fullName = resolveIcon('back'); // 'mdi:arrow-left'
31
+ * ```
32
+ */
33
+ export function useIconAliasContext(): IconAliasContextValue {
34
+ return useContext(IconAliasContext);
35
+ }
36
+
37
+ /**
38
+ * Hook to resolve an icon name (alias or full name)
39
+ *
40
+ * @example
41
+ * ```tsx
42
+ * const resolvedName = useResolveIcon('back'); // 'mdi:arrow-left'
43
+ * const resolvedName2 = useResolveIcon('mdi:home'); // 'mdi:home'
44
+ * ```
45
+ */
46
+ export function useResolveIcon(name: string): string {
47
+ const { resolveIcon } = useIconAliasContext();
48
+ return resolveIcon(name);
49
+ }
50
+
51
+ /**
52
+ * Check if a name is a full icon name (contains colon)
53
+ */
54
+ function isFullIconName(name: string): boolean {
55
+ return name.includes(':');
56
+ }
57
+
58
+ /**
59
+ * Validate icon name format
60
+ */
61
+ function validateIconName(name: string, source: string): void {
62
+ if (!name || typeof name !== 'string') {
63
+ console.warn(`[rn-iconify] Invalid icon name in ${source}: ${name}`);
64
+ return;
65
+ }
66
+
67
+ if (!isFullIconName(name)) {
68
+ console.warn(
69
+ `[rn-iconify] Alias "${source}" should map to a full icon name (prefix:name format), got: "${name}"`
70
+ );
71
+ }
72
+ }
73
+
74
+ /**
75
+ * Icon Alias Provider
76
+ * Provides alias resolution to all child components
77
+ *
78
+ * @example
79
+ * ```tsx
80
+ * const aliases = {
81
+ * back: 'mdi:arrow-left',
82
+ * menu: 'heroicons:bars-3',
83
+ * };
84
+ *
85
+ * <IconAliasProvider aliases={aliases}>
86
+ * <App />
87
+ * </IconAliasProvider>
88
+ * ```
89
+ */
90
+ export function IconAliasProvider({
91
+ aliases: initialAliases,
92
+ extend = true,
93
+ children,
94
+ }: IconAliasProviderProps) {
95
+ const parentContext = useContext(IconAliasContext);
96
+ const [dynamicAliases, setDynamicAliases] = useState<IconAliasMap>({});
97
+
98
+ // Merge aliases: parent (if extend) + initial + dynamic
99
+ const mergedAliases = useMemo(() => {
100
+ const base = extend ? { ...parentContext.aliases } : {};
101
+ return {
102
+ ...base,
103
+ ...initialAliases,
104
+ ...dynamicAliases,
105
+ };
106
+ }, [parentContext.aliases, initialAliases, dynamicAliases, extend]);
107
+
108
+ // Validate aliases in development
109
+ if (__DEV__) {
110
+ Object.entries(initialAliases).forEach(([alias, iconName]) => {
111
+ validateIconName(iconName, alias);
112
+ });
113
+ }
114
+
115
+ // Resolve icon name
116
+ const resolveIcon = useCallback(
117
+ (name: string): string => {
118
+ // If it's already a full icon name, return as-is
119
+ if (isFullIconName(name)) {
120
+ return name;
121
+ }
122
+
123
+ // Look up in aliases
124
+ const resolved = mergedAliases[name];
125
+ if (resolved) {
126
+ return resolved;
127
+ }
128
+
129
+ // Not found - warn in dev and return original
130
+ if (__DEV__) {
131
+ console.warn(
132
+ `[rn-iconify] Unknown icon alias "${name}". ` +
133
+ `Use a full icon name (prefix:name) or register the alias.`
134
+ );
135
+ }
136
+
137
+ return name;
138
+ },
139
+ [mergedAliases]
140
+ );
141
+
142
+ // Check if name is a registered alias
143
+ const isAlias = useCallback(
144
+ (name: string): boolean => {
145
+ return name in mergedAliases;
146
+ },
147
+ [mergedAliases]
148
+ );
149
+
150
+ // Register additional aliases at runtime
151
+ const registerAliases = useCallback((newAliases: IconAliasMap) => {
152
+ if (__DEV__) {
153
+ Object.entries(newAliases).forEach(([alias, iconName]) => {
154
+ validateIconName(iconName, alias);
155
+ });
156
+ }
157
+
158
+ setDynamicAliases((prev) => ({
159
+ ...prev,
160
+ ...newAliases,
161
+ }));
162
+ }, []);
163
+
164
+ const contextValue = useMemo<IconAliasContextValue>(
165
+ () => ({
166
+ aliases: mergedAliases,
167
+ resolveIcon,
168
+ isAlias,
169
+ registerAliases,
170
+ }),
171
+ [mergedAliases, resolveIcon, isAlias, registerAliases]
172
+ );
173
+
174
+ return <IconAliasContext.Provider value={contextValue}>{children}</IconAliasContext.Provider>;
175
+ }
176
+
177
+ /**
178
+ * Default export for convenience
179
+ */
180
+ export default IconAliasProvider;
@@ -0,0 +1,233 @@
1
+ /**
2
+ * createIconAliases - Factory function for creating type-safe icon aliases
3
+ * Provides full TypeScript autocomplete for alias names
4
+ */
5
+
6
+ import React from 'react';
7
+ import { IconRenderer } from '../IconRenderer';
8
+ import { useIconTheme } from '../theme';
9
+ import { DEFAULT_ICON_THEME } from '../theme/types';
10
+ import { IconAliasProvider as BaseProvider } from './IconAliasContext';
11
+ import type {
12
+ IconAliasMap,
13
+ IconAliases,
14
+ AliasName,
15
+ GenericIconProps,
16
+ CreateIconAliasesConfig,
17
+ IconAliasResult,
18
+ } from './types';
19
+
20
+ /**
21
+ * Validate that all alias values are valid icon names
22
+ */
23
+ function validateAliases<T extends IconAliasMap>(aliases: T): void {
24
+ Object.entries(aliases).forEach(([alias, iconName]) => {
25
+ if (typeof iconName !== 'string') {
26
+ throw new Error(
27
+ `[rn-iconify] Invalid alias value for "${alias}": expected string, got ${typeof iconName}`
28
+ );
29
+ }
30
+
31
+ if (!iconName.includes(':')) {
32
+ throw new Error(
33
+ `[rn-iconify] Invalid icon name for alias "${alias}": "${iconName}". ` +
34
+ `Icon names must be in "prefix:name" format (e.g., "mdi:home").`
35
+ );
36
+ }
37
+ });
38
+ }
39
+
40
+ /**
41
+ * Create a type-safe icon alias system
42
+ *
43
+ * This function creates:
44
+ * - A typed Icon component with autocomplete for alias names
45
+ * - A Provider component to wrap your app
46
+ * - A resolve function to convert aliases to full icon names
47
+ *
48
+ * @example Basic usage
49
+ * ```tsx
50
+ * // icons.ts
51
+ * import { createIconAliases } from 'rn-iconify';
52
+ *
53
+ * export const { Icon, Provider: IconProvider, aliases } = createIconAliases({
54
+ * aliases: {
55
+ * back: 'mdi:arrow-left',
56
+ * forward: 'mdi:arrow-right',
57
+ * menu: 'heroicons:bars-3',
58
+ * close: 'mdi:close',
59
+ * home: 'mdi:home',
60
+ * settings: 'lucide:settings',
61
+ * } as const,
62
+ * });
63
+ *
64
+ * // App.tsx
65
+ * import { Icon, IconProvider } from './icons';
66
+ *
67
+ * function App() {
68
+ * return (
69
+ * <IconProvider>
70
+ * <Icon name="back" size={24} /> {// TypeScript autocomplete! }
71
+ * <Icon name="menu" color="blue" />
72
+ * </IconProvider>
73
+ * );
74
+ * }
75
+ * ```
76
+ *
77
+ * @example With navigation
78
+ * ```tsx
79
+ * import { Icon } from './icons';
80
+ *
81
+ * <Tab.Screen
82
+ * options={{
83
+ * tabBarIcon: ({ color, size }) => (
84
+ * <Icon name="home" color={color} size={size} />
85
+ * ),
86
+ * }}
87
+ * />
88
+ * ```
89
+ */
90
+ export function createIconAliases<T extends IconAliasMap>(
91
+ config: CreateIconAliasesConfig<T>
92
+ ): IconAliasResult<T> {
93
+ const { aliases, validate = true } = config;
94
+
95
+ // Validate in development
96
+ if (__DEV__ && validate) {
97
+ validateAliases(aliases);
98
+ }
99
+
100
+ // Create resolve function
101
+ const resolve = (name: AliasName<T> | string): string => {
102
+ // If it's already a full icon name, return as-is
103
+ if (name.includes(':')) {
104
+ return name;
105
+ }
106
+
107
+ // Look up in aliases
108
+ const resolved = (aliases as IconAliasMap)[name];
109
+ if (resolved) {
110
+ return resolved;
111
+ }
112
+
113
+ // Not found - warn in dev
114
+ if (__DEV__) {
115
+ console.warn(
116
+ `[rn-iconify] Unknown alias "${name}". Available aliases: ${Object.keys(aliases).join(', ')}`
117
+ );
118
+ }
119
+
120
+ return name;
121
+ };
122
+
123
+ /**
124
+ * Type-safe Icon component with alias support
125
+ */
126
+ function TypedIcon({
127
+ name,
128
+ size,
129
+ color,
130
+ width,
131
+ height,
132
+ style,
133
+ rotate,
134
+ flip,
135
+ fallback,
136
+ fallbackDelay,
137
+ placeholder,
138
+ placeholderColor,
139
+ placeholderDuration,
140
+ onLoad,
141
+ onError,
142
+ accessibilityLabel,
143
+ testID,
144
+ }: GenericIconProps<AliasName<T>>) {
145
+ // Get theme defaults
146
+ const { theme } = useIconTheme();
147
+
148
+ // Resolve the icon name
149
+ const resolvedName = resolve(name);
150
+
151
+ // Merge props with theme defaults
152
+ const mergedSize = size ?? theme.size ?? DEFAULT_ICON_THEME.size;
153
+ const mergedColor = color ?? theme.color ?? DEFAULT_ICON_THEME.color;
154
+ const mergedRotate = rotate ?? theme.rotate ?? DEFAULT_ICON_THEME.rotate;
155
+ const mergedFlip = flip ?? theme.flip;
156
+ const mergedFallbackDelay =
157
+ fallbackDelay ?? theme.fallbackDelay ?? DEFAULT_ICON_THEME.fallbackDelay;
158
+ const mergedPlaceholder = placeholder ?? theme.placeholder;
159
+ const mergedPlaceholderColor =
160
+ placeholderColor ?? theme.placeholderColor ?? DEFAULT_ICON_THEME.placeholderColor;
161
+ const mergedPlaceholderDuration =
162
+ placeholderDuration ?? theme.placeholderDuration ?? DEFAULT_ICON_THEME.placeholderDuration;
163
+
164
+ return (
165
+ <IconRenderer
166
+ iconName={resolvedName}
167
+ size={mergedSize}
168
+ color={mergedColor}
169
+ width={width}
170
+ height={height}
171
+ style={style}
172
+ rotate={mergedRotate}
173
+ flip={mergedFlip}
174
+ fallback={fallback}
175
+ fallbackDelay={mergedFallbackDelay}
176
+ placeholder={mergedPlaceholder}
177
+ placeholderColor={mergedPlaceholderColor}
178
+ placeholderDuration={mergedPlaceholderDuration}
179
+ onLoad={onLoad}
180
+ onError={onError}
181
+ accessibilityLabel={accessibilityLabel ?? name}
182
+ testID={testID}
183
+ />
184
+ );
185
+ }
186
+
187
+ TypedIcon.displayName = 'TypedIcon';
188
+
189
+ /**
190
+ * Provider component (pre-configured with aliases)
191
+ */
192
+ function Provider({ children }: { children: React.ReactNode }) {
193
+ return <BaseProvider aliases={aliases}>{children}</BaseProvider>;
194
+ }
195
+
196
+ Provider.displayName = 'IconAliasProvider';
197
+
198
+ return {
199
+ aliases: aliases as IconAliases<T>,
200
+ Icon: TypedIcon,
201
+ Provider,
202
+ resolve,
203
+ // Type helper - this is just for type inference, not a runtime value
204
+ AliasName: '' as AliasName<T>,
205
+ };
206
+ }
207
+
208
+ /**
209
+ * Quick helper to create aliases without full type safety
210
+ * Useful for simple cases or when aliases are dynamic
211
+ *
212
+ * @example
213
+ * ```tsx
214
+ * import { defineAliases, Icon, IconAliasProvider } from 'rn-iconify';
215
+ *
216
+ * const aliases = defineAliases({
217
+ * back: 'mdi:arrow-left',
218
+ * menu: 'heroicons:bars-3',
219
+ * });
220
+ *
221
+ * <IconAliasProvider aliases={aliases}>
222
+ * <Icon name="back" />
223
+ * </IconAliasProvider>
224
+ * ```
225
+ */
226
+ export function defineAliases<T extends IconAliasMap>(aliases: T): T {
227
+ if (__DEV__) {
228
+ validateAliases(aliases);
229
+ }
230
+ return aliases;
231
+ }
232
+
233
+ export default createIconAliases;
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Icon Alias System
3
+ * Create custom icon name mappings for consistent usage across your app
4
+ *
5
+ * @example Basic usage
6
+ * ```tsx
7
+ * import { createIconAliases } from 'rn-iconify';
8
+ *
9
+ * const { Icon, Provider } = createIconAliases({
10
+ * aliases: {
11
+ * back: 'mdi:arrow-left',
12
+ * menu: 'heroicons:bars-3',
13
+ * } as const,
14
+ * });
15
+ *
16
+ * <Provider>
17
+ * <Icon name="back" />
18
+ * </Provider>
19
+ * ```
20
+ *
21
+ * @example With generic Icon component
22
+ * ```tsx
23
+ * import { Icon, IconAliasProvider } from 'rn-iconify';
24
+ *
25
+ * <IconAliasProvider aliases={{ back: 'mdi:arrow-left' }}>
26
+ * <Icon name="back" />
27
+ * <Icon name="mdi:home" /> // Full names still work
28
+ * </IconAliasProvider>
29
+ * ```
30
+ */
31
+
32
+ // Types
33
+ export type {
34
+ IconAliasMap,
35
+ IconAliases,
36
+ AliasName,
37
+ GenericIconProps,
38
+ IconAliasContextValue,
39
+ IconAliasProviderProps,
40
+ CreateIconAliasesConfig,
41
+ IconAliasResult,
42
+ } from './types';
43
+
44
+ // Context and Provider
45
+ export {
46
+ IconAliasContext,
47
+ IconAliasProvider,
48
+ useIconAliasContext,
49
+ useResolveIcon,
50
+ } from './IconAliasContext';
51
+
52
+ // Generic Icon component
53
+ export { Icon } from './Icon';
54
+
55
+ // Factory functions
56
+ export { createIconAliases, defineAliases } from './createIconAliases';
57
+
58
+ // Default export
59
+ export { createIconAliases as default } from './createIconAliases';
@@ -0,0 +1,132 @@
1
+ /**
2
+ * Icon Alias System Types
3
+ * Type definitions for the icon alias feature
4
+ */
5
+
6
+ import type { IconProps } from '../types';
7
+
8
+ /**
9
+ * Icon alias definition - maps alias name to full icon name
10
+ * @example { back: 'mdi:arrow-left', menu: 'heroicons:bars-3' }
11
+ */
12
+ export type IconAliasMap = Record<string, string>;
13
+
14
+ /**
15
+ * Type-safe alias configuration
16
+ * Uses 'as const' for full TypeScript inference
17
+ */
18
+ export type IconAliases<T extends IconAliasMap> = {
19
+ readonly [K in keyof T]: T[K];
20
+ };
21
+
22
+ /**
23
+ * Extract alias names from an alias map
24
+ */
25
+ export type AliasName<T extends IconAliasMap> = keyof T & string;
26
+
27
+ /**
28
+ * Props for the generic Icon component
29
+ * Accepts either a full icon name (prefix:name) or an alias
30
+ */
31
+ export interface GenericIconProps<TAlias extends string = string>
32
+ extends Omit<IconProps<TAlias>, 'name'> {
33
+ /**
34
+ * Icon name - can be:
35
+ * - Full icon name: "mdi:home", "heroicons:user"
36
+ * - Alias name: "back", "menu" (if aliases are configured)
37
+ */
38
+ name: TAlias | string;
39
+ }
40
+
41
+ /**
42
+ * Icon alias context value
43
+ */
44
+ export interface IconAliasContextValue {
45
+ /**
46
+ * Registered aliases
47
+ */
48
+ aliases: IconAliasMap;
49
+
50
+ /**
51
+ * Resolve an alias or icon name to full icon name
52
+ * @param name Alias or full icon name
53
+ * @returns Full icon name (prefix:name format)
54
+ */
55
+ resolveIcon: (name: string) => string;
56
+
57
+ /**
58
+ * Check if a name is a registered alias
59
+ */
60
+ isAlias: (name: string) => boolean;
61
+
62
+ /**
63
+ * Register additional aliases at runtime
64
+ */
65
+ registerAliases: (newAliases: IconAliasMap) => void;
66
+ }
67
+
68
+ /**
69
+ * Props for IconAliasProvider
70
+ */
71
+ export interface IconAliasProviderProps {
72
+ /**
73
+ * Icon alias definitions
74
+ */
75
+ aliases: IconAliasMap;
76
+
77
+ /**
78
+ * Allow extending parent aliases (default: true)
79
+ */
80
+ extend?: boolean;
81
+
82
+ /**
83
+ * Children components
84
+ */
85
+ children: React.ReactNode;
86
+ }
87
+
88
+ /**
89
+ * Configuration for createIconAliases
90
+ */
91
+ export interface CreateIconAliasesConfig<T extends IconAliasMap> {
92
+ /**
93
+ * Alias definitions
94
+ */
95
+ aliases: T;
96
+
97
+ /**
98
+ * Validate icon names at creation time (dev only)
99
+ * @default true
100
+ */
101
+ validate?: boolean;
102
+ }
103
+
104
+ /**
105
+ * Return type for createIconAliases
106
+ */
107
+ export interface IconAliasResult<T extends IconAliasMap> {
108
+ /**
109
+ * The alias map
110
+ */
111
+ aliases: IconAliases<T>;
112
+
113
+ /**
114
+ * Type-safe Icon component with alias support
115
+ */
116
+ Icon: React.ComponentType<GenericIconProps<AliasName<T>>>;
117
+
118
+ /**
119
+ * Provider component for alias context
120
+ */
121
+ Provider: React.ComponentType<{ children: React.ReactNode }>;
122
+
123
+ /**
124
+ * Resolve function
125
+ */
126
+ resolve: (name: AliasName<T> | string) => string;
127
+
128
+ /**
129
+ * Type helper for alias names
130
+ */
131
+ AliasName: AliasName<T>;
132
+ }
@@ -0,0 +1,116 @@
1
+ /**
2
+ * AnimatedIcon - Wrapper component for animated icons
3
+ * Provides animation capabilities to any icon component
4
+ */
5
+
6
+ import React, { forwardRef, useImperativeHandle } from 'react';
7
+ import { Animated, StyleSheet } from 'react-native';
8
+ import { useIconAnimation } from './useIconAnimation';
9
+ import type { AnimatedIconProps, AnimationControls } from './types';
10
+
11
+ /**
12
+ * AnimatedIcon wrapper component
13
+ * Wraps any icon component to add animation capabilities
14
+ *
15
+ * @example Basic usage
16
+ * ```tsx
17
+ * import { AnimatedIcon } from 'rn-iconify/animated';
18
+ * import { Mdi } from 'rn-iconify';
19
+ *
20
+ * <AnimatedIcon animate="spin">
21
+ * <Mdi name="loading" size={24} />
22
+ * </AnimatedIcon>
23
+ * ```
24
+ *
25
+ * @example With custom configuration
26
+ * ```tsx
27
+ * <AnimatedIcon
28
+ * animate={{ type: 'rotate', duration: 2000, easing: 'linear' }}
29
+ * autoPlay={true}
30
+ * >
31
+ * <Mdi name="sync" size={24} />
32
+ * </AnimatedIcon>
33
+ * ```
34
+ *
35
+ * @example With ref for animation control
36
+ * ```tsx
37
+ * const animationRef = useRef<AnimationControls>(null);
38
+ *
39
+ * <AnimatedIcon ref={animationRef} animate="bounce" autoPlay={false}>
40
+ * <Mdi name="heart" size={24} />
41
+ * </AnimatedIcon>
42
+ *
43
+ * // Later
44
+ * animationRef.current?.start();
45
+ * ```
46
+ */
47
+ export const AnimatedIcon = forwardRef<AnimationControls, AnimatedIconProps>(function AnimatedIcon(
48
+ {
49
+ children,
50
+ animate,
51
+ animationDuration,
52
+ animationLoop,
53
+ animationEasing,
54
+ animationDelay,
55
+ autoPlay = true,
56
+ onAnimationComplete,
57
+ width,
58
+ height,
59
+ testID,
60
+ },
61
+ ref
62
+ ) {
63
+ const { animatedStyle, hasAnimation, start, stop, pause, resume, reset, state, isAnimating } =
64
+ useIconAnimation({
65
+ animation: animate,
66
+ duration: animationDuration,
67
+ loop: animationLoop,
68
+ easing: animationEasing,
69
+ delay: animationDelay,
70
+ autoPlay,
71
+ onComplete: onAnimationComplete,
72
+ });
73
+
74
+ // Expose animation controls via ref
75
+ useImperativeHandle(
76
+ ref,
77
+ () => ({
78
+ start,
79
+ stop,
80
+ pause,
81
+ resume,
82
+ reset,
83
+ state,
84
+ isAnimating,
85
+ }),
86
+ [start, stop, pause, resume, reset, state, isAnimating]
87
+ );
88
+
89
+ // If no animation, render children directly
90
+ if (!hasAnimation) {
91
+ return <>{children}</>;
92
+ }
93
+
94
+ return (
95
+ <Animated.View
96
+ style={[
97
+ styles.container,
98
+ width !== undefined && { width },
99
+ height !== undefined && { height },
100
+ animatedStyle,
101
+ ]}
102
+ testID={testID}
103
+ >
104
+ {children}
105
+ </Animated.View>
106
+ );
107
+ });
108
+
109
+ const styles = StyleSheet.create({
110
+ container: {
111
+ alignItems: 'center',
112
+ justifyContent: 'center',
113
+ },
114
+ });
115
+
116
+ export default AnimatedIcon;