tempest-react-sdk 0.46.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 (371) hide show
  1. package/dist/components/AppBar/use-sticky-body-warning.cjs +1 -1
  2. package/dist/components/AppBar/use-sticky-body-warning.cjs.map +1 -1
  3. package/dist/components/AppBar/use-sticky-body-warning.js +5 -8
  4. package/dist/components/AppBar/use-sticky-body-warning.js.map +1 -1
  5. package/dist/components/DataTable/use-dev-warnings.cjs +1 -1
  6. package/dist/components/DataTable/use-dev-warnings.cjs.map +1 -1
  7. package/dist/components/DataTable/use-dev-warnings.js +8 -7
  8. package/dist/components/DataTable/use-dev-warnings.js.map +1 -1
  9. package/dist/components/Sidebar/Sidebar.cjs +1 -1
  10. package/dist/components/Sidebar/Sidebar.cjs.map +1 -1
  11. package/dist/components/Sidebar/Sidebar.js +91 -38
  12. package/dist/components/Sidebar/Sidebar.js.map +1 -1
  13. package/dist/components/Sidebar/Sidebar.module.cjs +1 -1
  14. package/dist/components/Sidebar/Sidebar.module.cjs.map +1 -1
  15. package/dist/components/Sidebar/Sidebar.module.js +12 -8
  16. package/dist/components/Sidebar/Sidebar.module.js.map +1 -1
  17. package/dist/http/api-client.cjs +1 -1
  18. package/dist/http/api-client.cjs.map +1 -1
  19. package/dist/http/api-client.js +45 -31
  20. package/dist/http/api-client.js.map +1 -1
  21. package/dist/http/describe-api-error.cjs +1 -1
  22. package/dist/http/describe-api-error.cjs.map +1 -1
  23. package/dist/http/describe-api-error.js +11 -7
  24. package/dist/http/describe-api-error.js.map +1 -1
  25. package/dist/http/errors.cjs +1 -1
  26. package/dist/http/errors.cjs.map +1 -1
  27. package/dist/http/errors.js +38 -21
  28. package/dist/http/errors.js.map +1 -1
  29. package/dist/http/use-describe-api-error.cjs +1 -1
  30. package/dist/http/use-describe-api-error.cjs.map +1 -1
  31. package/dist/http/use-describe-api-error.js +14 -10
  32. package/dist/http/use-describe-api-error.js.map +1 -1
  33. package/dist/icons/Icon.cjs +1 -1
  34. package/dist/icons/Icon.cjs.map +1 -1
  35. package/dist/icons/Icon.js +17 -18
  36. package/dist/icons/Icon.js.map +1 -1
  37. package/dist/icons/IconPicker.cjs +2 -0
  38. package/dist/icons/IconPicker.cjs.map +1 -0
  39. package/dist/icons/IconPicker.js +49 -0
  40. package/dist/icons/IconPicker.js.map +1 -0
  41. package/dist/icons/IconPicker.module.cjs +2 -0
  42. package/dist/icons/IconPicker.module.cjs.map +1 -0
  43. package/dist/icons/IconPicker.module.js +10 -0
  44. package/dist/icons/IconPicker.module.js.map +1 -0
  45. package/dist/icons/alias.cjs +2 -0
  46. package/dist/icons/alias.cjs.map +1 -0
  47. package/dist/icons/alias.js +9 -0
  48. package/dist/icons/alias.js.map +1 -0
  49. package/dist/icons/generated/loaders.cjs +1 -1
  50. package/dist/icons/generated/loaders.cjs.map +1 -1
  51. package/dist/icons/generated/loaders.js +273 -28
  52. package/dist/icons/generated/loaders.js.map +1 -1
  53. package/dist/icons/generated/shard-00.cjs +2 -0
  54. package/dist/icons/generated/shard-00.cjs.map +1 -0
  55. package/dist/icons/generated/shard-00.js +48 -0
  56. package/dist/icons/generated/shard-00.js.map +1 -0
  57. package/dist/icons/generated/shard-01.cjs +2 -0
  58. package/dist/icons/generated/shard-01.cjs.map +1 -0
  59. package/dist/icons/generated/shard-01.js +48 -0
  60. package/dist/icons/generated/shard-01.js.map +1 -0
  61. package/dist/icons/generated/shard-02.cjs +2 -0
  62. package/dist/icons/generated/shard-02.cjs.map +1 -0
  63. package/dist/icons/generated/shard-02.js +48 -0
  64. package/dist/icons/generated/shard-02.js.map +1 -0
  65. package/dist/icons/generated/shard-03.cjs +2 -0
  66. package/dist/icons/generated/shard-03.cjs.map +1 -0
  67. package/dist/icons/generated/shard-03.js +48 -0
  68. package/dist/icons/generated/shard-03.js.map +1 -0
  69. package/dist/icons/generated/shard-04.cjs +2 -0
  70. package/dist/icons/generated/shard-04.cjs.map +1 -0
  71. package/dist/icons/generated/shard-04.js +48 -0
  72. package/dist/icons/generated/shard-04.js.map +1 -0
  73. package/dist/icons/generated/shard-05.cjs +2 -0
  74. package/dist/icons/generated/shard-05.cjs.map +1 -0
  75. package/dist/icons/generated/shard-05.js +48 -0
  76. package/dist/icons/generated/shard-05.js.map +1 -0
  77. package/dist/icons/generated/shard-06.cjs +2 -0
  78. package/dist/icons/generated/shard-06.cjs.map +1 -0
  79. package/dist/icons/generated/shard-06.js +48 -0
  80. package/dist/icons/generated/shard-06.js.map +1 -0
  81. package/dist/icons/generated/shard-07.cjs +2 -0
  82. package/dist/icons/generated/shard-07.cjs.map +1 -0
  83. package/dist/icons/generated/shard-07.js +48 -0
  84. package/dist/icons/generated/shard-07.js.map +1 -0
  85. package/dist/icons/generated/shard-08.cjs +2 -0
  86. package/dist/icons/generated/shard-08.cjs.map +1 -0
  87. package/dist/icons/generated/shard-08.js +48 -0
  88. package/dist/icons/generated/shard-08.js.map +1 -0
  89. package/dist/icons/generated/shard-09.cjs +2 -0
  90. package/dist/icons/generated/shard-09.cjs.map +1 -0
  91. package/dist/icons/generated/shard-09.js +48 -0
  92. package/dist/icons/generated/shard-09.js.map +1 -0
  93. package/dist/icons/generated/shard-10.cjs +2 -0
  94. package/dist/icons/generated/shard-10.cjs.map +1 -0
  95. package/dist/icons/generated/shard-10.js +48 -0
  96. package/dist/icons/generated/shard-10.js.map +1 -0
  97. package/dist/icons/generated/shard-11.cjs +2 -0
  98. package/dist/icons/generated/shard-11.cjs.map +1 -0
  99. package/dist/icons/generated/shard-11.js +48 -0
  100. package/dist/icons/generated/shard-11.js.map +1 -0
  101. package/dist/icons/generated/shard-12.cjs +2 -0
  102. package/dist/icons/generated/shard-12.cjs.map +1 -0
  103. package/dist/icons/generated/shard-12.js +48 -0
  104. package/dist/icons/generated/shard-12.js.map +1 -0
  105. package/dist/icons/generated/shard-13.cjs +2 -0
  106. package/dist/icons/generated/shard-13.cjs.map +1 -0
  107. package/dist/icons/generated/shard-13.js +48 -0
  108. package/dist/icons/generated/shard-13.js.map +1 -0
  109. package/dist/icons/generated/shard-14.cjs +2 -0
  110. package/dist/icons/generated/shard-14.cjs.map +1 -0
  111. package/dist/icons/generated/shard-14.js +48 -0
  112. package/dist/icons/generated/shard-14.js.map +1 -0
  113. package/dist/icons/generated/shard-15.cjs +2 -0
  114. package/dist/icons/generated/shard-15.cjs.map +1 -0
  115. package/dist/icons/generated/shard-15.js +48 -0
  116. package/dist/icons/generated/shard-15.js.map +1 -0
  117. package/dist/icons/generated/shard-16.cjs +2 -0
  118. package/dist/icons/generated/shard-16.cjs.map +1 -0
  119. package/dist/icons/generated/shard-16.js +48 -0
  120. package/dist/icons/generated/shard-16.js.map +1 -0
  121. package/dist/icons/generated/shard-17.cjs +2 -0
  122. package/dist/icons/generated/shard-17.cjs.map +1 -0
  123. package/dist/icons/generated/shard-17.js +48 -0
  124. package/dist/icons/generated/shard-17.js.map +1 -0
  125. package/dist/icons/generated/shard-18.cjs +2 -0
  126. package/dist/icons/generated/shard-18.cjs.map +1 -0
  127. package/dist/icons/generated/shard-18.js +48 -0
  128. package/dist/icons/generated/shard-18.js.map +1 -0
  129. package/dist/icons/generated/shard-19.cjs +2 -0
  130. package/dist/icons/generated/shard-19.cjs.map +1 -0
  131. package/dist/icons/generated/shard-19.js +48 -0
  132. package/dist/icons/generated/shard-19.js.map +1 -0
  133. package/dist/icons/generated/shard-20.cjs +2 -0
  134. package/dist/icons/generated/shard-20.cjs.map +1 -0
  135. package/dist/icons/generated/shard-20.js +48 -0
  136. package/dist/icons/generated/shard-20.js.map +1 -0
  137. package/dist/icons/generated/shard-21.cjs +2 -0
  138. package/dist/icons/generated/shard-21.cjs.map +1 -0
  139. package/dist/icons/generated/shard-21.js +48 -0
  140. package/dist/icons/generated/shard-21.js.map +1 -0
  141. package/dist/icons/generated/shard-22.cjs +2 -0
  142. package/dist/icons/generated/shard-22.cjs.map +1 -0
  143. package/dist/icons/generated/shard-22.js +48 -0
  144. package/dist/icons/generated/shard-22.js.map +1 -0
  145. package/dist/icons/generated/shard-23.cjs +2 -0
  146. package/dist/icons/generated/shard-23.cjs.map +1 -0
  147. package/dist/icons/generated/shard-23.js +48 -0
  148. package/dist/icons/generated/shard-23.js.map +1 -0
  149. package/dist/icons/generated/shard-24.cjs +2 -0
  150. package/dist/icons/generated/shard-24.cjs.map +1 -0
  151. package/dist/icons/generated/shard-24.js +48 -0
  152. package/dist/icons/generated/shard-24.js.map +1 -0
  153. package/dist/icons/generated/shard-25.cjs +2 -0
  154. package/dist/icons/generated/shard-25.cjs.map +1 -0
  155. package/dist/icons/generated/shard-25.js +48 -0
  156. package/dist/icons/generated/shard-25.js.map +1 -0
  157. package/dist/icons/generated/shard-26.cjs +2 -0
  158. package/dist/icons/generated/shard-26.cjs.map +1 -0
  159. package/dist/icons/generated/shard-26.js +48 -0
  160. package/dist/icons/generated/shard-26.js.map +1 -0
  161. package/dist/icons/generated/shard-27.cjs +2 -0
  162. package/dist/icons/generated/shard-27.cjs.map +1 -0
  163. package/dist/icons/generated/shard-27.js +48 -0
  164. package/dist/icons/generated/shard-27.js.map +1 -0
  165. package/dist/icons/generated/shard-28.cjs +2 -0
  166. package/dist/icons/generated/shard-28.cjs.map +1 -0
  167. package/dist/icons/generated/shard-28.js +48 -0
  168. package/dist/icons/generated/shard-28.js.map +1 -0
  169. package/dist/icons/generated/shard-29.cjs +2 -0
  170. package/dist/icons/generated/shard-29.cjs.map +1 -0
  171. package/dist/icons/generated/shard-29.js +48 -0
  172. package/dist/icons/generated/shard-29.js.map +1 -0
  173. package/dist/icons/generated/shard-30.cjs +2 -0
  174. package/dist/icons/generated/shard-30.cjs.map +1 -0
  175. package/dist/icons/generated/shard-30.js +48 -0
  176. package/dist/icons/generated/shard-30.js.map +1 -0
  177. package/dist/icons/generated/shard-31.cjs +2 -0
  178. package/dist/icons/generated/shard-31.cjs.map +1 -0
  179. package/dist/icons/generated/shard-31.js +48 -0
  180. package/dist/icons/generated/shard-31.js.map +1 -0
  181. package/dist/icons/generated/shard-32.cjs +2 -0
  182. package/dist/icons/generated/shard-32.cjs.map +1 -0
  183. package/dist/icons/generated/shard-32.js +48 -0
  184. package/dist/icons/generated/shard-32.js.map +1 -0
  185. package/dist/icons/generated/shard-33.cjs +2 -0
  186. package/dist/icons/generated/shard-33.cjs.map +1 -0
  187. package/dist/icons/generated/shard-33.js +48 -0
  188. package/dist/icons/generated/shard-33.js.map +1 -0
  189. package/dist/icons/generated/shard-34.cjs +2 -0
  190. package/dist/icons/generated/shard-34.cjs.map +1 -0
  191. package/dist/icons/generated/shard-34.js +48 -0
  192. package/dist/icons/generated/shard-34.js.map +1 -0
  193. package/dist/icons/generated/shard-35.cjs +2 -0
  194. package/dist/icons/generated/shard-35.cjs.map +1 -0
  195. package/dist/icons/generated/shard-35.js +48 -0
  196. package/dist/icons/generated/shard-35.js.map +1 -0
  197. package/dist/icons/generated/shard-36.cjs +2 -0
  198. package/dist/icons/generated/shard-36.cjs.map +1 -0
  199. package/dist/icons/generated/shard-36.js +48 -0
  200. package/dist/icons/generated/shard-36.js.map +1 -0
  201. package/dist/icons/generated/shard-37.cjs +2 -0
  202. package/dist/icons/generated/shard-37.cjs.map +1 -0
  203. package/dist/icons/generated/shard-37.js +48 -0
  204. package/dist/icons/generated/shard-37.js.map +1 -0
  205. package/dist/icons/generated/shard-38.cjs +2 -0
  206. package/dist/icons/generated/shard-38.cjs.map +1 -0
  207. package/dist/icons/generated/shard-38.js +48 -0
  208. package/dist/icons/generated/shard-38.js.map +1 -0
  209. package/dist/icons/generated/shard-39.cjs +2 -0
  210. package/dist/icons/generated/shard-39.cjs.map +1 -0
  211. package/dist/icons/generated/shard-39.js +48 -0
  212. package/dist/icons/generated/shard-39.js.map +1 -0
  213. package/dist/icons/generated/shard-40.cjs +2 -0
  214. package/dist/icons/generated/shard-40.cjs.map +1 -0
  215. package/dist/icons/generated/shard-40.js +48 -0
  216. package/dist/icons/generated/shard-40.js.map +1 -0
  217. package/dist/icons/generated/shard-41.cjs +2 -0
  218. package/dist/icons/generated/shard-41.cjs.map +1 -0
  219. package/dist/icons/generated/shard-41.js +48 -0
  220. package/dist/icons/generated/shard-41.js.map +1 -0
  221. package/dist/icons/generated/shard-42.cjs +2 -0
  222. package/dist/icons/generated/shard-42.cjs.map +1 -0
  223. package/dist/icons/generated/shard-42.js +48 -0
  224. package/dist/icons/generated/shard-42.js.map +1 -0
  225. package/dist/icons/generated/shard-43.cjs +2 -0
  226. package/dist/icons/generated/shard-43.cjs.map +1 -0
  227. package/dist/icons/generated/shard-43.js +48 -0
  228. package/dist/icons/generated/shard-43.js.map +1 -0
  229. package/dist/icons/generated/shard-44.cjs +2 -0
  230. package/dist/icons/generated/shard-44.cjs.map +1 -0
  231. package/dist/icons/generated/shard-44.js +15 -0
  232. package/dist/icons/generated/shard-44.js.map +1 -0
  233. package/dist/icons/material-symbols.cjs +1 -1
  234. package/dist/icons/material-symbols.cjs.map +1 -1
  235. package/dist/icons/material-symbols.js +109 -1
  236. package/dist/icons/material-symbols.js.map +1 -1
  237. package/dist/icons/normalize-icon-name.cjs +2 -0
  238. package/dist/icons/normalize-icon-name.cjs.map +1 -0
  239. package/dist/icons/normalize-icon-name.js +9 -0
  240. package/dist/icons/normalize-icon-name.js.map +1 -0
  241. package/dist/icons/shard-cache.cjs +1 -1
  242. package/dist/icons/shard-cache.cjs.map +1 -1
  243. package/dist/icons/shard-cache.js +85 -32
  244. package/dist/icons/shard-cache.js.map +1 -1
  245. package/dist/icons/validate-icon-name.cjs +2 -0
  246. package/dist/icons/validate-icon-name.cjs.map +1 -0
  247. package/dist/icons/validate-icon-name.js +11 -0
  248. package/dist/icons/validate-icon-name.js.map +1 -0
  249. package/dist/icons-virtual-id.d.ts +24 -0
  250. package/dist/icons-virtual.cjs +2 -0
  251. package/dist/icons-virtual.cjs.map +1 -0
  252. package/dist/icons-virtual.d.ts +30 -22
  253. package/dist/icons-virtual.js +6 -0
  254. package/dist/icons-virtual.js.map +1 -0
  255. package/dist/icons.cjs +1 -1
  256. package/dist/icons.d.ts +269 -32
  257. package/dist/icons.js +11 -7
  258. package/dist/styles.css +1 -1
  259. package/dist/tempest-react-sdk.cjs +1 -1
  260. package/dist/tempest-react-sdk.d.ts +95 -28
  261. package/dist/tempest-react-sdk.js +106 -106
  262. package/dist/utils/dev-mode.cjs +2 -0
  263. package/dist/utils/dev-mode.cjs.map +1 -0
  264. package/dist/utils/dev-mode.js +12 -0
  265. package/dist/utils/dev-mode.js.map +1 -0
  266. package/dist/vite/tempest-icons.cjs +4 -4
  267. package/dist/vite/tempest-icons.cjs.map +1 -1
  268. package/dist/vite/tempest-icons.js +26 -26
  269. package/dist/vite/tempest-icons.js.map +1 -1
  270. package/dist/vite.d.ts +1 -1
  271. package/package.json +5 -2
  272. package/dist/icons/generated/shard-a.cjs +0 -2
  273. package/dist/icons/generated/shard-a.cjs.map +0 -1
  274. package/dist/icons/generated/shard-a.js +0 -114
  275. package/dist/icons/generated/shard-a.js.map +0 -1
  276. package/dist/icons/generated/shard-b.cjs +0 -2
  277. package/dist/icons/generated/shard-b.cjs.map +0 -1
  278. package/dist/icons/generated/shard-b.js +0 -158
  279. package/dist/icons/generated/shard-b.js.map +0 -1
  280. package/dist/icons/generated/shard-c.cjs +0 -2
  281. package/dist/icons/generated/shard-c.cjs.map +0 -1
  282. package/dist/icons/generated/shard-c.js +0 -269
  283. package/dist/icons/generated/shard-c.js.map +0 -1
  284. package/dist/icons/generated/shard-d.cjs +0 -2
  285. package/dist/icons/generated/shard-d.cjs.map +0 -1
  286. package/dist/icons/generated/shard-d.js +0 -62
  287. package/dist/icons/generated/shard-d.js.map +0 -1
  288. package/dist/icons/generated/shard-e.cjs +0 -2
  289. package/dist/icons/generated/shard-e.cjs.map +0 -1
  290. package/dist/icons/generated/shard-e.js +0 -33
  291. package/dist/icons/generated/shard-e.js.map +0 -1
  292. package/dist/icons/generated/shard-f.cjs +0 -2
  293. package/dist/icons/generated/shard-f.cjs.map +0 -1
  294. package/dist/icons/generated/shard-f.js +0 -145
  295. package/dist/icons/generated/shard-f.js.map +0 -1
  296. package/dist/icons/generated/shard-g.cjs +0 -2
  297. package/dist/icons/generated/shard-g.cjs.map +0 -1
  298. package/dist/icons/generated/shard-g.js +0 -61
  299. package/dist/icons/generated/shard-g.js.map +0 -1
  300. package/dist/icons/generated/shard-h.cjs +0 -2
  301. package/dist/icons/generated/shard-h.cjs.map +0 -1
  302. package/dist/icons/generated/shard-h.js +0 -62
  303. package/dist/icons/generated/shard-h.js.map +0 -1
  304. package/dist/icons/generated/shard-i.cjs +0 -2
  305. package/dist/icons/generated/shard-i.cjs.map +0 -1
  306. package/dist/icons/generated/shard-i.js +0 -30
  307. package/dist/icons/generated/shard-i.js.map +0 -1
  308. package/dist/icons/generated/shard-j.cjs +0 -2
  309. package/dist/icons/generated/shard-j.cjs.map +0 -1
  310. package/dist/icons/generated/shard-j.js +0 -10
  311. package/dist/icons/generated/shard-j.js.map +0 -1
  312. package/dist/icons/generated/shard-k.cjs +0 -2
  313. package/dist/icons/generated/shard-k.cjs.map +0 -1
  314. package/dist/icons/generated/shard-k.js +0 -16
  315. package/dist/icons/generated/shard-k.js.map +0 -1
  316. package/dist/icons/generated/shard-l.cjs +0 -2
  317. package/dist/icons/generated/shard-l.cjs.map +0 -1
  318. package/dist/icons/generated/shard-l.js +0 -92
  319. package/dist/icons/generated/shard-l.js.map +0 -1
  320. package/dist/icons/generated/shard-m.cjs +0 -2
  321. package/dist/icons/generated/shard-m.cjs.map +0 -1
  322. package/dist/icons/generated/shard-m.js +0 -143
  323. package/dist/icons/generated/shard-m.js.map +0 -1
  324. package/dist/icons/generated/shard-n.cjs +0 -2
  325. package/dist/icons/generated/shard-n.cjs.map +0 -1
  326. package/dist/icons/generated/shard-n.js +0 -24
  327. package/dist/icons/generated/shard-n.js.map +0 -1
  328. package/dist/icons/generated/shard-o.cjs +0 -2
  329. package/dist/icons/generated/shard-o.cjs.map +0 -1
  330. package/dist/icons/generated/shard-o.js +0 -17
  331. package/dist/icons/generated/shard-o.js.map +0 -1
  332. package/dist/icons/generated/shard-p.cjs +0 -2
  333. package/dist/icons/generated/shard-p.cjs.map +0 -1
  334. package/dist/icons/generated/shard-p.js +0 -114
  335. package/dist/icons/generated/shard-p.js.map +0 -1
  336. package/dist/icons/generated/shard-q.cjs +0 -2
  337. package/dist/icons/generated/shard-q.cjs.map +0 -1
  338. package/dist/icons/generated/shard-q.js +0 -10
  339. package/dist/icons/generated/shard-q.js.map +0 -1
  340. package/dist/icons/generated/shard-r.cjs +0 -2
  341. package/dist/icons/generated/shard-r.cjs.map +0 -1
  342. package/dist/icons/generated/shard-r.js +0 -79
  343. package/dist/icons/generated/shard-r.js.map +0 -1
  344. package/dist/icons/generated/shard-s.cjs +0 -2
  345. package/dist/icons/generated/shard-s.cjs.map +0 -1
  346. package/dist/icons/generated/shard-s.js +0 -256
  347. package/dist/icons/generated/shard-s.js.map +0 -1
  348. package/dist/icons/generated/shard-t.cjs +0 -2
  349. package/dist/icons/generated/shard-t.cjs.map +0 -1
  350. package/dist/icons/generated/shard-t.js +0 -109
  351. package/dist/icons/generated/shard-t.js.map +0 -1
  352. package/dist/icons/generated/shard-u.cjs +0 -2
  353. package/dist/icons/generated/shard-u.cjs.map +0 -1
  354. package/dist/icons/generated/shard-u.js +0 -50
  355. package/dist/icons/generated/shard-u.js.map +0 -1
  356. package/dist/icons/generated/shard-v.cjs +0 -2
  357. package/dist/icons/generated/shard-v.cjs.map +0 -1
  358. package/dist/icons/generated/shard-v.js +0 -30
  359. package/dist/icons/generated/shard-v.js.map +0 -1
  360. package/dist/icons/generated/shard-w.cjs +0 -2
  361. package/dist/icons/generated/shard-w.cjs.map +0 -1
  362. package/dist/icons/generated/shard-w.js +0 -48
  363. package/dist/icons/generated/shard-w.js.map +0 -1
  364. package/dist/icons/generated/shard-x.cjs +0 -2
  365. package/dist/icons/generated/shard-x.cjs.map +0 -1
  366. package/dist/icons/generated/shard-x.js +0 -10
  367. package/dist/icons/generated/shard-x.js.map +0 -1
  368. package/dist/icons/generated/shard-z.cjs +0 -2
  369. package/dist/icons/generated/shard-z.cjs.map +0 -1
  370. package/dist/icons/generated/shard-z.js +0 -25
  371. package/dist/icons/generated/shard-z.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"use-describe-api-error.js","names":[],"sources":["../../src/http/use-describe-api-error.ts"],"sourcesContent":["import { useCallback } from \"react\";\n\nimport { useOptionalI18n } from \"../i18n/I18nProvider\";\nimport {\n API_ERROR_OFFLINE_KEY,\n DEFAULT_API_ERROR_STRINGS,\n describeApiError,\n} from \"./describe-api-error\";\n\n/**\n * {@link describeApiError} with its fixed sentences resolved through the active\n * `I18nProvider`.\n *\n * The funnel is not duplicated — this hook only supplies the strings and calls\n * the pure function. Which is also why both exist: the pure one runs in an\n * interceptor or a logger, where there is no React tree to read a context from,\n * and this one runs in a component without every caller passing translations\n * down by hand.\n *\n * Works with no provider at all: i18n is opt-in in this SDK, so a missing\n * provider — or a catalog that never defined `tempest.error.offline` — falls\n * back to the pt-BR default rather than crashing or printing the raw key.\n *\n * @example\n * const describe = useDescribeApiError();\n * const { mutate } = useMutation({\n * mutationFn: save,\n * onError: (error) => toast(describe(error, t(\"orders.saveFailed\"))),\n * });\n *\n * @returns A stable `(error, fallback) => string` function.\n */\nexport function useDescribeApiError(): (error: unknown, fallback: string) => string {\n const i18n = useOptionalI18n();\n const translate = i18n?.t;\n\n return useCallback(\n (error: unknown, fallback: string) => {\n const translated = translate?.(API_ERROR_OFFLINE_KEY);\n const offline =\n translated && translated !== API_ERROR_OFFLINE_KEY\n ? translated\n : DEFAULT_API_ERROR_STRINGS.offline;\n return describeApiError(error, fallback, { offline });\n },\n [translate],\n );\n}\n"],"mappings":";;;;AAgCA,SAAgB,IAAoE;CAEhF,IAAM,IADO,EACK,CAAA,EAAM;CAExB,OAAO,GACF,GAAgB,MAAqB;EAClC,IAAM,IAAa,IAAY,CAAqB,GAC9C,IACF,KAAc,MAAA,0BACR,IACA,EAA0B;EACpC,OAAO,EAAiB,GAAO,GAAU,EAAE,WAAQ,CAAC;CACxD,GACA,CAAC,CAAS,CACd;AACJ"}
1
+ {"version":3,"file":"use-describe-api-error.js","names":[],"sources":["../../src/http/use-describe-api-error.ts"],"sourcesContent":["import { useCallback } from \"react\";\n\nimport { useOptionalI18n } from \"../i18n/I18nProvider\";\nimport {\n API_ERROR_OFFLINE_KEY,\n API_ERROR_VALIDATION_KEY,\n DEFAULT_API_ERROR_STRINGS,\n describeApiError,\n} from \"./describe-api-error\";\n\n/**\n * {@link describeApiError} with its fixed sentences resolved through the active\n * `I18nProvider`.\n *\n * The funnel is not duplicated — this hook only supplies the strings and calls\n * the pure function. Which is also why both exist: the pure one runs in an\n * interceptor or a logger, where there is no React tree to read a context from,\n * and this one runs in a component without every caller passing translations\n * down by hand.\n *\n * Works with no provider at all: i18n is opt-in in this SDK, so a missing\n * provider — or a catalog that never defined `tempest.error.offline` — falls\n * back to the pt-BR default rather than crashing or printing the raw key.\n *\n * @example\n * const describe = useDescribeApiError();\n * const { mutate } = useMutation({\n * mutationFn: save,\n * onError: (error) => toast(describe(error, t(\"orders.saveFailed\"))),\n * });\n *\n * @returns A stable `(error, fallback) => string` function.\n */\n/**\n * Look one sentence up in the active catalog, falling back to the pt-BR default.\n *\n * `t` returns the key itself on a miss, so the identity check is what separates\n * \"the catalog answered\" from \"the catalog has no such key\" — printing\n * `tempest.error.validation` at a user is worse than printing pt-BR at them.\n *\n * @param translate - The active catalog's `t`, if any provider is mounted.\n * @param key - The translation key to look up.\n * @param fallbackKey - Which {@link DEFAULT_API_ERROR_STRINGS} entry to use on a miss.\n * @returns The sentence to hand to `describeApiError`.\n */\nfunction resolve(\n translate: ((key: string) => string) | undefined,\n key: string,\n fallbackKey: keyof typeof DEFAULT_API_ERROR_STRINGS,\n): string {\n const translated = translate?.(key);\n return translated && translated !== key ? translated : DEFAULT_API_ERROR_STRINGS[fallbackKey];\n}\n\nexport function useDescribeApiError(): (error: unknown, fallback: string) => string {\n const i18n = useOptionalI18n();\n const translate = i18n?.t;\n\n return useCallback(\n (error: unknown, fallback: string) => {\n return describeApiError(error, fallback, {\n offline: resolve(translate, API_ERROR_OFFLINE_KEY, \"offline\"),\n validation: resolve(translate, API_ERROR_VALIDATION_KEY, \"validation\"),\n });\n },\n [translate],\n );\n}\n"],"mappings":";;;;AA6CA,SAAS,EACL,GACA,GACA,GACM;CACN,IAAM,IAAa,IAAY,CAAG;CAClC,OAAO,KAAc,MAAe,IAAM,IAAa,EAA0B;AACrF;AAEA,SAAgB,IAAoE;CAEhF,IAAM,IADO,EACK,CAAA,EAAM;CAExB,OAAO,GACF,GAAgB,MACN,EAAiB,GAAO,GAAU;EACrC,SAAS,EAAQ,GAAW,GAAuB,SAAS;EAC5D,YAAY,EAAQ,GAAW,GAA0B,YAAY;CACzE,CAAC,GAEL,CAAC,CAAS,CACd;AACJ"}
@@ -1,2 +1,2 @@
1
- const e=require("./icon-context.cjs"),t=require("./shard-cache.cjs"),n=require("./use-icon.cjs");let r=require("react");function i({name:i,size:o,strokeWidth:c,fallback:l=null,...u}){let d=e.useIconContext(),f=n.useIcon(i);return f?(0,r.createElement)(f,{size:o??d?.size,strokeWidth:c??d?.strokeWidth,...u}):(a()&&t.iconStatus(i)===`missing`&&s(i),l)}function a(){return!1}var o=new Set;function s(e){o.has(e)||(o.add(e),console.warn(`[tempest-react-sdk] <Icon name="${e}" /> — no such lucide icon. Slugs are kebab-case ("circle-alert", not "CircleAlert"); check against \`iconNames\`.`))}exports.Icon=i;
1
+ const e=require("../utils/dev-mode.cjs"),t=require("./icon-context.cjs"),n=require("./normalize-icon-name.cjs"),r=require("./shard-cache.cjs"),i=require("./use-icon.cjs");let a=require("react");function o({name:o,icon:s,size:l,strokeWidth:u,fallback:d=null,normalize:f=!0,...p}){let m=t.useIconContext(),h=o===void 0?void 0:f?n.normalizeIconName(o):o,g=i.useIcon(h),_=s??g;return _?(0,a.createElement)(_,{size:l??m?.size,strokeWidth:u??m?.strokeWidth,...p}):(e.isDevBuild()&&o!==void 0&&h!==void 0&&r.iconStatus(h)===`missing`&&c(o),d)}var s=new Set;function c(e){s.has(e)||(s.add(e),console.warn(`[tempest-react-sdk] <Icon name="${e}" /> — no such lucide icon. Slugs are kebab-case ("circle-alert", not "CircleAlert"); check against \`iconNames\`.`))}exports.Icon=o;
2
2
  //# sourceMappingURL=Icon.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Icon.cjs","names":[],"sources":["../../src/icons/Icon.tsx"],"sourcesContent":["import { createElement, type ReactNode, type SVGProps } from \"react\";\n\nimport type { IconName } from \"./generated/icon-name\";\nimport { useIconContext } from \"./icon-context\";\nimport { iconStatus } from \"./shard-cache\";\nimport { useIcon } from \"./use-icon\";\n\nexport interface IconProps extends Omit<SVGProps<SVGSVGElement>, \"ref\"> {\n /**\n * The lucide slug, kebab-case: `\"save\"`, `\"trash-2\"`, `\"circle-alert\"`.\n *\n * Typed as the union of every slug lucide ships, so a typo is a compile\n * error — while still accepting a plain `string` for the case this component\n * exists for: a name that arrives from an API, a CMS or a config table.\n */\n name: IconName | (string & {});\n /** Width and height in px. Defaults to the provider's value, then lucide's `24`. */\n size?: number | string;\n /** Stroke width. Defaults to the provider's value, then lucide's `2`. */\n strokeWidth?: number;\n /**\n * Rendered while the icon's shard is in flight, and for a slug that does not\n * exist at all. Defaults to nothing.\n *\n * Pass a same-sized placeholder when the surrounding layout would otherwise\n * shift. Note that a slug already in the registry or the cache never renders\n * this — it resolves during render.\n */\n fallback?: ReactNode;\n}\n\n/**\n * Render a lucide icon by slug.\n *\n * All ~2000 lucide icons are addressable, without the cost that makes\n * `lucide-react`'s own `DynamicIcon` unusable: its icon map holds a dynamic\n * `import()` per icon, so a bundler has to emit ~2000 chunk boundaries and the\n * browser floods with requests. Here a slug the app wrote as a literal is\n * resolved from a static registry, and a slug only known at runtime pulls a\n * single shard covering every icon sharing its initial letter.\n *\n * An unknown slug renders `fallback` (nothing, by default) and warns in dev only\n * — it never throws, because a bad name from an API must not take down the tree.\n *\n * @example\n * <Icon name=\"save\" size={18} />\n * <Icon name={row.iconSlug} fallback={<span className=\"skeleton\" />} />\n */\nexport function Icon({ name, size, strokeWidth, fallback = null, ...rest }: IconProps): ReactNode {\n const context = useIconContext();\n const resolved = useIcon(name);\n\n if (!resolved) {\n if (isDev() && iconStatus(name) === \"missing\") warnUnknownIcon(name);\n return fallback;\n }\n\n return createElement(resolved, {\n size: size ?? context?.size,\n strokeWidth: strokeWidth ?? context?.strokeWidth,\n ...rest,\n });\n}\n\n/**\n * Whether the bundle was built for development.\n *\n * Guarded because the SDK also runs where `import.meta.env` does not exist — a\n * service-worker context, a Node test runner, a build-time script.\n */\nfunction isDev(): boolean {\n return Boolean(import.meta.env?.DEV);\n}\n\nconst warnedSlugs = new Set<string>();\n\n/**\n * Warn once per unknown slug.\n *\n * Once, because `<Icon>` re-renders and a warning per render would bury the\n * console; the set is never cleared, since a slug that does not exist will not\n * start existing within the life of the page.\n *\n * @param name - The slug that resolved to nothing.\n */\nfunction warnUnknownIcon(name: string): void {\n if (warnedSlugs.has(name)) return;\n warnedSlugs.add(name);\n console.warn(\n `[tempest-react-sdk] <Icon name=\"${name}\" /> — no such lucide icon. ` +\n `Slugs are kebab-case (\"circle-alert\", not \"CircleAlert\"); check against \\`iconNames\\`.`,\n );\n}\n"],"mappings":"wHAgDA,SAAgB,EAAK,CAAE,OAAM,OAAM,cAAa,WAAW,KAAM,GAAG,GAA8B,CAC9F,IAAM,EAAU,EAAA,eAAe,EACzB,EAAW,EAAA,QAAQ,CAAI,EAO7B,OALK,GAKL,EAAO,EAAA,cAAA,CAAc,EAAU,CAC3B,KAAM,GAAQ,GAAS,KACvB,YAAa,GAAe,GAAS,YACrC,GAAG,CACP,CAAC,GARO,EAAM,GAAK,EAAA,WAAW,CAAI,IAAM,WAAW,EAAgB,CAAI,EAC5D,EAQf,CAQA,SAAS,GAAiB,CACtB,MAAO,CAAA,CACX,CAEA,IAAM,EAAc,IAAI,IAWxB,SAAS,EAAgB,EAAoB,CACrC,EAAY,IAAI,CAAI,IACxB,EAAY,IAAI,CAAI,EACpB,QAAQ,KACJ,mCAAmC,EAAK,mHAE5C,EACJ"}
1
+ {"version":3,"file":"Icon.cjs","names":[],"sources":["../../src/icons/Icon.tsx"],"sourcesContent":["import { createElement, type ReactNode, type SVGProps } from \"react\";\nimport type { LucideIcon } from \"lucide-react\";\n\nimport type { IconName } from \"./generated/icon-name\";\nimport { useIconContext } from \"./icon-context\";\nimport { normalizeIconName } from \"./normalize-icon-name\";\nimport { iconStatus } from \"./shard-cache\";\nimport { useIcon } from \"./use-icon\";\nimport { isDevBuild } from \"../utils/dev-mode\";\n\ninterface IconBaseProps extends Omit<SVGProps<SVGSVGElement>, \"ref\" | \"name\"> {\n /** Width and height in px. Defaults to the provider's value, then lucide's `24`. */\n size?: number | string;\n /** Stroke width. Defaults to the provider's value, then lucide's `2`. */\n strokeWidth?: number;\n /**\n * Rendered while the icon's shard is in flight, and for a slug that does not\n * exist at all. Defaults to nothing.\n *\n * Pass a same-sized placeholder when the surrounding layout would otherwise\n * shift. Note that a slug already in the registry or the cache never renders\n * this — it resolves during render.\n */\n fallback?: ReactNode;\n /**\n * Clean up `name` before looking it up. Default `true`.\n *\n * A stored `icon_code` arrives dirty — `shopping_cart`, `\" Save\"`, a slug\n * lucide deprecated two releases ago — and normalizing is what makes those\n * render instead of falling back. `false` asks for a strict lookup, for the\n * case where you want an unexpected spelling to be visible rather than\n * quietly repaired.\n *\n * Ignored when the icon is passed as a component.\n */\n normalize?: boolean;\n}\n\n/**\n * Address the icon by slug — the reason this component exists.\n *\n * The slug is typed as the union of every name lucide ships, so a typo is a\n * compile error, while still accepting a plain `string` for the case that\n * motivates the whole module: a name arriving from an API, a CMS or a config\n * table.\n */\ninterface IconByNameProps extends IconBaseProps {\n name: IconName | (string & {});\n icon?: never;\n}\n\n/**\n * Address the icon by component, for a call site that already imported it.\n *\n * No lookup, no registry, no shard: the component is rendered as passed. It is\n * there so a screen mixing literal icons with data-driven ones can keep using one\n * component instead of alternating between `<Icon name>` and `<Wrench />`, which\n * is what makes the shared `size`/`strokeWidth` defaults apply to both.\n */\ninterface IconByComponentProps extends IconBaseProps {\n icon: LucideIcon;\n name?: never;\n}\n\nexport type IconProps = IconByNameProps | IconByComponentProps;\n\n/**\n * Render a lucide icon by slug.\n *\n * All ~2000 lucide icons are addressable, without the cost that makes\n * `lucide-react`'s own `DynamicIcon` unusable: its icon map holds a dynamic\n * `import()` per icon, so a bundler has to emit ~2000 chunk boundaries and the\n * browser floods with requests. Here a slug the app wrote as a literal is\n * resolved from a static registry, and a slug only known at runtime pulls a\n * single shard covering every icon sharing its initial letter.\n *\n * An unknown slug renders `fallback` (nothing, by default) and warns in dev only\n * — it never throws, because a bad name from an API must not take down the tree.\n *\n * `name` is normalized before the lookup, so a stored `icon_code` renders whether\n * it was written `shopping_cart`, `\" Save\"` or under a slug lucide has since\n * deprecated. Pass `normalize={false}` for a strict lookup.\n *\n * @example\n * <Icon name=\"save\" size={18} />\n * <Icon name={row.iconSlug} fallback={<span className=\"skeleton\" />} />\n * <Icon icon={Wrench} size={18} />\n */\nexport function Icon({\n name,\n icon,\n size,\n strokeWidth,\n fallback = null,\n normalize = true,\n ...rest\n}: IconProps): ReactNode {\n const context = useIconContext();\n const slug = name === undefined ? undefined : normalize ? normalizeIconName(name) : name;\n const fromSlug = useIcon(slug);\n const resolved = icon ?? fromSlug;\n\n if (!resolved) {\n if (isDevBuild() && name !== undefined && slug !== undefined) {\n if (iconStatus(slug) === \"missing\") warnUnknownIcon(name);\n }\n return fallback;\n }\n\n return createElement(resolved, {\n size: size ?? context?.size,\n strokeWidth: strokeWidth ?? context?.strokeWidth,\n ...rest,\n });\n}\n\nconst warnedSlugs = new Set<string>();\n\n/**\n * Warn once per unknown slug.\n *\n * Once, because `<Icon>` re-renders and a warning per render would bury the\n * console; the set is never cleared, since a slug that does not exist will not\n * start existing within the life of the page.\n *\n * Reports the name **as written**, not the normalized slug: the reader is the\n * developer who typed it, and `\"CircleAlert\"` is a far more useful thing to see in\n * the console than the `\"circlealert\"` it normalizes to.\n *\n * @param name - The slug that resolved to nothing, as passed.\n */\nfunction warnUnknownIcon(name: string): void {\n if (warnedSlugs.has(name)) return;\n warnedSlugs.add(name);\n console.warn(\n `[tempest-react-sdk] <Icon name=\"${name}\" /> — no such lucide icon. ` +\n `Slugs are kebab-case (\"circle-alert\", not \"CircleAlert\"); check against \\`iconNames\\`.`,\n );\n}\n"],"mappings":"kMAwFA,SAAgB,EAAK,CACjB,OACA,OACA,OACA,cACA,WAAW,KACX,YAAY,GACZ,GAAG,GACkB,CACrB,IAAM,EAAU,EAAA,eAAe,EACzB,EAAO,IAAS,IAAA,GAAY,IAAA,GAAY,EAAY,EAAA,kBAAkB,CAAI,EAAI,EAC9E,EAAW,EAAA,QAAQ,CAAI,EACvB,EAAW,GAAQ,EASzB,OAPK,GAOL,EAAO,EAAA,cAAA,CAAc,EAAU,CAC3B,KAAM,GAAQ,GAAS,KACvB,YAAa,GAAe,GAAS,YACrC,GAAG,CACP,CAAC,GAVO,EAAA,WAAW,GAAK,IAAS,IAAA,IAAa,IAAS,IAAA,IAC3C,EAAA,WAAW,CAAI,IAAM,WAAW,EAAgB,CAAI,EAErD,EAQf,CAEA,IAAM,EAAc,IAAI,IAexB,SAAS,EAAgB,EAAoB,CACrC,EAAY,IAAI,CAAI,IACxB,EAAY,IAAI,CAAI,EACpB,QAAQ,KACJ,mCAAmC,EAAK,mHAE5C,EACJ"}
@@ -1,24 +1,23 @@
1
- import { useIconContext as e } from "./icon-context.js";
2
- import { iconStatus as t } from "./shard-cache.js";
3
- import { useIcon as n } from "./use-icon.js";
4
- import { createElement as r } from "react";
1
+ import { isDevBuild as e } from "../utils/dev-mode.js";
2
+ import { useIconContext as t } from "./icon-context.js";
3
+ import { normalizeIconName as n } from "./normalize-icon-name.js";
4
+ import { iconStatus as r } from "./shard-cache.js";
5
+ import { useIcon as i } from "./use-icon.js";
6
+ import { createElement as a } from "react";
5
7
  //#region src/icons/Icon.tsx
6
- function i({ name: i, size: o, strokeWidth: c, fallback: l = null, ...u }) {
7
- let d = e(), f = n(i);
8
- return f ? r(f, {
9
- size: o ?? d?.size,
10
- strokeWidth: c ?? d?.strokeWidth,
11
- ...u
12
- }) : (a() && t(i) === "missing" && s(i), l);
8
+ function o({ name: o, icon: s, size: l, strokeWidth: u, fallback: d = null, normalize: f = !0, ...p }) {
9
+ let m = t(), h = o === void 0 ? void 0 : f ? n(o) : o, g = i(h), _ = s ?? g;
10
+ return _ ? a(_, {
11
+ size: l ?? m?.size,
12
+ strokeWidth: u ?? m?.strokeWidth,
13
+ ...p
14
+ }) : (e() && o !== void 0 && h !== void 0 && r(h) === "missing" && c(o), d);
13
15
  }
14
- function a() {
15
- return !1;
16
- }
17
- var o = /* @__PURE__ */ new Set();
18
- function s(e) {
19
- o.has(e) || (o.add(e), console.warn(`[tempest-react-sdk] <Icon name="${e}" /> — no such lucide icon. Slugs are kebab-case ("circle-alert", not "CircleAlert"); check against \`iconNames\`.`));
16
+ var s = /* @__PURE__ */ new Set();
17
+ function c(e) {
18
+ s.has(e) || (s.add(e), console.warn(`[tempest-react-sdk] <Icon name="${e}" /> — no such lucide icon. Slugs are kebab-case ("circle-alert", not "CircleAlert"); check against \`iconNames\`.`));
20
19
  }
21
20
  //#endregion
22
- export { i as Icon };
21
+ export { o as Icon };
23
22
 
24
23
  //# sourceMappingURL=Icon.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Icon.js","names":[],"sources":["../../src/icons/Icon.tsx"],"sourcesContent":["import { createElement, type ReactNode, type SVGProps } from \"react\";\n\nimport type { IconName } from \"./generated/icon-name\";\nimport { useIconContext } from \"./icon-context\";\nimport { iconStatus } from \"./shard-cache\";\nimport { useIcon } from \"./use-icon\";\n\nexport interface IconProps extends Omit<SVGProps<SVGSVGElement>, \"ref\"> {\n /**\n * The lucide slug, kebab-case: `\"save\"`, `\"trash-2\"`, `\"circle-alert\"`.\n *\n * Typed as the union of every slug lucide ships, so a typo is a compile\n * error — while still accepting a plain `string` for the case this component\n * exists for: a name that arrives from an API, a CMS or a config table.\n */\n name: IconName | (string & {});\n /** Width and height in px. Defaults to the provider's value, then lucide's `24`. */\n size?: number | string;\n /** Stroke width. Defaults to the provider's value, then lucide's `2`. */\n strokeWidth?: number;\n /**\n * Rendered while the icon's shard is in flight, and for a slug that does not\n * exist at all. Defaults to nothing.\n *\n * Pass a same-sized placeholder when the surrounding layout would otherwise\n * shift. Note that a slug already in the registry or the cache never renders\n * this — it resolves during render.\n */\n fallback?: ReactNode;\n}\n\n/**\n * Render a lucide icon by slug.\n *\n * All ~2000 lucide icons are addressable, without the cost that makes\n * `lucide-react`'s own `DynamicIcon` unusable: its icon map holds a dynamic\n * `import()` per icon, so a bundler has to emit ~2000 chunk boundaries and the\n * browser floods with requests. Here a slug the app wrote as a literal is\n * resolved from a static registry, and a slug only known at runtime pulls a\n * single shard covering every icon sharing its initial letter.\n *\n * An unknown slug renders `fallback` (nothing, by default) and warns in dev only\n * — it never throws, because a bad name from an API must not take down the tree.\n *\n * @example\n * <Icon name=\"save\" size={18} />\n * <Icon name={row.iconSlug} fallback={<span className=\"skeleton\" />} />\n */\nexport function Icon({ name, size, strokeWidth, fallback = null, ...rest }: IconProps): ReactNode {\n const context = useIconContext();\n const resolved = useIcon(name);\n\n if (!resolved) {\n if (isDev() && iconStatus(name) === \"missing\") warnUnknownIcon(name);\n return fallback;\n }\n\n return createElement(resolved, {\n size: size ?? context?.size,\n strokeWidth: strokeWidth ?? context?.strokeWidth,\n ...rest,\n });\n}\n\n/**\n * Whether the bundle was built for development.\n *\n * Guarded because the SDK also runs where `import.meta.env` does not exist — a\n * service-worker context, a Node test runner, a build-time script.\n */\nfunction isDev(): boolean {\n return Boolean(import.meta.env?.DEV);\n}\n\nconst warnedSlugs = new Set<string>();\n\n/**\n * Warn once per unknown slug.\n *\n * Once, because `<Icon>` re-renders and a warning per render would bury the\n * console; the set is never cleared, since a slug that does not exist will not\n * start existing within the life of the page.\n *\n * @param name - The slug that resolved to nothing.\n */\nfunction warnUnknownIcon(name: string): void {\n if (warnedSlugs.has(name)) return;\n warnedSlugs.add(name);\n console.warn(\n `[tempest-react-sdk] <Icon name=\"${name}\" /> — no such lucide icon. ` +\n `Slugs are kebab-case (\"circle-alert\", not \"CircleAlert\"); check against \\`iconNames\\`.`,\n );\n}\n"],"mappings":";;;;;AAgDA,SAAgB,EAAK,EAAE,SAAM,SAAM,gBAAa,cAAW,MAAM,GAAG,KAA8B;CAC9F,IAAM,IAAU,EAAe,GACzB,IAAW,EAAQ,CAAI;CAO7B,OALK,IAKE,EAAc,GAAU;EAC3B,MAAM,KAAQ,GAAS;EACvB,aAAa,KAAe,GAAS;EACrC,GAAG;CACP,CAAC,KARO,EAAM,KAAK,EAAW,CAAI,MAAM,aAAW,EAAgB,CAAI,GAC5D;AAQf;AAQA,SAAS,IAAiB;CACtB,OAAO,CAAA;AACX;AAEA,IAAM,oBAAc,IAAI,IAAY;AAWpC,SAAS,EAAgB,GAAoB;CACrC,EAAY,IAAI,CAAI,MACxB,EAAY,IAAI,CAAI,GACpB,QAAQ,KACJ,mCAAmC,EAAK,mHAE5C;AACJ"}
1
+ {"version":3,"file":"Icon.js","names":[],"sources":["../../src/icons/Icon.tsx"],"sourcesContent":["import { createElement, type ReactNode, type SVGProps } from \"react\";\nimport type { LucideIcon } from \"lucide-react\";\n\nimport type { IconName } from \"./generated/icon-name\";\nimport { useIconContext } from \"./icon-context\";\nimport { normalizeIconName } from \"./normalize-icon-name\";\nimport { iconStatus } from \"./shard-cache\";\nimport { useIcon } from \"./use-icon\";\nimport { isDevBuild } from \"../utils/dev-mode\";\n\ninterface IconBaseProps extends Omit<SVGProps<SVGSVGElement>, \"ref\" | \"name\"> {\n /** Width and height in px. Defaults to the provider's value, then lucide's `24`. */\n size?: number | string;\n /** Stroke width. Defaults to the provider's value, then lucide's `2`. */\n strokeWidth?: number;\n /**\n * Rendered while the icon's shard is in flight, and for a slug that does not\n * exist at all. Defaults to nothing.\n *\n * Pass a same-sized placeholder when the surrounding layout would otherwise\n * shift. Note that a slug already in the registry or the cache never renders\n * this — it resolves during render.\n */\n fallback?: ReactNode;\n /**\n * Clean up `name` before looking it up. Default `true`.\n *\n * A stored `icon_code` arrives dirty — `shopping_cart`, `\" Save\"`, a slug\n * lucide deprecated two releases ago — and normalizing is what makes those\n * render instead of falling back. `false` asks for a strict lookup, for the\n * case where you want an unexpected spelling to be visible rather than\n * quietly repaired.\n *\n * Ignored when the icon is passed as a component.\n */\n normalize?: boolean;\n}\n\n/**\n * Address the icon by slug — the reason this component exists.\n *\n * The slug is typed as the union of every name lucide ships, so a typo is a\n * compile error, while still accepting a plain `string` for the case that\n * motivates the whole module: a name arriving from an API, a CMS or a config\n * table.\n */\ninterface IconByNameProps extends IconBaseProps {\n name: IconName | (string & {});\n icon?: never;\n}\n\n/**\n * Address the icon by component, for a call site that already imported it.\n *\n * No lookup, no registry, no shard: the component is rendered as passed. It is\n * there so a screen mixing literal icons with data-driven ones can keep using one\n * component instead of alternating between `<Icon name>` and `<Wrench />`, which\n * is what makes the shared `size`/`strokeWidth` defaults apply to both.\n */\ninterface IconByComponentProps extends IconBaseProps {\n icon: LucideIcon;\n name?: never;\n}\n\nexport type IconProps = IconByNameProps | IconByComponentProps;\n\n/**\n * Render a lucide icon by slug.\n *\n * All ~2000 lucide icons are addressable, without the cost that makes\n * `lucide-react`'s own `DynamicIcon` unusable: its icon map holds a dynamic\n * `import()` per icon, so a bundler has to emit ~2000 chunk boundaries and the\n * browser floods with requests. Here a slug the app wrote as a literal is\n * resolved from a static registry, and a slug only known at runtime pulls a\n * single shard covering every icon sharing its initial letter.\n *\n * An unknown slug renders `fallback` (nothing, by default) and warns in dev only\n * — it never throws, because a bad name from an API must not take down the tree.\n *\n * `name` is normalized before the lookup, so a stored `icon_code` renders whether\n * it was written `shopping_cart`, `\" Save\"` or under a slug lucide has since\n * deprecated. Pass `normalize={false}` for a strict lookup.\n *\n * @example\n * <Icon name=\"save\" size={18} />\n * <Icon name={row.iconSlug} fallback={<span className=\"skeleton\" />} />\n * <Icon icon={Wrench} size={18} />\n */\nexport function Icon({\n name,\n icon,\n size,\n strokeWidth,\n fallback = null,\n normalize = true,\n ...rest\n}: IconProps): ReactNode {\n const context = useIconContext();\n const slug = name === undefined ? undefined : normalize ? normalizeIconName(name) : name;\n const fromSlug = useIcon(slug);\n const resolved = icon ?? fromSlug;\n\n if (!resolved) {\n if (isDevBuild() && name !== undefined && slug !== undefined) {\n if (iconStatus(slug) === \"missing\") warnUnknownIcon(name);\n }\n return fallback;\n }\n\n return createElement(resolved, {\n size: size ?? context?.size,\n strokeWidth: strokeWidth ?? context?.strokeWidth,\n ...rest,\n });\n}\n\nconst warnedSlugs = new Set<string>();\n\n/**\n * Warn once per unknown slug.\n *\n * Once, because `<Icon>` re-renders and a warning per render would bury the\n * console; the set is never cleared, since a slug that does not exist will not\n * start existing within the life of the page.\n *\n * Reports the name **as written**, not the normalized slug: the reader is the\n * developer who typed it, and `\"CircleAlert\"` is a far more useful thing to see in\n * the console than the `\"circlealert\"` it normalizes to.\n *\n * @param name - The slug that resolved to nothing, as passed.\n */\nfunction warnUnknownIcon(name: string): void {\n if (warnedSlugs.has(name)) return;\n warnedSlugs.add(name);\n console.warn(\n `[tempest-react-sdk] <Icon name=\"${name}\" /> — no such lucide icon. ` +\n `Slugs are kebab-case (\"circle-alert\", not \"CircleAlert\"); check against \\`iconNames\\`.`,\n );\n}\n"],"mappings":";;;;;;;AAwFA,SAAgB,EAAK,EACjB,SACA,SACA,SACA,gBACA,cAAW,MACX,eAAY,IACZ,GAAG,KACkB;CACrB,IAAM,IAAU,EAAe,GACzB,IAAO,MAAS,KAAA,IAAY,KAAA,IAAY,IAAY,EAAkB,CAAI,IAAI,GAC9E,IAAW,EAAQ,CAAI,GACvB,IAAW,KAAQ;CASzB,OAPK,IAOE,EAAc,GAAU;EAC3B,MAAM,KAAQ,GAAS;EACvB,aAAa,KAAe,GAAS;EACrC,GAAG;CACP,CAAC,KAVO,EAAW,KAAK,MAAS,KAAA,KAAa,MAAS,KAAA,KAC3C,EAAW,CAAI,MAAM,aAAW,EAAgB,CAAI,GAErD;AAQf;AAEA,IAAM,oBAAc,IAAI,IAAY;AAepC,SAAS,EAAgB,GAAoB;CACrC,EAAY,IAAI,CAAI,MACxB,EAAY,IAAI,CAAI,GACpB,QAAQ,KACJ,mCAAmC,EAAK,mHAE5C;AACJ"}
@@ -0,0 +1,2 @@
1
+ const e=require("../utils/cn.cjs"),t=require("./generated/icon-names.cjs"),n=require("./normalize-icon-name.cjs"),r=require("./Icon.cjs"),i=require("./validate-icon-name.cjs"),a=require("./IconPicker.module.cjs");let o=require("react"),s=require("react/jsx-runtime");function c({value:c,onChange:l,limit:u=40,previewSize:d=20,invalidMessage:f,emptyPreview:p=null,className:m,...h}){let g=(0,o.useId)(),_=(0,o.useRef)(null),v=i.validateIconName(c,f),y=(0,o.useMemo)(()=>{let e=n.normalizeIconName(c);return(e===``?t.iconNames:t.iconNames.filter(t=>t.includes(e))).slice(0,u)},[c,u]);return(0,o.useEffect)(()=>{_.current?.setCustomValidity(v??``)},[v]),(0,s.jsxs)(`span`,{className:e.cn(a.default.picker,m),children:[(0,s.jsx)(`span`,{className:a.default.preview,"aria-hidden":`true`,children:v===void 0&&c.trim()!==``?(0,s.jsx)(r.Icon,{name:c,size:d,fallback:p}):p}),(0,s.jsx)(`input`,{...h,ref:_,type:`text`,className:a.default.input,list:g,value:c,"aria-invalid":v!==void 0||void 0,onChange:e=>l(n.normalizeIconName(e.target.value))}),(0,s.jsx)(`datalist`,{id:g,children:y.map(e=>(0,s.jsx)(`option`,{value:e},e))})]})}exports.IconPicker=c;
2
+ //# sourceMappingURL=IconPicker.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IconPicker.cjs","names":[],"sources":["../../src/icons/IconPicker.tsx"],"sourcesContent":["import { useEffect, useId, useMemo, useRef, type InputHTMLAttributes, type ReactNode } from \"react\";\n\nimport { cn } from \"../utils/cn\";\nimport { iconNames } from \"./generated/icon-names\";\nimport { Icon } from \"./Icon\";\nimport { normalizeIconName } from \"./normalize-icon-name\";\nimport { validateIconName } from \"./validate-icon-name\";\nimport styles from \"./IconPicker.module.css\";\n\n/**\n * @tempest-limits props-count — value/onChange are the field, limit/placeholder\n * the suggestion list, and previewSize/invalidMessage the two things a form\n * around it needs to restyle or translate.\n */\nexport interface IconPickerProps extends Omit<\n InputHTMLAttributes<HTMLInputElement>,\n \"value\" | \"onChange\" | \"list\" | \"type\"\n> {\n /** The chosen slug. Always canonical — see `onChange`. */\n value: string;\n /**\n * Fires with the **canonical** slug on every keystroke.\n *\n * Legacy spellings are normalized on the way out (`Shopping_Cart` →\n * `shopping-cart`, `alert-circle` → `circle-alert`), so what a form stores is\n * what `<Icon>` resolves without further cleanup.\n */\n onChange: (slug: string) => void;\n /**\n * How many suggestions to render. Default `40`.\n *\n * There are 2024 slugs, and building every one as an `<option>` on each\n * keystroke freezes the datalist — which is the reason this prop exists rather\n * than a \"show everything\" default.\n */\n limit?: number;\n /** Size of the preview glyph, in px. Default `20`. */\n previewSize?: number;\n /** Overrides the message shown for a slug that does not exist. */\n invalidMessage?: string;\n /** Rendered in the preview box while nothing valid is chosen. */\n emptyPreview?: ReactNode;\n}\n\n/**\n * An icon field: native autocomplete over every lucide slug, plus a preview.\n *\n * Every panel that lets someone choose an icon was rewriting this — filter the\n * list, cap the suggestions, build the `<datalist>`, and block submit when the\n * typed name does not exist. That last step is the one that matters: without it\n * an invalid value reaches the database and only shows up later as a missing icon\n * on every screen that renders the record.\n *\n * Validation is wired to the **native** form: the input carries a custom validity\n * message, so a plain `<form>` refuses to submit and the browser points at the\n * field. `validateIconName` is exported for react-hook-form and zod.\n *\n * Built on `<datalist>` rather than a custom listbox on purpose: keyboard,\n * screen-reader and mobile behaviour come from the platform, and the component\n * stays small enough that its cost is the slug list it has to import — ~7 KB\n * brotli, which only a picker pays.\n *\n * @example\n * const [icon, setIcon] = useState(\"\");\n *\n * <form onSubmit={save}>\n * <IconPicker value={icon} onChange={setIcon} required />\n * <button type=\"submit\">Salvar</button>\n * </form>\n */\nexport function IconPicker({\n value,\n onChange,\n limit = 40,\n previewSize = 20,\n invalidMessage,\n emptyPreview = null,\n className,\n ...rest\n}: IconPickerProps): ReactNode {\n const listId = useId();\n const input = useRef<HTMLInputElement>(null);\n const error = validateIconName(value, invalidMessage);\n\n const suggestions = useMemo(() => {\n const query = normalizeIconName(value);\n const matches = query === \"\" ? iconNames : iconNames.filter((name) => name.includes(query));\n return matches.slice(0, limit);\n }, [value, limit]);\n\n useEffect(() => {\n input.current?.setCustomValidity(error ?? \"\");\n }, [error]);\n\n return (\n <span className={cn(styles.picker, className)}>\n <span className={styles.preview} aria-hidden=\"true\">\n {error === undefined && value.trim() !== \"\" ? (\n <Icon name={value} size={previewSize} fallback={emptyPreview} />\n ) : (\n emptyPreview\n )}\n </span>\n <input\n {...rest}\n ref={input}\n type=\"text\"\n className={styles.input}\n list={listId}\n value={value}\n aria-invalid={error !== undefined || undefined}\n onChange={(event) => onChange(normalizeIconName(event.target.value))}\n />\n <datalist id={listId}>\n {suggestions.map((name) => (\n <option key={name} value={name} />\n ))}\n </datalist>\n </span>\n );\n}\n"],"mappings":"2QAsEA,SAAgB,EAAW,CACvB,QACA,WACA,QAAQ,GACR,cAAc,GACd,iBACA,eAAe,KACf,YACA,GAAG,GACwB,CAC3B,IAAM,GAAA,EAAS,EAAA,MAAA,CAAM,EACf,GAAA,EAAQ,EAAA,OAAA,CAAyB,IAAI,EACrC,EAAQ,EAAA,iBAAiB,EAAO,CAAc,EAE9C,GAAA,EAAc,EAAA,QAAA,KAAc,CAC9B,IAAM,EAAQ,EAAA,kBAAkB,CAAK,EAErC,OADgB,IAAU,GAAK,EAAA,UAAY,EAAA,UAAU,OAAQ,GAAS,EAAK,SAAS,CAAK,CAAC,EAAA,CAC3E,MAAM,EAAG,CAAK,CACjC,EAAG,CAAC,EAAO,CAAK,CAAC,EAMjB,OAJA,EAAA,EAAA,UAAA,KAAgB,CACZ,EAAM,SAAS,kBAAkB,GAAS,EAAE,CAChD,EAAG,CAAC,CAAK,CAAC,GAGN,EAAA,EAAA,KAAA,CAAC,OAAD,CAAM,UAAW,EAAA,GAAG,EAAA,QAAO,OAAQ,CAAS,EAA5C,SAAA,EACI,EAAA,EAAA,IAAA,CAAC,OAAD,CAAM,UAAW,EAAA,QAAO,QAAS,cAAY,OACxC,SAAA,IAAU,IAAA,IAAa,EAAM,KAAK,IAAM,IACrC,EAAA,EAAA,IAAA,CAAC,EAAA,KAAD,CAAM,KAAM,EAAO,KAAM,EAAa,SAAU,CAAe,CAAA,EAE/D,CAEF,CAAA,GACN,EAAA,EAAA,IAAA,CAAC,QAAD,CACI,GAAI,EACJ,IAAK,EACL,KAAK,OACL,UAAW,EAAA,QAAO,MAClB,KAAM,EACC,QACP,eAAc,IAAU,IAAA,IAAa,IAAA,GACrC,SAAW,GAAU,EAAS,EAAA,kBAAkB,EAAM,OAAO,KAAK,CAAC,CACtE,CAAA,GACD,EAAA,EAAA,IAAA,CAAC,WAAD,CAAU,GAAI,EACT,SAAA,EAAY,IAAK,IACd,EAAA,EAAA,IAAA,CAAC,SAAD,CAAmB,MAAO,CAAO,EAApB,CAAoB,CACpC,CACK,CAAA,CACR,GAEd"}
@@ -0,0 +1,49 @@
1
+ import { cn as e } from "../utils/cn.js";
2
+ import { iconNames as t } from "./generated/icon-names.js";
3
+ import { normalizeIconName as n } from "./normalize-icon-name.js";
4
+ import { Icon as r } from "./Icon.js";
5
+ import { validateIconName as i } from "./validate-icon-name.js";
6
+ import a from "./IconPicker.module.js";
7
+ import { useEffect as o, useId as s, useMemo as c, useRef as l } from "react";
8
+ import { jsx as u, jsxs as d } from "react/jsx-runtime";
9
+ //#region src/icons/IconPicker.tsx
10
+ function f({ value: f, onChange: p, limit: m = 40, previewSize: h = 20, invalidMessage: g, emptyPreview: _ = null, className: v, ...y }) {
11
+ let b = s(), x = l(null), S = i(f, g), C = c(() => {
12
+ let e = n(f);
13
+ return (e === "" ? t : t.filter((t) => t.includes(e))).slice(0, m);
14
+ }, [f, m]);
15
+ return o(() => {
16
+ x.current?.setCustomValidity(S ?? "");
17
+ }, [S]), /* @__PURE__ */ d("span", {
18
+ className: e(a.picker, v),
19
+ children: [
20
+ /* @__PURE__ */ u("span", {
21
+ className: a.preview,
22
+ "aria-hidden": "true",
23
+ children: S === void 0 && f.trim() !== "" ? /* @__PURE__ */ u(r, {
24
+ name: f,
25
+ size: h,
26
+ fallback: _
27
+ }) : _
28
+ }),
29
+ /* @__PURE__ */ u("input", {
30
+ ...y,
31
+ ref: x,
32
+ type: "text",
33
+ className: a.input,
34
+ list: b,
35
+ value: f,
36
+ "aria-invalid": S !== void 0 || void 0,
37
+ onChange: (e) => p(n(e.target.value))
38
+ }),
39
+ /* @__PURE__ */ u("datalist", {
40
+ id: b,
41
+ children: C.map((e) => /* @__PURE__ */ u("option", { value: e }, e))
42
+ })
43
+ ]
44
+ });
45
+ }
46
+ //#endregion
47
+ export { f as IconPicker };
48
+
49
+ //# sourceMappingURL=IconPicker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IconPicker.js","names":[],"sources":["../../src/icons/IconPicker.tsx"],"sourcesContent":["import { useEffect, useId, useMemo, useRef, type InputHTMLAttributes, type ReactNode } from \"react\";\n\nimport { cn } from \"../utils/cn\";\nimport { iconNames } from \"./generated/icon-names\";\nimport { Icon } from \"./Icon\";\nimport { normalizeIconName } from \"./normalize-icon-name\";\nimport { validateIconName } from \"./validate-icon-name\";\nimport styles from \"./IconPicker.module.css\";\n\n/**\n * @tempest-limits props-count — value/onChange are the field, limit/placeholder\n * the suggestion list, and previewSize/invalidMessage the two things a form\n * around it needs to restyle or translate.\n */\nexport interface IconPickerProps extends Omit<\n InputHTMLAttributes<HTMLInputElement>,\n \"value\" | \"onChange\" | \"list\" | \"type\"\n> {\n /** The chosen slug. Always canonical — see `onChange`. */\n value: string;\n /**\n * Fires with the **canonical** slug on every keystroke.\n *\n * Legacy spellings are normalized on the way out (`Shopping_Cart` →\n * `shopping-cart`, `alert-circle` → `circle-alert`), so what a form stores is\n * what `<Icon>` resolves without further cleanup.\n */\n onChange: (slug: string) => void;\n /**\n * How many suggestions to render. Default `40`.\n *\n * There are 2024 slugs, and building every one as an `<option>` on each\n * keystroke freezes the datalist — which is the reason this prop exists rather\n * than a \"show everything\" default.\n */\n limit?: number;\n /** Size of the preview glyph, in px. Default `20`. */\n previewSize?: number;\n /** Overrides the message shown for a slug that does not exist. */\n invalidMessage?: string;\n /** Rendered in the preview box while nothing valid is chosen. */\n emptyPreview?: ReactNode;\n}\n\n/**\n * An icon field: native autocomplete over every lucide slug, plus a preview.\n *\n * Every panel that lets someone choose an icon was rewriting this — filter the\n * list, cap the suggestions, build the `<datalist>`, and block submit when the\n * typed name does not exist. That last step is the one that matters: without it\n * an invalid value reaches the database and only shows up later as a missing icon\n * on every screen that renders the record.\n *\n * Validation is wired to the **native** form: the input carries a custom validity\n * message, so a plain `<form>` refuses to submit and the browser points at the\n * field. `validateIconName` is exported for react-hook-form and zod.\n *\n * Built on `<datalist>` rather than a custom listbox on purpose: keyboard,\n * screen-reader and mobile behaviour come from the platform, and the component\n * stays small enough that its cost is the slug list it has to import — ~7 KB\n * brotli, which only a picker pays.\n *\n * @example\n * const [icon, setIcon] = useState(\"\");\n *\n * <form onSubmit={save}>\n * <IconPicker value={icon} onChange={setIcon} required />\n * <button type=\"submit\">Salvar</button>\n * </form>\n */\nexport function IconPicker({\n value,\n onChange,\n limit = 40,\n previewSize = 20,\n invalidMessage,\n emptyPreview = null,\n className,\n ...rest\n}: IconPickerProps): ReactNode {\n const listId = useId();\n const input = useRef<HTMLInputElement>(null);\n const error = validateIconName(value, invalidMessage);\n\n const suggestions = useMemo(() => {\n const query = normalizeIconName(value);\n const matches = query === \"\" ? iconNames : iconNames.filter((name) => name.includes(query));\n return matches.slice(0, limit);\n }, [value, limit]);\n\n useEffect(() => {\n input.current?.setCustomValidity(error ?? \"\");\n }, [error]);\n\n return (\n <span className={cn(styles.picker, className)}>\n <span className={styles.preview} aria-hidden=\"true\">\n {error === undefined && value.trim() !== \"\" ? (\n <Icon name={value} size={previewSize} fallback={emptyPreview} />\n ) : (\n emptyPreview\n )}\n </span>\n <input\n {...rest}\n ref={input}\n type=\"text\"\n className={styles.input}\n list={listId}\n value={value}\n aria-invalid={error !== undefined || undefined}\n onChange={(event) => onChange(normalizeIconName(event.target.value))}\n />\n <datalist id={listId}>\n {suggestions.map((name) => (\n <option key={name} value={name} />\n ))}\n </datalist>\n </span>\n );\n}\n"],"mappings":";;;;;;;;;AAsEA,SAAgB,EAAW,EACvB,UACA,aACA,WAAQ,IACR,iBAAc,IACd,mBACA,kBAAe,MACf,cACA,GAAG,KACwB;CAC3B,IAAM,IAAS,EAAM,GACf,IAAQ,EAAyB,IAAI,GACrC,IAAQ,EAAiB,GAAO,CAAc,GAE9C,IAAc,QAAc;EAC9B,IAAM,IAAQ,EAAkB,CAAK;EAErC,QADgB,MAAU,KAAK,IAAY,EAAU,QAAQ,MAAS,EAAK,SAAS,CAAK,CAAC,EAAA,CAC3E,MAAM,GAAG,CAAK;CACjC,GAAG,CAAC,GAAO,CAAK,CAAC;CAMjB,OAJA,QAAgB;EACZ,EAAM,SAAS,kBAAkB,KAAS,EAAE;CAChD,GAAG,CAAC,CAAK,CAAC,GAGN,kBAAC,QAAD;EAAM,WAAW,EAAG,EAAO,QAAQ,CAAS;EAA5C,UAAA;GACI,kBAAC,QAAD;IAAM,WAAW,EAAO;IAAS,eAAY;IACxC,UAAA,MAAU,KAAA,KAAa,EAAM,KAAK,MAAM,KACrC,kBAAC,GAAD;KAAM,MAAM;KAAO,MAAM;KAAa,UAAU;IAAe,CAAA,IAE/D;GAEF,CAAA;GACN,kBAAC,SAAD;IACI,GAAI;IACJ,KAAK;IACL,MAAK;IACL,WAAW,EAAO;IAClB,MAAM;IACC;IACP,gBAAc,MAAU,KAAA,KAAa,KAAA;IACrC,WAAW,MAAU,EAAS,EAAkB,EAAM,OAAO,KAAK,CAAC;GACtE,CAAA;GACD,kBAAC,YAAD;IAAU,IAAI;IACT,UAAA,EAAY,KAAK,MACd,kBAAC,UAAD,EAAmB,OAAO,EAAO,GAApB,CAAoB,CACpC;GACK,CAAA;EACR;;AAEd"}
@@ -0,0 +1,2 @@
1
+ var e=`tempest_picker_TP94V`,t=`tempest_preview_lo-Gg`,n=`tempest_input_5dPK-`,r={picker:e,preview:t,input:n};exports.default=r,exports.input=n,exports.picker=e,exports.preview=t;
2
+ //# sourceMappingURL=IconPicker.module.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IconPicker.module.cjs","names":[],"sources":["../../src/icons/IconPicker.module.css"],"sourcesContent":[".picker {\n display: inline-flex;\n align-items: center;\n gap: var(--tempest-space-2);\n font-family: var(--tempest-font-sans);\n}\n\n.preview {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex: 0 0 auto;\n width: 34px;\n height: 34px;\n border: 1px solid var(--tempest-border);\n border-radius: var(--tempest-radius-md);\n background: var(--tempest-surface);\n color: var(--tempest-text);\n}\n\n.input {\n flex: 1 1 auto;\n min-width: 0;\n padding: var(--tempest-space-2) var(--tempest-space-3);\n border: 1px solid var(--tempest-border);\n border-radius: var(--tempest-radius-md);\n background: var(--tempest-bg);\n color: var(--tempest-text);\n font-family: inherit;\n font-size: var(--tempest-text-sm);\n min-height: 34px;\n}\n\n.input:focus-visible {\n outline: 2px solid var(--tempest-primary);\n outline-offset: 1px;\n}\n\n.input[aria-invalid=\"true\"] {\n border-color: var(--tempest-danger);\n}\n"],"mappings":""}
@@ -0,0 +1,10 @@
1
+ //#region src/icons/IconPicker.module.css
2
+ var e = "tempest_picker_TP94V", t = "tempest_preview_lo-Gg", n = "tempest_input_5dPK-", r = {
3
+ picker: e,
4
+ preview: t,
5
+ input: n
6
+ };
7
+ //#endregion
8
+ export { r as default, n as input, e as picker, t as preview };
9
+
10
+ //# sourceMappingURL=IconPicker.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IconPicker.module.js","names":[],"sources":["../../src/icons/IconPicker.module.css"],"sourcesContent":[".picker {\n display: inline-flex;\n align-items: center;\n gap: var(--tempest-space-2);\n font-family: var(--tempest-font-sans);\n}\n\n.preview {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex: 0 0 auto;\n width: 34px;\n height: 34px;\n border: 1px solid var(--tempest-border);\n border-radius: var(--tempest-radius-md);\n background: var(--tempest-surface);\n color: var(--tempest-text);\n}\n\n.input {\n flex: 1 1 auto;\n min-width: 0;\n padding: var(--tempest-space-2) var(--tempest-space-3);\n border: 1px solid var(--tempest-border);\n border-radius: var(--tempest-radius-md);\n background: var(--tempest-bg);\n color: var(--tempest-text);\n font-family: inherit;\n font-size: var(--tempest-text-sm);\n min-height: 34px;\n}\n\n.input:focus-visible {\n outline: 2px solid var(--tempest-primary);\n outline-offset: 1px;\n}\n\n.input[aria-invalid=\"true\"] {\n border-color: var(--tempest-danger);\n}\n"],"mappings":""}
@@ -0,0 +1,2 @@
1
+ const e=require("./generated/aliases.cjs");function t(t){return e.iconAliases[t]??t}exports.resolveIconAlias=t;
2
+ //# sourceMappingURL=alias.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alias.cjs","names":[],"sources":["../../src/icons/alias.ts"],"sourcesContent":["import { iconAliases } from \"./generated/aliases\";\n\n/**\n * Map a slug to the canonical slug that owns the icon.\n *\n * Lucide keeps 257 deprecated aliases (`alert-circle` → `circle-alert`), and a\n * slug persisted in a database years ago is exactly the case this feature exists\n * for, so an alias must keep resolving after a lucide bump renames it. Resolution\n * happens before the shard lookup, since only canonical slugs are sharded.\n *\n * Its own module, not part of `shard-cache`: everything that merely *names* an\n * icon needs this — `normalizeIconName`, `validateIconName`, a form checking a\n * value before submit — and none of that needs the shard loader index. Sharing a\n * module made a validator that never renders anything drag in all 45 shard\n * modules.\n *\n * @param slug - Any icon slug, canonical or deprecated.\n * @returns The canonical slug.\n */\nexport function resolveIconAlias(slug: string): string {\n return iconAliases[slug] ?? slug;\n}\n"],"mappings":"2CAmBA,SAAgB,EAAiB,EAAsB,CACnD,OAAO,EAAA,YAAY,IAAS,CAChC"}
@@ -0,0 +1,9 @@
1
+ import { iconAliases as e } from "./generated/aliases.js";
2
+ //#region src/icons/alias.ts
3
+ function t(t) {
4
+ return e[t] ?? t;
5
+ }
6
+ //#endregion
7
+ export { t as resolveIconAlias };
8
+
9
+ //# sourceMappingURL=alias.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alias.js","names":[],"sources":["../../src/icons/alias.ts"],"sourcesContent":["import { iconAliases } from \"./generated/aliases\";\n\n/**\n * Map a slug to the canonical slug that owns the icon.\n *\n * Lucide keeps 257 deprecated aliases (`alert-circle` → `circle-alert`), and a\n * slug persisted in a database years ago is exactly the case this feature exists\n * for, so an alias must keep resolving after a lucide bump renames it. Resolution\n * happens before the shard lookup, since only canonical slugs are sharded.\n *\n * Its own module, not part of `shard-cache`: everything that merely *names* an\n * icon needs this — `normalizeIconName`, `validateIconName`, a form checking a\n * value before submit — and none of that needs the shard loader index. Sharing a\n * module made a validator that never renders anything drag in all 45 shard\n * modules.\n *\n * @param slug - Any icon slug, canonical or deprecated.\n * @returns The canonical slug.\n */\nexport function resolveIconAlias(slug: string): string {\n return iconAliases[slug] ?? slug;\n}\n"],"mappings":";;AAmBA,SAAgB,EAAiB,GAAsB;CACnD,OAAO,EAAY,MAAS;AAChC"}
@@ -1,2 +1,2 @@
1
- var e={a:()=>Promise.resolve().then(()=>require("./shard-a.cjs")),b:()=>Promise.resolve().then(()=>require("./shard-b.cjs")),c:()=>Promise.resolve().then(()=>require("./shard-c.cjs")),d:()=>Promise.resolve().then(()=>require("./shard-d.cjs")),e:()=>Promise.resolve().then(()=>require("./shard-e.cjs")),f:()=>Promise.resolve().then(()=>require("./shard-f.cjs")),g:()=>Promise.resolve().then(()=>require("./shard-g.cjs")),h:()=>Promise.resolve().then(()=>require("./shard-h.cjs")),i:()=>Promise.resolve().then(()=>require("./shard-i.cjs")),j:()=>Promise.resolve().then(()=>require("./shard-j.cjs")),k:()=>Promise.resolve().then(()=>require("./shard-k.cjs")),l:()=>Promise.resolve().then(()=>require("./shard-l.cjs")),m:()=>Promise.resolve().then(()=>require("./shard-m.cjs")),n:()=>Promise.resolve().then(()=>require("./shard-n.cjs")),o:()=>Promise.resolve().then(()=>require("./shard-o.cjs")),p:()=>Promise.resolve().then(()=>require("./shard-p.cjs")),q:()=>Promise.resolve().then(()=>require("./shard-q.cjs")),r:()=>Promise.resolve().then(()=>require("./shard-r.cjs")),s:()=>Promise.resolve().then(()=>require("./shard-s.cjs")),t:()=>Promise.resolve().then(()=>require("./shard-t.cjs")),u:()=>Promise.resolve().then(()=>require("./shard-u.cjs")),v:()=>Promise.resolve().then(()=>require("./shard-v.cjs")),w:()=>Promise.resolve().then(()=>require("./shard-w.cjs")),x:()=>Promise.resolve().then(()=>require("./shard-x.cjs")),z:()=>Promise.resolve().then(()=>require("./shard-z.cjs"))};exports.shardLoaders=e;
1
+ var e=[{id:`shard-00`,from:`a-arrow-down`,size:40,load:()=>Promise.resolve().then(()=>require("./shard-00.cjs"))},{id:`shard-01`,from:`amphora`,size:40,load:()=>Promise.resolve().then(()=>require("./shard-01.cjs"))},{id:`shard-02`,from:`arrow-right-left`,size:40,load:()=>Promise.resolve().then(()=>require("./shard-02.cjs"))},{id:`shard-03`,from:`badge-pound-sterling`,size:40,load:()=>Promise.resolve().then(()=>require("./shard-03.cjs"))},{id:`shard-04`,from:`bell-electric`,size:40,load:()=>Promise.resolve().then(()=>require("./shard-04.cjs"))},{id:`shard-05`,from:`book-image`,size:40,load:()=>Promise.resolve().then(()=>require("./shard-05.cjs"))},{id:`shard-06`,from:`briefcase-conveyor-belt`,size:40,load:()=>Promise.resolve().then(()=>require("./shard-06.cjs"))},{id:`shard-07`,from:`calendar-x`,size:40,load:()=>Promise.resolve().then(()=>require("./shard-07.cjs"))},{id:`shard-08`,from:`chart-line`,size:40,load:()=>Promise.resolve().then(()=>require("./shard-08.cjs"))},{id:`shard-09`,from:`circle-alert`,size:40,load:()=>Promise.resolve().then(()=>require("./shard-09.cjs"))},{id:`shard-10`,from:`circle-small`,size:40,load:()=>Promise.resolve().then(()=>require("./shard-10.cjs"))},{id:`shard-11`,from:`clock-fading`,size:40,load:()=>Promise.resolve().then(()=>require("./shard-11.cjs"))},{id:`shard-12`,from:`concierge-bell`,size:40,load:()=>Promise.resolve().then(()=>require("./shard-12.cjs"))},{id:`shard-13`,from:`database-arrow-up`,size:40,load:()=>Promise.resolve().then(()=>require("./shard-13.cjs"))},{id:`shard-14`,from:`download`,size:40,load:()=>Promise.resolve().then(()=>require("./shard-14.cjs"))},{id:`shard-15`,from:`face-slightly-frowning`,size:40,load:()=>Promise.resolve().then(()=>require("./shard-15.cjs"))},{id:`shard-16`,from:`file-pen`,size:40,load:()=>Promise.resolve().then(()=>require("./shard-16.cjs"))},{id:`shard-17`,from:`flashlight-off`,size:40,load:()=>Promise.resolve().then(()=>require("./shard-17.cjs"))},{id:`shard-18`,from:`folder-up`,size:40,load:()=>Promise.resolve().then(()=>require("./shard-18.cjs"))},{id:`shard-19`,from:`git-pull-request-closed`,size:40,load:()=>Promise.resolve().then(()=>require("./shard-19.cjs"))},{id:`shard-20`,from:`hard-drive-download`,size:40,load:()=>Promise.resolve().then(()=>require("./shard-20.cjs"))},{id:`shard-21`,from:`ice-cream-bowl`,size:40,load:()=>Promise.resolve().then(()=>require("./shard-21.cjs"))},{id:`shard-22`,from:`languages`,size:40,load:()=>Promise.resolve().then(()=>require("./shard-22.cjs"))},{id:`shard-23`,from:`list-checks`,size:40,load:()=>Promise.resolve().then(()=>require("./shard-23.cjs"))},{id:`shard-24`,from:`mail-minus`,size:40,load:()=>Promise.resolve().then(()=>require("./shard-24.cjs"))},{id:`shard-25`,from:`message-circle-dashed`,size:40,load:()=>Promise.resolve().then(()=>require("./shard-25.cjs"))},{id:`shard-26`,from:`minimize-2`,size:40,load:()=>Promise.resolve().then(()=>require("./shard-26.cjs"))},{id:`shard-27`,from:`move-horizontal`,size:40,load:()=>Promise.resolve().then(()=>require("./shard-27.cjs"))},{id:`shard-28`,from:`package-open`,size:40,load:()=>Promise.resolve().then(()=>require("./shard-28.cjs"))},{id:`shard-29`,from:`pen`,size:40,load:()=>Promise.resolve().then(()=>require("./shard-29.cjs"))},{id:`shard-30`,from:`play-off`,size:40,load:()=>Promise.resolve().then(()=>require("./shard-30.cjs"))},{id:`shard-31`,from:`receipt-japanese-yen`,size:40,load:()=>Promise.resolve().then(()=>require("./shard-31.cjs"))},{id:`shard-32`,from:`rotate-ccw-key`,size:40,load:()=>Promise.resolve().then(()=>require("./shard-32.cjs"))},{id:`shard-33`,from:`scan-text`,size:40,load:()=>Promise.resolve().then(()=>require("./shard-33.cjs"))},{id:`shard-34`,from:`shield-ellipsis`,size:40,load:()=>Promise.resolve().then(()=>require("./shard-34.cjs"))},{id:`shard-35`,from:`smartphone`,size:40,load:()=>Promise.resolve().then(()=>require("./shard-35.cjs"))},{id:`shard-36`,from:`square-arrow-up-right`,size:40,load:()=>Promise.resolve().then(()=>require("./shard-36.cjs"))},{id:`shard-37`,from:`square-power`,size:40,load:()=>Promise.resolve().then(()=>require("./shard-37.cjs"))},{id:`shard-38`,from:`sticky-note-x`,size:40,load:()=>Promise.resolve().then(()=>require("./shard-38.cjs"))},{id:`shard-39`,from:`tally-3`,size:40,load:()=>Promise.resolve().then(()=>require("./shard-39.cjs"))},{id:`shard-40`,from:`timer-reset`,size:40,load:()=>Promise.resolve().then(()=>require("./shard-40.cjs"))},{id:`shard-41`,from:`tv-minimal`,size:40,load:()=>Promise.resolve().then(()=>require("./shard-41.cjs"))},{id:`shard-42`,from:`user-x`,size:40,load:()=>Promise.resolve().then(()=>require("./shard-42.cjs"))},{id:`shard-43`,from:`waves-ladder`,size:40,load:()=>Promise.resolve().then(()=>require("./shard-43.cjs"))},{id:`shard-44`,from:`zodiac-pisces`,size:7,load:()=>Promise.resolve().then(()=>require("./shard-44.cjs"))}];exports.iconShards=e;
2
2
  //# sourceMappingURL=loaders.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"loaders.cjs","names":[],"sources":["../../../src/icons/generated/loaders.ts"],"sourcesContent":["// GENERATED by scripts/gen-icons.mjs — do not edit.\n// Run `npm run gen:icons` after bumping lucide-react.\n\nimport type { LucideIcon } from \"lucide-react\";\n\n/**\n * One dynamic import per initial letter.\n *\n * These are the only references to the shard modules, which is what keeps them\n * out of whatever chunk imports `Icon`: a bundler that sees no static edge to a\n * shard emits it as an async chunk fetched on first use.\n */\nexport const shardLoaders: Record<string, () => Promise<{ default: Record<string, LucideIcon> }>> =\n {\n a: () => import(\"./shard-a\"),\n b: () => import(\"./shard-b\"),\n c: () => import(\"./shard-c\"),\n d: () => import(\"./shard-d\"),\n e: () => import(\"./shard-e\"),\n f: () => import(\"./shard-f\"),\n g: () => import(\"./shard-g\"),\n h: () => import(\"./shard-h\"),\n i: () => import(\"./shard-i\"),\n j: () => import(\"./shard-j\"),\n k: () => import(\"./shard-k\"),\n l: () => import(\"./shard-l\"),\n m: () => import(\"./shard-m\"),\n n: () => import(\"./shard-n\"),\n o: () => import(\"./shard-o\"),\n p: () => import(\"./shard-p\"),\n q: () => import(\"./shard-q\"),\n r: () => import(\"./shard-r\"),\n s: () => import(\"./shard-s\"),\n t: () => import(\"./shard-t\"),\n u: () => import(\"./shard-u\"),\n v: () => import(\"./shard-v\"),\n w: () => import(\"./shard-w\"),\n x: () => import(\"./shard-x\"),\n z: () => import(\"./shard-z\"),\n };\n"],"mappings":"AAYA,IAAa,EACT,CACI,MAAA,QAAA,QAAA,CAAA,CAAA,SAAA,QAAS,eAAA,CAAA,EACT,MAAA,QAAA,QAAA,CAAA,CAAA,SAAA,QAAS,eAAA,CAAA,EACT,MAAA,QAAA,QAAA,CAAA,CAAA,SAAA,QAAS,eAAA,CAAA,EACT,MAAA,QAAA,QAAA,CAAA,CAAA,SAAA,QAAS,eAAA,CAAA,EACT,MAAA,QAAA,QAAA,CAAA,CAAA,SAAA,QAAS,eAAA,CAAA,EACT,MAAA,QAAA,QAAA,CAAA,CAAA,SAAA,QAAS,eAAA,CAAA,EACT,MAAA,QAAA,QAAA,CAAA,CAAA,SAAA,QAAS,eAAA,CAAA,EACT,MAAA,QAAA,QAAA,CAAA,CAAA,SAAA,QAAS,eAAA,CAAA,EACT,MAAA,QAAA,QAAA,CAAA,CAAA,SAAA,QAAS,eAAA,CAAA,EACT,MAAA,QAAA,QAAA,CAAA,CAAA,SAAA,QAAS,eAAA,CAAA,EACT,MAAA,QAAA,QAAA,CAAA,CAAA,SAAA,QAAS,eAAA,CAAA,EACT,MAAA,QAAA,QAAA,CAAA,CAAA,SAAA,QAAS,eAAA,CAAA,EACT,MAAA,QAAA,QAAA,CAAA,CAAA,SAAA,QAAS,eAAA,CAAA,EACT,MAAA,QAAA,QAAA,CAAA,CAAA,SAAA,QAAS,eAAA,CAAA,EACT,MAAA,QAAA,QAAA,CAAA,CAAA,SAAA,QAAS,eAAA,CAAA,EACT,MAAA,QAAA,QAAA,CAAA,CAAA,SAAA,QAAS,eAAA,CAAA,EACT,MAAA,QAAA,QAAA,CAAA,CAAA,SAAA,QAAS,eAAA,CAAA,EACT,MAAA,QAAA,QAAA,CAAA,CAAA,SAAA,QAAS,eAAA,CAAA,EACT,MAAA,QAAA,QAAA,CAAA,CAAA,SAAA,QAAS,eAAA,CAAA,EACT,MAAA,QAAA,QAAA,CAAA,CAAA,SAAA,QAAS,eAAA,CAAA,EACT,MAAA,QAAA,QAAA,CAAA,CAAA,SAAA,QAAS,eAAA,CAAA,EACT,MAAA,QAAA,QAAA,CAAA,CAAA,SAAA,QAAS,eAAA,CAAA,EACT,MAAA,QAAA,QAAA,CAAA,CAAA,SAAA,QAAS,eAAA,CAAA,EACT,MAAA,QAAA,QAAA,CAAA,CAAA,SAAA,QAAS,eAAA,CAAA,EACT,MAAA,QAAA,QAAA,CAAA,CAAA,SAAA,QAAS,eAAA,CAAA,CACb"}
1
+ {"version":3,"file":"loaders.cjs","names":[],"sources":["../../../src/icons/generated/loaders.ts"],"sourcesContent":["// GENERATED by scripts/gen-icons.mjs — do not edit.\n// Run `npm run gen:icons` after bumping lucide-react.\n\nimport type { LucideIcon } from \"lucide-react\";\n\n/** One lazily fetched range of icons. */\nexport interface IconShard {\n /** The chunk's module id — what shows up in a bundle and in a 404. */\n id: string;\n /** First slug in the range, in sort order. Its lower bound. */\n from: string;\n /** How many icons the range holds. */\n size: number;\n /** The dynamic import for the chunk. */\n load: () => Promise<{ default: Record<string, LucideIcon> }>;\n}\n\n/**\n * Every shard, in slug order.\n *\n * These are the only references to the shard modules, which is what keeps them\n * out of whatever chunk imports `Icon`: a bundler that sees no static edge to a\n * shard emits it as an async chunk fetched on first use.\n *\n * Sorted by `from`, so the owning shard for a slug is a binary search over this\n * array — 45 comparisons' worth of index instead of the 2000-entry\n * slug→chunk map that makes lucide's own `dynamicIconImports` cost 120 KB in the\n * main chunk.\n */\nexport const iconShards: readonly IconShard[] = [\n { id: \"shard-00\", from: \"a-arrow-down\", size: 40, load: () => import(\"./shard-00\") },\n { id: \"shard-01\", from: \"amphora\", size: 40, load: () => import(\"./shard-01\") },\n { id: \"shard-02\", from: \"arrow-right-left\", size: 40, load: () => import(\"./shard-02\") },\n { id: \"shard-03\", from: \"badge-pound-sterling\", size: 40, load: () => import(\"./shard-03\") },\n { id: \"shard-04\", from: \"bell-electric\", size: 40, load: () => import(\"./shard-04\") },\n { id: \"shard-05\", from: \"book-image\", size: 40, load: () => import(\"./shard-05\") },\n { id: \"shard-06\", from: \"briefcase-conveyor-belt\", size: 40, load: () => import(\"./shard-06\") },\n { id: \"shard-07\", from: \"calendar-x\", size: 40, load: () => import(\"./shard-07\") },\n { id: \"shard-08\", from: \"chart-line\", size: 40, load: () => import(\"./shard-08\") },\n { id: \"shard-09\", from: \"circle-alert\", size: 40, load: () => import(\"./shard-09\") },\n { id: \"shard-10\", from: \"circle-small\", size: 40, load: () => import(\"./shard-10\") },\n { id: \"shard-11\", from: \"clock-fading\", size: 40, load: () => import(\"./shard-11\") },\n { id: \"shard-12\", from: \"concierge-bell\", size: 40, load: () => import(\"./shard-12\") },\n { id: \"shard-13\", from: \"database-arrow-up\", size: 40, load: () => import(\"./shard-13\") },\n { id: \"shard-14\", from: \"download\", size: 40, load: () => import(\"./shard-14\") },\n { id: \"shard-15\", from: \"face-slightly-frowning\", size: 40, load: () => import(\"./shard-15\") },\n { id: \"shard-16\", from: \"file-pen\", size: 40, load: () => import(\"./shard-16\") },\n { id: \"shard-17\", from: \"flashlight-off\", size: 40, load: () => import(\"./shard-17\") },\n { id: \"shard-18\", from: \"folder-up\", size: 40, load: () => import(\"./shard-18\") },\n { id: \"shard-19\", from: \"git-pull-request-closed\", size: 40, load: () => import(\"./shard-19\") },\n { id: \"shard-20\", from: \"hard-drive-download\", size: 40, load: () => import(\"./shard-20\") },\n { id: \"shard-21\", from: \"ice-cream-bowl\", size: 40, load: () => import(\"./shard-21\") },\n { id: \"shard-22\", from: \"languages\", size: 40, load: () => import(\"./shard-22\") },\n { id: \"shard-23\", from: \"list-checks\", size: 40, load: () => import(\"./shard-23\") },\n { id: \"shard-24\", from: \"mail-minus\", size: 40, load: () => import(\"./shard-24\") },\n { id: \"shard-25\", from: \"message-circle-dashed\", size: 40, load: () => import(\"./shard-25\") },\n { id: \"shard-26\", from: \"minimize-2\", size: 40, load: () => import(\"./shard-26\") },\n { id: \"shard-27\", from: \"move-horizontal\", size: 40, load: () => import(\"./shard-27\") },\n { id: \"shard-28\", from: \"package-open\", size: 40, load: () => import(\"./shard-28\") },\n { id: \"shard-29\", from: \"pen\", size: 40, load: () => import(\"./shard-29\") },\n { id: \"shard-30\", from: \"play-off\", size: 40, load: () => import(\"./shard-30\") },\n { id: \"shard-31\", from: \"receipt-japanese-yen\", size: 40, load: () => import(\"./shard-31\") },\n { id: \"shard-32\", from: \"rotate-ccw-key\", size: 40, load: () => import(\"./shard-32\") },\n { id: \"shard-33\", from: \"scan-text\", size: 40, load: () => import(\"./shard-33\") },\n { id: \"shard-34\", from: \"shield-ellipsis\", size: 40, load: () => import(\"./shard-34\") },\n { id: \"shard-35\", from: \"smartphone\", size: 40, load: () => import(\"./shard-35\") },\n { id: \"shard-36\", from: \"square-arrow-up-right\", size: 40, load: () => import(\"./shard-36\") },\n { id: \"shard-37\", from: \"square-power\", size: 40, load: () => import(\"./shard-37\") },\n { id: \"shard-38\", from: \"sticky-note-x\", size: 40, load: () => import(\"./shard-38\") },\n { id: \"shard-39\", from: \"tally-3\", size: 40, load: () => import(\"./shard-39\") },\n { id: \"shard-40\", from: \"timer-reset\", size: 40, load: () => import(\"./shard-40\") },\n { id: \"shard-41\", from: \"tv-minimal\", size: 40, load: () => import(\"./shard-41\") },\n { id: \"shard-42\", from: \"user-x\", size: 40, load: () => import(\"./shard-42\") },\n { id: \"shard-43\", from: \"waves-ladder\", size: 40, load: () => import(\"./shard-43\") },\n { id: \"shard-44\", from: \"zodiac-pisces\", size: 7, load: () => import(\"./shard-44\") },\n];\n"],"mappings":"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"}