tempest-react-sdk 0.47.0 → 0.48.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 (373) hide show
  1. package/dist/components/AIChat/AIChatTurn.cjs +1 -1
  2. package/dist/components/AIChat/AIChatTurn.js +4 -4
  3. package/dist/components/AppBar/use-sticky-body-warning.cjs.map +1 -1
  4. package/dist/components/AppBar/use-sticky-body-warning.js.map +1 -1
  5. package/dist/components/DataTable/DataTable.cjs +1 -1
  6. package/dist/components/DataTable/DataTable.js +11 -11
  7. package/dist/components/DataTable/use-dev-warnings.cjs.map +1 -1
  8. package/dist/components/DataTable/use-dev-warnings.js.map +1 -1
  9. package/dist/components/NotificationCenter/NotificationCenter.cjs +1 -1
  10. package/dist/components/NotificationCenter/NotificationCenter.js +21 -21
  11. package/dist/components/Sidebar/Sidebar.cjs +1 -1
  12. package/dist/components/Sidebar/Sidebar.cjs.map +1 -1
  13. package/dist/components/Sidebar/Sidebar.js +91 -38
  14. package/dist/components/Sidebar/Sidebar.js.map +1 -1
  15. package/dist/components/Sidebar/Sidebar.module.cjs +1 -1
  16. package/dist/components/Sidebar/Sidebar.module.cjs.map +1 -1
  17. package/dist/components/Sidebar/Sidebar.module.js +12 -8
  18. package/dist/components/Sidebar/Sidebar.module.js.map +1 -1
  19. package/dist/forms/masked-inputs.cjs +1 -1
  20. package/dist/forms/masked-inputs.js +12 -12
  21. package/dist/http/api-client.cjs +1 -1
  22. package/dist/http/api-client.cjs.map +1 -1
  23. package/dist/http/api-client.js +45 -31
  24. package/dist/http/api-client.js.map +1 -1
  25. package/dist/http/describe-api-error.cjs +1 -1
  26. package/dist/http/describe-api-error.cjs.map +1 -1
  27. package/dist/http/describe-api-error.js +11 -7
  28. package/dist/http/describe-api-error.js.map +1 -1
  29. package/dist/http/errors.cjs +1 -1
  30. package/dist/http/errors.cjs.map +1 -1
  31. package/dist/http/errors.js +38 -21
  32. package/dist/http/errors.js.map +1 -1
  33. package/dist/http/use-describe-api-error.cjs +1 -1
  34. package/dist/http/use-describe-api-error.cjs.map +1 -1
  35. package/dist/http/use-describe-api-error.js +14 -10
  36. package/dist/http/use-describe-api-error.js.map +1 -1
  37. package/dist/icons/Icon.cjs +1 -1
  38. package/dist/icons/Icon.cjs.map +1 -1
  39. package/dist/icons/Icon.js +15 -14
  40. package/dist/icons/Icon.js.map +1 -1
  41. package/dist/icons/IconPicker.cjs +2 -0
  42. package/dist/icons/IconPicker.cjs.map +1 -0
  43. package/dist/icons/IconPicker.js +49 -0
  44. package/dist/icons/IconPicker.js.map +1 -0
  45. package/dist/icons/IconPicker.module.cjs +2 -0
  46. package/dist/icons/IconPicker.module.cjs.map +1 -0
  47. package/dist/icons/IconPicker.module.js +10 -0
  48. package/dist/icons/IconPicker.module.js.map +1 -0
  49. package/dist/icons/alias.cjs +2 -0
  50. package/dist/icons/alias.cjs.map +1 -0
  51. package/dist/icons/alias.js +9 -0
  52. package/dist/icons/alias.js.map +1 -0
  53. package/dist/icons/generated/loaders.cjs +1 -1
  54. package/dist/icons/generated/loaders.cjs.map +1 -1
  55. package/dist/icons/generated/loaders.js +273 -28
  56. package/dist/icons/generated/loaders.js.map +1 -1
  57. package/dist/icons/generated/shard-00.cjs +2 -0
  58. package/dist/icons/generated/shard-00.cjs.map +1 -0
  59. package/dist/icons/generated/shard-00.js +48 -0
  60. package/dist/icons/generated/shard-00.js.map +1 -0
  61. package/dist/icons/generated/shard-01.cjs +2 -0
  62. package/dist/icons/generated/shard-01.cjs.map +1 -0
  63. package/dist/icons/generated/shard-01.js +48 -0
  64. package/dist/icons/generated/shard-01.js.map +1 -0
  65. package/dist/icons/generated/shard-02.cjs +2 -0
  66. package/dist/icons/generated/shard-02.cjs.map +1 -0
  67. package/dist/icons/generated/shard-02.js +48 -0
  68. package/dist/icons/generated/shard-02.js.map +1 -0
  69. package/dist/icons/generated/shard-03.cjs +2 -0
  70. package/dist/icons/generated/shard-03.cjs.map +1 -0
  71. package/dist/icons/generated/shard-03.js +48 -0
  72. package/dist/icons/generated/shard-03.js.map +1 -0
  73. package/dist/icons/generated/shard-04.cjs +2 -0
  74. package/dist/icons/generated/shard-04.cjs.map +1 -0
  75. package/dist/icons/generated/shard-04.js +48 -0
  76. package/dist/icons/generated/shard-04.js.map +1 -0
  77. package/dist/icons/generated/shard-05.cjs +2 -0
  78. package/dist/icons/generated/shard-05.cjs.map +1 -0
  79. package/dist/icons/generated/shard-05.js +48 -0
  80. package/dist/icons/generated/shard-05.js.map +1 -0
  81. package/dist/icons/generated/shard-06.cjs +2 -0
  82. package/dist/icons/generated/shard-06.cjs.map +1 -0
  83. package/dist/icons/generated/shard-06.js +48 -0
  84. package/dist/icons/generated/shard-06.js.map +1 -0
  85. package/dist/icons/generated/shard-07.cjs +2 -0
  86. package/dist/icons/generated/shard-07.cjs.map +1 -0
  87. package/dist/icons/generated/shard-07.js +48 -0
  88. package/dist/icons/generated/shard-07.js.map +1 -0
  89. package/dist/icons/generated/shard-08.cjs +2 -0
  90. package/dist/icons/generated/shard-08.cjs.map +1 -0
  91. package/dist/icons/generated/shard-08.js +48 -0
  92. package/dist/icons/generated/shard-08.js.map +1 -0
  93. package/dist/icons/generated/shard-09.cjs +2 -0
  94. package/dist/icons/generated/shard-09.cjs.map +1 -0
  95. package/dist/icons/generated/shard-09.js +48 -0
  96. package/dist/icons/generated/shard-09.js.map +1 -0
  97. package/dist/icons/generated/shard-10.cjs +2 -0
  98. package/dist/icons/generated/shard-10.cjs.map +1 -0
  99. package/dist/icons/generated/shard-10.js +48 -0
  100. package/dist/icons/generated/shard-10.js.map +1 -0
  101. package/dist/icons/generated/shard-11.cjs +2 -0
  102. package/dist/icons/generated/shard-11.cjs.map +1 -0
  103. package/dist/icons/generated/shard-11.js +48 -0
  104. package/dist/icons/generated/shard-11.js.map +1 -0
  105. package/dist/icons/generated/shard-12.cjs +2 -0
  106. package/dist/icons/generated/shard-12.cjs.map +1 -0
  107. package/dist/icons/generated/shard-12.js +48 -0
  108. package/dist/icons/generated/shard-12.js.map +1 -0
  109. package/dist/icons/generated/shard-13.cjs +2 -0
  110. package/dist/icons/generated/shard-13.cjs.map +1 -0
  111. package/dist/icons/generated/shard-13.js +48 -0
  112. package/dist/icons/generated/shard-13.js.map +1 -0
  113. package/dist/icons/generated/shard-14.cjs +2 -0
  114. package/dist/icons/generated/shard-14.cjs.map +1 -0
  115. package/dist/icons/generated/shard-14.js +48 -0
  116. package/dist/icons/generated/shard-14.js.map +1 -0
  117. package/dist/icons/generated/shard-15.cjs +2 -0
  118. package/dist/icons/generated/shard-15.cjs.map +1 -0
  119. package/dist/icons/generated/shard-15.js +48 -0
  120. package/dist/icons/generated/shard-15.js.map +1 -0
  121. package/dist/icons/generated/shard-16.cjs +2 -0
  122. package/dist/icons/generated/shard-16.cjs.map +1 -0
  123. package/dist/icons/generated/shard-16.js +48 -0
  124. package/dist/icons/generated/shard-16.js.map +1 -0
  125. package/dist/icons/generated/shard-17.cjs +2 -0
  126. package/dist/icons/generated/shard-17.cjs.map +1 -0
  127. package/dist/icons/generated/shard-17.js +48 -0
  128. package/dist/icons/generated/shard-17.js.map +1 -0
  129. package/dist/icons/generated/shard-18.cjs +2 -0
  130. package/dist/icons/generated/shard-18.cjs.map +1 -0
  131. package/dist/icons/generated/shard-18.js +48 -0
  132. package/dist/icons/generated/shard-18.js.map +1 -0
  133. package/dist/icons/generated/shard-19.cjs +2 -0
  134. package/dist/icons/generated/shard-19.cjs.map +1 -0
  135. package/dist/icons/generated/shard-19.js +48 -0
  136. package/dist/icons/generated/shard-19.js.map +1 -0
  137. package/dist/icons/generated/shard-20.cjs +2 -0
  138. package/dist/icons/generated/shard-20.cjs.map +1 -0
  139. package/dist/icons/generated/shard-20.js +48 -0
  140. package/dist/icons/generated/shard-20.js.map +1 -0
  141. package/dist/icons/generated/shard-21.cjs +2 -0
  142. package/dist/icons/generated/shard-21.cjs.map +1 -0
  143. package/dist/icons/generated/shard-21.js +48 -0
  144. package/dist/icons/generated/shard-21.js.map +1 -0
  145. package/dist/icons/generated/shard-22.cjs +2 -0
  146. package/dist/icons/generated/shard-22.cjs.map +1 -0
  147. package/dist/icons/generated/shard-22.js +48 -0
  148. package/dist/icons/generated/shard-22.js.map +1 -0
  149. package/dist/icons/generated/shard-23.cjs +2 -0
  150. package/dist/icons/generated/shard-23.cjs.map +1 -0
  151. package/dist/icons/generated/shard-23.js +48 -0
  152. package/dist/icons/generated/shard-23.js.map +1 -0
  153. package/dist/icons/generated/shard-24.cjs +2 -0
  154. package/dist/icons/generated/shard-24.cjs.map +1 -0
  155. package/dist/icons/generated/shard-24.js +48 -0
  156. package/dist/icons/generated/shard-24.js.map +1 -0
  157. package/dist/icons/generated/shard-25.cjs +2 -0
  158. package/dist/icons/generated/shard-25.cjs.map +1 -0
  159. package/dist/icons/generated/shard-25.js +48 -0
  160. package/dist/icons/generated/shard-25.js.map +1 -0
  161. package/dist/icons/generated/shard-26.cjs +2 -0
  162. package/dist/icons/generated/shard-26.cjs.map +1 -0
  163. package/dist/icons/generated/shard-26.js +48 -0
  164. package/dist/icons/generated/shard-26.js.map +1 -0
  165. package/dist/icons/generated/shard-27.cjs +2 -0
  166. package/dist/icons/generated/shard-27.cjs.map +1 -0
  167. package/dist/icons/generated/shard-27.js +48 -0
  168. package/dist/icons/generated/shard-27.js.map +1 -0
  169. package/dist/icons/generated/shard-28.cjs +2 -0
  170. package/dist/icons/generated/shard-28.cjs.map +1 -0
  171. package/dist/icons/generated/shard-28.js +48 -0
  172. package/dist/icons/generated/shard-28.js.map +1 -0
  173. package/dist/icons/generated/shard-29.cjs +2 -0
  174. package/dist/icons/generated/shard-29.cjs.map +1 -0
  175. package/dist/icons/generated/shard-29.js +48 -0
  176. package/dist/icons/generated/shard-29.js.map +1 -0
  177. package/dist/icons/generated/shard-30.cjs +2 -0
  178. package/dist/icons/generated/shard-30.cjs.map +1 -0
  179. package/dist/icons/generated/shard-30.js +48 -0
  180. package/dist/icons/generated/shard-30.js.map +1 -0
  181. package/dist/icons/generated/shard-31.cjs +2 -0
  182. package/dist/icons/generated/shard-31.cjs.map +1 -0
  183. package/dist/icons/generated/shard-31.js +48 -0
  184. package/dist/icons/generated/shard-31.js.map +1 -0
  185. package/dist/icons/generated/shard-32.cjs +2 -0
  186. package/dist/icons/generated/shard-32.cjs.map +1 -0
  187. package/dist/icons/generated/shard-32.js +48 -0
  188. package/dist/icons/generated/shard-32.js.map +1 -0
  189. package/dist/icons/generated/shard-33.cjs +2 -0
  190. package/dist/icons/generated/shard-33.cjs.map +1 -0
  191. package/dist/icons/generated/shard-33.js +48 -0
  192. package/dist/icons/generated/shard-33.js.map +1 -0
  193. package/dist/icons/generated/shard-34.cjs +2 -0
  194. package/dist/icons/generated/shard-34.cjs.map +1 -0
  195. package/dist/icons/generated/shard-34.js +48 -0
  196. package/dist/icons/generated/shard-34.js.map +1 -0
  197. package/dist/icons/generated/shard-35.cjs +2 -0
  198. package/dist/icons/generated/shard-35.cjs.map +1 -0
  199. package/dist/icons/generated/shard-35.js +48 -0
  200. package/dist/icons/generated/shard-35.js.map +1 -0
  201. package/dist/icons/generated/shard-36.cjs +2 -0
  202. package/dist/icons/generated/shard-36.cjs.map +1 -0
  203. package/dist/icons/generated/shard-36.js +48 -0
  204. package/dist/icons/generated/shard-36.js.map +1 -0
  205. package/dist/icons/generated/shard-37.cjs +2 -0
  206. package/dist/icons/generated/shard-37.cjs.map +1 -0
  207. package/dist/icons/generated/shard-37.js +48 -0
  208. package/dist/icons/generated/shard-37.js.map +1 -0
  209. package/dist/icons/generated/shard-38.cjs +2 -0
  210. package/dist/icons/generated/shard-38.cjs.map +1 -0
  211. package/dist/icons/generated/shard-38.js +48 -0
  212. package/dist/icons/generated/shard-38.js.map +1 -0
  213. package/dist/icons/generated/shard-39.cjs +2 -0
  214. package/dist/icons/generated/shard-39.cjs.map +1 -0
  215. package/dist/icons/generated/shard-39.js +48 -0
  216. package/dist/icons/generated/shard-39.js.map +1 -0
  217. package/dist/icons/generated/shard-40.cjs +2 -0
  218. package/dist/icons/generated/shard-40.cjs.map +1 -0
  219. package/dist/icons/generated/shard-40.js +48 -0
  220. package/dist/icons/generated/shard-40.js.map +1 -0
  221. package/dist/icons/generated/shard-41.cjs +2 -0
  222. package/dist/icons/generated/shard-41.cjs.map +1 -0
  223. package/dist/icons/generated/shard-41.js +48 -0
  224. package/dist/icons/generated/shard-41.js.map +1 -0
  225. package/dist/icons/generated/shard-42.cjs +2 -0
  226. package/dist/icons/generated/shard-42.cjs.map +1 -0
  227. package/dist/icons/generated/shard-42.js +48 -0
  228. package/dist/icons/generated/shard-42.js.map +1 -0
  229. package/dist/icons/generated/shard-43.cjs +2 -0
  230. package/dist/icons/generated/shard-43.cjs.map +1 -0
  231. package/dist/icons/generated/shard-43.js +48 -0
  232. package/dist/icons/generated/shard-43.js.map +1 -0
  233. package/dist/icons/generated/shard-44.cjs +2 -0
  234. package/dist/icons/generated/shard-44.cjs.map +1 -0
  235. package/dist/icons/generated/shard-44.js +15 -0
  236. package/dist/icons/generated/shard-44.js.map +1 -0
  237. package/dist/icons/material-symbols.cjs +1 -1
  238. package/dist/icons/material-symbols.cjs.map +1 -1
  239. package/dist/icons/material-symbols.js +109 -1
  240. package/dist/icons/material-symbols.js.map +1 -1
  241. package/dist/icons/normalize-icon-name.cjs +2 -0
  242. package/dist/icons/normalize-icon-name.cjs.map +1 -0
  243. package/dist/icons/normalize-icon-name.js +9 -0
  244. package/dist/icons/normalize-icon-name.js.map +1 -0
  245. package/dist/icons/shard-cache.cjs +1 -1
  246. package/dist/icons/shard-cache.cjs.map +1 -1
  247. package/dist/icons/shard-cache.js +85 -32
  248. package/dist/icons/shard-cache.js.map +1 -1
  249. package/dist/icons/validate-icon-name.cjs +2 -0
  250. package/dist/icons/validate-icon-name.cjs.map +1 -0
  251. package/dist/icons/validate-icon-name.js +11 -0
  252. package/dist/icons/validate-icon-name.js.map +1 -0
  253. package/dist/icons-virtual-id.d.ts +24 -0
  254. package/dist/icons-virtual.cjs +2 -0
  255. package/dist/icons-virtual.cjs.map +1 -0
  256. package/dist/icons-virtual.d.ts +30 -22
  257. package/dist/icons-virtual.js +6 -0
  258. package/dist/icons-virtual.js.map +1 -0
  259. package/dist/icons.cjs +1 -1
  260. package/dist/icons.d.ts +269 -32
  261. package/dist/icons.js +11 -7
  262. package/dist/styles.css +1 -1
  263. package/dist/tempest-react-sdk.cjs +1 -1
  264. package/dist/tempest-react-sdk.d.ts +95 -64
  265. package/dist/tempest-react-sdk.js +225 -226
  266. package/dist/utils/dev-mode.cjs.map +1 -1
  267. package/dist/utils/dev-mode.js.map +1 -1
  268. package/dist/vite/tempest-icons.cjs +4 -4
  269. package/dist/vite/tempest-icons.cjs.map +1 -1
  270. package/dist/vite/tempest-icons.js +26 -26
  271. package/dist/vite/tempest-icons.js.map +1 -1
  272. package/dist/vite.d.ts +1 -1
  273. package/package.json +5 -2
  274. package/dist/icons/generated/shard-a.cjs +0 -2
  275. package/dist/icons/generated/shard-a.cjs.map +0 -1
  276. package/dist/icons/generated/shard-a.js +0 -114
  277. package/dist/icons/generated/shard-a.js.map +0 -1
  278. package/dist/icons/generated/shard-b.cjs +0 -2
  279. package/dist/icons/generated/shard-b.cjs.map +0 -1
  280. package/dist/icons/generated/shard-b.js +0 -158
  281. package/dist/icons/generated/shard-b.js.map +0 -1
  282. package/dist/icons/generated/shard-c.cjs +0 -2
  283. package/dist/icons/generated/shard-c.cjs.map +0 -1
  284. package/dist/icons/generated/shard-c.js +0 -269
  285. package/dist/icons/generated/shard-c.js.map +0 -1
  286. package/dist/icons/generated/shard-d.cjs +0 -2
  287. package/dist/icons/generated/shard-d.cjs.map +0 -1
  288. package/dist/icons/generated/shard-d.js +0 -62
  289. package/dist/icons/generated/shard-d.js.map +0 -1
  290. package/dist/icons/generated/shard-e.cjs +0 -2
  291. package/dist/icons/generated/shard-e.cjs.map +0 -1
  292. package/dist/icons/generated/shard-e.js +0 -33
  293. package/dist/icons/generated/shard-e.js.map +0 -1
  294. package/dist/icons/generated/shard-f.cjs +0 -2
  295. package/dist/icons/generated/shard-f.cjs.map +0 -1
  296. package/dist/icons/generated/shard-f.js +0 -145
  297. package/dist/icons/generated/shard-f.js.map +0 -1
  298. package/dist/icons/generated/shard-g.cjs +0 -2
  299. package/dist/icons/generated/shard-g.cjs.map +0 -1
  300. package/dist/icons/generated/shard-g.js +0 -61
  301. package/dist/icons/generated/shard-g.js.map +0 -1
  302. package/dist/icons/generated/shard-h.cjs +0 -2
  303. package/dist/icons/generated/shard-h.cjs.map +0 -1
  304. package/dist/icons/generated/shard-h.js +0 -62
  305. package/dist/icons/generated/shard-h.js.map +0 -1
  306. package/dist/icons/generated/shard-i.cjs +0 -2
  307. package/dist/icons/generated/shard-i.cjs.map +0 -1
  308. package/dist/icons/generated/shard-i.js +0 -30
  309. package/dist/icons/generated/shard-i.js.map +0 -1
  310. package/dist/icons/generated/shard-j.cjs +0 -2
  311. package/dist/icons/generated/shard-j.cjs.map +0 -1
  312. package/dist/icons/generated/shard-j.js +0 -10
  313. package/dist/icons/generated/shard-j.js.map +0 -1
  314. package/dist/icons/generated/shard-k.cjs +0 -2
  315. package/dist/icons/generated/shard-k.cjs.map +0 -1
  316. package/dist/icons/generated/shard-k.js +0 -16
  317. package/dist/icons/generated/shard-k.js.map +0 -1
  318. package/dist/icons/generated/shard-l.cjs +0 -2
  319. package/dist/icons/generated/shard-l.cjs.map +0 -1
  320. package/dist/icons/generated/shard-l.js +0 -92
  321. package/dist/icons/generated/shard-l.js.map +0 -1
  322. package/dist/icons/generated/shard-m.cjs +0 -2
  323. package/dist/icons/generated/shard-m.cjs.map +0 -1
  324. package/dist/icons/generated/shard-m.js +0 -143
  325. package/dist/icons/generated/shard-m.js.map +0 -1
  326. package/dist/icons/generated/shard-n.cjs +0 -2
  327. package/dist/icons/generated/shard-n.cjs.map +0 -1
  328. package/dist/icons/generated/shard-n.js +0 -24
  329. package/dist/icons/generated/shard-n.js.map +0 -1
  330. package/dist/icons/generated/shard-o.cjs +0 -2
  331. package/dist/icons/generated/shard-o.cjs.map +0 -1
  332. package/dist/icons/generated/shard-o.js +0 -17
  333. package/dist/icons/generated/shard-o.js.map +0 -1
  334. package/dist/icons/generated/shard-p.cjs +0 -2
  335. package/dist/icons/generated/shard-p.cjs.map +0 -1
  336. package/dist/icons/generated/shard-p.js +0 -114
  337. package/dist/icons/generated/shard-p.js.map +0 -1
  338. package/dist/icons/generated/shard-q.cjs +0 -2
  339. package/dist/icons/generated/shard-q.cjs.map +0 -1
  340. package/dist/icons/generated/shard-q.js +0 -10
  341. package/dist/icons/generated/shard-q.js.map +0 -1
  342. package/dist/icons/generated/shard-r.cjs +0 -2
  343. package/dist/icons/generated/shard-r.cjs.map +0 -1
  344. package/dist/icons/generated/shard-r.js +0 -79
  345. package/dist/icons/generated/shard-r.js.map +0 -1
  346. package/dist/icons/generated/shard-s.cjs +0 -2
  347. package/dist/icons/generated/shard-s.cjs.map +0 -1
  348. package/dist/icons/generated/shard-s.js +0 -256
  349. package/dist/icons/generated/shard-s.js.map +0 -1
  350. package/dist/icons/generated/shard-t.cjs +0 -2
  351. package/dist/icons/generated/shard-t.cjs.map +0 -1
  352. package/dist/icons/generated/shard-t.js +0 -109
  353. package/dist/icons/generated/shard-t.js.map +0 -1
  354. package/dist/icons/generated/shard-u.cjs +0 -2
  355. package/dist/icons/generated/shard-u.cjs.map +0 -1
  356. package/dist/icons/generated/shard-u.js +0 -50
  357. package/dist/icons/generated/shard-u.js.map +0 -1
  358. package/dist/icons/generated/shard-v.cjs +0 -2
  359. package/dist/icons/generated/shard-v.cjs.map +0 -1
  360. package/dist/icons/generated/shard-v.js +0 -30
  361. package/dist/icons/generated/shard-v.js.map +0 -1
  362. package/dist/icons/generated/shard-w.cjs +0 -2
  363. package/dist/icons/generated/shard-w.cjs.map +0 -1
  364. package/dist/icons/generated/shard-w.js +0 -48
  365. package/dist/icons/generated/shard-w.js.map +0 -1
  366. package/dist/icons/generated/shard-x.cjs +0 -2
  367. package/dist/icons/generated/shard-x.cjs.map +0 -1
  368. package/dist/icons/generated/shard-x.js +0 -10
  369. package/dist/icons/generated/shard-x.js.map +0 -1
  370. package/dist/icons/generated/shard-z.cjs +0 -2
  371. package/dist/icons/generated/shard-z.cjs.map +0 -1
  372. package/dist/icons/generated/shard-z.js +0 -25
  373. package/dist/icons/generated/shard-z.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"dev-mode.js","names":[],"sources":["../../src/utils/dev-mode.ts"],"sourcesContent":["/**\n * Whether the consuming app was built for development.\n *\n * Reads `process.env.NODE_ENV`, which every supported bundler (Vite, webpack,\n * Rspack, Parcel) replaces with a literal **while building the app**. That\n * timing is the whole point: `import.meta.env.DEV` looks equivalent and is not,\n * because Vite replaces it while building *this package*, so a published\n * artifact carries the constant `false` and every guard behind it becomes dead\n * code the app's own dev server can no longer switch on.\n *\n * The expression is written out in full, and the failure is caught rather than\n * guarded against. A `typeof process === \"undefined\"` check would read as the\n * careful version and quietly reintroduce the bug: bundlers substitute the\n * member expression `process.env.NODE_ENV` and nothing else, so in a browser —\n * where the identifier `process` does not exist — the guard would return early\n * while the literal right after it had already been replaced with\n * `\"development\"`.\n *\n * Returns `false` when the read throws, which is the environment that defines\n * neither symbol: a raw service-worker context, a plain\n * `<script type=\"module\">`, a bundler substituting nothing. Staying quiet there\n * is deliberate — a dev-only warning that cannot prove it is in development is\n * better silent than shouting in someone's production console.\n *\n * @returns Whether development-only diagnostics should run.\n *\n * @example\n * if (isDevBuild()) console.warn(\"[my-app] this prop combination does nothing\");\n *\n * @tempest-limits empty-catch — the only thing the read can throw is the\n * environment answering \"not defined\", which is the return value, not an error\n * worth reporting. Logging it would print on every call in exactly the context\n * that has nowhere to print.\n */\nexport function isDevBuild(): boolean {\n try {\n return process.env.NODE_ENV !== \"production\";\n } catch {\n return false;\n }\n}\n"],"mappings":";AAkCA,SAAgB,IAAsB;CAClC,IAAI;EACA,OAAA,QAAA,IAAA,aAAgC;CACpC,QAAQ;EACJ,OAAO;CACX;AACJ"}
1
+ {"version":3,"file":"dev-mode.js","names":[],"sources":["../../src/utils/dev-mode.ts"],"sourcesContent":["/**\n * Internal, and imported by path (`../utils/dev-mode`) rather than through the\n * `utils` barrel: re-exporting it would make a one-line env read part of the\n * package's public API, with the semver weight that carries, for something no\n * consumer asked for. The three call sites are `<Icon>`, `useStickyBodyWarning`\n * and the `DataTable` dev warnings.\n */\n\n/**\n * Whether the consuming app was built for development.\n *\n * Reads `process.env.NODE_ENV`, which every supported bundler (Vite, webpack,\n * Rspack, Parcel) replaces with a literal **while building the app**. That\n * timing is the whole point: `import.meta.env.DEV` looks equivalent and is not,\n * because Vite replaces it while building *this package*, so a published\n * artifact carries the constant `false` and every guard behind it becomes dead\n * code the app's own dev server can no longer switch on.\n *\n * The expression is written out in full, and the failure is caught rather than\n * guarded against. A `typeof process === \"undefined\"` check would read as the\n * careful version and quietly reintroduce the bug: bundlers substitute the\n * member expression `process.env.NODE_ENV` and nothing else, so in a browser —\n * where the identifier `process` does not exist — the guard would return early\n * while the literal right after it had already been replaced with\n * `\"development\"`.\n *\n * Returns `false` when the read throws, which is the environment that defines\n * neither symbol: a raw service-worker context, a plain\n * `<script type=\"module\">`, a bundler substituting nothing. Staying quiet there\n * is deliberate — a dev-only warning that cannot prove it is in development is\n * better silent than shouting in someone's production console.\n *\n * @returns Whether development-only diagnostics should run.\n *\n * @example\n * if (isDevBuild()) console.warn(\"[my-app] this prop combination does nothing\");\n *\n * @tempest-limits empty-catch — the only thing the read can throw is the\n * environment answering \"not defined\", which is the return value, not an error\n * worth reporting. Logging it would print on every call in exactly the context\n * that has nowhere to print.\n */\nexport function isDevBuild(): boolean {\n try {\n return process.env.NODE_ENV !== \"production\";\n } catch {\n return false;\n }\n}\n"],"mappings":";AA0CA,SAAgB,IAAsB;CAClC,IAAI;EACA,OAAA,QAAA,IAAA,aAAgC;CACpC,QAAQ;EACJ,OAAO;CACX;AACJ"}
@@ -1,9 +1,9 @@
1
- const e=require("../icons/generated/aliases.cjs"),t=require("../icons/generated/icon-names.cjs");let n=require("node:path"),r=require("node:fs/promises");var i=`virtual:tempest-icons`,a=`\0${i}`,o=[/\bname\s*=\s*["']([a-z0-9-]+)["']/g,/\bname\s*=\s*\{\s*["']([a-z0-9-]+)["']\s*\}/g,/\bname\s*:\s*["']([a-z0-9-]+)["']/g],s=/\.[cm]?[jt]sx?$/,c=new Set([`node_modules`,`dist`,`build`,`coverage`]);function l(e,t){let n=new Set;for(let r of o){r.lastIndex=0;let i;for(;(i=r.exec(e))!==null;)t.has(i[1])&&n.add(i[1])}return[...n]}function u(e,t){let n=[...new Set(e)].sort();if(!n.length)return`export const staticIcons = {};
2
- `;let r=new Map;for(let e of n)r.set(e,d(t[e]??e));return`import { ${[...new Set(r.values())].sort().map(e=>p(e)===e?e:`${e} as ${p(e)}`).join(`, `)} } from "lucide-react";
1
+ const e=require("../icons/generated/aliases.cjs"),t=require("../icons/generated/icon-names.cjs");let n=require("node:path"),r=require("node:fs/promises");var i=`tempest-react-sdk/icons/virtual`,a=`virtual:tempest-icons`,o=`\0${a}`,s=[/\bname\s*=\s*["']([a-z0-9-]+)["']/g,/\bname\s*=\s*\{\s*["']([a-z0-9-]+)["']\s*\}/g,/\bname\s*:\s*["']([a-z0-9-]+)["']/g],c=/\.[cm]?[jt]sx?$/,l=new Set([`node_modules`,`dist`,`build`,`coverage`]);function u(e,t){let n=new Set;for(let r of s){r.lastIndex=0;let i;for(;(i=r.exec(e))!==null;)t.has(i[1])&&n.add(i[1])}return[...n]}function d(e,t){let n=[...new Set(e)].sort();if(!n.length)return`export const staticIcons = {};
2
+ `;let r=new Map;for(let e of n)r.set(e,f(t[e]??e));return`import { ${[...new Set(r.values())].sort().map(e=>m(e)===e?e:`${e} as ${m(e)}`).join(`, `)} } from "lucide-react";
3
3
 
4
4
  export const staticIcons = {
5
- ${n.map(e=>` "${e}": ${p(r.get(e))},`).join(`
5
+ ${n.map(e=>` "${e}": ${m(r.get(e))},`).join(`
6
6
  `)}
7
7
  };
8
- `}function d(e){return e.split(`-`).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(``)}var f=new Set([`Infinity`,`NaN`,`undefined`,`eval`,`arguments`]);function p(e){return f.has(e)?`${e}Icon`:e}async function m(e,t){let i=[],a;try{a=await(0,r.readdir)(e,{withFileTypes:!0})}catch{return i}for(let r of a)if(r.isDirectory()){if(t.has(r.name)||r.name.startsWith(`.`))continue;i.push(...await m((0,n.join)(e,r.name),t))}else r.isFile()&&s.test(r.name)&&i.push((0,n.join)(e,r.name));return i}function h(i={}){let{dir:o=`src`,include:d=[],skipDirs:f}=i,p=new Set(t.iconNames),h=new Set(f??c),g=new Set(d.filter(e=>p.has(e))),_=process.cwd(),v=async()=>{let e=await m((0,n.resolve)(_,o),h);for(let t of e)try{let e=await(0,r.readFile)(t,`utf8`);for(let t of l(e,p))g.add(t)}catch{}};return{name:`tempest-icons`,enforce:`pre`,configResolved(e){_=e.root??_},async buildStart(){await v()},resolveId(e){return e===`virtual:tempest-icons`?a:null},load(t){return t===a?u([...g],e.iconAliases):null},async handleHotUpdate(e){if(!s.test(e.file))return;let t=g.size;for(let t of l(await e.read(),p))g.add(t);if(g.size===t)return;let n=e.server.moduleGraph.getModuleById(a);if(n)return[n]}}}exports.TEMPEST_ICONS_ID=i,exports.buildIconsModule=u,exports.scanIconSlugs=l,exports.tempestIcons=h;
8
+ `}function f(e){return e.split(`-`).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(``)}var p=new Set([`Infinity`,`NaN`,`undefined`,`eval`,`arguments`]);function m(e){return p.has(e)?`${e}Icon`:e}async function h(e,t){let i=[],a;try{a=await(0,r.readdir)(e,{withFileTypes:!0})}catch{return i}for(let r of a)if(r.isDirectory()){if(t.has(r.name)||r.name.startsWith(`.`))continue;i.push(...await h((0,n.join)(e,r.name),t))}else r.isFile()&&c.test(r.name)&&i.push((0,n.join)(e,r.name));return i}function g(i={}){let{dir:a=`src`,include:s=[],skipDirs:f}=i,p=new Set(t.iconNames),m=new Set(f??l),g=new Set(s.filter(e=>p.has(e))),_=process.cwd(),v=async()=>{let e=await h((0,n.resolve)(_,a),m);for(let t of e)try{let e=await(0,r.readFile)(t,`utf8`);for(let t of u(e,p))g.add(t)}catch{}};return{name:`tempest-icons`,enforce:`pre`,configResolved(e){_=e.root??_},async buildStart(){await v()},resolveId(e){return e===`tempest-react-sdk/icons/virtual`||e===`virtual:tempest-icons`?o:null},load(t){return t===o?d([...g],e.iconAliases):null},async handleHotUpdate(e){if(!c.test(e.file))return;let t=g.size;for(let t of u(await e.read(),p))g.add(t);if(g.size===t)return;let n=e.server.moduleGraph.getModuleById(o);if(n)return[n]}}}exports.TEMPEST_ICONS_ID=i,exports.TEMPEST_ICONS_VIRTUAL_ID=a,exports.buildIconsModule=d,exports.scanIconSlugs=u,exports.tempestIcons=g;
9
9
  //# sourceMappingURL=tempest-icons.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"tempest-icons.cjs","names":[],"sources":["../../src/vite/tempest-icons.ts"],"sourcesContent":["import { readdir, readFile } from \"node:fs/promises\";\nimport { join, resolve } from \"node:path\";\n\nimport { iconAliases } from \"@/icons/generated/aliases\";\nimport { iconNames } from \"@/icons/generated/icon-names\";\n\nimport type { TempestVitePlugin } from \"./tempest-pwa-manifest\";\n\n/** The module id an app imports to get its static registry. */\nexport const TEMPEST_ICONS_ID = \"virtual:tempest-icons\";\n\nconst RESOLVED_ID = `\\0${TEMPEST_ICONS_ID}`;\n\n/**\n * Slugs written as a literal `name` prop or a literal `name:` field.\n *\n * Matching the *attribute* rather than any kebab-case string is what keeps the\n * scan from sweeping in unrelated text — a CSS class, a translation key and a\n * route segment all look like slugs otherwise. Everything matched is still\n * validated against lucide's real slug list before it reaches the module.\n */\nconst NAME_PATTERNS = [\n /\\bname\\s*=\\s*[\"']([a-z0-9-]+)[\"']/g,\n /\\bname\\s*=\\s*\\{\\s*[\"']([a-z0-9-]+)[\"']\\s*\\}/g,\n /\\bname\\s*:\\s*[\"']([a-z0-9-]+)[\"']/g,\n];\n\nconst SOURCE_FILE = /\\.[cm]?[jt]sx?$/;\nconst SKIP_DIRS = new Set([\"node_modules\", \"dist\", \"build\", \"coverage\"]);\n\nexport interface TempestIconsOptions {\n /**\n * Directory to scan, relative to the Vite root. Default: `\"src\"`.\n */\n dir?: string;\n /**\n * Extra slugs to include even when the scan cannot see them — a name built by\n * concatenation, or one that only ever arrives from the API but is worth\n * paying for statically because it is on the first screen.\n */\n include?: readonly string[];\n /** Directory names to skip. Default: `node_modules`, `dist`, `build`, `coverage`. */\n skipDirs?: readonly string[];\n}\n\n/**\n * Collect the icon slugs a source file references literally.\n *\n * @param code - File contents.\n * @param known - The set of real lucide slugs, aliases included.\n * @returns The slugs found, validated against `known`.\n */\nexport function scanIconSlugs(code: string, known: ReadonlySet<string>): string[] {\n const found = new Set<string>();\n for (const pattern of NAME_PATTERNS) {\n pattern.lastIndex = 0;\n let match: RegExpExecArray | null;\n while ((match = pattern.exec(code)) !== null) {\n if (known.has(match[1])) found.add(match[1]);\n }\n }\n return [...found];\n}\n\n/**\n * Build the virtual module source for a set of slugs.\n *\n * Aliases resolve to their canonical slug before importing, because only the\n * canonical name is a real lucide export — but the alias key still points at the\n * component, so `<Icon name=\"alert-circle\" />` stays a zero-request lookup.\n *\n * @param slugs - Validated slugs to include.\n * @param aliases - Alias slug → canonical slug.\n * @returns ES module source.\n */\nexport function buildIconsModule(\n slugs: readonly string[],\n aliases: Record<string, string>,\n): string {\n const sorted = [...new Set(slugs)].sort();\n if (!sorted.length) return \"export const staticIcons = {};\\n\";\n\n const componentOf = new Map<string, string>();\n for (const slug of sorted) componentOf.set(slug, pascalCase(aliases[slug] ?? slug));\n\n const named = [...new Set(componentOf.values())]\n .sort()\n .map((name) => (localName(name) === name ? name : `${name} as ${localName(name)}`))\n .join(\", \");\n const entries = sorted\n .map((slug) => ` \"${slug}\": ${localName(componentOf.get(slug) as string)},`)\n .join(\"\\n\");\n return `import { ${named} } from \"lucide-react\";\n\nexport const staticIcons = {\n${entries}\n};\n`;\n}\n\n/** `circle-alert` → `CircleAlert`; `a-arrow-down` → `AArrowDown`. */\nfunction pascalCase(slug: string): string {\n return slug\n .split(\"-\")\n .map((part) => part.charAt(0).toUpperCase() + part.slice(1))\n .join(\"\");\n}\n\n/**\n * Export names that would shadow a restricted global if bound directly.\n *\n * Lucide ships an icon literally called `infinity`, whose export is `Infinity`.\n * Binding that at module scope shadows the global, so the import is aliased.\n */\nconst RESERVED_NAMES = new Set([\"Infinity\", \"NaN\", \"undefined\", \"eval\", \"arguments\"]);\n\n/** The local binding to use for a lucide export name. */\nfunction localName(name: string): string {\n return RESERVED_NAMES.has(name) ? `${name}Icon` : name;\n}\n\n/**\n * Walk a directory and collect every source file path.\n *\n * @param dir - Absolute directory to walk.\n * @param skip - Directory names to skip.\n * @returns Absolute file paths.\n */\nasync function collectSourceFiles(dir: string, skip: ReadonlySet<string>): Promise<string[]> {\n const out: string[] = [];\n let entries;\n try {\n entries = await readdir(dir, { withFileTypes: true });\n } catch {\n return out;\n }\n for (const entry of entries) {\n if (entry.isDirectory()) {\n if (skip.has(entry.name) || entry.name.startsWith(\".\")) continue;\n out.push(...(await collectSourceFiles(join(dir, entry.name), skip)));\n } else if (entry.isFile() && SOURCE_FILE.test(entry.name)) {\n out.push(join(dir, entry.name));\n }\n }\n return out;\n}\n\n/**\n * Generate a static icon registry from the slugs your source mentions.\n *\n * Removes the reason to reach for `lucide-react`'s `DynamicIcon`: the slugs an app\n * writes as literals become ordinary static imports, so the bundler keeps exactly\n * those icons and the browser makes **no** extra request for them. A slug that only\n * exists at runtime still works — `<Icon>` falls back to fetching one shard per\n * initial letter.\n *\n * The scan reads the source tree directly at `buildStart` rather than harvesting\n * modules as they pass through `transform`: relying on transform order would let\n * the virtual module load before every consumer had been seen, and the registry\n * would come out short on a cold dev start — silently, since the missing slugs\n * would still render via the lazy path.\n *\n * @example\n * // vite.config.ts\n * import { createViteConfig, tempestIcons } from \"tempest-react-sdk/vite\";\n *\n * export default createViteConfig({ plugins: [tempestIcons()] });\n *\n * @example\n * // src/main.tsx\n * import { IconProvider } from \"tempest-react-sdk/icons\";\n * import { staticIcons } from \"virtual:tempest-icons\";\n *\n * <IconProvider registry={staticIcons}>\n * <App />\n * </IconProvider>\n */\nexport function tempestIcons(options: TempestIconsOptions = {}): TempestVitePlugin {\n const { dir = \"src\", include = [], skipDirs } = options;\n const known = new Set<string>(iconNames);\n const skip = new Set<string>(skipDirs ?? SKIP_DIRS);\n const slugs = new Set<string>(include.filter((slug) => known.has(slug)));\n let root = process.cwd();\n\n /**\n * Rescan the source tree, keeping the explicitly included slugs.\n *\n * @tempest-limits empty-catch — the scan races the editor and the file system:\n * a file listed a moment ago can be renamed, deleted, or held by another process\n * by the time it is read. An unreadable file contributes no slugs and the build\n * continues; failing the whole scan would break `vite dev` over a temp file that\n * no longer exists.\n */\n const rescan = async (): Promise<void> => {\n const files = await collectSourceFiles(resolve(root, dir), skip);\n for (const file of files) {\n try {\n const code = await readFile(file, \"utf8\");\n for (const slug of scanIconSlugs(code, known)) slugs.add(slug);\n } catch {\n /* empty */\n }\n }\n };\n\n return {\n name: \"tempest-icons\",\n enforce: \"pre\",\n\n configResolved(config: { root?: string }) {\n root = config.root ?? root;\n },\n\n async buildStart() {\n await rescan();\n },\n\n resolveId(id: string) {\n return id === TEMPEST_ICONS_ID ? RESOLVED_ID : null;\n },\n\n load(id: string) {\n return id === RESOLVED_ID ? buildIconsModule([...slugs], iconAliases) : null;\n },\n\n /**\n * Pick up a slug added while the dev server is running.\n *\n * A newly written `<Icon name=\"save\" />` would otherwise only render via\n * the lazy path until the next restart. Rescanning the changed file and\n * invalidating the virtual module keeps dev and build agreeing on what the\n * static registry contains.\n */\n async handleHotUpdate(ctx: {\n file: string;\n read: () => Promise<string>;\n server: { moduleGraph: { getModuleById: (id: string) => unknown } };\n }) {\n if (!SOURCE_FILE.test(ctx.file)) return;\n const before = slugs.size;\n for (const slug of scanIconSlugs(await ctx.read(), known)) slugs.add(slug);\n if (slugs.size === before) return;\n const mod = ctx.server.moduleGraph.getModuleById(RESOLVED_ID);\n if (mod) return [mod];\n },\n } as TempestVitePlugin;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"tempest-icons.cjs","names":[],"sources":["../../src/vite/tempest-icons.ts"],"sourcesContent":["import { readdir, readFile } from \"node:fs/promises\";\nimport { join, resolve } from \"node:path\";\n\nimport { iconAliases } from \"@/icons/generated/aliases\";\nimport { iconNames } from \"@/icons/generated/icon-names\";\n\nimport type { TempestVitePlugin } from \"./tempest-pwa-manifest\";\n\n/** The module id an app imports to get its static registry. */\nexport const TEMPEST_ICONS_ID = \"tempest-react-sdk/icons/virtual\";\n\n/**\n * The original virtual id, still honoured.\n *\n * Published as the documented import before the subpath existed, so apps have it\n * written in their entrypoints. It resolves to the same generated module — but it\n * only ever resolves *with the plugin*, which is the reason the subpath above\n * replaced it: that one also resolves without it, to an empty stub.\n */\nexport const TEMPEST_ICONS_VIRTUAL_ID = \"virtual:tempest-icons\";\n\nconst RESOLVED_ID = `\\0${TEMPEST_ICONS_VIRTUAL_ID}`;\n\n/**\n * Slugs written as a literal `name` prop or a literal `name:` field.\n *\n * Matching the *attribute* rather than any kebab-case string is what keeps the\n * scan from sweeping in unrelated text — a CSS class, a translation key and a\n * route segment all look like slugs otherwise. Everything matched is still\n * validated against lucide's real slug list before it reaches the module.\n */\nconst NAME_PATTERNS = [\n /\\bname\\s*=\\s*[\"']([a-z0-9-]+)[\"']/g,\n /\\bname\\s*=\\s*\\{\\s*[\"']([a-z0-9-]+)[\"']\\s*\\}/g,\n /\\bname\\s*:\\s*[\"']([a-z0-9-]+)[\"']/g,\n];\n\nconst SOURCE_FILE = /\\.[cm]?[jt]sx?$/;\nconst SKIP_DIRS = new Set([\"node_modules\", \"dist\", \"build\", \"coverage\"]);\n\nexport interface TempestIconsOptions {\n /**\n * Directory to scan, relative to the Vite root. Default: `\"src\"`.\n */\n dir?: string;\n /**\n * Extra slugs to include even when the scan cannot see them — a name built by\n * concatenation, or one that only ever arrives from the API but is worth\n * paying for statically because it is on the first screen.\n */\n include?: readonly string[];\n /** Directory names to skip. Default: `node_modules`, `dist`, `build`, `coverage`. */\n skipDirs?: readonly string[];\n}\n\n/**\n * Collect the icon slugs a source file references literally.\n *\n * @param code - File contents.\n * @param known - The set of real lucide slugs, aliases included.\n * @returns The slugs found, validated against `known`.\n */\nexport function scanIconSlugs(code: string, known: ReadonlySet<string>): string[] {\n const found = new Set<string>();\n for (const pattern of NAME_PATTERNS) {\n pattern.lastIndex = 0;\n let match: RegExpExecArray | null;\n while ((match = pattern.exec(code)) !== null) {\n if (known.has(match[1])) found.add(match[1]);\n }\n }\n return [...found];\n}\n\n/**\n * Build the virtual module source for a set of slugs.\n *\n * Aliases resolve to their canonical slug before importing, because only the\n * canonical name is a real lucide export — but the alias key still points at the\n * component, so `<Icon name=\"alert-circle\" />` stays a zero-request lookup.\n *\n * @param slugs - Validated slugs to include.\n * @param aliases - Alias slug → canonical slug.\n * @returns ES module source.\n */\nexport function buildIconsModule(\n slugs: readonly string[],\n aliases: Record<string, string>,\n): string {\n const sorted = [...new Set(slugs)].sort();\n if (!sorted.length) return \"export const staticIcons = {};\\n\";\n\n const componentOf = new Map<string, string>();\n for (const slug of sorted) componentOf.set(slug, pascalCase(aliases[slug] ?? slug));\n\n const named = [...new Set(componentOf.values())]\n .sort()\n .map((name) => (localName(name) === name ? name : `${name} as ${localName(name)}`))\n .join(\", \");\n const entries = sorted\n .map((slug) => ` \"${slug}\": ${localName(componentOf.get(slug) as string)},`)\n .join(\"\\n\");\n return `import { ${named} } from \"lucide-react\";\n\nexport const staticIcons = {\n${entries}\n};\n`;\n}\n\n/** `circle-alert` → `CircleAlert`; `a-arrow-down` → `AArrowDown`. */\nfunction pascalCase(slug: string): string {\n return slug\n .split(\"-\")\n .map((part) => part.charAt(0).toUpperCase() + part.slice(1))\n .join(\"\");\n}\n\n/**\n * Export names that would shadow a restricted global if bound directly.\n *\n * Lucide ships an icon literally called `infinity`, whose export is `Infinity`.\n * Binding that at module scope shadows the global, so the import is aliased.\n */\nconst RESERVED_NAMES = new Set([\"Infinity\", \"NaN\", \"undefined\", \"eval\", \"arguments\"]);\n\n/** The local binding to use for a lucide export name. */\nfunction localName(name: string): string {\n return RESERVED_NAMES.has(name) ? `${name}Icon` : name;\n}\n\n/**\n * Walk a directory and collect every source file path.\n *\n * @param dir - Absolute directory to walk.\n * @param skip - Directory names to skip.\n * @returns Absolute file paths.\n */\nasync function collectSourceFiles(dir: string, skip: ReadonlySet<string>): Promise<string[]> {\n const out: string[] = [];\n let entries;\n try {\n entries = await readdir(dir, { withFileTypes: true });\n } catch {\n return out;\n }\n for (const entry of entries) {\n if (entry.isDirectory()) {\n if (skip.has(entry.name) || entry.name.startsWith(\".\")) continue;\n out.push(...(await collectSourceFiles(join(dir, entry.name), skip)));\n } else if (entry.isFile() && SOURCE_FILE.test(entry.name)) {\n out.push(join(dir, entry.name));\n }\n }\n return out;\n}\n\n/**\n * Generate a static icon registry from the slugs your source mentions.\n *\n * Removes the reason to reach for `lucide-react`'s `DynamicIcon`: the slugs an app\n * writes as literals become ordinary static imports, so the bundler keeps exactly\n * those icons and the browser makes **no** extra request for them. A slug that only\n * exists at runtime still works — `<Icon>` falls back to fetching one shard per\n * initial letter.\n *\n * The scan reads the source tree directly at `buildStart` rather than harvesting\n * modules as they pass through `transform`: relying on transform order would let\n * the virtual module load before every consumer had been seen, and the registry\n * would come out short on a cold dev start — silently, since the missing slugs\n * would still render via the lazy path.\n *\n * @example\n * // vite.config.ts\n * import { createViteConfig, tempestIcons } from \"tempest-react-sdk/vite\";\n *\n * export default createViteConfig({ plugins: [tempestIcons()] });\n *\n * @example\n * // src/main.tsx\n * import { IconProvider } from \"tempest-react-sdk/icons\";\n * import { staticIcons } from \"tempest-react-sdk/icons/virtual\";\n *\n * <IconProvider registry={staticIcons}>\n * <App />\n * </IconProvider>\n */\nexport function tempestIcons(options: TempestIconsOptions = {}): TempestVitePlugin {\n const { dir = \"src\", include = [], skipDirs } = options;\n const known = new Set<string>(iconNames);\n const skip = new Set<string>(skipDirs ?? SKIP_DIRS);\n const slugs = new Set<string>(include.filter((slug) => known.has(slug)));\n let root = process.cwd();\n\n /**\n * Rescan the source tree, keeping the explicitly included slugs.\n *\n * @tempest-limits empty-catch — the scan races the editor and the file system:\n * a file listed a moment ago can be renamed, deleted, or held by another process\n * by the time it is read. An unreadable file contributes no slugs and the build\n * continues; failing the whole scan would break `vite dev` over a temp file that\n * no longer exists.\n */\n const rescan = async (): Promise<void> => {\n const files = await collectSourceFiles(resolve(root, dir), skip);\n for (const file of files) {\n try {\n const code = await readFile(file, \"utf8\");\n for (const slug of scanIconSlugs(code, known)) slugs.add(slug);\n } catch {\n /* empty */\n }\n }\n };\n\n return {\n name: \"tempest-icons\",\n enforce: \"pre\",\n\n configResolved(config: { root?: string }) {\n root = config.root ?? root;\n },\n\n async buildStart() {\n await rescan();\n },\n\n /**\n * Claim both spellings of the registry module.\n *\n * The subpath is a real file in the installed package, so returning the\n * virtual id here is what overrides the empty stub with the generated\n * table. Letting Vite resolve it normally would silently ship the stub.\n */\n resolveId(id: string) {\n return id === TEMPEST_ICONS_ID || id === TEMPEST_ICONS_VIRTUAL_ID ? RESOLVED_ID : null;\n },\n\n load(id: string) {\n return id === RESOLVED_ID ? buildIconsModule([...slugs], iconAliases) : null;\n },\n\n /**\n * Pick up a slug added while the dev server is running.\n *\n * A newly written `<Icon name=\"save\" />` would otherwise only render via\n * the lazy path until the next restart. Rescanning the changed file and\n * invalidating the virtual module keeps dev and build agreeing on what the\n * static registry contains.\n */\n async handleHotUpdate(ctx: {\n file: string;\n read: () => Promise<string>;\n server: { moduleGraph: { getModuleById: (id: string) => unknown } };\n }) {\n if (!SOURCE_FILE.test(ctx.file)) return;\n const before = slugs.size;\n for (const slug of scanIconSlugs(await ctx.read(), known)) slugs.add(slug);\n if (slugs.size === before) return;\n const mod = ctx.server.moduleGraph.getModuleById(RESOLVED_ID);\n if (mod) return [mod];\n },\n } as TempestVitePlugin;\n}\n"],"mappings":"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"}
@@ -3,51 +3,51 @@ import { iconNames as t } from "../icons/generated/icon-names.js";
3
3
  import { join as n, resolve as r } from "node:path";
4
4
  import { readFile as i, readdir as a } from "node:fs/promises";
5
5
  //#region src/vite/tempest-icons.ts
6
- var o = "virtual:tempest-icons", s = `\0${o}`, c = [
6
+ var o = "tempest-react-sdk/icons/virtual", s = "virtual:tempest-icons", c = `\0${s}`, l = [
7
7
  /\bname\s*=\s*["']([a-z0-9-]+)["']/g,
8
8
  /\bname\s*=\s*\{\s*["']([a-z0-9-]+)["']\s*\}/g,
9
9
  /\bname\s*:\s*["']([a-z0-9-]+)["']/g
10
- ], l = /\.[cm]?[jt]sx?$/, u = /* @__PURE__ */ new Set([
10
+ ], u = /\.[cm]?[jt]sx?$/, d = /* @__PURE__ */ new Set([
11
11
  "node_modules",
12
12
  "dist",
13
13
  "build",
14
14
  "coverage"
15
15
  ]);
16
- function d(e, t) {
16
+ function f(e, t) {
17
17
  let n = /* @__PURE__ */ new Set();
18
- for (let r of c) {
18
+ for (let r of l) {
19
19
  r.lastIndex = 0;
20
20
  let i;
21
21
  for (; (i = r.exec(e)) !== null;) t.has(i[1]) && n.add(i[1]);
22
22
  }
23
23
  return [...n];
24
24
  }
25
- function f(e, t) {
25
+ function p(e, t) {
26
26
  let n = [...new Set(e)].sort();
27
27
  if (!n.length) return "export const staticIcons = {};\n";
28
28
  let r = /* @__PURE__ */ new Map();
29
- for (let e of n) r.set(e, p(t[e] ?? e));
30
- return `import { ${[...new Set(r.values())].sort().map((e) => h(e) === e ? e : `${e} as ${h(e)}`).join(", ")} } from "lucide-react";
29
+ for (let e of n) r.set(e, m(t[e] ?? e));
30
+ return `import { ${[...new Set(r.values())].sort().map((e) => g(e) === e ? e : `${e} as ${g(e)}`).join(", ")} } from "lucide-react";
31
31
 
32
32
  export const staticIcons = {
33
- ${n.map((e) => ` "${e}": ${h(r.get(e))},`).join("\n")}
33
+ ${n.map((e) => ` "${e}": ${g(r.get(e))},`).join("\n")}
34
34
  };
35
35
  `;
36
36
  }
37
- function p(e) {
37
+ function m(e) {
38
38
  return e.split("-").map((e) => e.charAt(0).toUpperCase() + e.slice(1)).join("");
39
39
  }
40
- var m = /* @__PURE__ */ new Set([
40
+ var h = /* @__PURE__ */ new Set([
41
41
  "Infinity",
42
42
  "NaN",
43
43
  "undefined",
44
44
  "eval",
45
45
  "arguments"
46
46
  ]);
47
- function h(e) {
48
- return m.has(e) ? `${e}Icon` : e;
47
+ function g(e) {
48
+ return h.has(e) ? `${e}Icon` : e;
49
49
  }
50
- async function g(e, t) {
50
+ async function _(e, t) {
51
51
  let r = [], i;
52
52
  try {
53
53
  i = await a(e, { withFileTypes: !0 });
@@ -56,44 +56,44 @@ async function g(e, t) {
56
56
  }
57
57
  for (let a of i) if (a.isDirectory()) {
58
58
  if (t.has(a.name) || a.name.startsWith(".")) continue;
59
- r.push(...await g(n(e, a.name), t));
60
- } else a.isFile() && l.test(a.name) && r.push(n(e, a.name));
59
+ r.push(...await _(n(e, a.name), t));
60
+ } else a.isFile() && u.test(a.name) && r.push(n(e, a.name));
61
61
  return r;
62
62
  }
63
- function _(n = {}) {
64
- let { dir: a = "src", include: o = [], skipDirs: c } = n, p = new Set(t), m = new Set(c ?? u), h = new Set(o.filter((e) => p.has(e))), _ = process.cwd(), v = async () => {
65
- let e = await g(r(_, a), m);
63
+ function v(n = {}) {
64
+ let { dir: a = "src", include: o = [], skipDirs: s } = n, l = new Set(t), m = new Set(s ?? d), h = new Set(o.filter((e) => l.has(e))), g = process.cwd(), v = async () => {
65
+ let e = await _(r(g, a), m);
66
66
  for (let t of e) try {
67
67
  let e = await i(t, "utf8");
68
- for (let t of d(e, p)) h.add(t);
68
+ for (let t of f(e, l)) h.add(t);
69
69
  } catch {}
70
70
  };
71
71
  return {
72
72
  name: "tempest-icons",
73
73
  enforce: "pre",
74
74
  configResolved(e) {
75
- _ = e.root ?? _;
75
+ g = e.root ?? g;
76
76
  },
77
77
  async buildStart() {
78
78
  await v();
79
79
  },
80
80
  resolveId(e) {
81
- return e === "virtual:tempest-icons" ? s : null;
81
+ return e === "tempest-react-sdk/icons/virtual" || e === "virtual:tempest-icons" ? c : null;
82
82
  },
83
83
  load(t) {
84
- return t === s ? f([...h], e) : null;
84
+ return t === c ? p([...h], e) : null;
85
85
  },
86
86
  async handleHotUpdate(e) {
87
- if (!l.test(e.file)) return;
87
+ if (!u.test(e.file)) return;
88
88
  let t = h.size;
89
- for (let t of d(await e.read(), p)) h.add(t);
89
+ for (let t of f(await e.read(), l)) h.add(t);
90
90
  if (h.size === t) return;
91
- let n = e.server.moduleGraph.getModuleById(s);
91
+ let n = e.server.moduleGraph.getModuleById(c);
92
92
  if (n) return [n];
93
93
  }
94
94
  };
95
95
  }
96
96
  //#endregion
97
- export { o as TEMPEST_ICONS_ID, f as buildIconsModule, d as scanIconSlugs, _ as tempestIcons };
97
+ export { o as TEMPEST_ICONS_ID, s as TEMPEST_ICONS_VIRTUAL_ID, p as buildIconsModule, f as scanIconSlugs, v as tempestIcons };
98
98
 
99
99
  //# sourceMappingURL=tempest-icons.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tempest-icons.js","names":[],"sources":["../../src/vite/tempest-icons.ts"],"sourcesContent":["import { readdir, readFile } from \"node:fs/promises\";\nimport { join, resolve } from \"node:path\";\n\nimport { iconAliases } from \"@/icons/generated/aliases\";\nimport { iconNames } from \"@/icons/generated/icon-names\";\n\nimport type { TempestVitePlugin } from \"./tempest-pwa-manifest\";\n\n/** The module id an app imports to get its static registry. */\nexport const TEMPEST_ICONS_ID = \"virtual:tempest-icons\";\n\nconst RESOLVED_ID = `\\0${TEMPEST_ICONS_ID}`;\n\n/**\n * Slugs written as a literal `name` prop or a literal `name:` field.\n *\n * Matching the *attribute* rather than any kebab-case string is what keeps the\n * scan from sweeping in unrelated text — a CSS class, a translation key and a\n * route segment all look like slugs otherwise. Everything matched is still\n * validated against lucide's real slug list before it reaches the module.\n */\nconst NAME_PATTERNS = [\n /\\bname\\s*=\\s*[\"']([a-z0-9-]+)[\"']/g,\n /\\bname\\s*=\\s*\\{\\s*[\"']([a-z0-9-]+)[\"']\\s*\\}/g,\n /\\bname\\s*:\\s*[\"']([a-z0-9-]+)[\"']/g,\n];\n\nconst SOURCE_FILE = /\\.[cm]?[jt]sx?$/;\nconst SKIP_DIRS = new Set([\"node_modules\", \"dist\", \"build\", \"coverage\"]);\n\nexport interface TempestIconsOptions {\n /**\n * Directory to scan, relative to the Vite root. Default: `\"src\"`.\n */\n dir?: string;\n /**\n * Extra slugs to include even when the scan cannot see them — a name built by\n * concatenation, or one that only ever arrives from the API but is worth\n * paying for statically because it is on the first screen.\n */\n include?: readonly string[];\n /** Directory names to skip. Default: `node_modules`, `dist`, `build`, `coverage`. */\n skipDirs?: readonly string[];\n}\n\n/**\n * Collect the icon slugs a source file references literally.\n *\n * @param code - File contents.\n * @param known - The set of real lucide slugs, aliases included.\n * @returns The slugs found, validated against `known`.\n */\nexport function scanIconSlugs(code: string, known: ReadonlySet<string>): string[] {\n const found = new Set<string>();\n for (const pattern of NAME_PATTERNS) {\n pattern.lastIndex = 0;\n let match: RegExpExecArray | null;\n while ((match = pattern.exec(code)) !== null) {\n if (known.has(match[1])) found.add(match[1]);\n }\n }\n return [...found];\n}\n\n/**\n * Build the virtual module source for a set of slugs.\n *\n * Aliases resolve to their canonical slug before importing, because only the\n * canonical name is a real lucide export — but the alias key still points at the\n * component, so `<Icon name=\"alert-circle\" />` stays a zero-request lookup.\n *\n * @param slugs - Validated slugs to include.\n * @param aliases - Alias slug → canonical slug.\n * @returns ES module source.\n */\nexport function buildIconsModule(\n slugs: readonly string[],\n aliases: Record<string, string>,\n): string {\n const sorted = [...new Set(slugs)].sort();\n if (!sorted.length) return \"export const staticIcons = {};\\n\";\n\n const componentOf = new Map<string, string>();\n for (const slug of sorted) componentOf.set(slug, pascalCase(aliases[slug] ?? slug));\n\n const named = [...new Set(componentOf.values())]\n .sort()\n .map((name) => (localName(name) === name ? name : `${name} as ${localName(name)}`))\n .join(\", \");\n const entries = sorted\n .map((slug) => ` \"${slug}\": ${localName(componentOf.get(slug) as string)},`)\n .join(\"\\n\");\n return `import { ${named} } from \"lucide-react\";\n\nexport const staticIcons = {\n${entries}\n};\n`;\n}\n\n/** `circle-alert` → `CircleAlert`; `a-arrow-down` → `AArrowDown`. */\nfunction pascalCase(slug: string): string {\n return slug\n .split(\"-\")\n .map((part) => part.charAt(0).toUpperCase() + part.slice(1))\n .join(\"\");\n}\n\n/**\n * Export names that would shadow a restricted global if bound directly.\n *\n * Lucide ships an icon literally called `infinity`, whose export is `Infinity`.\n * Binding that at module scope shadows the global, so the import is aliased.\n */\nconst RESERVED_NAMES = new Set([\"Infinity\", \"NaN\", \"undefined\", \"eval\", \"arguments\"]);\n\n/** The local binding to use for a lucide export name. */\nfunction localName(name: string): string {\n return RESERVED_NAMES.has(name) ? `${name}Icon` : name;\n}\n\n/**\n * Walk a directory and collect every source file path.\n *\n * @param dir - Absolute directory to walk.\n * @param skip - Directory names to skip.\n * @returns Absolute file paths.\n */\nasync function collectSourceFiles(dir: string, skip: ReadonlySet<string>): Promise<string[]> {\n const out: string[] = [];\n let entries;\n try {\n entries = await readdir(dir, { withFileTypes: true });\n } catch {\n return out;\n }\n for (const entry of entries) {\n if (entry.isDirectory()) {\n if (skip.has(entry.name) || entry.name.startsWith(\".\")) continue;\n out.push(...(await collectSourceFiles(join(dir, entry.name), skip)));\n } else if (entry.isFile() && SOURCE_FILE.test(entry.name)) {\n out.push(join(dir, entry.name));\n }\n }\n return out;\n}\n\n/**\n * Generate a static icon registry from the slugs your source mentions.\n *\n * Removes the reason to reach for `lucide-react`'s `DynamicIcon`: the slugs an app\n * writes as literals become ordinary static imports, so the bundler keeps exactly\n * those icons and the browser makes **no** extra request for them. A slug that only\n * exists at runtime still works — `<Icon>` falls back to fetching one shard per\n * initial letter.\n *\n * The scan reads the source tree directly at `buildStart` rather than harvesting\n * modules as they pass through `transform`: relying on transform order would let\n * the virtual module load before every consumer had been seen, and the registry\n * would come out short on a cold dev start — silently, since the missing slugs\n * would still render via the lazy path.\n *\n * @example\n * // vite.config.ts\n * import { createViteConfig, tempestIcons } from \"tempest-react-sdk/vite\";\n *\n * export default createViteConfig({ plugins: [tempestIcons()] });\n *\n * @example\n * // src/main.tsx\n * import { IconProvider } from \"tempest-react-sdk/icons\";\n * import { staticIcons } from \"virtual:tempest-icons\";\n *\n * <IconProvider registry={staticIcons}>\n * <App />\n * </IconProvider>\n */\nexport function tempestIcons(options: TempestIconsOptions = {}): TempestVitePlugin {\n const { dir = \"src\", include = [], skipDirs } = options;\n const known = new Set<string>(iconNames);\n const skip = new Set<string>(skipDirs ?? SKIP_DIRS);\n const slugs = new Set<string>(include.filter((slug) => known.has(slug)));\n let root = process.cwd();\n\n /**\n * Rescan the source tree, keeping the explicitly included slugs.\n *\n * @tempest-limits empty-catch — the scan races the editor and the file system:\n * a file listed a moment ago can be renamed, deleted, or held by another process\n * by the time it is read. An unreadable file contributes no slugs and the build\n * continues; failing the whole scan would break `vite dev` over a temp file that\n * no longer exists.\n */\n const rescan = async (): Promise<void> => {\n const files = await collectSourceFiles(resolve(root, dir), skip);\n for (const file of files) {\n try {\n const code = await readFile(file, \"utf8\");\n for (const slug of scanIconSlugs(code, known)) slugs.add(slug);\n } catch {\n /* empty */\n }\n }\n };\n\n return {\n name: \"tempest-icons\",\n enforce: \"pre\",\n\n configResolved(config: { root?: string }) {\n root = config.root ?? root;\n },\n\n async buildStart() {\n await rescan();\n },\n\n resolveId(id: string) {\n return id === TEMPEST_ICONS_ID ? RESOLVED_ID : null;\n },\n\n load(id: string) {\n return id === RESOLVED_ID ? buildIconsModule([...slugs], iconAliases) : null;\n },\n\n /**\n * Pick up a slug added while the dev server is running.\n *\n * A newly written `<Icon name=\"save\" />` would otherwise only render via\n * the lazy path until the next restart. Rescanning the changed file and\n * invalidating the virtual module keeps dev and build agreeing on what the\n * static registry contains.\n */\n async handleHotUpdate(ctx: {\n file: string;\n read: () => Promise<string>;\n server: { moduleGraph: { getModuleById: (id: string) => unknown } };\n }) {\n if (!SOURCE_FILE.test(ctx.file)) return;\n const before = slugs.size;\n for (const slug of scanIconSlugs(await ctx.read(), known)) slugs.add(slug);\n if (slugs.size === before) return;\n const mod = ctx.server.moduleGraph.getModuleById(RESOLVED_ID);\n if (mod) return [mod];\n },\n } as TempestVitePlugin;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"tempest-icons.js","names":[],"sources":["../../src/vite/tempest-icons.ts"],"sourcesContent":["import { readdir, readFile } from \"node:fs/promises\";\nimport { join, resolve } from \"node:path\";\n\nimport { iconAliases } from \"@/icons/generated/aliases\";\nimport { iconNames } from \"@/icons/generated/icon-names\";\n\nimport type { TempestVitePlugin } from \"./tempest-pwa-manifest\";\n\n/** The module id an app imports to get its static registry. */\nexport const TEMPEST_ICONS_ID = \"tempest-react-sdk/icons/virtual\";\n\n/**\n * The original virtual id, still honoured.\n *\n * Published as the documented import before the subpath existed, so apps have it\n * written in their entrypoints. It resolves to the same generated module — but it\n * only ever resolves *with the plugin*, which is the reason the subpath above\n * replaced it: that one also resolves without it, to an empty stub.\n */\nexport const TEMPEST_ICONS_VIRTUAL_ID = \"virtual:tempest-icons\";\n\nconst RESOLVED_ID = `\\0${TEMPEST_ICONS_VIRTUAL_ID}`;\n\n/**\n * Slugs written as a literal `name` prop or a literal `name:` field.\n *\n * Matching the *attribute* rather than any kebab-case string is what keeps the\n * scan from sweeping in unrelated text — a CSS class, a translation key and a\n * route segment all look like slugs otherwise. Everything matched is still\n * validated against lucide's real slug list before it reaches the module.\n */\nconst NAME_PATTERNS = [\n /\\bname\\s*=\\s*[\"']([a-z0-9-]+)[\"']/g,\n /\\bname\\s*=\\s*\\{\\s*[\"']([a-z0-9-]+)[\"']\\s*\\}/g,\n /\\bname\\s*:\\s*[\"']([a-z0-9-]+)[\"']/g,\n];\n\nconst SOURCE_FILE = /\\.[cm]?[jt]sx?$/;\nconst SKIP_DIRS = new Set([\"node_modules\", \"dist\", \"build\", \"coverage\"]);\n\nexport interface TempestIconsOptions {\n /**\n * Directory to scan, relative to the Vite root. Default: `\"src\"`.\n */\n dir?: string;\n /**\n * Extra slugs to include even when the scan cannot see them — a name built by\n * concatenation, or one that only ever arrives from the API but is worth\n * paying for statically because it is on the first screen.\n */\n include?: readonly string[];\n /** Directory names to skip. Default: `node_modules`, `dist`, `build`, `coverage`. */\n skipDirs?: readonly string[];\n}\n\n/**\n * Collect the icon slugs a source file references literally.\n *\n * @param code - File contents.\n * @param known - The set of real lucide slugs, aliases included.\n * @returns The slugs found, validated against `known`.\n */\nexport function scanIconSlugs(code: string, known: ReadonlySet<string>): string[] {\n const found = new Set<string>();\n for (const pattern of NAME_PATTERNS) {\n pattern.lastIndex = 0;\n let match: RegExpExecArray | null;\n while ((match = pattern.exec(code)) !== null) {\n if (known.has(match[1])) found.add(match[1]);\n }\n }\n return [...found];\n}\n\n/**\n * Build the virtual module source for a set of slugs.\n *\n * Aliases resolve to their canonical slug before importing, because only the\n * canonical name is a real lucide export — but the alias key still points at the\n * component, so `<Icon name=\"alert-circle\" />` stays a zero-request lookup.\n *\n * @param slugs - Validated slugs to include.\n * @param aliases - Alias slug → canonical slug.\n * @returns ES module source.\n */\nexport function buildIconsModule(\n slugs: readonly string[],\n aliases: Record<string, string>,\n): string {\n const sorted = [...new Set(slugs)].sort();\n if (!sorted.length) return \"export const staticIcons = {};\\n\";\n\n const componentOf = new Map<string, string>();\n for (const slug of sorted) componentOf.set(slug, pascalCase(aliases[slug] ?? slug));\n\n const named = [...new Set(componentOf.values())]\n .sort()\n .map((name) => (localName(name) === name ? name : `${name} as ${localName(name)}`))\n .join(\", \");\n const entries = sorted\n .map((slug) => ` \"${slug}\": ${localName(componentOf.get(slug) as string)},`)\n .join(\"\\n\");\n return `import { ${named} } from \"lucide-react\";\n\nexport const staticIcons = {\n${entries}\n};\n`;\n}\n\n/** `circle-alert` → `CircleAlert`; `a-arrow-down` → `AArrowDown`. */\nfunction pascalCase(slug: string): string {\n return slug\n .split(\"-\")\n .map((part) => part.charAt(0).toUpperCase() + part.slice(1))\n .join(\"\");\n}\n\n/**\n * Export names that would shadow a restricted global if bound directly.\n *\n * Lucide ships an icon literally called `infinity`, whose export is `Infinity`.\n * Binding that at module scope shadows the global, so the import is aliased.\n */\nconst RESERVED_NAMES = new Set([\"Infinity\", \"NaN\", \"undefined\", \"eval\", \"arguments\"]);\n\n/** The local binding to use for a lucide export name. */\nfunction localName(name: string): string {\n return RESERVED_NAMES.has(name) ? `${name}Icon` : name;\n}\n\n/**\n * Walk a directory and collect every source file path.\n *\n * @param dir - Absolute directory to walk.\n * @param skip - Directory names to skip.\n * @returns Absolute file paths.\n */\nasync function collectSourceFiles(dir: string, skip: ReadonlySet<string>): Promise<string[]> {\n const out: string[] = [];\n let entries;\n try {\n entries = await readdir(dir, { withFileTypes: true });\n } catch {\n return out;\n }\n for (const entry of entries) {\n if (entry.isDirectory()) {\n if (skip.has(entry.name) || entry.name.startsWith(\".\")) continue;\n out.push(...(await collectSourceFiles(join(dir, entry.name), skip)));\n } else if (entry.isFile() && SOURCE_FILE.test(entry.name)) {\n out.push(join(dir, entry.name));\n }\n }\n return out;\n}\n\n/**\n * Generate a static icon registry from the slugs your source mentions.\n *\n * Removes the reason to reach for `lucide-react`'s `DynamicIcon`: the slugs an app\n * writes as literals become ordinary static imports, so the bundler keeps exactly\n * those icons and the browser makes **no** extra request for them. A slug that only\n * exists at runtime still works — `<Icon>` falls back to fetching one shard per\n * initial letter.\n *\n * The scan reads the source tree directly at `buildStart` rather than harvesting\n * modules as they pass through `transform`: relying on transform order would let\n * the virtual module load before every consumer had been seen, and the registry\n * would come out short on a cold dev start — silently, since the missing slugs\n * would still render via the lazy path.\n *\n * @example\n * // vite.config.ts\n * import { createViteConfig, tempestIcons } from \"tempest-react-sdk/vite\";\n *\n * export default createViteConfig({ plugins: [tempestIcons()] });\n *\n * @example\n * // src/main.tsx\n * import { IconProvider } from \"tempest-react-sdk/icons\";\n * import { staticIcons } from \"tempest-react-sdk/icons/virtual\";\n *\n * <IconProvider registry={staticIcons}>\n * <App />\n * </IconProvider>\n */\nexport function tempestIcons(options: TempestIconsOptions = {}): TempestVitePlugin {\n const { dir = \"src\", include = [], skipDirs } = options;\n const known = new Set<string>(iconNames);\n const skip = new Set<string>(skipDirs ?? SKIP_DIRS);\n const slugs = new Set<string>(include.filter((slug) => known.has(slug)));\n let root = process.cwd();\n\n /**\n * Rescan the source tree, keeping the explicitly included slugs.\n *\n * @tempest-limits empty-catch — the scan races the editor and the file system:\n * a file listed a moment ago can be renamed, deleted, or held by another process\n * by the time it is read. An unreadable file contributes no slugs and the build\n * continues; failing the whole scan would break `vite dev` over a temp file that\n * no longer exists.\n */\n const rescan = async (): Promise<void> => {\n const files = await collectSourceFiles(resolve(root, dir), skip);\n for (const file of files) {\n try {\n const code = await readFile(file, \"utf8\");\n for (const slug of scanIconSlugs(code, known)) slugs.add(slug);\n } catch {\n /* empty */\n }\n }\n };\n\n return {\n name: \"tempest-icons\",\n enforce: \"pre\",\n\n configResolved(config: { root?: string }) {\n root = config.root ?? root;\n },\n\n async buildStart() {\n await rescan();\n },\n\n /**\n * Claim both spellings of the registry module.\n *\n * The subpath is a real file in the installed package, so returning the\n * virtual id here is what overrides the empty stub with the generated\n * table. Letting Vite resolve it normally would silently ship the stub.\n */\n resolveId(id: string) {\n return id === TEMPEST_ICONS_ID || id === TEMPEST_ICONS_VIRTUAL_ID ? RESOLVED_ID : null;\n },\n\n load(id: string) {\n return id === RESOLVED_ID ? buildIconsModule([...slugs], iconAliases) : null;\n },\n\n /**\n * Pick up a slug added while the dev server is running.\n *\n * A newly written `<Icon name=\"save\" />` would otherwise only render via\n * the lazy path until the next restart. Rescanning the changed file and\n * invalidating the virtual module keeps dev and build agreeing on what the\n * static registry contains.\n */\n async handleHotUpdate(ctx: {\n file: string;\n read: () => Promise<string>;\n server: { moduleGraph: { getModuleById: (id: string) => unknown } };\n }) {\n if (!SOURCE_FILE.test(ctx.file)) return;\n const before = slugs.size;\n for (const slug of scanIconSlugs(await ctx.read(), known)) slugs.add(slug);\n if (slugs.size === before) return;\n const mod = ctx.server.moduleGraph.getModuleById(RESOLVED_ID);\n if (mod) return [mod];\n },\n } as TempestVitePlugin;\n}\n"],"mappings":"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"}
package/dist/vite.d.ts CHANGED
@@ -93,7 +93,7 @@ export declare type ProxyEntry = string | Record<string, unknown>;
93
93
  * @example
94
94
  * // src/main.tsx
95
95
  * import { IconProvider } from "tempest-react-sdk/icons";
96
- * import { staticIcons } from "virtual:tempest-icons";
96
+ * import { staticIcons } from "tempest-react-sdk/icons/virtual";
97
97
  *
98
98
  * <IconProvider registry={staticIcons}>
99
99
  * <App />
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tempest-react-sdk",
3
- "version": "0.47.0",
3
+ "version": "0.48.0",
4
4
  "description": "SDK público da Tempest com componentes, hooks e integrações para projetos React.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -96,7 +96,9 @@
96
96
  "require": "./dist/icons.cjs"
97
97
  },
98
98
  "./icons/virtual": {
99
- "types": "./dist/icons-virtual.d.ts"
99
+ "types": "./dist/icons-virtual.d.ts",
100
+ "import": "./dist/icons-virtual.js",
101
+ "require": "./dist/icons-virtual.cjs"
100
102
  },
101
103
  "./styles.css": "./dist/styles.css",
102
104
  "./package.json": "./package.json",
@@ -105,6 +107,7 @@
105
107
  "scripts": {
106
108
  "dev": "vite build --watch",
107
109
  "build": "tsc -b tsconfig.build.json && node --max-old-space-size=6144 ./node_modules/vite/bin/vite.js build && node scripts/copy-css-assets.mjs",
110
+ "postbuild": "node scripts/check-dist-guards.mjs",
108
111
  "typecheck": "tsc -b tsconfig.json --noEmit",
109
112
  "lint": "eslint .",
110
113
  "format": "prettier --write .",
@@ -1,2 +0,0 @@
1
- let e=require("lucide-react");var t={"a-arrow-down":e.AArrowDown,"a-arrow-up":e.AArrowUp,"a-large-small":e.ALargeSmall,accessibility:e.Accessibility,activity:e.Activity,ad:e.Ad,"air-vent":e.AirVent,airplay:e.Airplay,"alarm-clock":e.AlarmClock,"alarm-clock-check":e.AlarmClockCheck,"alarm-clock-minus":e.AlarmClockMinus,"alarm-clock-off":e.AlarmClockOff,"alarm-clock-plus":e.AlarmClockPlus,"alarm-smoke":e.AlarmSmoke,album:e.Album,"align-center-horizontal":e.AlignCenterHorizontal,"align-center-vertical":e.AlignCenterVertical,"align-end-horizontal":e.AlignEndHorizontal,"align-end-vertical":e.AlignEndVertical,"align-horizontal-distribute-center":e.AlignHorizontalDistributeCenter,"align-horizontal-distribute-end":e.AlignHorizontalDistributeEnd,"align-horizontal-distribute-start":e.AlignHorizontalDistributeStart,"align-horizontal-justify-center":e.AlignHorizontalJustifyCenter,"align-horizontal-justify-end":e.AlignHorizontalJustifyEnd,"align-horizontal-justify-start":e.AlignHorizontalJustifyStart,"align-horizontal-space-around":e.AlignHorizontalSpaceAround,"align-horizontal-space-between":e.AlignHorizontalSpaceBetween,"align-start-horizontal":e.AlignStartHorizontal,"align-start-vertical":e.AlignStartVertical,"align-vertical-distribute-center":e.AlignVerticalDistributeCenter,"align-vertical-distribute-end":e.AlignVerticalDistributeEnd,"align-vertical-distribute-start":e.AlignVerticalDistributeStart,"align-vertical-justify-center":e.AlignVerticalJustifyCenter,"align-vertical-justify-end":e.AlignVerticalJustifyEnd,"align-vertical-justify-start":e.AlignVerticalJustifyStart,"align-vertical-space-around":e.AlignVerticalSpaceAround,"align-vertical-space-between":e.AlignVerticalSpaceBetween,ambulance:e.Ambulance,ampersand:e.Ampersand,ampersands:e.Ampersands,amphora:e.Amphora,anchor:e.Anchor,angle:e.Angle,antenna:e.Antenna,anvil:e.Anvil,aperture:e.Aperture,"app-window":e.AppWindow,"app-window-mac":e.AppWindowMac,apple:e.Apple,archive:e.Archive,"archive-restore":e.ArchiveRestore,"archive-x":e.ArchiveX,armchair:e.Armchair,"arrow-big-down":e.ArrowBigDown,"arrow-big-down-dash":e.ArrowBigDownDash,"arrow-big-left":e.ArrowBigLeft,"arrow-big-left-dash":e.ArrowBigLeftDash,"arrow-big-right":e.ArrowBigRight,"arrow-big-right-dash":e.ArrowBigRightDash,"arrow-big-up":e.ArrowBigUp,"arrow-big-up-dash":e.ArrowBigUpDash,"arrow-down":e.ArrowDown,"arrow-down-0-1":e.ArrowDown01,"arrow-down-1-0":e.ArrowDown10,"arrow-down-a-z":e.ArrowDownAZ,"arrow-down-from-line":e.ArrowDownFromLine,"arrow-down-left":e.ArrowDownLeft,"arrow-down-narrow-wide":e.ArrowDownNarrowWide,"arrow-down-right":e.ArrowDownRight,"arrow-down-to-dot":e.ArrowDownToDot,"arrow-down-to-line":e.ArrowDownToLine,"arrow-down-up":e.ArrowDownUp,"arrow-down-wide-narrow":e.ArrowDownWideNarrow,"arrow-down-z-a":e.ArrowDownZA,"arrow-left":e.ArrowLeft,"arrow-left-from-line":e.ArrowLeftFromLine,"arrow-left-right":e.ArrowLeftRight,"arrow-left-to-line":e.ArrowLeftToLine,"arrow-right":e.ArrowRight,"arrow-right-from-line":e.ArrowRightFromLine,"arrow-right-left":e.ArrowRightLeft,"arrow-right-to-line":e.ArrowRightToLine,"arrow-up":e.ArrowUp,"arrow-up-0-1":e.ArrowUp01,"arrow-up-1-0":e.ArrowUp10,"arrow-up-a-z":e.ArrowUpAZ,"arrow-up-down":e.ArrowUpDown,"arrow-up-from-dot":e.ArrowUpFromDot,"arrow-up-from-line":e.ArrowUpFromLine,"arrow-up-left":e.ArrowUpLeft,"arrow-up-narrow-wide":e.ArrowUpNarrowWide,"arrow-up-right":e.ArrowUpRight,"arrow-up-to-line":e.ArrowUpToLine,"arrow-up-wide-narrow":e.ArrowUpWideNarrow,"arrow-up-z-a":e.ArrowUpZA,"arrows-up-from-line":e.ArrowsUpFromLine,asterisk:e.Asterisk,astroid:e.Astroid,"at-sign":e.AtSign,atom:e.Atom,"audio-lines":e.AudioLines,"audio-lines-x":e.AudioLinesX,"audio-waveform":e.AudioWaveform,award:e.Award,axe:e.Axe,"axis-3d":e.Axis3d};exports.default=t;
2
- //# sourceMappingURL=shard-a.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"shard-a.cjs","names":[],"sources":["../../../src/icons/generated/shard-a.ts"],"sourcesContent":["// GENERATED by scripts/gen-icons.mjs — do not edit.\n// Run `npm run gen:icons` after bumping lucide-react.\n\nimport {\n AArrowDown,\n AArrowUp,\n ALargeSmall,\n Accessibility,\n Activity,\n Ad,\n AirVent,\n Airplay,\n AlarmClock,\n AlarmClockCheck,\n AlarmClockMinus,\n AlarmClockOff,\n AlarmClockPlus,\n AlarmSmoke,\n Album,\n AlignCenterHorizontal,\n AlignCenterVertical,\n AlignEndHorizontal,\n AlignEndVertical,\n AlignHorizontalDistributeCenter,\n AlignHorizontalDistributeEnd,\n AlignHorizontalDistributeStart,\n AlignHorizontalJustifyCenter,\n AlignHorizontalJustifyEnd,\n AlignHorizontalJustifyStart,\n AlignHorizontalSpaceAround,\n AlignHorizontalSpaceBetween,\n AlignStartHorizontal,\n AlignStartVertical,\n AlignVerticalDistributeCenter,\n AlignVerticalDistributeEnd,\n AlignVerticalDistributeStart,\n AlignVerticalJustifyCenter,\n AlignVerticalJustifyEnd,\n AlignVerticalJustifyStart,\n AlignVerticalSpaceAround,\n AlignVerticalSpaceBetween,\n Ambulance,\n Ampersand,\n Ampersands,\n Amphora,\n Anchor,\n Angle,\n Antenna,\n Anvil,\n Aperture,\n AppWindow,\n AppWindowMac,\n Apple,\n Archive,\n ArchiveRestore,\n ArchiveX,\n Armchair,\n ArrowBigDown,\n ArrowBigDownDash,\n ArrowBigLeft,\n ArrowBigLeftDash,\n ArrowBigRight,\n ArrowBigRightDash,\n ArrowBigUp,\n ArrowBigUpDash,\n ArrowDown,\n ArrowDown01,\n ArrowDown10,\n ArrowDownAZ,\n ArrowDownFromLine,\n ArrowDownLeft,\n ArrowDownNarrowWide,\n ArrowDownRight,\n ArrowDownToDot,\n ArrowDownToLine,\n ArrowDownUp,\n ArrowDownWideNarrow,\n ArrowDownZA,\n ArrowLeft,\n ArrowLeftFromLine,\n ArrowLeftRight,\n ArrowLeftToLine,\n ArrowRight,\n ArrowRightFromLine,\n ArrowRightLeft,\n ArrowRightToLine,\n ArrowUp,\n ArrowUp01,\n ArrowUp10,\n ArrowUpAZ,\n ArrowUpDown,\n ArrowUpFromDot,\n ArrowUpFromLine,\n ArrowUpLeft,\n ArrowUpNarrowWide,\n ArrowUpRight,\n ArrowUpToLine,\n ArrowUpWideNarrow,\n ArrowUpZA,\n ArrowsUpFromLine,\n Asterisk,\n Astroid,\n AtSign,\n Atom,\n AudioLines,\n AudioLinesX,\n AudioWaveform,\n Award,\n Axe,\n Axis3d,\n} from \"lucide-react\";\nimport type { LucideIcon } from \"lucide-react\";\n\n/** The 106 lucide icons whose slug starts with \"a\". */\nconst shard: Record<string, LucideIcon> = {\n \"a-arrow-down\": AArrowDown,\n \"a-arrow-up\": AArrowUp,\n \"a-large-small\": ALargeSmall,\n accessibility: Accessibility,\n activity: Activity,\n ad: Ad,\n \"air-vent\": AirVent,\n airplay: Airplay,\n \"alarm-clock\": AlarmClock,\n \"alarm-clock-check\": AlarmClockCheck,\n \"alarm-clock-minus\": AlarmClockMinus,\n \"alarm-clock-off\": AlarmClockOff,\n \"alarm-clock-plus\": AlarmClockPlus,\n \"alarm-smoke\": AlarmSmoke,\n album: Album,\n \"align-center-horizontal\": AlignCenterHorizontal,\n \"align-center-vertical\": AlignCenterVertical,\n \"align-end-horizontal\": AlignEndHorizontal,\n \"align-end-vertical\": AlignEndVertical,\n \"align-horizontal-distribute-center\": AlignHorizontalDistributeCenter,\n \"align-horizontal-distribute-end\": AlignHorizontalDistributeEnd,\n \"align-horizontal-distribute-start\": AlignHorizontalDistributeStart,\n \"align-horizontal-justify-center\": AlignHorizontalJustifyCenter,\n \"align-horizontal-justify-end\": AlignHorizontalJustifyEnd,\n \"align-horizontal-justify-start\": AlignHorizontalJustifyStart,\n \"align-horizontal-space-around\": AlignHorizontalSpaceAround,\n \"align-horizontal-space-between\": AlignHorizontalSpaceBetween,\n \"align-start-horizontal\": AlignStartHorizontal,\n \"align-start-vertical\": AlignStartVertical,\n \"align-vertical-distribute-center\": AlignVerticalDistributeCenter,\n \"align-vertical-distribute-end\": AlignVerticalDistributeEnd,\n \"align-vertical-distribute-start\": AlignVerticalDistributeStart,\n \"align-vertical-justify-center\": AlignVerticalJustifyCenter,\n \"align-vertical-justify-end\": AlignVerticalJustifyEnd,\n \"align-vertical-justify-start\": AlignVerticalJustifyStart,\n \"align-vertical-space-around\": AlignVerticalSpaceAround,\n \"align-vertical-space-between\": AlignVerticalSpaceBetween,\n ambulance: Ambulance,\n ampersand: Ampersand,\n ampersands: Ampersands,\n amphora: Amphora,\n anchor: Anchor,\n angle: Angle,\n antenna: Antenna,\n anvil: Anvil,\n aperture: Aperture,\n \"app-window\": AppWindow,\n \"app-window-mac\": AppWindowMac,\n apple: Apple,\n archive: Archive,\n \"archive-restore\": ArchiveRestore,\n \"archive-x\": ArchiveX,\n armchair: Armchair,\n \"arrow-big-down\": ArrowBigDown,\n \"arrow-big-down-dash\": ArrowBigDownDash,\n \"arrow-big-left\": ArrowBigLeft,\n \"arrow-big-left-dash\": ArrowBigLeftDash,\n \"arrow-big-right\": ArrowBigRight,\n \"arrow-big-right-dash\": ArrowBigRightDash,\n \"arrow-big-up\": ArrowBigUp,\n \"arrow-big-up-dash\": ArrowBigUpDash,\n \"arrow-down\": ArrowDown,\n \"arrow-down-0-1\": ArrowDown01,\n \"arrow-down-1-0\": ArrowDown10,\n \"arrow-down-a-z\": ArrowDownAZ,\n \"arrow-down-from-line\": ArrowDownFromLine,\n \"arrow-down-left\": ArrowDownLeft,\n \"arrow-down-narrow-wide\": ArrowDownNarrowWide,\n \"arrow-down-right\": ArrowDownRight,\n \"arrow-down-to-dot\": ArrowDownToDot,\n \"arrow-down-to-line\": ArrowDownToLine,\n \"arrow-down-up\": ArrowDownUp,\n \"arrow-down-wide-narrow\": ArrowDownWideNarrow,\n \"arrow-down-z-a\": ArrowDownZA,\n \"arrow-left\": ArrowLeft,\n \"arrow-left-from-line\": ArrowLeftFromLine,\n \"arrow-left-right\": ArrowLeftRight,\n \"arrow-left-to-line\": ArrowLeftToLine,\n \"arrow-right\": ArrowRight,\n \"arrow-right-from-line\": ArrowRightFromLine,\n \"arrow-right-left\": ArrowRightLeft,\n \"arrow-right-to-line\": ArrowRightToLine,\n \"arrow-up\": ArrowUp,\n \"arrow-up-0-1\": ArrowUp01,\n \"arrow-up-1-0\": ArrowUp10,\n \"arrow-up-a-z\": ArrowUpAZ,\n \"arrow-up-down\": ArrowUpDown,\n \"arrow-up-from-dot\": ArrowUpFromDot,\n \"arrow-up-from-line\": ArrowUpFromLine,\n \"arrow-up-left\": ArrowUpLeft,\n \"arrow-up-narrow-wide\": ArrowUpNarrowWide,\n \"arrow-up-right\": ArrowUpRight,\n \"arrow-up-to-line\": ArrowUpToLine,\n \"arrow-up-wide-narrow\": ArrowUpWideNarrow,\n \"arrow-up-z-a\": ArrowUpZA,\n \"arrows-up-from-line\": ArrowsUpFromLine,\n asterisk: Asterisk,\n astroid: Astroid,\n \"at-sign\": AtSign,\n atom: Atom,\n \"audio-lines\": AudioLines,\n \"audio-lines-x\": AudioLinesX,\n \"audio-waveform\": AudioWaveform,\n award: Award,\n axe: Axe,\n \"axis-3d\": Axis3d,\n};\n\nexport default shard;\n"],"mappings":"8BAkHA,IAAM,EAAoC,CACtC,eAAgB,EAAA,WAChB,aAAc,EAAA,SACd,gBAAiB,EAAA,YACjB,cAAe,EAAA,cACf,SAAU,EAAA,SACV,GAAI,EAAA,GACJ,WAAY,EAAA,QACZ,QAAS,EAAA,QACT,cAAe,EAAA,WACf,oBAAqB,EAAA,gBACrB,oBAAqB,EAAA,gBACrB,kBAAmB,EAAA,cACnB,mBAAoB,EAAA,eACpB,cAAe,EAAA,WACf,MAAO,EAAA,MACP,0BAA2B,EAAA,sBAC3B,wBAAyB,EAAA,oBACzB,uBAAwB,EAAA,mBACxB,qBAAsB,EAAA,iBACtB,qCAAsC,EAAA,gCACtC,kCAAmC,EAAA,6BACnC,oCAAqC,EAAA,+BACrC,kCAAmC,EAAA,6BACnC,+BAAgC,EAAA,0BAChC,iCAAkC,EAAA,4BAClC,gCAAiC,EAAA,2BACjC,iCAAkC,EAAA,4BAClC,yBAA0B,EAAA,qBAC1B,uBAAwB,EAAA,mBACxB,mCAAoC,EAAA,8BACpC,gCAAiC,EAAA,2BACjC,kCAAmC,EAAA,6BACnC,gCAAiC,EAAA,2BACjC,6BAA8B,EAAA,wBAC9B,+BAAgC,EAAA,0BAChC,8BAA+B,EAAA,yBAC/B,+BAAgC,EAAA,0BAChC,UAAW,EAAA,UACX,UAAW,EAAA,UACX,WAAY,EAAA,WACZ,QAAS,EAAA,QACT,OAAQ,EAAA,OACR,MAAO,EAAA,MACP,QAAS,EAAA,QACT,MAAO,EAAA,MACP,SAAU,EAAA,SACV,aAAc,EAAA,UACd,iBAAkB,EAAA,aAClB,MAAO,EAAA,MACP,QAAS,EAAA,QACT,kBAAmB,EAAA,eACnB,YAAa,EAAA,SACb,SAAU,EAAA,SACV,iBAAkB,EAAA,aAClB,sBAAuB,EAAA,iBACvB,iBAAkB,EAAA,aAClB,sBAAuB,EAAA,iBACvB,kBAAmB,EAAA,cACnB,uBAAwB,EAAA,kBACxB,eAAgB,EAAA,WAChB,oBAAqB,EAAA,eACrB,aAAc,EAAA,UACd,iBAAkB,EAAA,YAClB,iBAAkB,EAAA,YAClB,iBAAkB,EAAA,YAClB,uBAAwB,EAAA,kBACxB,kBAAmB,EAAA,cACnB,yBAA0B,EAAA,oBAC1B,mBAAoB,EAAA,eACpB,oBAAqB,EAAA,eACrB,qBAAsB,EAAA,gBACtB,gBAAiB,EAAA,YACjB,yBAA0B,EAAA,oBAC1B,iBAAkB,EAAA,YAClB,aAAc,EAAA,UACd,uBAAwB,EAAA,kBACxB,mBAAoB,EAAA,eACpB,qBAAsB,EAAA,gBACtB,cAAe,EAAA,WACf,wBAAyB,EAAA,mBACzB,mBAAoB,EAAA,eACpB,sBAAuB,EAAA,iBACvB,WAAY,EAAA,QACZ,eAAgB,EAAA,UAChB,eAAgB,EAAA,UAChB,eAAgB,EAAA,UAChB,gBAAiB,EAAA,YACjB,oBAAqB,EAAA,eACrB,qBAAsB,EAAA,gBACtB,gBAAiB,EAAA,YACjB,uBAAwB,EAAA,kBACxB,iBAAkB,EAAA,aAClB,mBAAoB,EAAA,cACpB,uBAAwB,EAAA,kBACxB,eAAgB,EAAA,UAChB,sBAAuB,EAAA,iBACvB,SAAU,EAAA,SACV,QAAS,EAAA,QACT,UAAW,EAAA,OACX,KAAM,EAAA,KACN,cAAe,EAAA,WACf,gBAAiB,EAAA,YACjB,iBAAkB,EAAA,cAClB,MAAO,EAAA,MACP,IAAK,EAAA,IACL,UAAW,EAAA,MACf"}
@@ -1,114 +0,0 @@
1
- import { AArrowDown as e, AArrowUp as t, ALargeSmall as n, Accessibility as r, Activity as i, Ad as a, AirVent as o, Airplay as s, AlarmClock as c, AlarmClockCheck as l, AlarmClockMinus as u, AlarmClockOff as d, AlarmClockPlus as f, AlarmSmoke as p, Album as m, AlignCenterHorizontal as h, AlignCenterVertical as g, AlignEndHorizontal as _, AlignEndVertical as v, AlignHorizontalDistributeCenter as y, AlignHorizontalDistributeEnd as b, AlignHorizontalDistributeStart as x, AlignHorizontalJustifyCenter as S, AlignHorizontalJustifyEnd as C, AlignHorizontalJustifyStart as w, AlignHorizontalSpaceAround as T, AlignHorizontalSpaceBetween as E, AlignStartHorizontal as D, AlignStartVertical as O, AlignVerticalDistributeCenter as k, AlignVerticalDistributeEnd as A, AlignVerticalDistributeStart as j, AlignVerticalJustifyCenter as M, AlignVerticalJustifyEnd as N, AlignVerticalJustifyStart as P, AlignVerticalSpaceAround as F, AlignVerticalSpaceBetween as I, Ambulance as L, Ampersand as R, Ampersands as z, Amphora as B, Anchor as V, Angle as H, Antenna as U, Anvil as W, Aperture as G, AppWindow as K, AppWindowMac as q, Apple as J, Archive as Y, ArchiveRestore as X, ArchiveX as Z, Armchair as Q, ArrowBigDown as $, ArrowBigDownDash as ee, ArrowBigLeft as te, ArrowBigLeftDash as ne, ArrowBigRight as re, ArrowBigRightDash as ie, ArrowBigUp as ae, ArrowBigUpDash as oe, ArrowDown as se, ArrowDown01 as ce, ArrowDown10 as le, ArrowDownAZ as ue, ArrowDownFromLine as de, ArrowDownLeft as fe, ArrowDownNarrowWide as pe, ArrowDownRight as me, ArrowDownToDot as he, ArrowDownToLine as ge, ArrowDownUp as _e, ArrowDownWideNarrow as ve, ArrowDownZA as ye, ArrowLeft as be, ArrowLeftFromLine as xe, ArrowLeftRight as Se, ArrowLeftToLine as Ce, ArrowRight as we, ArrowRightFromLine as Te, ArrowRightLeft as Ee, ArrowRightToLine as De, ArrowUp as Oe, ArrowUp01 as ke, ArrowUp10 as Ae, ArrowUpAZ as je, ArrowUpDown as Me, ArrowUpFromDot as Ne, ArrowUpFromLine as Pe, ArrowUpLeft as Fe, ArrowUpNarrowWide as Ie, ArrowUpRight as Le, ArrowUpToLine as Re, ArrowUpWideNarrow as ze, ArrowUpZA as Be, ArrowsUpFromLine as Ve, Asterisk as He, Astroid as Ue, AtSign as We, Atom as Ge, AudioLines as Ke, AudioLinesX as qe, AudioWaveform as Je, Award as Ye, Axe as Xe, Axis3d as Ze } from "lucide-react";
2
- //#region src/icons/generated/shard-a.ts
3
- var Qe = {
4
- "a-arrow-down": e,
5
- "a-arrow-up": t,
6
- "a-large-small": n,
7
- accessibility: r,
8
- activity: i,
9
- ad: a,
10
- "air-vent": o,
11
- airplay: s,
12
- "alarm-clock": c,
13
- "alarm-clock-check": l,
14
- "alarm-clock-minus": u,
15
- "alarm-clock-off": d,
16
- "alarm-clock-plus": f,
17
- "alarm-smoke": p,
18
- album: m,
19
- "align-center-horizontal": h,
20
- "align-center-vertical": g,
21
- "align-end-horizontal": _,
22
- "align-end-vertical": v,
23
- "align-horizontal-distribute-center": y,
24
- "align-horizontal-distribute-end": b,
25
- "align-horizontal-distribute-start": x,
26
- "align-horizontal-justify-center": S,
27
- "align-horizontal-justify-end": C,
28
- "align-horizontal-justify-start": w,
29
- "align-horizontal-space-around": T,
30
- "align-horizontal-space-between": E,
31
- "align-start-horizontal": D,
32
- "align-start-vertical": O,
33
- "align-vertical-distribute-center": k,
34
- "align-vertical-distribute-end": A,
35
- "align-vertical-distribute-start": j,
36
- "align-vertical-justify-center": M,
37
- "align-vertical-justify-end": N,
38
- "align-vertical-justify-start": P,
39
- "align-vertical-space-around": F,
40
- "align-vertical-space-between": I,
41
- ambulance: L,
42
- ampersand: R,
43
- ampersands: z,
44
- amphora: B,
45
- anchor: V,
46
- angle: H,
47
- antenna: U,
48
- anvil: W,
49
- aperture: G,
50
- "app-window": K,
51
- "app-window-mac": q,
52
- apple: J,
53
- archive: Y,
54
- "archive-restore": X,
55
- "archive-x": Z,
56
- armchair: Q,
57
- "arrow-big-down": $,
58
- "arrow-big-down-dash": ee,
59
- "arrow-big-left": te,
60
- "arrow-big-left-dash": ne,
61
- "arrow-big-right": re,
62
- "arrow-big-right-dash": ie,
63
- "arrow-big-up": ae,
64
- "arrow-big-up-dash": oe,
65
- "arrow-down": se,
66
- "arrow-down-0-1": ce,
67
- "arrow-down-1-0": le,
68
- "arrow-down-a-z": ue,
69
- "arrow-down-from-line": de,
70
- "arrow-down-left": fe,
71
- "arrow-down-narrow-wide": pe,
72
- "arrow-down-right": me,
73
- "arrow-down-to-dot": he,
74
- "arrow-down-to-line": ge,
75
- "arrow-down-up": _e,
76
- "arrow-down-wide-narrow": ve,
77
- "arrow-down-z-a": ye,
78
- "arrow-left": be,
79
- "arrow-left-from-line": xe,
80
- "arrow-left-right": Se,
81
- "arrow-left-to-line": Ce,
82
- "arrow-right": we,
83
- "arrow-right-from-line": Te,
84
- "arrow-right-left": Ee,
85
- "arrow-right-to-line": De,
86
- "arrow-up": Oe,
87
- "arrow-up-0-1": ke,
88
- "arrow-up-1-0": Ae,
89
- "arrow-up-a-z": je,
90
- "arrow-up-down": Me,
91
- "arrow-up-from-dot": Ne,
92
- "arrow-up-from-line": Pe,
93
- "arrow-up-left": Fe,
94
- "arrow-up-narrow-wide": Ie,
95
- "arrow-up-right": Le,
96
- "arrow-up-to-line": Re,
97
- "arrow-up-wide-narrow": ze,
98
- "arrow-up-z-a": Be,
99
- "arrows-up-from-line": Ve,
100
- asterisk: He,
101
- astroid: Ue,
102
- "at-sign": We,
103
- atom: Ge,
104
- "audio-lines": Ke,
105
- "audio-lines-x": qe,
106
- "audio-waveform": Je,
107
- award: Ye,
108
- axe: Xe,
109
- "axis-3d": Ze
110
- };
111
- //#endregion
112
- export { Qe as default };
113
-
114
- //# sourceMappingURL=shard-a.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"shard-a.js","names":[],"sources":["../../../src/icons/generated/shard-a.ts"],"sourcesContent":["// GENERATED by scripts/gen-icons.mjs — do not edit.\n// Run `npm run gen:icons` after bumping lucide-react.\n\nimport {\n AArrowDown,\n AArrowUp,\n ALargeSmall,\n Accessibility,\n Activity,\n Ad,\n AirVent,\n Airplay,\n AlarmClock,\n AlarmClockCheck,\n AlarmClockMinus,\n AlarmClockOff,\n AlarmClockPlus,\n AlarmSmoke,\n Album,\n AlignCenterHorizontal,\n AlignCenterVertical,\n AlignEndHorizontal,\n AlignEndVertical,\n AlignHorizontalDistributeCenter,\n AlignHorizontalDistributeEnd,\n AlignHorizontalDistributeStart,\n AlignHorizontalJustifyCenter,\n AlignHorizontalJustifyEnd,\n AlignHorizontalJustifyStart,\n AlignHorizontalSpaceAround,\n AlignHorizontalSpaceBetween,\n AlignStartHorizontal,\n AlignStartVertical,\n AlignVerticalDistributeCenter,\n AlignVerticalDistributeEnd,\n AlignVerticalDistributeStart,\n AlignVerticalJustifyCenter,\n AlignVerticalJustifyEnd,\n AlignVerticalJustifyStart,\n AlignVerticalSpaceAround,\n AlignVerticalSpaceBetween,\n Ambulance,\n Ampersand,\n Ampersands,\n Amphora,\n Anchor,\n Angle,\n Antenna,\n Anvil,\n Aperture,\n AppWindow,\n AppWindowMac,\n Apple,\n Archive,\n ArchiveRestore,\n ArchiveX,\n Armchair,\n ArrowBigDown,\n ArrowBigDownDash,\n ArrowBigLeft,\n ArrowBigLeftDash,\n ArrowBigRight,\n ArrowBigRightDash,\n ArrowBigUp,\n ArrowBigUpDash,\n ArrowDown,\n ArrowDown01,\n ArrowDown10,\n ArrowDownAZ,\n ArrowDownFromLine,\n ArrowDownLeft,\n ArrowDownNarrowWide,\n ArrowDownRight,\n ArrowDownToDot,\n ArrowDownToLine,\n ArrowDownUp,\n ArrowDownWideNarrow,\n ArrowDownZA,\n ArrowLeft,\n ArrowLeftFromLine,\n ArrowLeftRight,\n ArrowLeftToLine,\n ArrowRight,\n ArrowRightFromLine,\n ArrowRightLeft,\n ArrowRightToLine,\n ArrowUp,\n ArrowUp01,\n ArrowUp10,\n ArrowUpAZ,\n ArrowUpDown,\n ArrowUpFromDot,\n ArrowUpFromLine,\n ArrowUpLeft,\n ArrowUpNarrowWide,\n ArrowUpRight,\n ArrowUpToLine,\n ArrowUpWideNarrow,\n ArrowUpZA,\n ArrowsUpFromLine,\n Asterisk,\n Astroid,\n AtSign,\n Atom,\n AudioLines,\n AudioLinesX,\n AudioWaveform,\n Award,\n Axe,\n Axis3d,\n} from \"lucide-react\";\nimport type { LucideIcon } from \"lucide-react\";\n\n/** The 106 lucide icons whose slug starts with \"a\". */\nconst shard: Record<string, LucideIcon> = {\n \"a-arrow-down\": AArrowDown,\n \"a-arrow-up\": AArrowUp,\n \"a-large-small\": ALargeSmall,\n accessibility: Accessibility,\n activity: Activity,\n ad: Ad,\n \"air-vent\": AirVent,\n airplay: Airplay,\n \"alarm-clock\": AlarmClock,\n \"alarm-clock-check\": AlarmClockCheck,\n \"alarm-clock-minus\": AlarmClockMinus,\n \"alarm-clock-off\": AlarmClockOff,\n \"alarm-clock-plus\": AlarmClockPlus,\n \"alarm-smoke\": AlarmSmoke,\n album: Album,\n \"align-center-horizontal\": AlignCenterHorizontal,\n \"align-center-vertical\": AlignCenterVertical,\n \"align-end-horizontal\": AlignEndHorizontal,\n \"align-end-vertical\": AlignEndVertical,\n \"align-horizontal-distribute-center\": AlignHorizontalDistributeCenter,\n \"align-horizontal-distribute-end\": AlignHorizontalDistributeEnd,\n \"align-horizontal-distribute-start\": AlignHorizontalDistributeStart,\n \"align-horizontal-justify-center\": AlignHorizontalJustifyCenter,\n \"align-horizontal-justify-end\": AlignHorizontalJustifyEnd,\n \"align-horizontal-justify-start\": AlignHorizontalJustifyStart,\n \"align-horizontal-space-around\": AlignHorizontalSpaceAround,\n \"align-horizontal-space-between\": AlignHorizontalSpaceBetween,\n \"align-start-horizontal\": AlignStartHorizontal,\n \"align-start-vertical\": AlignStartVertical,\n \"align-vertical-distribute-center\": AlignVerticalDistributeCenter,\n \"align-vertical-distribute-end\": AlignVerticalDistributeEnd,\n \"align-vertical-distribute-start\": AlignVerticalDistributeStart,\n \"align-vertical-justify-center\": AlignVerticalJustifyCenter,\n \"align-vertical-justify-end\": AlignVerticalJustifyEnd,\n \"align-vertical-justify-start\": AlignVerticalJustifyStart,\n \"align-vertical-space-around\": AlignVerticalSpaceAround,\n \"align-vertical-space-between\": AlignVerticalSpaceBetween,\n ambulance: Ambulance,\n ampersand: Ampersand,\n ampersands: Ampersands,\n amphora: Amphora,\n anchor: Anchor,\n angle: Angle,\n antenna: Antenna,\n anvil: Anvil,\n aperture: Aperture,\n \"app-window\": AppWindow,\n \"app-window-mac\": AppWindowMac,\n apple: Apple,\n archive: Archive,\n \"archive-restore\": ArchiveRestore,\n \"archive-x\": ArchiveX,\n armchair: Armchair,\n \"arrow-big-down\": ArrowBigDown,\n \"arrow-big-down-dash\": ArrowBigDownDash,\n \"arrow-big-left\": ArrowBigLeft,\n \"arrow-big-left-dash\": ArrowBigLeftDash,\n \"arrow-big-right\": ArrowBigRight,\n \"arrow-big-right-dash\": ArrowBigRightDash,\n \"arrow-big-up\": ArrowBigUp,\n \"arrow-big-up-dash\": ArrowBigUpDash,\n \"arrow-down\": ArrowDown,\n \"arrow-down-0-1\": ArrowDown01,\n \"arrow-down-1-0\": ArrowDown10,\n \"arrow-down-a-z\": ArrowDownAZ,\n \"arrow-down-from-line\": ArrowDownFromLine,\n \"arrow-down-left\": ArrowDownLeft,\n \"arrow-down-narrow-wide\": ArrowDownNarrowWide,\n \"arrow-down-right\": ArrowDownRight,\n \"arrow-down-to-dot\": ArrowDownToDot,\n \"arrow-down-to-line\": ArrowDownToLine,\n \"arrow-down-up\": ArrowDownUp,\n \"arrow-down-wide-narrow\": ArrowDownWideNarrow,\n \"arrow-down-z-a\": ArrowDownZA,\n \"arrow-left\": ArrowLeft,\n \"arrow-left-from-line\": ArrowLeftFromLine,\n \"arrow-left-right\": ArrowLeftRight,\n \"arrow-left-to-line\": ArrowLeftToLine,\n \"arrow-right\": ArrowRight,\n \"arrow-right-from-line\": ArrowRightFromLine,\n \"arrow-right-left\": ArrowRightLeft,\n \"arrow-right-to-line\": ArrowRightToLine,\n \"arrow-up\": ArrowUp,\n \"arrow-up-0-1\": ArrowUp01,\n \"arrow-up-1-0\": ArrowUp10,\n \"arrow-up-a-z\": ArrowUpAZ,\n \"arrow-up-down\": ArrowUpDown,\n \"arrow-up-from-dot\": ArrowUpFromDot,\n \"arrow-up-from-line\": ArrowUpFromLine,\n \"arrow-up-left\": ArrowUpLeft,\n \"arrow-up-narrow-wide\": ArrowUpNarrowWide,\n \"arrow-up-right\": ArrowUpRight,\n \"arrow-up-to-line\": ArrowUpToLine,\n \"arrow-up-wide-narrow\": ArrowUpWideNarrow,\n \"arrow-up-z-a\": ArrowUpZA,\n \"arrows-up-from-line\": ArrowsUpFromLine,\n asterisk: Asterisk,\n astroid: Astroid,\n \"at-sign\": AtSign,\n atom: Atom,\n \"audio-lines\": AudioLines,\n \"audio-lines-x\": AudioLinesX,\n \"audio-waveform\": AudioWaveform,\n award: Award,\n axe: Axe,\n \"axis-3d\": Axis3d,\n};\n\nexport default shard;\n"],"mappings":";;AAkHA,IAAM,KAAoC;CACtC,gBAAgB;CAChB,cAAc;CACd,iBAAiB;CACjB,eAAe;CACf,UAAU;CACV,IAAI;CACJ,YAAY;CACZ,SAAS;CACT,eAAe;CACf,qBAAqB;CACrB,qBAAqB;CACrB,mBAAmB;CACnB,oBAAoB;CACpB,eAAe;CACf,OAAO;CACP,2BAA2B;CAC3B,yBAAyB;CACzB,wBAAwB;CACxB,sBAAsB;CACtB,sCAAsC;CACtC,mCAAmC;CACnC,qCAAqC;CACrC,mCAAmC;CACnC,gCAAgC;CAChC,kCAAkC;CAClC,iCAAiC;CACjC,kCAAkC;CAClC,0BAA0B;CAC1B,wBAAwB;CACxB,oCAAoC;CACpC,iCAAiC;CACjC,mCAAmC;CACnC,iCAAiC;CACjC,8BAA8B;CAC9B,gCAAgC;CAChC,+BAA+B;CAC/B,gCAAgC;CAChC,WAAW;CACX,WAAW;CACX,YAAY;CACZ,SAAS;CACT,QAAQ;CACR,OAAO;CACP,SAAS;CACT,OAAO;CACP,UAAU;CACV,cAAc;CACd,kBAAkB;CAClB,OAAO;CACP,SAAS;CACT,mBAAmB;CACnB,aAAa;CACb,UAAU;CACV,kBAAkB;CAClB,uBAAuB;CACvB,kBAAkB;CAClB,uBAAuB;CACvB,mBAAmB;CACnB,wBAAwB;CACxB,gBAAgB;CAChB,qBAAqB;CACrB,cAAc;CACd,kBAAkB;CAClB,kBAAkB;CAClB,kBAAkB;CAClB,wBAAwB;CACxB,mBAAmB;CACnB,0BAA0B;CAC1B,oBAAoB;CACpB,qBAAqB;CACrB,sBAAsB;CACtB,iBAAiB;CACjB,0BAA0B;CAC1B,kBAAkB;CAClB,cAAc;CACd,wBAAwB;CACxB,oBAAoB;CACpB,sBAAsB;CACtB,eAAe;CACf,yBAAyB;CACzB,oBAAoB;CACpB,uBAAuB;CACvB,YAAY;CACZ,gBAAgB;CAChB,gBAAgB;CAChB,gBAAgB;CAChB,iBAAiB;CACjB,qBAAqB;CACrB,sBAAsB;CACtB,iBAAiB;CACjB,wBAAwB;CACxB,kBAAkB;CAClB,oBAAoB;CACpB,wBAAwB;CACxB,gBAAgB;CAChB,uBAAuB;CACvB,UAAU;CACV,SAAS;CACT,WAAW;CACX,MAAM;CACN,eAAe;CACf,iBAAiB;CACjB,kBAAkB;CAClB,OAAO;CACP,KAAK;CACL,WAAW;AACf"}
@@ -1,2 +0,0 @@
1
- let e=require("lucide-react");var t={baby:e.Baby,backpack:e.Backpack,badge:e.Badge,"badge-alert":e.BadgeAlert,"badge-cent":e.BadgeCent,"badge-check":e.BadgeCheck,"badge-dollar-sign":e.BadgeDollarSign,"badge-euro":e.BadgeEuro,"badge-indian-rupee":e.BadgeIndianRupee,"badge-info":e.BadgeInfo,"badge-japanese-yen":e.BadgeJapaneseYen,"badge-minus":e.BadgeMinus,"badge-percent":e.BadgePercent,"badge-plus":e.BadgePlus,"badge-pound-sterling":e.BadgePoundSterling,"badge-question-mark":e.BadgeQuestionMark,"badge-russian-ruble":e.BadgeRussianRuble,"badge-swiss-franc":e.BadgeSwissFranc,"badge-turkish-lira":e.BadgeTurkishLira,"badge-x":e.BadgeX,"baggage-claim":e.BaggageClaim,balloon:e.Balloon,ban:e.Ban,banana:e.Banana,bandage:e.Bandage,banknote:e.Banknote,"banknote-arrow-down":e.BanknoteArrowDown,"banknote-arrow-up":e.BanknoteArrowUp,"banknote-check":e.BanknoteCheck,"banknote-x":e.BanknoteX,barcode:e.Barcode,barrel:e.Barrel,baseline:e.Baseline,bath:e.Bath,battery:e.Battery,"battery-charging":e.BatteryCharging,"battery-full":e.BatteryFull,"battery-low":e.BatteryLow,"battery-medium":e.BatteryMedium,"battery-plus":e.BatteryPlus,"battery-warning":e.BatteryWarning,beaker:e.Beaker,bean:e.Bean,"bean-off":e.BeanOff,bed:e.Bed,"bed-double":e.BedDouble,"bed-single":e.BedSingle,beef:e.Beef,"beef-off":e.BeefOff,beer:e.Beer,"beer-off":e.BeerOff,bell:e.Bell,"bell-check":e.BellCheck,"bell-dot":e.BellDot,"bell-electric":e.BellElectric,"bell-minus":e.BellMinus,"bell-off":e.BellOff,"bell-plus":e.BellPlus,"bell-ring":e.BellRing,"between-horizontal-end":e.BetweenHorizontalEnd,"between-horizontal-start":e.BetweenHorizontalStart,"between-vertical-end":e.BetweenVerticalEnd,"between-vertical-start":e.BetweenVerticalStart,"biceps-flexed":e.BicepsFlexed,bike:e.Bike,binary:e.Binary,binoculars:e.Binoculars,biohazard:e.Biohazard,bird:e.Bird,birdhouse:e.Birdhouse,bitcoin:e.Bitcoin,blend:e.Blend,blender:e.Blender,blinds:e.Blinds,blocks:e.Blocks,bluetooth:e.Bluetooth,"bluetooth-connected":e.BluetoothConnected,"bluetooth-off":e.BluetoothOff,"bluetooth-searching":e.BluetoothSearching,bold:e.Bold,bolt:e.Bolt,bomb:e.Bomb,bone:e.Bone,"bone-fracture":e.BoneFracture,book:e.Book,"book-a":e.BookA,"book-alert":e.BookAlert,"book-audio":e.BookAudio,"book-check":e.BookCheck,"book-copy":e.BookCopy,"book-dashed":e.BookDashed,"book-down":e.BookDown,"book-headphones":e.BookHeadphones,"book-heart":e.BookHeart,"book-image":e.BookImage,"book-key":e.BookKey,"book-lock":e.BookLock,"book-marked":e.BookMarked,"book-minus":e.BookMinus,"book-open":e.BookOpen,"book-open-check":e.BookOpenCheck,"book-open-text":e.BookOpenText,"book-plus":e.BookPlus,"book-search":e.BookSearch,"book-text":e.BookText,"book-type":e.BookType,"book-up":e.BookUp,"book-up-2":e.BookUp2,"book-user":e.BookUser,"book-x":e.BookX,bookmark:e.Bookmark,"bookmark-check":e.BookmarkCheck,"bookmark-minus":e.BookmarkMinus,"bookmark-off":e.BookmarkOff,"bookmark-plus":e.BookmarkPlus,"bookmark-x":e.BookmarkX,"boom-box":e.BoomBox,bot:e.Bot,"bot-message-square":e.BotMessageSquare,"bot-off":e.BotOff,"bottle-wine":e.BottleWine,"bow-arrow":e.BowArrow,box:e.Box,boxes:e.Boxes,braces:e.Braces,brackets:e.Brackets,brain:e.Brain,"brain-circuit":e.BrainCircuit,"brain-cog":e.BrainCog,"brick-wall":e.BrickWall,"brick-wall-fire":e.BrickWallFire,"brick-wall-shield":e.BrickWallShield,briefcase:e.Briefcase,"briefcase-business":e.BriefcaseBusiness,"briefcase-conveyor-belt":e.BriefcaseConveyorBelt,"briefcase-medical":e.BriefcaseMedical,"bring-to-front":e.BringToFront,broccoli:e.Broccoli,broom:e.Broom,"broom-sparkles":e.BroomSparkles,brush:e.Brush,"brush-cleaning":e.BrushCleaning,bubbles:e.Bubbles,bug:e.Bug,"bug-off":e.BugOff,"bug-play":e.BugPlay,building:e.Building,"building-2":e.Building2,bus:e.Bus,"bus-front":e.BusFront};exports.default=t;
2
- //# sourceMappingURL=shard-b.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"shard-b.cjs","names":[],"sources":["../../../src/icons/generated/shard-b.ts"],"sourcesContent":["// GENERATED by scripts/gen-icons.mjs — do not edit.\n// Run `npm run gen:icons` after bumping lucide-react.\n\nimport {\n Baby,\n Backpack,\n Badge,\n BadgeAlert,\n BadgeCent,\n BadgeCheck,\n BadgeDollarSign,\n BadgeEuro,\n BadgeIndianRupee,\n BadgeInfo,\n BadgeJapaneseYen,\n BadgeMinus,\n BadgePercent,\n BadgePlus,\n BadgePoundSterling,\n BadgeQuestionMark,\n BadgeRussianRuble,\n BadgeSwissFranc,\n BadgeTurkishLira,\n BadgeX,\n BaggageClaim,\n Balloon,\n Ban,\n Banana,\n Bandage,\n Banknote,\n BanknoteArrowDown,\n BanknoteArrowUp,\n BanknoteCheck,\n BanknoteX,\n Barcode,\n Barrel,\n Baseline,\n Bath,\n Battery,\n BatteryCharging,\n BatteryFull,\n BatteryLow,\n BatteryMedium,\n BatteryPlus,\n BatteryWarning,\n Beaker,\n Bean,\n BeanOff,\n Bed,\n BedDouble,\n BedSingle,\n Beef,\n BeefOff,\n Beer,\n BeerOff,\n Bell,\n BellCheck,\n BellDot,\n BellElectric,\n BellMinus,\n BellOff,\n BellPlus,\n BellRing,\n BetweenHorizontalEnd,\n BetweenHorizontalStart,\n BetweenVerticalEnd,\n BetweenVerticalStart,\n BicepsFlexed,\n Bike,\n Binary,\n Binoculars,\n Biohazard,\n Bird,\n Birdhouse,\n Bitcoin,\n Blend,\n Blender,\n Blinds,\n Blocks,\n Bluetooth,\n BluetoothConnected,\n BluetoothOff,\n BluetoothSearching,\n Bold,\n Bolt,\n Bomb,\n Bone,\n BoneFracture,\n Book,\n BookA,\n BookAlert,\n BookAudio,\n BookCheck,\n BookCopy,\n BookDashed,\n BookDown,\n BookHeadphones,\n BookHeart,\n BookImage,\n BookKey,\n BookLock,\n BookMarked,\n BookMinus,\n BookOpen,\n BookOpenCheck,\n BookOpenText,\n BookPlus,\n BookSearch,\n BookText,\n BookType,\n BookUp,\n BookUp2,\n BookUser,\n BookX,\n Bookmark,\n BookmarkCheck,\n BookmarkMinus,\n BookmarkOff,\n BookmarkPlus,\n BookmarkX,\n BoomBox,\n Bot,\n BotMessageSquare,\n BotOff,\n BottleWine,\n BowArrow,\n Box,\n Boxes,\n Braces,\n Brackets,\n Brain,\n BrainCircuit,\n BrainCog,\n BrickWall,\n BrickWallFire,\n BrickWallShield,\n Briefcase,\n BriefcaseBusiness,\n BriefcaseConveyorBelt,\n BriefcaseMedical,\n BringToFront,\n Broccoli,\n Broom,\n BroomSparkles,\n Brush,\n BrushCleaning,\n Bubbles,\n Bug,\n BugOff,\n BugPlay,\n Building,\n Building2,\n Bus,\n BusFront,\n} from \"lucide-react\";\nimport type { LucideIcon } from \"lucide-react\";\n\n/** The 150 lucide icons whose slug starts with \"b\". */\nconst shard: Record<string, LucideIcon> = {\n baby: Baby,\n backpack: Backpack,\n badge: Badge,\n \"badge-alert\": BadgeAlert,\n \"badge-cent\": BadgeCent,\n \"badge-check\": BadgeCheck,\n \"badge-dollar-sign\": BadgeDollarSign,\n \"badge-euro\": BadgeEuro,\n \"badge-indian-rupee\": BadgeIndianRupee,\n \"badge-info\": BadgeInfo,\n \"badge-japanese-yen\": BadgeJapaneseYen,\n \"badge-minus\": BadgeMinus,\n \"badge-percent\": BadgePercent,\n \"badge-plus\": BadgePlus,\n \"badge-pound-sterling\": BadgePoundSterling,\n \"badge-question-mark\": BadgeQuestionMark,\n \"badge-russian-ruble\": BadgeRussianRuble,\n \"badge-swiss-franc\": BadgeSwissFranc,\n \"badge-turkish-lira\": BadgeTurkishLira,\n \"badge-x\": BadgeX,\n \"baggage-claim\": BaggageClaim,\n balloon: Balloon,\n ban: Ban,\n banana: Banana,\n bandage: Bandage,\n banknote: Banknote,\n \"banknote-arrow-down\": BanknoteArrowDown,\n \"banknote-arrow-up\": BanknoteArrowUp,\n \"banknote-check\": BanknoteCheck,\n \"banknote-x\": BanknoteX,\n barcode: Barcode,\n barrel: Barrel,\n baseline: Baseline,\n bath: Bath,\n battery: Battery,\n \"battery-charging\": BatteryCharging,\n \"battery-full\": BatteryFull,\n \"battery-low\": BatteryLow,\n \"battery-medium\": BatteryMedium,\n \"battery-plus\": BatteryPlus,\n \"battery-warning\": BatteryWarning,\n beaker: Beaker,\n bean: Bean,\n \"bean-off\": BeanOff,\n bed: Bed,\n \"bed-double\": BedDouble,\n \"bed-single\": BedSingle,\n beef: Beef,\n \"beef-off\": BeefOff,\n beer: Beer,\n \"beer-off\": BeerOff,\n bell: Bell,\n \"bell-check\": BellCheck,\n \"bell-dot\": BellDot,\n \"bell-electric\": BellElectric,\n \"bell-minus\": BellMinus,\n \"bell-off\": BellOff,\n \"bell-plus\": BellPlus,\n \"bell-ring\": BellRing,\n \"between-horizontal-end\": BetweenHorizontalEnd,\n \"between-horizontal-start\": BetweenHorizontalStart,\n \"between-vertical-end\": BetweenVerticalEnd,\n \"between-vertical-start\": BetweenVerticalStart,\n \"biceps-flexed\": BicepsFlexed,\n bike: Bike,\n binary: Binary,\n binoculars: Binoculars,\n biohazard: Biohazard,\n bird: Bird,\n birdhouse: Birdhouse,\n bitcoin: Bitcoin,\n blend: Blend,\n blender: Blender,\n blinds: Blinds,\n blocks: Blocks,\n bluetooth: Bluetooth,\n \"bluetooth-connected\": BluetoothConnected,\n \"bluetooth-off\": BluetoothOff,\n \"bluetooth-searching\": BluetoothSearching,\n bold: Bold,\n bolt: Bolt,\n bomb: Bomb,\n bone: Bone,\n \"bone-fracture\": BoneFracture,\n book: Book,\n \"book-a\": BookA,\n \"book-alert\": BookAlert,\n \"book-audio\": BookAudio,\n \"book-check\": BookCheck,\n \"book-copy\": BookCopy,\n \"book-dashed\": BookDashed,\n \"book-down\": BookDown,\n \"book-headphones\": BookHeadphones,\n \"book-heart\": BookHeart,\n \"book-image\": BookImage,\n \"book-key\": BookKey,\n \"book-lock\": BookLock,\n \"book-marked\": BookMarked,\n \"book-minus\": BookMinus,\n \"book-open\": BookOpen,\n \"book-open-check\": BookOpenCheck,\n \"book-open-text\": BookOpenText,\n \"book-plus\": BookPlus,\n \"book-search\": BookSearch,\n \"book-text\": BookText,\n \"book-type\": BookType,\n \"book-up\": BookUp,\n \"book-up-2\": BookUp2,\n \"book-user\": BookUser,\n \"book-x\": BookX,\n bookmark: Bookmark,\n \"bookmark-check\": BookmarkCheck,\n \"bookmark-minus\": BookmarkMinus,\n \"bookmark-off\": BookmarkOff,\n \"bookmark-plus\": BookmarkPlus,\n \"bookmark-x\": BookmarkX,\n \"boom-box\": BoomBox,\n bot: Bot,\n \"bot-message-square\": BotMessageSquare,\n \"bot-off\": BotOff,\n \"bottle-wine\": BottleWine,\n \"bow-arrow\": BowArrow,\n box: Box,\n boxes: Boxes,\n braces: Braces,\n brackets: Brackets,\n brain: Brain,\n \"brain-circuit\": BrainCircuit,\n \"brain-cog\": BrainCog,\n \"brick-wall\": BrickWall,\n \"brick-wall-fire\": BrickWallFire,\n \"brick-wall-shield\": BrickWallShield,\n briefcase: Briefcase,\n \"briefcase-business\": BriefcaseBusiness,\n \"briefcase-conveyor-belt\": BriefcaseConveyorBelt,\n \"briefcase-medical\": BriefcaseMedical,\n \"bring-to-front\": BringToFront,\n broccoli: Broccoli,\n broom: Broom,\n \"broom-sparkles\": BroomSparkles,\n brush: Brush,\n \"brush-cleaning\": BrushCleaning,\n bubbles: Bubbles,\n bug: Bug,\n \"bug-off\": BugOff,\n \"bug-play\": BugPlay,\n building: Building,\n \"building-2\": Building2,\n bus: Bus,\n \"bus-front\": BusFront,\n};\n\nexport default shard;\n"],"mappings":"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"}