@buoy-gg/floating-tools-core 7.0.35 → 7.0.38

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 (582) hide show
  1. package/README.md +36 -0
  2. package/floating.d.ts +1 -0
  3. package/floating.js +1 -0
  4. package/lib/commonjs/FloatingToolsStore.js +1 -501
  5. package/lib/commonjs/colors.js +1 -54
  6. package/lib/commonjs/constants.js +1 -31
  7. package/lib/commonjs/devToolsState.js +1 -325
  8. package/lib/commonjs/dial.js +1 -633
  9. package/lib/commonjs/dialUsage.js +1 -130
  10. package/lib/commonjs/easing.js +1 -69
  11. package/lib/commonjs/floating.js +1 -0
  12. package/lib/commonjs/fonts.js +1 -31
  13. package/lib/commonjs/fonts.web.js +1 -0
  14. package/lib/commonjs/icons/ICONS.md +7 -0
  15. package/lib/commonjs/icons/ask-buoy-icon.js +1 -27
  16. package/lib/commonjs/icons/ask-buoy-icon.native.js +1 -0
  17. package/lib/commonjs/icons/assets/askBuoy.png +0 -0
  18. package/lib/commonjs/icons/assets/askBuoy@2x.png +0 -0
  19. package/lib/commonjs/icons/assets/askBuoy@3x.png +0 -0
  20. package/lib/commonjs/icons/assets/assets.png +0 -0
  21. package/lib/commonjs/icons/assets/assets@2x.png +0 -0
  22. package/lib/commonjs/icons/assets/assets@3x.png +0 -0
  23. package/lib/commonjs/icons/assets/benchmark.png +0 -0
  24. package/lib/commonjs/icons/assets/benchmark@2x.png +0 -0
  25. package/lib/commonjs/icons/assets/benchmark@3x.png +0 -0
  26. package/lib/commonjs/icons/assets/camera.png +0 -0
  27. package/lib/commonjs/icons/assets/camera@2x.png +0 -0
  28. package/lib/commonjs/icons/assets/camera@3x.png +0 -0
  29. package/lib/commonjs/icons/assets/console.png +0 -0
  30. package/lib/commonjs/icons/assets/console@2x.png +0 -0
  31. package/lib/commonjs/icons/assets/console@3x.png +0 -0
  32. package/lib/commonjs/icons/assets/env.png +0 -0
  33. package/lib/commonjs/icons/assets/env@2x.png +0 -0
  34. package/lib/commonjs/icons/assets/env@3x.png +0 -0
  35. package/lib/commonjs/icons/assets/events.png +0 -0
  36. package/lib/commonjs/icons/assets/events@2x.png +0 -0
  37. package/lib/commonjs/icons/assets/events@3x.png +0 -0
  38. package/lib/commonjs/icons/assets/highlight.png +0 -0
  39. package/lib/commonjs/icons/assets/highlight@2x.png +0 -0
  40. package/lib/commonjs/icons/assets/highlight@3x.png +0 -0
  41. package/lib/commonjs/icons/assets/highlighter.png +0 -0
  42. package/lib/commonjs/icons/assets/highlighter@2x.png +0 -0
  43. package/lib/commonjs/icons/assets/highlighter@3x.png +0 -0
  44. package/lib/commonjs/icons/assets/image-overlay.png +0 -0
  45. package/lib/commonjs/icons/assets/image-overlay@2x.png +0 -0
  46. package/lib/commonjs/icons/assets/image-overlay@3x.png +0 -0
  47. package/lib/commonjs/icons/assets/images.png +0 -0
  48. package/lib/commonjs/icons/assets/images@2x.png +0 -0
  49. package/lib/commonjs/icons/assets/images@3x.png +0 -0
  50. package/lib/commonjs/icons/assets/impersonate.png +0 -0
  51. package/lib/commonjs/icons/assets/impersonate@2x.png +0 -0
  52. package/lib/commonjs/icons/assets/impersonate@3x.png +0 -0
  53. package/lib/commonjs/icons/assets/jotai.png +0 -0
  54. package/lib/commonjs/icons/assets/jotai@2x.png +0 -0
  55. package/lib/commonjs/icons/assets/jotai@3x.png +0 -0
  56. package/lib/commonjs/icons/assets/network.png +0 -0
  57. package/lib/commonjs/icons/assets/network@2x.png +0 -0
  58. package/lib/commonjs/icons/assets/network@3x.png +0 -0
  59. package/lib/commonjs/icons/assets/query.png +0 -0
  60. package/lib/commonjs/icons/assets/query@2x.png +0 -0
  61. package/lib/commonjs/icons/assets/query@3x.png +0 -0
  62. package/lib/commonjs/icons/assets/redux.png +0 -0
  63. package/lib/commonjs/icons/assets/redux@2x.png +0 -0
  64. package/lib/commonjs/icons/assets/redux@3x.png +0 -0
  65. package/lib/commonjs/icons/assets/riverpod.png +0 -0
  66. package/lib/commonjs/icons/assets/riverpod@2x.png +0 -0
  67. package/lib/commonjs/icons/assets/riverpod@3x.png +0 -0
  68. package/lib/commonjs/icons/assets/routes.png +0 -0
  69. package/lib/commonjs/icons/assets/routes@2x.png +0 -0
  70. package/lib/commonjs/icons/assets/routes@3x.png +0 -0
  71. package/lib/commonjs/icons/assets/scenarios.png +0 -0
  72. package/lib/commonjs/icons/assets/scenarios@2x.png +0 -0
  73. package/lib/commonjs/icons/assets/scenarios@3x.png +0 -0
  74. package/lib/commonjs/icons/assets/sentry.png +0 -0
  75. package/lib/commonjs/icons/assets/sentry@2x.png +0 -0
  76. package/lib/commonjs/icons/assets/sentry@3x.png +0 -0
  77. package/lib/commonjs/icons/assets/settings.png +0 -0
  78. package/lib/commonjs/icons/assets/settings@2x.png +0 -0
  79. package/lib/commonjs/icons/assets/settings@3x.png +0 -0
  80. package/lib/commonjs/icons/assets/storage.png +0 -0
  81. package/lib/commonjs/icons/assets/storage@2x.png +0 -0
  82. package/lib/commonjs/icons/assets/storage@3x.png +0 -0
  83. package/lib/commonjs/icons/assets/time-machine.png +0 -0
  84. package/lib/commonjs/icons/assets/time-machine@2x.png +0 -0
  85. package/lib/commonjs/icons/assets/time-machine@3x.png +0 -0
  86. package/lib/commonjs/icons/assets/wifi.png +0 -0
  87. package/lib/commonjs/icons/assets/wifi@2x.png +0 -0
  88. package/lib/commonjs/icons/assets/wifi@3x.png +0 -0
  89. package/lib/commonjs/icons/assets/zustand.png +0 -0
  90. package/lib/commonjs/icons/assets/zustand@2x.png +0 -0
  91. package/lib/commonjs/icons/assets/zustand@3x.png +0 -0
  92. package/lib/commonjs/icons/assets-icon.js +1 -26
  93. package/lib/commonjs/icons/assets-icon.native.js +1 -0
  94. package/lib/commonjs/icons/benchmark-icon.js +1 -24
  95. package/lib/commonjs/icons/benchmark-icon.native.js +1 -0
  96. package/lib/commonjs/icons/bif-raster-icon.js +1 -0
  97. package/lib/commonjs/icons/bif-raster-icon.native.js +1 -0
  98. package/lib/commonjs/icons/camera-icon.js +1 -27
  99. package/lib/commonjs/icons/camera-icon.native.js +1 -0
  100. package/lib/commonjs/icons/console-icon.js +1 -26
  101. package/lib/commonjs/icons/console-icon.native.js +1 -0
  102. package/lib/commonjs/icons/env-icon.js +1 -24
  103. package/lib/commonjs/icons/env-icon.native.js +1 -0
  104. package/lib/commonjs/icons/events-icon.js +1 -24
  105. package/lib/commonjs/icons/events-icon.native.js +1 -0
  106. package/lib/commonjs/icons/generated/assets-raster.g.js +1 -0
  107. package/lib/commonjs/icons/generated/benchmark-raster.g.js +1 -0
  108. package/lib/commonjs/icons/generated/camera-raster.g.js +1 -0
  109. package/lib/commonjs/icons/generated/env-raster.g.js +1 -0
  110. package/lib/commonjs/icons/generated/events-raster.g.js +1 -0
  111. package/lib/commonjs/icons/generated/glyph-icons.g.js +1 -299
  112. package/lib/commonjs/icons/generated/highlight-raster.g.js +1 -0
  113. package/lib/commonjs/icons/generated/highlighter-raster.g.js +1 -0
  114. package/lib/commonjs/icons/generated/icon-data.g.js +1 -7170
  115. package/lib/commonjs/icons/generated/image-overlay-raster.g.js +1 -0
  116. package/lib/commonjs/icons/generated/images-raster.g.js +1 -0
  117. package/lib/commonjs/icons/generated/network-raster.g.js +1 -0
  118. package/lib/commonjs/icons/generated/raster-icons.g.js +1 -0
  119. package/lib/commonjs/icons/generated/riverpod-raster.g.js +1 -0
  120. package/lib/commonjs/icons/generated/routes-raster.g.js +1 -0
  121. package/lib/commonjs/icons/generated/settings-raster.g.js +1 -0
  122. package/lib/commonjs/icons/generated/storage-raster.g.js +1 -0
  123. package/lib/commonjs/icons/generated/wifi-raster.g.js +1 -0
  124. package/lib/commonjs/icons/highlight-icon.js +1 -24
  125. package/lib/commonjs/icons/highlight-icon.native.js +1 -0
  126. package/lib/commonjs/icons/highlighter-icon.js +1 -0
  127. package/lib/commonjs/icons/highlighter-icon.native.js +1 -0
  128. package/lib/commonjs/icons/icon-factories.js +1 -173
  129. package/lib/commonjs/icons/icon-primitives.js +1 -676
  130. package/lib/commonjs/icons/icon-primitives.native.js +1 -904
  131. package/lib/commonjs/icons/icon-renderer.js +1 -307
  132. package/lib/commonjs/icons/iconGlow.js +1 -32
  133. package/lib/commonjs/icons/image-overlay-icon.js +1 -26
  134. package/lib/commonjs/icons/image-overlay-icon.native.js +1 -0
  135. package/lib/commonjs/icons/images-icon.js +1 -26
  136. package/lib/commonjs/icons/images-icon.native.js +1 -0
  137. package/lib/commonjs/icons/impersonate-icon.js +1 -26
  138. package/lib/commonjs/icons/impersonate-icon.native.js +1 -0
  139. package/lib/commonjs/icons/jotai-icon.js +1 -26
  140. package/lib/commonjs/icons/jotai-icon.native.js +1 -0
  141. package/lib/commonjs/icons/network-icon.js +1 -24
  142. package/lib/commonjs/icons/network-icon.native.js +1 -0
  143. package/lib/commonjs/icons/query-icon.js +1 -24
  144. package/lib/commonjs/icons/query-icon.native.js +1 -0
  145. package/lib/commonjs/icons/raster-icon.js +1 -0
  146. package/lib/commonjs/icons/redux-icon.js +1 -24
  147. package/lib/commonjs/icons/redux-icon.native.js +1 -0
  148. package/lib/commonjs/icons/renders-icon.js +1 -33
  149. package/lib/commonjs/icons/renders-icon.native.js +1 -0
  150. package/lib/commonjs/icons/riverpod-icon.js +1 -26
  151. package/lib/commonjs/icons/riverpod-icon.native.js +1 -0
  152. package/lib/commonjs/icons/routes-icon.js +1 -49
  153. package/lib/commonjs/icons/routes-icon.native.js +1 -0
  154. package/lib/commonjs/icons/routes-parts.js +1 -0
  155. package/lib/commonjs/icons/scenarios-icon.js +1 -26
  156. package/lib/commonjs/icons/scenarios-icon.native.js +1 -0
  157. package/lib/commonjs/icons/sentry-icon.js +1 -24
  158. package/lib/commonjs/icons/sentry-icon.native.js +1 -0
  159. package/lib/commonjs/icons/settings-icon.js +1 -0
  160. package/lib/commonjs/icons/settings-icon.native.js +1 -0
  161. package/lib/commonjs/icons/storage-icon.js +1 -24
  162. package/lib/commonjs/icons/storage-icon.native.js +1 -0
  163. package/lib/commonjs/icons/time-machine-icon.js +1 -26
  164. package/lib/commonjs/icons/time-machine-icon.native.js +1 -0
  165. package/lib/commonjs/icons/wifi-icon.js +1 -24
  166. package/lib/commonjs/icons/wifi-icon.native.js +1 -0
  167. package/lib/commonjs/icons/zustand-icon.js +1 -26
  168. package/lib/commonjs/icons/zustand-icon.native.js +1 -0
  169. package/lib/commonjs/index.js +1 -1091
  170. package/lib/commonjs/settings.js +1 -601
  171. package/lib/commonjs/utils.js +1 -72
  172. package/lib/module/FloatingToolsStore.js +1 -496
  173. package/lib/module/colors.js +1 -49
  174. package/lib/module/constants.js +1 -27
  175. package/lib/module/devToolsState.js +1 -318
  176. package/lib/module/dial.js +1 -618
  177. package/lib/module/dialUsage.js +1 -122
  178. package/lib/module/easing.js +1 -62
  179. package/lib/module/floating.js +1 -0
  180. package/lib/module/fonts.js +1 -28
  181. package/lib/module/fonts.web.js +1 -0
  182. package/lib/module/icons/ICONS.md +7 -0
  183. package/lib/module/icons/ask-buoy-icon.js +1 -18
  184. package/lib/module/icons/ask-buoy-icon.native.js +1 -0
  185. package/lib/module/icons/assets/askBuoy.png +0 -0
  186. package/lib/module/icons/assets/askBuoy@2x.png +0 -0
  187. package/lib/module/icons/assets/askBuoy@3x.png +0 -0
  188. package/lib/module/icons/assets/assets.png +0 -0
  189. package/lib/module/icons/assets/assets@2x.png +0 -0
  190. package/lib/module/icons/assets/assets@3x.png +0 -0
  191. package/lib/module/icons/assets/benchmark.png +0 -0
  192. package/lib/module/icons/assets/benchmark@2x.png +0 -0
  193. package/lib/module/icons/assets/benchmark@3x.png +0 -0
  194. package/lib/module/icons/assets/camera.png +0 -0
  195. package/lib/module/icons/assets/camera@2x.png +0 -0
  196. package/lib/module/icons/assets/camera@3x.png +0 -0
  197. package/lib/module/icons/assets/console.png +0 -0
  198. package/lib/module/icons/assets/console@2x.png +0 -0
  199. package/lib/module/icons/assets/console@3x.png +0 -0
  200. package/lib/module/icons/assets/env.png +0 -0
  201. package/lib/module/icons/assets/env@2x.png +0 -0
  202. package/lib/module/icons/assets/env@3x.png +0 -0
  203. package/lib/module/icons/assets/events.png +0 -0
  204. package/lib/module/icons/assets/events@2x.png +0 -0
  205. package/lib/module/icons/assets/events@3x.png +0 -0
  206. package/lib/module/icons/assets/highlight.png +0 -0
  207. package/lib/module/icons/assets/highlight@2x.png +0 -0
  208. package/lib/module/icons/assets/highlight@3x.png +0 -0
  209. package/lib/module/icons/assets/highlighter.png +0 -0
  210. package/lib/module/icons/assets/highlighter@2x.png +0 -0
  211. package/lib/module/icons/assets/highlighter@3x.png +0 -0
  212. package/lib/module/icons/assets/image-overlay.png +0 -0
  213. package/lib/module/icons/assets/image-overlay@2x.png +0 -0
  214. package/lib/module/icons/assets/image-overlay@3x.png +0 -0
  215. package/lib/module/icons/assets/images.png +0 -0
  216. package/lib/module/icons/assets/images@2x.png +0 -0
  217. package/lib/module/icons/assets/images@3x.png +0 -0
  218. package/lib/module/icons/assets/impersonate.png +0 -0
  219. package/lib/module/icons/assets/impersonate@2x.png +0 -0
  220. package/lib/module/icons/assets/impersonate@3x.png +0 -0
  221. package/lib/module/icons/assets/jotai.png +0 -0
  222. package/lib/module/icons/assets/jotai@2x.png +0 -0
  223. package/lib/module/icons/assets/jotai@3x.png +0 -0
  224. package/lib/module/icons/assets/network.png +0 -0
  225. package/lib/module/icons/assets/network@2x.png +0 -0
  226. package/lib/module/icons/assets/network@3x.png +0 -0
  227. package/lib/module/icons/assets/query.png +0 -0
  228. package/lib/module/icons/assets/query@2x.png +0 -0
  229. package/lib/module/icons/assets/query@3x.png +0 -0
  230. package/lib/module/icons/assets/redux.png +0 -0
  231. package/lib/module/icons/assets/redux@2x.png +0 -0
  232. package/lib/module/icons/assets/redux@3x.png +0 -0
  233. package/lib/module/icons/assets/riverpod.png +0 -0
  234. package/lib/module/icons/assets/riverpod@2x.png +0 -0
  235. package/lib/module/icons/assets/riverpod@3x.png +0 -0
  236. package/lib/module/icons/assets/routes.png +0 -0
  237. package/lib/module/icons/assets/routes@2x.png +0 -0
  238. package/lib/module/icons/assets/routes@3x.png +0 -0
  239. package/lib/module/icons/assets/scenarios.png +0 -0
  240. package/lib/module/icons/assets/scenarios@2x.png +0 -0
  241. package/lib/module/icons/assets/scenarios@3x.png +0 -0
  242. package/lib/module/icons/assets/sentry.png +0 -0
  243. package/lib/module/icons/assets/sentry@2x.png +0 -0
  244. package/lib/module/icons/assets/sentry@3x.png +0 -0
  245. package/lib/module/icons/assets/settings.png +0 -0
  246. package/lib/module/icons/assets/settings@2x.png +0 -0
  247. package/lib/module/icons/assets/settings@3x.png +0 -0
  248. package/lib/module/icons/assets/storage.png +0 -0
  249. package/lib/module/icons/assets/storage@2x.png +0 -0
  250. package/lib/module/icons/assets/storage@3x.png +0 -0
  251. package/lib/module/icons/assets/time-machine.png +0 -0
  252. package/lib/module/icons/assets/time-machine@2x.png +0 -0
  253. package/lib/module/icons/assets/time-machine@3x.png +0 -0
  254. package/lib/module/icons/assets/wifi.png +0 -0
  255. package/lib/module/icons/assets/wifi@2x.png +0 -0
  256. package/lib/module/icons/assets/wifi@3x.png +0 -0
  257. package/lib/module/icons/assets/zustand.png +0 -0
  258. package/lib/module/icons/assets/zustand@2x.png +0 -0
  259. package/lib/module/icons/assets/zustand@3x.png +0 -0
  260. package/lib/module/icons/assets-icon.js +1 -17
  261. package/lib/module/icons/assets-icon.native.js +1 -0
  262. package/lib/module/icons/benchmark-icon.js +1 -15
  263. package/lib/module/icons/benchmark-icon.native.js +1 -0
  264. package/lib/module/icons/bif-raster-icon.js +1 -0
  265. package/lib/module/icons/bif-raster-icon.native.js +1 -0
  266. package/lib/module/icons/camera-icon.js +1 -18
  267. package/lib/module/icons/camera-icon.native.js +1 -0
  268. package/lib/module/icons/console-icon.js +1 -17
  269. package/lib/module/icons/console-icon.native.js +1 -0
  270. package/lib/module/icons/env-icon.js +1 -15
  271. package/lib/module/icons/env-icon.native.js +1 -0
  272. package/lib/module/icons/events-icon.js +1 -15
  273. package/lib/module/icons/events-icon.native.js +1 -0
  274. package/lib/module/icons/generated/assets-raster.g.js +1 -0
  275. package/lib/module/icons/generated/benchmark-raster.g.js +1 -0
  276. package/lib/module/icons/generated/camera-raster.g.js +1 -0
  277. package/lib/module/icons/generated/env-raster.g.js +1 -0
  278. package/lib/module/icons/generated/events-raster.g.js +1 -0
  279. package/lib/module/icons/generated/glyph-icons.g.js +1 -296
  280. package/lib/module/icons/generated/highlight-raster.g.js +1 -0
  281. package/lib/module/icons/generated/highlighter-raster.g.js +1 -0
  282. package/lib/module/icons/generated/icon-data.g.js +1 -7165
  283. package/lib/module/icons/generated/image-overlay-raster.g.js +1 -0
  284. package/lib/module/icons/generated/images-raster.g.js +1 -0
  285. package/lib/module/icons/generated/network-raster.g.js +1 -0
  286. package/lib/module/icons/generated/raster-icons.g.js +1 -0
  287. package/lib/module/icons/generated/riverpod-raster.g.js +1 -0
  288. package/lib/module/icons/generated/routes-raster.g.js +1 -0
  289. package/lib/module/icons/generated/settings-raster.g.js +1 -0
  290. package/lib/module/icons/generated/storage-raster.g.js +1 -0
  291. package/lib/module/icons/generated/wifi-raster.g.js +1 -0
  292. package/lib/module/icons/highlight-icon.js +1 -15
  293. package/lib/module/icons/highlight-icon.native.js +1 -0
  294. package/lib/module/icons/highlighter-icon.js +1 -0
  295. package/lib/module/icons/highlighter-icon.native.js +1 -0
  296. package/lib/module/icons/icon-factories.js +1 -163
  297. package/lib/module/icons/icon-primitives.js +1 -673
  298. package/lib/module/icons/icon-primitives.native.js +1 -899
  299. package/lib/module/icons/icon-renderer.js +1 -302
  300. package/lib/module/icons/iconGlow.js +1 -28
  301. package/lib/module/icons/image-overlay-icon.js +1 -17
  302. package/lib/module/icons/image-overlay-icon.native.js +1 -0
  303. package/lib/module/icons/images-icon.js +1 -17
  304. package/lib/module/icons/images-icon.native.js +1 -0
  305. package/lib/module/icons/impersonate-icon.js +1 -17
  306. package/lib/module/icons/impersonate-icon.native.js +1 -0
  307. package/lib/module/icons/jotai-icon.js +1 -17
  308. package/lib/module/icons/jotai-icon.native.js +1 -0
  309. package/lib/module/icons/network-icon.js +1 -15
  310. package/lib/module/icons/network-icon.native.js +1 -0
  311. package/lib/module/icons/query-icon.js +1 -15
  312. package/lib/module/icons/query-icon.native.js +1 -0
  313. package/lib/module/icons/raster-icon.js +1 -0
  314. package/lib/module/icons/redux-icon.js +1 -15
  315. package/lib/module/icons/redux-icon.native.js +1 -0
  316. package/lib/module/icons/renders-icon.js +1 -17
  317. package/lib/module/icons/renders-icon.native.js +1 -0
  318. package/lib/module/icons/riverpod-icon.js +1 -17
  319. package/lib/module/icons/riverpod-icon.native.js +1 -0
  320. package/lib/module/icons/routes-icon.js +1 -41
  321. package/lib/module/icons/routes-icon.native.js +1 -0
  322. package/lib/module/icons/routes-parts.js +1 -0
  323. package/lib/module/icons/scenarios-icon.js +1 -17
  324. package/lib/module/icons/scenarios-icon.native.js +1 -0
  325. package/lib/module/icons/sentry-icon.js +1 -15
  326. package/lib/module/icons/sentry-icon.native.js +1 -0
  327. package/lib/module/icons/settings-icon.js +1 -0
  328. package/lib/module/icons/settings-icon.native.js +1 -0
  329. package/lib/module/icons/storage-icon.js +1 -15
  330. package/lib/module/icons/storage-icon.native.js +1 -0
  331. package/lib/module/icons/time-machine-icon.js +1 -17
  332. package/lib/module/icons/time-machine-icon.native.js +1 -0
  333. package/lib/module/icons/wifi-icon.js +1 -15
  334. package/lib/module/icons/wifi-icon.native.js +1 -0
  335. package/lib/module/icons/zustand-icon.js +1 -17
  336. package/lib/module/icons/zustand-icon.native.js +1 -0
  337. package/lib/module/index.js +1 -127
  338. package/lib/module/settings.js +1 -589
  339. package/lib/module/utils.js +1 -66
  340. package/lib/typescript/commonjs/FloatingToolsStore.d.ts +2 -0
  341. package/lib/typescript/commonjs/dial.d.ts +6 -0
  342. package/lib/typescript/commonjs/floating.d.ts +8 -0
  343. package/lib/typescript/commonjs/fonts.web.d.ts +3 -0
  344. package/lib/typescript/commonjs/icons/ask-buoy-icon.d.ts +1 -13
  345. package/lib/typescript/commonjs/icons/ask-buoy-icon.native.d.ts +4 -0
  346. package/lib/typescript/commonjs/icons/assets-icon.d.ts +1 -12
  347. package/lib/typescript/commonjs/icons/assets-icon.native.d.ts +3 -0
  348. package/lib/typescript/commonjs/icons/benchmark-icon.d.ts +1 -10
  349. package/lib/typescript/commonjs/icons/benchmark-icon.native.d.ts +3 -0
  350. package/lib/typescript/commonjs/icons/bif-raster-icon.d.ts +4 -0
  351. package/lib/typescript/commonjs/icons/bif-raster-icon.native.d.ts +5 -0
  352. package/lib/typescript/commonjs/icons/camera-icon.d.ts +1 -13
  353. package/lib/typescript/commonjs/icons/camera-icon.native.d.ts +3 -0
  354. package/lib/typescript/commonjs/icons/console-icon.d.ts +1 -12
  355. package/lib/typescript/commonjs/icons/console-icon.native.d.ts +4 -0
  356. package/lib/typescript/commonjs/icons/env-icon.d.ts +1 -10
  357. package/lib/typescript/commonjs/icons/env-icon.native.d.ts +3 -0
  358. package/lib/typescript/commonjs/icons/events-icon.d.ts +1 -10
  359. package/lib/typescript/commonjs/icons/events-icon.native.d.ts +3 -0
  360. package/lib/typescript/commonjs/icons/generated/assets-raster.g.d.ts +3 -0
  361. package/lib/typescript/commonjs/icons/generated/benchmark-raster.g.d.ts +3 -0
  362. package/lib/typescript/commonjs/icons/generated/camera-raster.g.d.ts +3 -0
  363. package/lib/typescript/commonjs/icons/generated/env-raster.g.d.ts +3 -0
  364. package/lib/typescript/commonjs/icons/generated/events-raster.g.d.ts +3 -0
  365. package/lib/typescript/commonjs/icons/generated/highlight-raster.g.d.ts +3 -0
  366. package/lib/typescript/commonjs/icons/generated/highlighter-raster.g.d.ts +3 -0
  367. package/lib/typescript/commonjs/icons/generated/icon-data.g.d.ts +27 -1
  368. package/lib/typescript/commonjs/icons/generated/image-overlay-raster.g.d.ts +3 -0
  369. package/lib/typescript/commonjs/icons/generated/images-raster.g.d.ts +3 -0
  370. package/lib/typescript/commonjs/icons/generated/network-raster.g.d.ts +3 -0
  371. package/lib/typescript/commonjs/icons/generated/raster-icons.g.d.ts +13 -0
  372. package/lib/typescript/commonjs/icons/generated/riverpod-raster.g.d.ts +3 -0
  373. package/lib/typescript/commonjs/icons/generated/routes-raster.g.d.ts +3 -0
  374. package/lib/typescript/commonjs/icons/generated/settings-raster.g.d.ts +3 -0
  375. package/lib/typescript/commonjs/icons/generated/storage-raster.g.d.ts +3 -0
  376. package/lib/typescript/commonjs/icons/generated/wifi-raster.g.d.ts +3 -0
  377. package/lib/typescript/commonjs/icons/highlight-icon.d.ts +1 -10
  378. package/lib/typescript/commonjs/icons/highlight-icon.native.d.ts +3 -0
  379. package/lib/typescript/commonjs/icons/highlighter-icon.d.ts +5 -0
  380. package/lib/typescript/commonjs/icons/highlighter-icon.native.d.ts +5 -0
  381. package/lib/typescript/commonjs/icons/image-overlay-icon.d.ts +1 -12
  382. package/lib/typescript/commonjs/icons/image-overlay-icon.native.d.ts +3 -0
  383. package/lib/typescript/commonjs/icons/images-icon.d.ts +1 -12
  384. package/lib/typescript/commonjs/icons/images-icon.native.d.ts +3 -0
  385. package/lib/typescript/commonjs/icons/impersonate-icon.d.ts +1 -12
  386. package/lib/typescript/commonjs/icons/impersonate-icon.native.d.ts +4 -0
  387. package/lib/typescript/commonjs/icons/jotai-icon.d.ts +1 -12
  388. package/lib/typescript/commonjs/icons/jotai-icon.native.d.ts +4 -0
  389. package/lib/typescript/commonjs/icons/network-icon.d.ts +1 -10
  390. package/lib/typescript/commonjs/icons/network-icon.native.d.ts +3 -0
  391. package/lib/typescript/commonjs/icons/query-icon.d.ts +1 -10
  392. package/lib/typescript/commonjs/icons/query-icon.native.d.ts +4 -0
  393. package/lib/typescript/commonjs/icons/raster-icon.d.ts +5 -0
  394. package/lib/typescript/commonjs/icons/redux-icon.d.ts +1 -10
  395. package/lib/typescript/commonjs/icons/redux-icon.native.d.ts +4 -0
  396. package/lib/typescript/commonjs/icons/renders-icon.d.ts +1 -12
  397. package/lib/typescript/commonjs/icons/renders-icon.native.d.ts +2 -0
  398. package/lib/typescript/commonjs/icons/riverpod-icon.d.ts +1 -12
  399. package/lib/typescript/commonjs/icons/riverpod-icon.native.d.ts +3 -0
  400. package/lib/typescript/commonjs/icons/routes-icon.d.ts +2 -30
  401. package/lib/typescript/commonjs/icons/routes-icon.native.d.ts +4 -0
  402. package/lib/typescript/commonjs/icons/routes-parts.d.ts +31 -0
  403. package/lib/typescript/commonjs/icons/scenarios-icon.d.ts +1 -12
  404. package/lib/typescript/commonjs/icons/scenarios-icon.native.d.ts +4 -0
  405. package/lib/typescript/commonjs/icons/sentry-icon.d.ts +1 -10
  406. package/lib/typescript/commonjs/icons/sentry-icon.native.d.ts +4 -0
  407. package/lib/typescript/commonjs/icons/settings-icon.d.ts +2 -0
  408. package/lib/typescript/commonjs/icons/settings-icon.native.d.ts +2 -0
  409. package/lib/typescript/commonjs/icons/storage-icon.d.ts +1 -10
  410. package/lib/typescript/commonjs/icons/storage-icon.native.d.ts +3 -0
  411. package/lib/typescript/commonjs/icons/time-machine-icon.d.ts +1 -12
  412. package/lib/typescript/commonjs/icons/time-machine-icon.native.d.ts +4 -0
  413. package/lib/typescript/commonjs/icons/wifi-icon.d.ts +1 -10
  414. package/lib/typescript/commonjs/icons/wifi-icon.native.d.ts +3 -0
  415. package/lib/typescript/commonjs/icons/zustand-icon.d.ts +1 -12
  416. package/lib/typescript/commonjs/icons/zustand-icon.native.d.ts +4 -0
  417. package/lib/typescript/commonjs/index.d.ts +1 -0
  418. package/lib/typescript/module/FloatingToolsStore.d.ts +2 -0
  419. package/lib/typescript/module/dial.d.ts +6 -0
  420. package/lib/typescript/module/floating.d.ts +8 -0
  421. package/lib/typescript/module/fonts.web.d.ts +3 -0
  422. package/lib/typescript/module/icons/ask-buoy-icon.d.ts +1 -13
  423. package/lib/typescript/module/icons/ask-buoy-icon.native.d.ts +4 -0
  424. package/lib/typescript/module/icons/assets-icon.d.ts +1 -12
  425. package/lib/typescript/module/icons/assets-icon.native.d.ts +3 -0
  426. package/lib/typescript/module/icons/benchmark-icon.d.ts +1 -10
  427. package/lib/typescript/module/icons/benchmark-icon.native.d.ts +3 -0
  428. package/lib/typescript/module/icons/bif-raster-icon.d.ts +4 -0
  429. package/lib/typescript/module/icons/bif-raster-icon.native.d.ts +5 -0
  430. package/lib/typescript/module/icons/camera-icon.d.ts +1 -13
  431. package/lib/typescript/module/icons/camera-icon.native.d.ts +3 -0
  432. package/lib/typescript/module/icons/console-icon.d.ts +1 -12
  433. package/lib/typescript/module/icons/console-icon.native.d.ts +4 -0
  434. package/lib/typescript/module/icons/env-icon.d.ts +1 -10
  435. package/lib/typescript/module/icons/env-icon.native.d.ts +3 -0
  436. package/lib/typescript/module/icons/events-icon.d.ts +1 -10
  437. package/lib/typescript/module/icons/events-icon.native.d.ts +3 -0
  438. package/lib/typescript/module/icons/generated/assets-raster.g.d.ts +3 -0
  439. package/lib/typescript/module/icons/generated/benchmark-raster.g.d.ts +3 -0
  440. package/lib/typescript/module/icons/generated/camera-raster.g.d.ts +3 -0
  441. package/lib/typescript/module/icons/generated/env-raster.g.d.ts +3 -0
  442. package/lib/typescript/module/icons/generated/events-raster.g.d.ts +3 -0
  443. package/lib/typescript/module/icons/generated/highlight-raster.g.d.ts +3 -0
  444. package/lib/typescript/module/icons/generated/highlighter-raster.g.d.ts +3 -0
  445. package/lib/typescript/module/icons/generated/icon-data.g.d.ts +27 -1
  446. package/lib/typescript/module/icons/generated/image-overlay-raster.g.d.ts +3 -0
  447. package/lib/typescript/module/icons/generated/images-raster.g.d.ts +3 -0
  448. package/lib/typescript/module/icons/generated/network-raster.g.d.ts +3 -0
  449. package/lib/typescript/module/icons/generated/raster-icons.g.d.ts +13 -0
  450. package/lib/typescript/module/icons/generated/riverpod-raster.g.d.ts +3 -0
  451. package/lib/typescript/module/icons/generated/routes-raster.g.d.ts +3 -0
  452. package/lib/typescript/module/icons/generated/settings-raster.g.d.ts +3 -0
  453. package/lib/typescript/module/icons/generated/storage-raster.g.d.ts +3 -0
  454. package/lib/typescript/module/icons/generated/wifi-raster.g.d.ts +3 -0
  455. package/lib/typescript/module/icons/highlight-icon.d.ts +1 -10
  456. package/lib/typescript/module/icons/highlight-icon.native.d.ts +3 -0
  457. package/lib/typescript/module/icons/highlighter-icon.d.ts +5 -0
  458. package/lib/typescript/module/icons/highlighter-icon.native.d.ts +5 -0
  459. package/lib/typescript/module/icons/image-overlay-icon.d.ts +1 -12
  460. package/lib/typescript/module/icons/image-overlay-icon.native.d.ts +3 -0
  461. package/lib/typescript/module/icons/images-icon.d.ts +1 -12
  462. package/lib/typescript/module/icons/images-icon.native.d.ts +3 -0
  463. package/lib/typescript/module/icons/impersonate-icon.d.ts +1 -12
  464. package/lib/typescript/module/icons/impersonate-icon.native.d.ts +4 -0
  465. package/lib/typescript/module/icons/jotai-icon.d.ts +1 -12
  466. package/lib/typescript/module/icons/jotai-icon.native.d.ts +4 -0
  467. package/lib/typescript/module/icons/network-icon.d.ts +1 -10
  468. package/lib/typescript/module/icons/network-icon.native.d.ts +3 -0
  469. package/lib/typescript/module/icons/query-icon.d.ts +1 -10
  470. package/lib/typescript/module/icons/query-icon.native.d.ts +4 -0
  471. package/lib/typescript/module/icons/raster-icon.d.ts +5 -0
  472. package/lib/typescript/module/icons/redux-icon.d.ts +1 -10
  473. package/lib/typescript/module/icons/redux-icon.native.d.ts +4 -0
  474. package/lib/typescript/module/icons/renders-icon.d.ts +1 -12
  475. package/lib/typescript/module/icons/renders-icon.native.d.ts +2 -0
  476. package/lib/typescript/module/icons/riverpod-icon.d.ts +1 -12
  477. package/lib/typescript/module/icons/riverpod-icon.native.d.ts +3 -0
  478. package/lib/typescript/module/icons/routes-icon.d.ts +2 -30
  479. package/lib/typescript/module/icons/routes-icon.native.d.ts +4 -0
  480. package/lib/typescript/module/icons/routes-parts.d.ts +31 -0
  481. package/lib/typescript/module/icons/scenarios-icon.d.ts +1 -12
  482. package/lib/typescript/module/icons/scenarios-icon.native.d.ts +4 -0
  483. package/lib/typescript/module/icons/sentry-icon.d.ts +1 -10
  484. package/lib/typescript/module/icons/sentry-icon.native.d.ts +4 -0
  485. package/lib/typescript/module/icons/settings-icon.d.ts +2 -0
  486. package/lib/typescript/module/icons/settings-icon.native.d.ts +2 -0
  487. package/lib/typescript/module/icons/storage-icon.d.ts +1 -10
  488. package/lib/typescript/module/icons/storage-icon.native.d.ts +3 -0
  489. package/lib/typescript/module/icons/time-machine-icon.d.ts +1 -12
  490. package/lib/typescript/module/icons/time-machine-icon.native.d.ts +4 -0
  491. package/lib/typescript/module/icons/wifi-icon.d.ts +1 -10
  492. package/lib/typescript/module/icons/wifi-icon.native.d.ts +3 -0
  493. package/lib/typescript/module/icons/zustand-icon.d.ts +1 -12
  494. package/lib/typescript/module/icons/zustand-icon.native.d.ts +4 -0
  495. package/lib/typescript/module/index.d.ts +1 -0
  496. package/package.json +23 -3
  497. package/lib/typescript/commonjs/FloatingToolsStore.d.ts.map +0 -1
  498. package/lib/typescript/commonjs/colors.d.ts.map +0 -1
  499. package/lib/typescript/commonjs/constants.d.ts.map +0 -1
  500. package/lib/typescript/commonjs/devToolsState.d.ts.map +0 -1
  501. package/lib/typescript/commonjs/dial.d.ts.map +0 -1
  502. package/lib/typescript/commonjs/dialUsage.d.ts.map +0 -1
  503. package/lib/typescript/commonjs/easing.d.ts.map +0 -1
  504. package/lib/typescript/commonjs/fonts.d.ts.map +0 -1
  505. package/lib/typescript/commonjs/icons/ask-buoy-icon.d.ts.map +0 -1
  506. package/lib/typescript/commonjs/icons/assets-icon.d.ts.map +0 -1
  507. package/lib/typescript/commonjs/icons/benchmark-icon.d.ts.map +0 -1
  508. package/lib/typescript/commonjs/icons/camera-icon.d.ts.map +0 -1
  509. package/lib/typescript/commonjs/icons/console-icon.d.ts.map +0 -1
  510. package/lib/typescript/commonjs/icons/env-icon.d.ts.map +0 -1
  511. package/lib/typescript/commonjs/icons/events-icon.d.ts.map +0 -1
  512. package/lib/typescript/commonjs/icons/generated/glyph-icons.g.d.ts.map +0 -1
  513. package/lib/typescript/commonjs/icons/generated/icon-data.g.d.ts.map +0 -1
  514. package/lib/typescript/commonjs/icons/highlight-icon.d.ts.map +0 -1
  515. package/lib/typescript/commonjs/icons/icon-factories.d.ts.map +0 -1
  516. package/lib/typescript/commonjs/icons/icon-primitives.d.ts.map +0 -1
  517. package/lib/typescript/commonjs/icons/icon-primitives.native.d.ts.map +0 -1
  518. package/lib/typescript/commonjs/icons/icon-renderer.d.ts.map +0 -1
  519. package/lib/typescript/commonjs/icons/iconGlow.d.ts.map +0 -1
  520. package/lib/typescript/commonjs/icons/image-overlay-icon.d.ts.map +0 -1
  521. package/lib/typescript/commonjs/icons/images-icon.d.ts.map +0 -1
  522. package/lib/typescript/commonjs/icons/impersonate-icon.d.ts.map +0 -1
  523. package/lib/typescript/commonjs/icons/jotai-icon.d.ts.map +0 -1
  524. package/lib/typescript/commonjs/icons/network-icon.d.ts.map +0 -1
  525. package/lib/typescript/commonjs/icons/query-icon.d.ts.map +0 -1
  526. package/lib/typescript/commonjs/icons/redux-icon.d.ts.map +0 -1
  527. package/lib/typescript/commonjs/icons/renders-icon.d.ts.map +0 -1
  528. package/lib/typescript/commonjs/icons/riverpod-icon.d.ts.map +0 -1
  529. package/lib/typescript/commonjs/icons/routes-icon.d.ts.map +0 -1
  530. package/lib/typescript/commonjs/icons/scenarios-icon.d.ts.map +0 -1
  531. package/lib/typescript/commonjs/icons/sentry-icon.d.ts.map +0 -1
  532. package/lib/typescript/commonjs/icons/storage-icon.d.ts.map +0 -1
  533. package/lib/typescript/commonjs/icons/time-machine-icon.d.ts.map +0 -1
  534. package/lib/typescript/commonjs/icons/wifi-icon.d.ts.map +0 -1
  535. package/lib/typescript/commonjs/icons/zustand-icon.d.ts.map +0 -1
  536. package/lib/typescript/commonjs/index.d.ts.map +0 -1
  537. package/lib/typescript/commonjs/settings.d.ts.map +0 -1
  538. package/lib/typescript/commonjs/types.d.ts.map +0 -1
  539. package/lib/typescript/commonjs/utils.d.ts.map +0 -1
  540. package/lib/typescript/module/FloatingToolsStore.d.ts.map +0 -1
  541. package/lib/typescript/module/colors.d.ts.map +0 -1
  542. package/lib/typescript/module/constants.d.ts.map +0 -1
  543. package/lib/typescript/module/devToolsState.d.ts.map +0 -1
  544. package/lib/typescript/module/dial.d.ts.map +0 -1
  545. package/lib/typescript/module/dialUsage.d.ts.map +0 -1
  546. package/lib/typescript/module/easing.d.ts.map +0 -1
  547. package/lib/typescript/module/fonts.d.ts.map +0 -1
  548. package/lib/typescript/module/icons/ask-buoy-icon.d.ts.map +0 -1
  549. package/lib/typescript/module/icons/assets-icon.d.ts.map +0 -1
  550. package/lib/typescript/module/icons/benchmark-icon.d.ts.map +0 -1
  551. package/lib/typescript/module/icons/camera-icon.d.ts.map +0 -1
  552. package/lib/typescript/module/icons/console-icon.d.ts.map +0 -1
  553. package/lib/typescript/module/icons/env-icon.d.ts.map +0 -1
  554. package/lib/typescript/module/icons/events-icon.d.ts.map +0 -1
  555. package/lib/typescript/module/icons/generated/glyph-icons.g.d.ts.map +0 -1
  556. package/lib/typescript/module/icons/generated/icon-data.g.d.ts.map +0 -1
  557. package/lib/typescript/module/icons/highlight-icon.d.ts.map +0 -1
  558. package/lib/typescript/module/icons/icon-factories.d.ts.map +0 -1
  559. package/lib/typescript/module/icons/icon-primitives.d.ts.map +0 -1
  560. package/lib/typescript/module/icons/icon-primitives.native.d.ts.map +0 -1
  561. package/lib/typescript/module/icons/icon-renderer.d.ts.map +0 -1
  562. package/lib/typescript/module/icons/iconGlow.d.ts.map +0 -1
  563. package/lib/typescript/module/icons/image-overlay-icon.d.ts.map +0 -1
  564. package/lib/typescript/module/icons/images-icon.d.ts.map +0 -1
  565. package/lib/typescript/module/icons/impersonate-icon.d.ts.map +0 -1
  566. package/lib/typescript/module/icons/jotai-icon.d.ts.map +0 -1
  567. package/lib/typescript/module/icons/network-icon.d.ts.map +0 -1
  568. package/lib/typescript/module/icons/query-icon.d.ts.map +0 -1
  569. package/lib/typescript/module/icons/redux-icon.d.ts.map +0 -1
  570. package/lib/typescript/module/icons/renders-icon.d.ts.map +0 -1
  571. package/lib/typescript/module/icons/riverpod-icon.d.ts.map +0 -1
  572. package/lib/typescript/module/icons/routes-icon.d.ts.map +0 -1
  573. package/lib/typescript/module/icons/scenarios-icon.d.ts.map +0 -1
  574. package/lib/typescript/module/icons/sentry-icon.d.ts.map +0 -1
  575. package/lib/typescript/module/icons/storage-icon.d.ts.map +0 -1
  576. package/lib/typescript/module/icons/time-machine-icon.d.ts.map +0 -1
  577. package/lib/typescript/module/icons/wifi-icon.d.ts.map +0 -1
  578. package/lib/typescript/module/icons/zustand-icon.d.ts.map +0 -1
  579. package/lib/typescript/module/index.d.ts.map +0 -1
  580. package/lib/typescript/module/settings.d.ts.map +0 -1
  581. package/lib/typescript/module/types.d.ts.map +0 -1
  582. package/lib/typescript/module/utils.d.ts.map +0 -1
@@ -1,904 +1 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.IconTriangle = exports.IconText = exports.IconSmoothArc = exports.IconSemicircle = exports.IconRect = exports.IconLine = exports.IconContainer = exports.IconCircle = exports.IconArc = void 0;
7
- var _react = require("react");
8
- var _reactNative = require("react-native");
9
- var _iconGlow = require("./iconGlow.js");
10
- var _jsxRuntime = require("react/jsx-runtime");
11
- /**
12
- * Icon Primitives - MOBILE (React Native)
13
- *
14
- * This file is auto-picked by Metro (React Native bundler).
15
- * Web bundlers pick icon-primitives.tsx instead.
16
- */
17
-
18
- // ===========================================
19
- // Types
20
- // ===========================================
21
-
22
- // ===========================================
23
- // Mobile Primitives (React Native Views)
24
- // ===========================================
25
-
26
- const IconContainer = ({
27
- size,
28
- children,
29
- style
30
- }) => {
31
- const box = {
32
- position: 'relative',
33
- width: size,
34
- height: size
35
- };
36
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
37
- style: [box, style],
38
- children: children
39
- });
40
- };
41
- exports.IconContainer = IconContainer;
42
- const IconCircleImpl = ({
43
- cx,
44
- cy,
45
- r,
46
- fill,
47
- borderColor,
48
- borderWidth = 0,
49
- opacity = 1,
50
- scaleX = 1,
51
- scaleY = 1,
52
- glowColor,
53
- glowRadius = 0
54
- }) => {
55
- const diameter = r * 2;
56
-
57
- // Build transforms array
58
- const transforms = [];
59
- if (scaleX !== 1) transforms.push({
60
- scaleX
61
- });
62
- if (scaleY !== 1) transforms.push({
63
- scaleY
64
- });
65
-
66
- // Check if this is a "transparent" element (border-only ring)
67
- // RN shadows require backgroundColor, so we need a separate glow layer
68
- const needsSeparateGlow = glowColor && glowRadius > 0 && (!fill || fill === 'transparent');
69
- const hasFillForShadow = fill && fill !== 'transparent';
70
- const style = {
71
- position: 'absolute',
72
- left: cx - r,
73
- top: cy - r,
74
- width: diameter,
75
- height: diameter,
76
- borderRadius: r,
77
- backgroundColor: fill,
78
- borderColor,
79
- borderWidth,
80
- opacity,
81
- transform: transforms.length > 0 ? transforms : undefined,
82
- // Only apply shadow if we have a fill (RN shadows need backgroundColor)
83
- ...(glowColor && glowRadius > 0 && hasFillForShadow && {
84
- shadowColor: glowColor,
85
- shadowOffset: {
86
- width: 0,
87
- height: 0
88
- },
89
- shadowOpacity: _iconGlow.ICON_GLOW.filledShadowOpacity,
90
- shadowRadius: glowRadius * _iconGlow.ICON_GLOW.filledRadiusScale
91
- })
92
- };
93
-
94
- // For border-only elements (rings), create glow using a filled circle with shadow
95
- // The trick: use backgroundColor:'#000' (matches icon bg) so shadow renders,
96
- // with glowColor on the border for the visible glow effect
97
- if (needsSeparateGlow) {
98
- const strokeW = borderWidth || 1;
99
- return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
100
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
101
- style: {
102
- position: 'absolute',
103
- left: cx - r,
104
- top: cy - r,
105
- width: r * 2,
106
- height: r * 2,
107
- borderRadius: r,
108
- backgroundColor: '#000',
109
- // Matches icon bg - enables shadow
110
- borderWidth: strokeW,
111
- borderColor: glowColor,
112
- opacity: _iconGlow.ICON_GLOW.ringLayerOpacity,
113
- transform: transforms.length > 0 ? transforms : undefined,
114
- shadowColor: glowColor,
115
- shadowOffset: {
116
- width: 0,
117
- height: 0
118
- },
119
- shadowOpacity: _iconGlow.ICON_GLOW.ringShadowOpacity,
120
- shadowRadius: _iconGlow.ICON_GLOW.ringShadowRadius
121
- }
122
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
123
- style: style
124
- })]
125
- });
126
- }
127
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
128
- style: style
129
- });
130
- };
131
- const IconRectImpl = ({
132
- x,
133
- y,
134
- width,
135
- height,
136
- fill,
137
- borderColor,
138
- borderWidth = 0,
139
- borderRadius = 0,
140
- opacity = 1,
141
- glowColor,
142
- glowRadius = 0,
143
- rotation,
144
- originX = 0.5,
145
- // default center
146
- originY = 0.5 // default center
147
- }) => {
148
- // Build transform array
149
- // React Native rotates around center by default.
150
- // To rotate around a custom origin, we:
151
- // 1. Translate so the origin point moves to center
152
- // 2. Rotate
153
- // 3. Translate back
154
-
155
- const transforms = [];
156
- if (rotation !== undefined) {
157
- // Calculate offset from center to desired origin
158
- // originX/originY are 0-1 values (0=left/top, 0.5=center, 1=right/bottom)
159
- const offsetX = (0.5 - originX) * width;
160
- const offsetY = (0.5 - originY) * height;
161
-
162
- // Apply transforms: translate to origin, rotate, translate back
163
- if (offsetX !== 0 || offsetY !== 0) {
164
- transforms.push({
165
- translateX: -offsetX
166
- });
167
- transforms.push({
168
- translateY: -offsetY
169
- });
170
- }
171
- transforms.push({
172
- rotate: `${rotation}deg`
173
- });
174
- if (offsetX !== 0 || offsetY !== 0) {
175
- transforms.push({
176
- translateX: offsetX
177
- });
178
- transforms.push({
179
- translateY: offsetY
180
- });
181
- }
182
- }
183
-
184
- // Check if this is a "transparent" element (border-only)
185
- // RN shadows require backgroundColor, so we need a separate glow layer
186
- const hasGlow = glowColor && glowRadius > 0;
187
- const needsSeparateGlow = hasGlow && (!fill || fill === 'transparent');
188
- const hasFillForShadow = fill && fill !== 'transparent';
189
- const style = {
190
- position: 'absolute',
191
- left: x,
192
- top: y,
193
- width,
194
- height,
195
- borderRadius,
196
- backgroundColor: fill,
197
- borderColor,
198
- borderWidth,
199
- opacity,
200
- transform: transforms.length > 0 ? transforms : undefined,
201
- // Only apply shadow if we have a fill (RN shadows need backgroundColor)
202
- ...(hasGlow && hasFillForShadow && {
203
- shadowColor: glowColor,
204
- shadowOffset: {
205
- width: 0,
206
- height: 0
207
- },
208
- shadowOpacity: _iconGlow.ICON_GLOW.filledShadowOpacity,
209
- shadowRadius: glowRadius * _iconGlow.ICON_GLOW.filledRadiusScale
210
- })
211
- };
212
-
213
- // For border-only elements, render a glow rect with shadow
214
- if (needsSeparateGlow) {
215
- const strokeW = borderWidth || 1;
216
- const glowExpand = strokeW;
217
- return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
218
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
219
- style: {
220
- position: 'absolute',
221
- left: x - glowExpand,
222
- top: y - glowExpand,
223
- width: width + glowExpand * 2,
224
- height: height + glowExpand * 2,
225
- borderRadius: borderRadius + glowExpand,
226
- borderWidth: strokeW * _iconGlow.ICON_GLOW.rectBorderScale,
227
- borderColor: glowColor,
228
- opacity: _iconGlow.ICON_GLOW.rectLayerOpacity,
229
- transform: transforms.length > 0 ? transforms : undefined,
230
- shadowColor: glowColor,
231
- shadowOffset: {
232
- width: 0,
233
- height: 0
234
- },
235
- shadowOpacity: _iconGlow.ICON_GLOW.rectShadowOpacity,
236
- shadowRadius: strokeW * _iconGlow.ICON_GLOW.rectShadowRadiusScale
237
- }
238
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
239
- style: style
240
- })]
241
- });
242
- }
243
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
244
- style: style
245
- });
246
- };
247
-
248
- /**
249
- * Curve flattening budget, in dp. A curved line is drawn as a polyline of
250
- * straight capsule segments (the same primitive the straight-line path below
251
- * uses); the segment count is derived from the standard Bezier flattening
252
- * bound so the polyline never strays further than this from the true curve,
253
- * however the curve was authored. 0.08dp is a quarter of a physical pixel on a
254
- * 3x screen — well below anything the eye can resolve.
255
- */
256
- const CURVE_FLATTEN_TOLERANCE = 0.08;
257
- /**
258
- * The analytic bound is derived for a slightly different error metric than the
259
- * one that matters here (distance from the curve to the *nearest* segment), so
260
- * the segment count is padded. 1.5 was the smallest factor that satisfied every
261
- * curve in shared/icons when checked against an exact numeric search.
262
- */
263
- const CURVE_FLATTEN_SAFETY = 1.5;
264
- /** Hard ceiling, so a pathologically authored curve can never explode the tree. */
265
- const CURVE_MAX_SEGMENTS = 48;
266
-
267
- /**
268
- * How many straight segments a Bezier needs to stay within `tolerance` of the
269
- * true curve, via the second-difference flattening bound.
270
- */
271
- function bezierSegmentCount(p0x, p0y, c1x, c1y, c2x, c2y, p1x, p1y, isCubic, tolerance) {
272
- let secondDiff;
273
- if (isCubic) {
274
- const ax = p0x - 2 * c1x + c2x;
275
- const ay = p0y - 2 * c1y + c2y;
276
- const bx = c1x - 2 * c2x + p1x;
277
- const by = c1y - 2 * c2y + p1y;
278
- secondDiff = 3 * Math.max(Math.hypot(ax, ay), Math.hypot(bx, by));
279
- } else {
280
- secondDiff = Math.hypot(p0x - 2 * c1x + p1x, p0y - 2 * c1y + p1y);
281
- }
282
- if (!(secondDiff > 0)) return 2;
283
- const n = Math.ceil(CURVE_FLATTEN_SAFETY * Math.sqrt(secondDiff / (8 * tolerance)));
284
- return Math.max(2, Math.min(CURVE_MAX_SEGMENTS, n));
285
- }
286
-
287
- /**
288
- * Calculates a point on a quadratic Bezier curve (1 control point)
289
- * B(t) = (1-t)²P0 + 2(1-t)tP1 + t²P2
290
- */
291
- function getQuadraticBezierPoint(t, p0x, p0y, p1x, p1y, p2x, p2y) {
292
- const mt = 1 - t;
293
- return {
294
- x: mt * mt * p0x + 2 * mt * t * p1x + t * t * p2x,
295
- y: mt * mt * p0y + 2 * mt * t * p1y + t * t * p2y
296
- };
297
- }
298
-
299
- /**
300
- * Calculates a point on a cubic Bezier curve (2 control points)
301
- * B(t) = (1-t)³P0 + 3(1-t)²tP1 + 3(1-t)t²P2 + t³P3
302
- */
303
- function getCubicBezierPoint(t, p0x, p0y, p1x, p1y, p2x, p2y, p3x, p3y) {
304
- const mt = 1 - t;
305
- const mt2 = mt * mt;
306
- const mt3 = mt2 * mt;
307
- const t2 = t * t;
308
- const t3 = t2 * t;
309
- return {
310
- x: mt3 * p0x + 3 * mt2 * t * p1x + 3 * mt * t2 * p2x + t3 * p3x,
311
- y: mt3 * p0y + 3 * mt2 * t * p1y + 3 * mt * t2 * p2y + t3 * p3y
312
- };
313
- }
314
- const IconTextImpl = ({
315
- x,
316
- y,
317
- text,
318
- fontSize,
319
- fontWeight = 700,
320
- align = 'center',
321
- fill,
322
- opacity = 1,
323
- rotation,
324
- letterSpacing = 0
325
- }) => {
326
- // RN has no translate(-50%), so anchor via an estimated-width container with
327
- // matching textAlign. The estimate only pads the container; alignment inside
328
- // it is exact for left/right and near-exact for center.
329
- const estWidth = text.length * fontSize * 0.75 + Math.max(0, text.length - 1) * letterSpacing + fontSize;
330
- const height = fontSize * 1.5;
331
- const left = align === 'left' ? x : align === 'right' ? x - estWidth : x - estWidth / 2;
332
- const containerStyle = {
333
- position: 'absolute',
334
- left,
335
- top: y - height / 2,
336
- width: estWidth,
337
- height,
338
- justifyContent: 'center',
339
- transform: rotation !== undefined ? [{
340
- rotate: `${rotation}deg`
341
- }] : undefined
342
- };
343
- const textStyle = {
344
- color: fill,
345
- fontSize,
346
- fontWeight: String(fontWeight),
347
- textAlign: align,
348
- letterSpacing,
349
- opacity,
350
- includeFontPadding: false
351
- };
352
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
353
- style: containerStyle,
354
- pointerEvents: "none",
355
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
356
- style: textStyle,
357
- numberOfLines: 1,
358
- allowFontScaling: false,
359
- children: text
360
- })
361
- });
362
- };
363
-
364
- /**
365
- * IconLine - draws a line between two points
366
- * Auto-calculates length and rotation from coordinates!
367
- * Supports curved lines via cubic Bezier (2 control points) or quadratic (1 control point).
368
- */
369
- const IconLineImpl = ({
370
- x1,
371
- y1,
372
- x2,
373
- y2,
374
- stroke,
375
- strokeWidth = 1,
376
- opacity = 1,
377
- glowColor,
378
- glowRadius = 0,
379
- rotation = 0,
380
- curveX,
381
- curveY,
382
- curve2X,
383
- curve2Y
384
- }) => {
385
- // Check if this is a curved line (either control point set)
386
- const hasCurve1 = curveX !== undefined && curveX !== 0 || curveY !== undefined && curveY !== 0;
387
- const hasCurve2 = curve2X !== undefined && curve2X !== 0 || curve2Y !== undefined && curve2Y !== 0;
388
- const isCurved = hasCurve1 || hasCurve2;
389
- if (isCurved) {
390
- const midX = (x1 + x2) / 2;
391
- const midY = (y1 + y2) / 2;
392
-
393
- // Control points: offset from line midpoint
394
- const control1X = midX + (curveX ?? 0);
395
- const control1Y = midY + (curveY ?? 0);
396
- const control2X = midX + (curve2X ?? 0);
397
- const control2Y = midY + (curve2Y ?? 0);
398
-
399
- // Determine if cubic (2 distinct control points) or quadratic (1 control point)
400
- const isCubic = hasCurve1 && hasCurve2;
401
- const soleControlX = hasCurve1 ? control1X : control2X;
402
- const soleControlY = hasCurve1 ? control1Y : control2Y;
403
- const pointAt = t => isCubic ? getCubicBezierPoint(t, x1, y1, control1X, control1Y, control2X, control2Y, x2, y2) : getQuadraticBezierPoint(t, x1, y1, soleControlX, soleControlY, x2, y2);
404
- const segments = bezierSegmentCount(x1, y1, isCubic ? control1X : soleControlX, isCubic ? control1Y : soleControlY, control2X, control2Y, x2, y2, isCubic, CURVE_FLATTEN_TOLERANCE);
405
- const elements = [];
406
- let prev = {
407
- x: x1,
408
- y: y1
409
- };
410
- for (let i = 1; i <= segments; i++) {
411
- const pt = pointAt(i / segments);
412
- const segDx = pt.x - prev.x;
413
- const segDy = pt.y - prev.y;
414
- const segLength = Math.sqrt(segDx * segDx + segDy * segDy);
415
- const segAngle = Math.atan2(segDy, segDx) * (180 / Math.PI);
416
- const segCenterX = (prev.x + pt.x) / 2;
417
- const segCenterY = (prev.y + pt.y) / 2;
418
-
419
- // A capsule per segment. Interior joints OVERLAP by half a stroke on each side (a
420
- // capsule exactly segLength long shrinks to a blob when the segment is shorter than
421
- // the stroke, and neighbouring round ends leave notches on the outside of a turn —
422
- // the route-path icon rendered as dashes). The chain's two ends stay exactly at the
423
- // authored endpoints so a curve is the same length as a straight line.
424
- const extS = i > 1 ? strokeWidth / 2 : 0;
425
- const extE = i < segments ? strokeWidth / 2 : 0;
426
- const ux = segLength > 0 ? segDx / segLength : 0;
427
- const uy = segLength > 0 ? segDy / segLength : 0;
428
- const capLength = segLength + extS + extE;
429
- const capCenterX = segCenterX + ux * (extE - extS) / 2;
430
- const capCenterY = segCenterY + uy * (extE - extS) / 2;
431
- elements.push(/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
432
- style: {
433
- position: 'absolute',
434
- left: capCenterX - capLength / 2,
435
- top: capCenterY - strokeWidth / 2,
436
- width: capLength,
437
- height: strokeWidth,
438
- borderRadius: strokeWidth / 2,
439
- backgroundColor: stroke,
440
- opacity,
441
- transform: [{
442
- rotate: `${segAngle}deg`
443
- }]
444
- }
445
- }, `s${i}`));
446
- prev = pt;
447
- }
448
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {
449
- children: elements
450
- });
451
- }
452
-
453
- // Straight line (original logic)
454
- const dx = x2 - x1;
455
- const dy = y2 - y1;
456
- const length = Math.sqrt(dx * dx + dy * dy);
457
- const angle = Math.atan2(dy, dx) * (180 / Math.PI);
458
-
459
- // Position at midpoint of line
460
- const centerX = (x1 + x2) / 2;
461
- const centerY = (y1 + y2) / 2;
462
-
463
- // Total rotation = line angle + additional rotation
464
- const totalRotation = angle + rotation;
465
- const hasGlow = glowColor && glowRadius > 0;
466
- const style = {
467
- position: 'absolute',
468
- left: centerX - length / 2,
469
- top: centerY - strokeWidth / 2,
470
- width: length,
471
- height: strokeWidth,
472
- backgroundColor: stroke,
473
- opacity,
474
- transform: [{
475
- rotate: `${totalRotation}deg`
476
- }],
477
- borderRadius: strokeWidth / 2
478
- };
479
-
480
- // For neon glow effect, render a glow line with shadow
481
- if (hasGlow) {
482
- return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
483
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
484
- style: {
485
- position: 'absolute',
486
- left: centerX - length / 2,
487
- top: centerY - strokeWidth / 2,
488
- width: length,
489
- height: strokeWidth,
490
- backgroundColor: glowColor,
491
- opacity: _iconGlow.ICON_GLOW.lineLayerOpacity,
492
- transform: [{
493
- rotate: `${totalRotation}deg`
494
- }],
495
- borderRadius: strokeWidth / 2,
496
- // Shadow creates the glow
497
- shadowColor: glowColor,
498
- shadowOffset: {
499
- width: 0,
500
- height: 0
501
- },
502
- shadowOpacity: _iconGlow.ICON_GLOW.lineShadowOpacity,
503
- shadowRadius: _iconGlow.ICON_GLOW.lineShadowRadius
504
- }
505
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
506
- style: style
507
- })]
508
- });
509
- }
510
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
511
- style: style
512
- });
513
- };
514
-
515
- /**
516
- * IconTriangle - creates triangles using CSS border trick
517
- * Works in pure React Native!
518
- */
519
- const IconTriangleImpl = ({
520
- x,
521
- y,
522
- size,
523
- direction,
524
- fill,
525
- opacity = 1,
526
- rotation
527
- }) => {
528
- // CSS border trick: use transparent borders to create triangle
529
- // The size is the height of the triangle
530
- const halfWidth = size * 0.577; // size / sqrt(3) for equilateral-ish triangle
531
-
532
- // Build border styles based on direction
533
- let borderStyles = {};
534
- let offsetX = 0;
535
- let offsetY = 0;
536
- switch (direction) {
537
- case 'down':
538
- borderStyles = {
539
- borderLeftWidth: halfWidth,
540
- borderRightWidth: halfWidth,
541
- borderTopWidth: size,
542
- borderLeftColor: 'transparent',
543
- borderRightColor: 'transparent',
544
- borderTopColor: fill
545
- };
546
- offsetX = -halfWidth;
547
- offsetY = 0;
548
- break;
549
- case 'up':
550
- borderStyles = {
551
- borderLeftWidth: halfWidth,
552
- borderRightWidth: halfWidth,
553
- borderBottomWidth: size,
554
- borderLeftColor: 'transparent',
555
- borderRightColor: 'transparent',
556
- borderBottomColor: fill
557
- };
558
- offsetX = -halfWidth;
559
- offsetY = -size;
560
- break;
561
- case 'left':
562
- borderStyles = {
563
- borderTopWidth: halfWidth,
564
- borderBottomWidth: halfWidth,
565
- borderRightWidth: size,
566
- borderTopColor: 'transparent',
567
- borderBottomColor: 'transparent',
568
- borderRightColor: fill
569
- };
570
- offsetX = -size;
571
- offsetY = -halfWidth;
572
- break;
573
- case 'right':
574
- borderStyles = {
575
- borderTopWidth: halfWidth,
576
- borderBottomWidth: halfWidth,
577
- borderLeftWidth: size,
578
- borderTopColor: 'transparent',
579
- borderBottomColor: 'transparent',
580
- borderLeftColor: fill
581
- };
582
- offsetX = 0;
583
- offsetY = -halfWidth;
584
- break;
585
- }
586
-
587
- // Build transforms
588
- const transforms = [];
589
- if (rotation !== undefined) {
590
- transforms.push({
591
- rotate: `${rotation}deg`
592
- });
593
- }
594
- const style = {
595
- position: 'absolute',
596
- left: x + offsetX,
597
- top: y + offsetY,
598
- width: 0,
599
- height: 0,
600
- opacity,
601
- ...borderStyles,
602
- transform: transforms.length > 0 ? transforms : undefined
603
- };
604
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
605
- style: style
606
- });
607
- };
608
-
609
- /**
610
- * IconArc - draws an arc using multiple line segments
611
- * Creates smooth curves in pure React Native!
612
- */
613
- const IconArcImpl = ({
614
- cx,
615
- cy,
616
- r,
617
- startAngle,
618
- endAngle,
619
- stroke,
620
- strokeWidth = 1.5,
621
- opacity = 1,
622
- segments
623
- }) => {
624
- // Calculate number of segments based on arc length
625
- const arcLength = Math.abs(endAngle - startAngle);
626
- const autoSegments = Math.max(8, Math.ceil(arcLength / 10)); // ~10 degrees per segment
627
- const numSegments = segments ?? autoSegments;
628
-
629
- // Generate line segments
630
- const lines = [];
631
- const angleStep = (endAngle - startAngle) / numSegments;
632
- for (let i = 0; i < numSegments; i++) {
633
- const angle1 = startAngle + i * angleStep;
634
- const angle2 = startAngle + (i + 1) * angleStep;
635
-
636
- // Convert to radians
637
- const rad1 = angle1 * Math.PI / 180;
638
- const rad2 = angle2 * Math.PI / 180;
639
-
640
- // Calculate segment endpoints
641
- const x1 = cx + r * Math.cos(rad1);
642
- const y1 = cy + r * Math.sin(rad1);
643
- const x2 = cx + r * Math.cos(rad2);
644
- const y2 = cy + r * Math.sin(rad2);
645
-
646
- // Calculate segment geometry. Interior joints overlap by half a stroke (same reason
647
- // as the curved-line chain above); the arc's two ends stay at the authored angles.
648
- const dx = x2 - x1;
649
- const dy = y2 - y1;
650
- const segLen = Math.sqrt(dx * dx + dy * dy);
651
- const angle = Math.atan2(dy, dx) * (180 / Math.PI);
652
- const extS = i > 0 ? strokeWidth / 2 : 0;
653
- const extE = i < numSegments - 1 ? strokeWidth / 2 : 0;
654
- const ux = segLen > 0 ? dx / segLen : 0;
655
- const uy = segLen > 0 ? dy / segLen : 0;
656
- const length = segLen + extS + extE;
657
- const midX = (x1 + x2) / 2 + ux * (extE - extS) / 2;
658
- const midY = (y1 + y2) / 2 + uy * (extE - extS) / 2;
659
- const style = {
660
- position: 'absolute',
661
- left: midX - length / 2,
662
- top: midY - strokeWidth / 2,
663
- width: length,
664
- height: strokeWidth,
665
- backgroundColor: stroke,
666
- opacity,
667
- transform: [{
668
- rotate: `${angle}deg`
669
- }],
670
- borderRadius: strokeWidth / 2
671
- };
672
- lines.push(/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
673
- style: style
674
- }, i));
675
- }
676
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {
677
- children: lines
678
- });
679
- };
680
-
681
- /**
682
- * IconSemicircle - creates a half circle (filled)
683
- * Perfect for pokeball-style split designs!
684
- */
685
- const IconSemicircleImpl = ({
686
- cx,
687
- cy,
688
- r,
689
- half,
690
- fill,
691
- borderColor,
692
- borderWidth = 0,
693
- opacity = 1,
694
- glowColor,
695
- glowRadius = 0
696
- }) => {
697
- const diameter = r * 2;
698
-
699
- // Calculate position and border radii based on which half
700
- let left;
701
- let top;
702
- let width;
703
- let height;
704
- let borderTopLeftRadius = 0;
705
- let borderTopRightRadius = 0;
706
- let borderBottomLeftRadius = 0;
707
- let borderBottomRightRadius = 0;
708
- switch (half) {
709
- case 'top':
710
- left = cx - r;
711
- top = cy - r;
712
- width = diameter;
713
- height = r;
714
- borderTopLeftRadius = r;
715
- borderTopRightRadius = r;
716
- break;
717
- case 'bottom':
718
- left = cx - r;
719
- top = cy;
720
- width = diameter;
721
- height = r;
722
- borderBottomLeftRadius = r;
723
- borderBottomRightRadius = r;
724
- break;
725
- case 'left':
726
- left = cx - r;
727
- top = cy - r;
728
- width = r;
729
- height = diameter;
730
- borderTopLeftRadius = r;
731
- borderBottomLeftRadius = r;
732
- break;
733
- case 'right':
734
- left = cx;
735
- top = cy - r;
736
- width = r;
737
- height = diameter;
738
- borderTopRightRadius = r;
739
- borderBottomRightRadius = r;
740
- break;
741
- }
742
-
743
- // Check if this is a "transparent" element (border-only)
744
- // RN shadows require backgroundColor, so we need a separate glow layer
745
- const hasGlow = glowColor && glowRadius > 0;
746
- const needsSeparateGlow = hasGlow && (!fill || fill === 'transparent');
747
- const hasFillForShadow = fill && fill !== 'transparent';
748
- const style = {
749
- position: 'absolute',
750
- left,
751
- top,
752
- width,
753
- height,
754
- borderTopLeftRadius,
755
- borderTopRightRadius,
756
- borderBottomLeftRadius,
757
- borderBottomRightRadius,
758
- backgroundColor: fill,
759
- borderColor,
760
- borderWidth,
761
- opacity,
762
- // Only apply shadow if we have a fill (RN shadows need backgroundColor)
763
- ...(hasGlow && hasFillForShadow && {
764
- shadowColor: glowColor,
765
- shadowOffset: {
766
- width: 0,
767
- height: 0
768
- },
769
- shadowOpacity: _iconGlow.ICON_GLOW.filledShadowOpacity,
770
- shadowRadius: glowRadius * _iconGlow.ICON_GLOW.filledRadiusScale
771
- })
772
- };
773
-
774
- // For border-only elements, render a glow semicircle with shadow
775
- if (needsSeparateGlow) {
776
- const strokeW = borderWidth || 1;
777
- const glowExpand = strokeW;
778
- const glowR = r + glowExpand;
779
- const glowWidth = half === 'left' || half === 'right' ? glowR : glowR * 2;
780
- const glowHeight = half === 'top' || half === 'bottom' ? glowR : glowR * 2;
781
- const glowLeft = cx - (half === 'right' ? 0 : glowR);
782
- const glowTop = cy - (half === 'bottom' ? 0 : glowR);
783
- return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
784
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
785
- style: {
786
- position: 'absolute',
787
- left: glowLeft,
788
- top: glowTop,
789
- width: glowWidth,
790
- height: glowHeight,
791
- borderTopLeftRadius: half === 'top' || half === 'left' ? glowR : 0,
792
- borderTopRightRadius: half === 'top' || half === 'right' ? glowR : 0,
793
- borderBottomLeftRadius: half === 'bottom' || half === 'left' ? glowR : 0,
794
- borderBottomRightRadius: half === 'bottom' || half === 'right' ? glowR : 0,
795
- borderWidth: strokeW * _iconGlow.ICON_GLOW.rectBorderScale,
796
- borderColor: glowColor,
797
- opacity: _iconGlow.ICON_GLOW.rectLayerOpacity,
798
- shadowColor: glowColor,
799
- shadowOffset: {
800
- width: 0,
801
- height: 0
802
- },
803
- shadowOpacity: _iconGlow.ICON_GLOW.rectShadowOpacity,
804
- shadowRadius: strokeW * _iconGlow.ICON_GLOW.rectShadowRadiusScale
805
- }
806
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
807
- style: style
808
- })]
809
- });
810
- }
811
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
812
- style: style
813
- });
814
- };
815
-
816
- /**
817
- * IconSmoothArc - creates a smooth arc using the border trick
818
- * Uses bordered circles with partial borders hidden - gives perfect anti-aliased curves!
819
- * This is how the WiFi icon achieves smooth lines without dots.
820
- */
821
- const IconSmoothArcImpl = ({
822
- cx,
823
- cy,
824
- r,
825
- stroke,
826
- strokeWidth = 2,
827
- opacity = 1,
828
- portion = 'bottom'
829
- }) => {
830
- const diameter = r * 2;
831
-
832
- // Build border colors based on which portion to show
833
- let borderTopColor = stroke;
834
- let borderBottomColor = stroke;
835
- let borderLeftColor = stroke;
836
- let borderRightColor = stroke;
837
- switch (portion) {
838
- case 'bottom':
839
- // Show bottom arc (hide top, left, right)
840
- borderTopColor = 'transparent';
841
- borderLeftColor = 'transparent';
842
- borderRightColor = 'transparent';
843
- break;
844
- case 'top':
845
- // Show top arc (hide bottom, left, right)
846
- borderBottomColor = 'transparent';
847
- borderLeftColor = 'transparent';
848
- borderRightColor = 'transparent';
849
- break;
850
- case 'left':
851
- // Show left arc (hide top, bottom, right)
852
- borderTopColor = 'transparent';
853
- borderBottomColor = 'transparent';
854
- borderRightColor = 'transparent';
855
- break;
856
- case 'right':
857
- // Show right arc (hide top, bottom, left)
858
- borderTopColor = 'transparent';
859
- borderBottomColor = 'transparent';
860
- borderLeftColor = 'transparent';
861
- break;
862
- }
863
- const style = {
864
- position: 'absolute',
865
- left: cx - r,
866
- top: cy - r,
867
- width: diameter,
868
- height: diameter,
869
- borderRadius: r,
870
- borderWidth: strokeWidth,
871
- borderTopColor,
872
- borderBottomColor,
873
- borderLeftColor,
874
- borderRightColor,
875
- opacity
876
- };
877
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
878
- style: style
879
- });
880
- };
881
-
882
- // ===========================================
883
- // Memoized leaf exports
884
- // ===========================================
885
-
886
- /**
887
- * These primitives are LEAF nodes with measured render cost, so they are the
888
- * one place rule2 sanctions React.memo. Every prop is a scalar, so a shallow
889
- * compare is exact — an icon whose geometry did not change cannot re-render.
890
- *
891
- * Evidence (iOS sim, reopening the Time Machine tool, measure_renders):
892
- * IconLine alone burned 58.3ms across 103 renders, 100% attributed to
893
- * `parent` — a pure cascade from IconContainer with identical props. A curved
894
- * IconLine expands to 100+ absolutely-positioned Views, so each of those
895
- * cascaded renders rebuilt hundreds of style objects for an unchanged glyph.
896
- */
897
- const IconCircle = exports.IconCircle = /*#__PURE__*/(0, _react.memo)(IconCircleImpl);
898
- const IconRect = exports.IconRect = /*#__PURE__*/(0, _react.memo)(IconRectImpl);
899
- const IconText = exports.IconText = /*#__PURE__*/(0, _react.memo)(IconTextImpl);
900
- const IconLine = exports.IconLine = /*#__PURE__*/(0, _react.memo)(IconLineImpl);
901
- const IconTriangle = exports.IconTriangle = /*#__PURE__*/(0, _react.memo)(IconTriangleImpl);
902
- const IconArc = exports.IconArc = /*#__PURE__*/(0, _react.memo)(IconArcImpl);
903
- const IconSemicircle = exports.IconSemicircle = /*#__PURE__*/(0, _react.memo)(IconSemicircleImpl);
904
- const IconSmoothArc = exports.IconSmoothArc = /*#__PURE__*/(0, _react.memo)(IconSmoothArcImpl);
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.IconTriangle=exports.IconText=exports.IconSmoothArc=exports.IconSemicircle=exports.IconRect=exports.IconLine=exports.IconContainer=exports.IconCircle=exports.IconArc=void 0;var _react=require("react"),_reactNative=require("react-native"),_iconGlow=require("./iconGlow.js"),_jsxRuntime=require("react/jsx-runtime");const IconContainer=({size:t,children:o,style:e})=>{const r={position:"relative",width:t,height:t};return(0,_jsxRuntime.jsx)(_reactNative.View,{style:[r,e],children:o})};exports.IconContainer=IconContainer;const IconCircleImpl=({cx:t,cy:o,r:e,fill:r,borderColor:i,borderWidth:a=0,opacity:n=1,scaleX:s=1,scaleY:c=1,glowColor:d,glowRadius:l=0})=>{const h=2*e,p=[];1!==s&&p.push({scaleX:s}),1!==c&&p.push({scaleY:c});const u=d&&l>0&&(!r||"transparent"===r),m=r&&"transparent"!==r,w={position:"absolute",left:t-e,top:o-e,width:h,height:h,borderRadius:e,backgroundColor:r,borderColor:i,borderWidth:a,opacity:n,transform:p.length>0?p:void 0,...d&&l>0&&m&&{shadowColor:d,shadowOffset:{width:0,height:0},shadowOpacity:_iconGlow.ICON_GLOW.filledShadowOpacity,shadowRadius:l*_iconGlow.ICON_GLOW.filledRadiusScale}};if(u){const r=a||1;return(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[(0,_jsxRuntime.jsx)(_reactNative.View,{style:{position:"absolute",left:t-e,top:o-e,width:2*e,height:2*e,borderRadius:e,backgroundColor:"#000",borderWidth:r,borderColor:d,opacity:_iconGlow.ICON_GLOW.ringLayerOpacity,transform:p.length>0?p:void 0,shadowColor:d,shadowOffset:{width:0,height:0},shadowOpacity:_iconGlow.ICON_GLOW.ringShadowOpacity,shadowRadius:_iconGlow.ICON_GLOW.ringShadowRadius}}),(0,_jsxRuntime.jsx)(_reactNative.View,{style:w})]})}return(0,_jsxRuntime.jsx)(_reactNative.View,{style:w})},IconRectImpl=({x:t,y:o,width:e,height:r,fill:i,borderColor:a,borderWidth:n=0,borderRadius:s=0,opacity:c=1,glowColor:d,glowRadius:l=0,rotation:h,originX:p=.5,originY:u=.5})=>{const m=[];if(void 0!==h){const t=(.5-p)*e,o=(.5-u)*r;0===t&&0===o||(m.push({translateX:-t}),m.push({translateY:-o})),m.push({rotate:`${h}deg`}),0===t&&0===o||(m.push({translateX:t}),m.push({translateY:o}))}const w=d&&l>0,_=w&&(!i||"transparent"===i),b=i&&"transparent"!==i,g={position:"absolute",left:t,top:o,width:e,height:r,borderRadius:s,backgroundColor:i,borderColor:a,borderWidth:n,opacity:c,transform:m.length>0?m:void 0,...w&&b&&{shadowColor:d,shadowOffset:{width:0,height:0},shadowOpacity:_iconGlow.ICON_GLOW.filledShadowOpacity,shadowRadius:l*_iconGlow.ICON_GLOW.filledRadiusScale}};if(_){const i=n||1,a=i;return(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[(0,_jsxRuntime.jsx)(_reactNative.View,{style:{position:"absolute",left:t-a,top:o-a,width:e+2*a,height:r+2*a,borderRadius:s+a,borderWidth:i*_iconGlow.ICON_GLOW.rectBorderScale,borderColor:d,opacity:_iconGlow.ICON_GLOW.rectLayerOpacity,transform:m.length>0?m:void 0,shadowColor:d,shadowOffset:{width:0,height:0},shadowOpacity:_iconGlow.ICON_GLOW.rectShadowOpacity,shadowRadius:i*_iconGlow.ICON_GLOW.rectShadowRadiusScale}}),(0,_jsxRuntime.jsx)(_reactNative.View,{style:g})]})}return(0,_jsxRuntime.jsx)(_reactNative.View,{style:g})},CURVE_FLATTEN_TOLERANCE=.08,CURVE_FLATTEN_SAFETY=1.5,CURVE_MAX_SEGMENTS=48;function bezierSegmentCount(t,o,e,r,i,a,n,s,c,d){let l;if(c){const c=t-2*e+i,d=o-2*r+a,h=e-2*i+n,p=r-2*a+s;l=3*Math.max(Math.hypot(c,d),Math.hypot(h,p))}else l=Math.hypot(t-2*e+n,o-2*r+s);if(!(l>0))return 2;const h=Math.ceil(1.5*Math.sqrt(l/(8*d)));return Math.max(2,Math.min(48,h))}function getQuadraticBezierPoint(t,o,e,r,i,a,n){const s=1-t;return{x:s*s*o+2*s*t*r+t*t*a,y:s*s*e+2*s*t*i+t*t*n}}function getCubicBezierPoint(t,o,e,r,i,a,n,s,c){const d=1-t,l=d*d,h=l*d,p=t*t,u=p*t;return{x:h*o+3*l*t*r+3*d*p*a+u*s,y:h*e+3*l*t*i+3*d*p*n+u*c}}const IconTextImpl=({x:t,y:o,text:e,fontSize:r,fontWeight:i=700,align:a="center",fill:n,opacity:s=1,rotation:c,letterSpacing:d=0})=>{const l=e.length*r*.75+Math.max(0,e.length-1)*d+r,h=1.5*r,p={position:"absolute",left:"left"===a?t:"right"===a?t-l:t-l/2,top:o-h/2,width:l,height:h,justifyContent:"center",transform:void 0!==c?[{rotate:`${c}deg`}]:void 0},u={color:n,fontSize:r,fontWeight:String(i),textAlign:a,letterSpacing:d,opacity:s,includeFontPadding:!1};return(0,_jsxRuntime.jsx)(_reactNative.View,{style:p,pointerEvents:"none",children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:u,numberOfLines:1,allowFontScaling:!1,children:e})})},IconLineImpl=({x1:t,y1:o,x2:e,y2:r,stroke:i,strokeWidth:a=1,opacity:n=1,glowColor:s,glowRadius:c=0,rotation:d=0,curveX:l,curveY:h,curve2X:p,curve2Y:u})=>{const m=void 0!==l&&0!==l||void 0!==h&&0!==h,w=void 0!==p&&0!==p||void 0!==u&&0!==u;if(m||w){const s=(t+e)/2,c=(o+r)/2,d=s+(l??0),_=c+(h??0),b=s+(p??0),g=c+(u??0),x=m&&w,R=m?d:b,f=m?_:g,I=i=>x?getCubicBezierPoint(i,t,o,d,_,b,g,e,r):getQuadraticBezierPoint(i,t,o,R,f,e,r),y=bezierSegmentCount(t,o,x?d:R,x?_:f,b,g,e,r,x,.08),C=[];let O={x:t,y:o};for(let t=1;t<=y;t++){const o=I(t/y),e=o.x-O.x,r=o.y-O.y,s=Math.sqrt(e*e+r*r),c=Math.atan2(r,e)*(180/Math.PI),d=t>1?a/2:0,l=t<y?a/2:0,h=s+d+l,p=(O.x+o.x)/2+(s>0?e/s:0)*(l-d)/2,u=(O.y+o.y)/2+(s>0?r/s:0)*(l-d)/2;C.push((0,_jsxRuntime.jsx)(_reactNative.View,{style:{position:"absolute",left:p-h/2,top:u-a/2,width:h,height:a,borderRadius:a/2,backgroundColor:i,opacity:n,transform:[{rotate:`${c}deg`}]}},`s${t}`)),O=o}return(0,_jsxRuntime.jsx)(_jsxRuntime.Fragment,{children:C})}const _=e-t,b=r-o,g=Math.sqrt(_*_+b*b),x=Math.atan2(b,_)*(180/Math.PI),R=(t+e)/2,f=(o+r)/2,I=x+d,y={position:"absolute",left:R-g/2,top:f-a/2,width:g,height:a,backgroundColor:i,opacity:n,transform:[{rotate:`${I}deg`}],borderRadius:a/2};return s&&c>0?(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[(0,_jsxRuntime.jsx)(_reactNative.View,{style:{position:"absolute",left:R-g/2,top:f-a/2,width:g,height:a,backgroundColor:s,opacity:_iconGlow.ICON_GLOW.lineLayerOpacity,transform:[{rotate:`${I}deg`}],borderRadius:a/2,shadowColor:s,shadowOffset:{width:0,height:0},shadowOpacity:_iconGlow.ICON_GLOW.lineShadowOpacity,shadowRadius:_iconGlow.ICON_GLOW.lineShadowRadius}}),(0,_jsxRuntime.jsx)(_reactNative.View,{style:y})]}):(0,_jsxRuntime.jsx)(_reactNative.View,{style:y})},IconTriangleImpl=({x:t,y:o,size:e,direction:r,fill:i,opacity:a=1,rotation:n})=>{const s=.577*e;let c={},d=0,l=0;switch(r){case"down":c={borderLeftWidth:s,borderRightWidth:s,borderTopWidth:e,borderLeftColor:"transparent",borderRightColor:"transparent",borderTopColor:i},d=-s,l=0;break;case"up":c={borderLeftWidth:s,borderRightWidth:s,borderBottomWidth:e,borderLeftColor:"transparent",borderRightColor:"transparent",borderBottomColor:i},d=-s,l=-e;break;case"left":c={borderTopWidth:s,borderBottomWidth:s,borderRightWidth:e,borderTopColor:"transparent",borderBottomColor:"transparent",borderRightColor:i},d=-e,l=-s;break;case"right":c={borderTopWidth:s,borderBottomWidth:s,borderLeftWidth:e,borderTopColor:"transparent",borderBottomColor:"transparent",borderLeftColor:i},d=0,l=-s}const h=[];void 0!==n&&h.push({rotate:`${n}deg`});const p={position:"absolute",left:t+d,top:o+l,width:0,height:0,opacity:a,...c,transform:h.length>0?h:void 0};return(0,_jsxRuntime.jsx)(_reactNative.View,{style:p})},IconArcImpl=({cx:t,cy:o,r:e,startAngle:r,endAngle:i,stroke:a,strokeWidth:n=1.5,opacity:s=1,segments:c})=>{const d=Math.abs(i-r),l=Math.max(8,Math.ceil(d/10)),h=c??l,p=[],u=(i-r)/h;for(let i=0;i<h;i++){const c=r+(i+1)*u,d=(r+i*u)*Math.PI/180,l=c*Math.PI/180,m=t+e*Math.cos(d),w=o+e*Math.sin(d),_=t+e*Math.cos(l),b=o+e*Math.sin(l),g=_-m,x=b-w,R=Math.sqrt(g*g+x*x),f=i>0?n/2:0,I=i<h-1?n/2:0,y=R+f+I,C={position:"absolute",left:(m+_)/2+(R>0?g/R:0)*(I-f)/2-y/2,top:(w+b)/2+(R>0?x/R:0)*(I-f)/2-n/2,width:y,height:n,backgroundColor:a,opacity:s,transform:[{rotate:Math.atan2(x,g)*(180/Math.PI)+"deg"}],borderRadius:n/2};p.push((0,_jsxRuntime.jsx)(_reactNative.View,{style:C},i))}return(0,_jsxRuntime.jsx)(_jsxRuntime.Fragment,{children:p})},IconSemicircleImpl=({cx:t,cy:o,r:e,half:r,fill:i,borderColor:a,borderWidth:n=0,opacity:s=1,glowColor:c,glowRadius:d=0})=>{const l=2*e;let h,p,u,m,w=0,_=0,b=0,g=0;switch(r){case"top":h=t-e,p=o-e,u=l,m=e,w=e,_=e;break;case"bottom":h=t-e,p=o,u=l,m=e,b=e,g=e;break;case"left":h=t-e,p=o-e,u=e,m=l,w=e,b=e;break;case"right":h=t,p=o-e,u=e,m=l,_=e,g=e}const x=c&&d>0,R=x&&(!i||"transparent"===i),f={position:"absolute",left:h,top:p,width:u,height:m,borderTopLeftRadius:w,borderTopRightRadius:_,borderBottomLeftRadius:b,borderBottomRightRadius:g,backgroundColor:i,borderColor:a,borderWidth:n,opacity:s,...x&&i&&"transparent"!==i&&{shadowColor:c,shadowOffset:{width:0,height:0},shadowOpacity:_iconGlow.ICON_GLOW.filledShadowOpacity,shadowRadius:d*_iconGlow.ICON_GLOW.filledRadiusScale}};if(R){const i=n||1,a=e+i,s="left"===r||"right"===r?a:2*a,d="top"===r||"bottom"===r?a:2*a,l=t-("right"===r?0:a),h=o-("bottom"===r?0:a);return(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[(0,_jsxRuntime.jsx)(_reactNative.View,{style:{position:"absolute",left:l,top:h,width:s,height:d,borderTopLeftRadius:"top"===r||"left"===r?a:0,borderTopRightRadius:"top"===r||"right"===r?a:0,borderBottomLeftRadius:"bottom"===r||"left"===r?a:0,borderBottomRightRadius:"bottom"===r||"right"===r?a:0,borderWidth:i*_iconGlow.ICON_GLOW.rectBorderScale,borderColor:c,opacity:_iconGlow.ICON_GLOW.rectLayerOpacity,shadowColor:c,shadowOffset:{width:0,height:0},shadowOpacity:_iconGlow.ICON_GLOW.rectShadowOpacity,shadowRadius:i*_iconGlow.ICON_GLOW.rectShadowRadiusScale}}),(0,_jsxRuntime.jsx)(_reactNative.View,{style:f})]})}return(0,_jsxRuntime.jsx)(_reactNative.View,{style:f})},IconSmoothArcImpl=({cx:t,cy:o,r:e,stroke:r,strokeWidth:i=2,opacity:a=1,portion:n="bottom"})=>{const s=2*e;let c=r,d=r,l=r,h=r;switch(n){case"bottom":c="transparent",l="transparent",h="transparent";break;case"top":d="transparent",l="transparent",h="transparent";break;case"left":c="transparent",d="transparent",h="transparent";break;case"right":c="transparent",d="transparent",l="transparent"}const p={position:"absolute",left:t-e,top:o-e,width:s,height:s,borderRadius:e,borderWidth:i,borderTopColor:c,borderBottomColor:d,borderLeftColor:l,borderRightColor:h,opacity:a};return(0,_jsxRuntime.jsx)(_reactNative.View,{style:p})},IconCircle=exports.IconCircle=(0,_react.memo)(IconCircleImpl),IconRect=exports.IconRect=(0,_react.memo)(IconRectImpl),IconText=exports.IconText=(0,_react.memo)(IconTextImpl),IconLine=exports.IconLine=(0,_react.memo)(IconLineImpl),IconTriangle=exports.IconTriangle=(0,_react.memo)(IconTriangleImpl),IconArc=exports.IconArc=(0,_react.memo)(IconArcImpl),IconSemicircle=exports.IconSemicircle=(0,_react.memo)(IconSemicircleImpl),IconSmoothArc=exports.IconSmoothArc=(0,_react.memo)(IconSmoothArcImpl);