@blueshift-gg/ui-components 0.1.49 → 0.1.51

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 (1189) hide show
  1. package/README.md +2 -2
  2. package/dist/Alert.cjs +71 -0
  3. package/dist/Alert.cjs.map +1 -0
  4. package/dist/Alert.d.cts +32 -0
  5. package/dist/Alert.d.cts.map +1 -0
  6. package/dist/Alert.d.mts +29 -16
  7. package/dist/Alert.d.mts.map +1 -0
  8. package/dist/Alert.mjs +64 -91
  9. package/dist/Alert.mjs.map +1 -1
  10. package/dist/Avatar.cjs +43 -0
  11. package/dist/Avatar.cjs.map +1 -0
  12. package/dist/Avatar.d.cts +26 -0
  13. package/dist/Avatar.d.cts.map +1 -0
  14. package/dist/Avatar.d.mts +23 -14
  15. package/dist/Avatar.d.mts.map +1 -0
  16. package/dist/Avatar.mjs +36 -61
  17. package/dist/Avatar.mjs.map +1 -1
  18. package/dist/Badge.cjs +51 -0
  19. package/dist/Badge.cjs.map +1 -0
  20. package/dist/Badge.d.cts +31 -0
  21. package/dist/Badge.d.cts.map +1 -0
  22. package/dist/Badge.d.mts +28 -17
  23. package/dist/Badge.d.mts.map +1 -0
  24. package/dist/Badge.mjs +44 -77
  25. package/dist/Badge.mjs.map +1 -1
  26. package/dist/Banner.cjs +53 -0
  27. package/dist/Banner.cjs.map +1 -0
  28. package/dist/Banner.d.cts +28 -0
  29. package/dist/Banner.d.cts.map +1 -0
  30. package/dist/Banner.d.mts +25 -15
  31. package/dist/Banner.d.mts.map +1 -0
  32. package/dist/Banner.mjs +46 -58
  33. package/dist/Banner.mjs.map +1 -1
  34. package/dist/Button.cjs +71 -0
  35. package/dist/Button.cjs.map +1 -0
  36. package/dist/Button.d.cts +53 -0
  37. package/dist/Button.d.cts.map +1 -0
  38. package/dist/Button.d.mts +49 -27
  39. package/dist/Button.d.mts.map +1 -0
  40. package/dist/Button.mjs +64 -143
  41. package/dist/Button.mjs.map +1 -1
  42. package/dist/Checkbox.cjs +59 -0
  43. package/dist/Checkbox.cjs.map +1 -0
  44. package/dist/Checkbox.d.cts +20 -0
  45. package/dist/Checkbox.d.cts.map +1 -0
  46. package/dist/Checkbox.d.mts +17 -9
  47. package/dist/Checkbox.d.mts.map +1 -0
  48. package/dist/Checkbox.mjs +52 -52
  49. package/dist/Checkbox.mjs.map +1 -1
  50. package/dist/Codeblock.cjs +95 -0
  51. package/dist/Codeblock.cjs.map +1 -0
  52. package/dist/Codeblock.d.cts +24 -0
  53. package/dist/Codeblock.d.cts.map +1 -0
  54. package/dist/Codeblock.d.mts +21 -12
  55. package/dist/Codeblock.d.mts.map +1 -0
  56. package/dist/Codeblock.mjs +88 -88
  57. package/dist/Codeblock.mjs.map +1 -1
  58. package/dist/CrossHair.cjs +175 -0
  59. package/dist/CrossHair.cjs.map +1 -0
  60. package/dist/CrossHair.d.cts +32 -0
  61. package/dist/CrossHair.d.cts.map +1 -0
  62. package/dist/CrossHair.d.mts +29 -15
  63. package/dist/CrossHair.d.mts.map +1 -0
  64. package/dist/CrossHair.mjs +168 -256
  65. package/dist/CrossHair.mjs.map +1 -1
  66. package/dist/DecryptText.cjs +89 -0
  67. package/dist/DecryptText.cjs.map +1 -0
  68. package/dist/DecryptText.d.cts +21 -0
  69. package/dist/DecryptText.d.cts.map +1 -0
  70. package/dist/DecryptText.d.mts +18 -9
  71. package/dist/DecryptText.d.mts.map +1 -0
  72. package/dist/DecryptText.mjs +82 -94
  73. package/dist/DecryptText.mjs.map +1 -1
  74. package/dist/Difficulty.cjs +175 -0
  75. package/dist/Difficulty.cjs.map +1 -0
  76. package/dist/Difficulty.d.cts +16 -0
  77. package/dist/Difficulty.d.cts.map +1 -0
  78. package/dist/Difficulty.d.mts +13 -7
  79. package/dist/Difficulty.d.mts.map +1 -0
  80. package/dist/Difficulty.mjs +167 -133
  81. package/dist/Difficulty.mjs.map +1 -1
  82. package/dist/Divider.cjs +18 -0
  83. package/dist/Divider.cjs.map +1 -0
  84. package/dist/Divider.d.cts +14 -0
  85. package/dist/Divider.d.cts.map +1 -0
  86. package/dist/Divider.d.mts +11 -6
  87. package/dist/Divider.d.mts.map +1 -0
  88. package/dist/Divider.mjs +11 -40
  89. package/dist/Divider.mjs.map +1 -1
  90. package/dist/Dropdown.cjs +404 -0
  91. package/dist/Dropdown.cjs.map +1 -0
  92. package/dist/Dropdown.d.cts +139 -0
  93. package/dist/Dropdown.d.cts.map +1 -0
  94. package/dist/Dropdown.d.mts +128 -69
  95. package/dist/Dropdown.d.mts.map +1 -0
  96. package/dist/Dropdown.mjs +383 -588
  97. package/dist/Dropdown.mjs.map +1 -1
  98. package/dist/GridLines.cjs +82 -0
  99. package/dist/GridLines.cjs.map +1 -0
  100. package/dist/GridLines.d.cts +18 -0
  101. package/dist/GridLines.d.cts.map +1 -0
  102. package/dist/GridLines.d.mts +15 -8
  103. package/dist/GridLines.d.mts.map +1 -0
  104. package/dist/GridLines.mjs +75 -80
  105. package/dist/GridLines.mjs.map +1 -1
  106. package/dist/HeadingReveal.cjs +64 -0
  107. package/dist/HeadingReveal.cjs.map +1 -0
  108. package/dist/HeadingReveal.d.cts +26 -0
  109. package/dist/HeadingReveal.d.cts.map +1 -0
  110. package/dist/HeadingReveal.d.mts +23 -12
  111. package/dist/HeadingReveal.d.mts.map +1 -0
  112. package/dist/HeadingReveal.mjs +57 -57
  113. package/dist/HeadingReveal.mjs.map +1 -1
  114. package/dist/Icon.cjs +25 -0
  115. package/dist/Icon.cjs.map +1 -0
  116. package/dist/Icon.d.cts +17 -0
  117. package/dist/Icon.d.cts.map +1 -0
  118. package/dist/Icon.d.mts +17 -2
  119. package/dist/Icon.d.mts.map +1 -0
  120. package/dist/Icon.mjs +17 -18
  121. package/dist/Icon.mjs.map +1 -1
  122. package/dist/Input.cjs +135 -0
  123. package/dist/Input.cjs.map +1 -0
  124. package/dist/Input.d.cts +60 -0
  125. package/dist/Input.d.cts.map +1 -0
  126. package/dist/Input.d.mts +57 -37
  127. package/dist/Input.d.mts.map +1 -0
  128. package/dist/Input.mjs +128 -178
  129. package/dist/Input.mjs.map +1 -1
  130. package/dist/Logo.cjs +127 -0
  131. package/dist/Logo.cjs.map +1 -0
  132. package/dist/Logo.d.cts +18 -0
  133. package/dist/Logo.d.cts.map +1 -0
  134. package/dist/Logo.d.mts +15 -8
  135. package/dist/Logo.d.mts.map +1 -0
  136. package/dist/Logo.mjs +120 -146
  137. package/dist/Logo.mjs.map +1 -1
  138. package/dist/Pagination.cjs +133 -0
  139. package/dist/Pagination.cjs.map +1 -0
  140. package/dist/Pagination.d.cts +40 -0
  141. package/dist/Pagination.d.cts.map +1 -0
  142. package/dist/Pagination.d.mts +35 -18
  143. package/dist/Pagination.d.mts.map +1 -0
  144. package/dist/Pagination.mjs +124 -175
  145. package/dist/Pagination.mjs.map +1 -1
  146. package/dist/Slider.cjs +291 -0
  147. package/dist/Slider.cjs.map +1 -0
  148. package/dist/Slider.d.cts +40 -0
  149. package/dist/Slider.d.cts.map +1 -0
  150. package/dist/Slider.d.mts +37 -24
  151. package/dist/Slider.d.mts.map +1 -0
  152. package/dist/Slider.mjs +282 -331
  153. package/dist/Slider.mjs.map +1 -1
  154. package/dist/Tabs.cjs +67 -0
  155. package/dist/Tabs.cjs.map +1 -0
  156. package/dist/Tabs.d.cts +37 -0
  157. package/dist/Tabs.d.cts.map +1 -0
  158. package/dist/Tabs.d.mts +33 -22
  159. package/dist/Tabs.d.mts.map +1 -0
  160. package/dist/Tabs.mjs +60 -100
  161. package/dist/Tabs.mjs.map +1 -1
  162. package/dist/Toast.cjs +82 -0
  163. package/dist/Toast.cjs.map +1 -0
  164. package/dist/Toast.d.cts +28 -0
  165. package/dist/Toast.d.cts.map +1 -0
  166. package/dist/Toast.d.mts +21 -11
  167. package/dist/Toast.d.mts.map +1 -0
  168. package/dist/Toast.mjs +63 -66
  169. package/dist/Toast.mjs.map +1 -1
  170. package/dist/Tooltip.cjs +149 -0
  171. package/dist/Tooltip.cjs.map +1 -0
  172. package/dist/Tooltip.d.cts +16 -0
  173. package/dist/Tooltip.d.cts.map +1 -0
  174. package/dist/Tooltip.d.mts +13 -7
  175. package/dist/Tooltip.d.mts.map +1 -0
  176. package/dist/Tooltip.mjs +135 -128
  177. package/dist/Tooltip.mjs.map +1 -1
  178. package/dist/_virtual/rolldown_runtime.cjs +29 -0
  179. package/dist/fonts/CommitMono-Regular.cjs +6 -0
  180. package/dist/fonts/CommitMono-Regular.cjs.map +1 -0
  181. package/dist/fonts/CommitMono-Regular.mjs +6 -0
  182. package/dist/fonts/CommitMono-Regular.mjs.map +1 -0
  183. package/dist/fonts/MONTECHV02-Medium.cjs +6 -0
  184. package/dist/fonts/MONTECHV02-Medium.cjs.map +1 -0
  185. package/dist/fonts/MONTECHV02-Medium.mjs +6 -0
  186. package/dist/fonts/MONTECHV02-Medium.mjs.map +1 -0
  187. package/dist/fonts/Switzer-Regular.cjs +6 -0
  188. package/dist/fonts/Switzer-Regular.cjs.map +1 -0
  189. package/dist/fonts/Switzer-Regular.mjs +6 -0
  190. package/dist/fonts/Switzer-Regular.mjs.map +1 -0
  191. package/dist/icons/Anchor.cjs +65 -0
  192. package/dist/icons/Anchor.cjs.map +1 -0
  193. package/dist/icons/Anchor.d.cts +11 -0
  194. package/dist/icons/Anchor.d.cts.map +1 -0
  195. package/dist/icons/Anchor.d.mts +9 -4
  196. package/dist/icons/Anchor.d.mts.map +1 -0
  197. package/dist/icons/Anchor.mjs +57 -77
  198. package/dist/icons/Anchor.mjs.map +1 -1
  199. package/dist/icons/ArrowLeft.cjs +25 -0
  200. package/dist/icons/ArrowLeft.cjs.map +1 -0
  201. package/dist/icons/ArrowLeft.d.cts +11 -0
  202. package/dist/icons/ArrowLeft.d.cts.map +1 -0
  203. package/dist/icons/ArrowLeft.d.mts +9 -4
  204. package/dist/icons/ArrowLeft.d.mts.map +1 -0
  205. package/dist/icons/ArrowLeft.mjs +18 -29
  206. package/dist/icons/ArrowLeft.mjs.map +1 -1
  207. package/dist/icons/ArrowRight.cjs +25 -0
  208. package/dist/icons/ArrowRight.cjs.map +1 -0
  209. package/dist/icons/ArrowRight.d.cts +11 -0
  210. package/dist/icons/ArrowRight.d.cts.map +1 -0
  211. package/dist/icons/ArrowRight.d.mts +9 -4
  212. package/dist/icons/ArrowRight.d.mts.map +1 -0
  213. package/dist/icons/ArrowRight.mjs +18 -29
  214. package/dist/icons/ArrowRight.mjs.map +1 -1
  215. package/dist/icons/Assembly.cjs +109 -0
  216. package/dist/icons/Assembly.cjs.map +1 -0
  217. package/dist/icons/Assembly.d.cts +11 -0
  218. package/dist/icons/Assembly.d.cts.map +1 -0
  219. package/dist/icons/Assembly.d.mts +9 -4
  220. package/dist/icons/Assembly.d.mts.map +1 -0
  221. package/dist/icons/Assembly.mjs +101 -160
  222. package/dist/icons/Assembly.mjs.map +1 -1
  223. package/dist/icons/Backpack.cjs +34 -0
  224. package/dist/icons/Backpack.cjs.map +1 -0
  225. package/dist/icons/Backpack.d.cts +11 -0
  226. package/dist/icons/Backpack.d.cts.map +1 -0
  227. package/dist/icons/Backpack.d.mts +9 -4
  228. package/dist/icons/Backpack.d.mts.map +1 -0
  229. package/dist/icons/Backpack.mjs +27 -38
  230. package/dist/icons/Backpack.mjs.map +1 -1
  231. package/dist/icons/Brave.cjs +51 -0
  232. package/dist/icons/Brave.cjs.map +1 -0
  233. package/dist/icons/Brave.d.cts +11 -0
  234. package/dist/icons/Brave.d.cts.map +1 -0
  235. package/dist/icons/Brave.d.mts +9 -4
  236. package/dist/icons/Brave.d.mts.map +1 -0
  237. package/dist/icons/Brave.mjs +44 -52
  238. package/dist/icons/Brave.mjs.map +1 -1
  239. package/dist/icons/Challenge.cjs +30 -0
  240. package/dist/icons/Challenge.cjs.map +1 -0
  241. package/dist/icons/Challenge.d.cts +11 -0
  242. package/dist/icons/Challenge.d.cts.map +1 -0
  243. package/dist/icons/Challenge.d.mts +9 -4
  244. package/dist/icons/Challenge.d.mts.map +1 -0
  245. package/dist/icons/Challenge.mjs +23 -34
  246. package/dist/icons/Challenge.mjs.map +1 -1
  247. package/dist/icons/Chevron.cjs +22 -0
  248. package/dist/icons/Chevron.cjs.map +1 -0
  249. package/dist/icons/Chevron.d.cts +11 -0
  250. package/dist/icons/Chevron.d.cts.map +1 -0
  251. package/dist/icons/Chevron.d.mts +9 -4
  252. package/dist/icons/Chevron.d.mts.map +1 -0
  253. package/dist/icons/Chevron.mjs +15 -20
  254. package/dist/icons/Chevron.mjs.map +1 -1
  255. package/dist/icons/ChevronLeft.cjs +22 -0
  256. package/dist/icons/ChevronLeft.cjs.map +1 -0
  257. package/dist/icons/ChevronLeft.d.cts +11 -0
  258. package/dist/icons/ChevronLeft.d.cts.map +1 -0
  259. package/dist/icons/ChevronLeft.d.mts +9 -4
  260. package/dist/icons/ChevronLeft.d.mts.map +1 -0
  261. package/dist/icons/ChevronLeft.mjs +15 -20
  262. package/dist/icons/ChevronLeft.mjs.map +1 -1
  263. package/dist/icons/ChevronRight.cjs +22 -0
  264. package/dist/icons/ChevronRight.cjs.map +1 -0
  265. package/dist/icons/ChevronRight.d.cts +11 -0
  266. package/dist/icons/ChevronRight.d.cts.map +1 -0
  267. package/dist/icons/ChevronRight.d.mts +9 -4
  268. package/dist/icons/ChevronRight.d.mts.map +1 -0
  269. package/dist/icons/ChevronRight.mjs +15 -20
  270. package/dist/icons/ChevronRight.mjs.map +1 -1
  271. package/dist/icons/Claim.cjs +26 -0
  272. package/dist/icons/Claim.cjs.map +1 -0
  273. package/dist/icons/Claim.d.cts +11 -0
  274. package/dist/icons/Claim.d.cts.map +1 -0
  275. package/dist/icons/Claim.d.mts +9 -4
  276. package/dist/icons/Claim.d.mts.map +1 -0
  277. package/dist/icons/Claim.mjs +19 -30
  278. package/dist/icons/Claim.mjs.map +1 -1
  279. package/dist/icons/Claimed.cjs +22 -0
  280. package/dist/icons/Claimed.cjs.map +1 -0
  281. package/dist/icons/Claimed.d.cts +11 -0
  282. package/dist/icons/Claimed.d.cts.map +1 -0
  283. package/dist/icons/Claimed.d.mts +9 -4
  284. package/dist/icons/Claimed.d.mts.map +1 -0
  285. package/dist/icons/Claimed.mjs +15 -20
  286. package/dist/icons/Claimed.mjs.map +1 -1
  287. package/dist/icons/Clock.cjs +30 -0
  288. package/dist/icons/Clock.cjs.map +1 -0
  289. package/dist/icons/Clock.d.cts +11 -0
  290. package/dist/icons/Clock.d.cts.map +1 -0
  291. package/dist/icons/Clock.d.mts +9 -4
  292. package/dist/icons/Clock.d.mts.map +1 -0
  293. package/dist/icons/Clock.mjs +23 -34
  294. package/dist/icons/Clock.mjs.map +1 -1
  295. package/dist/icons/Close.cjs +27 -0
  296. package/dist/icons/Close.cjs.map +1 -0
  297. package/dist/icons/Close.d.cts +11 -0
  298. package/dist/icons/Close.d.cts.map +1 -0
  299. package/dist/icons/Close.d.mts +9 -4
  300. package/dist/icons/Close.d.mts.map +1 -0
  301. package/dist/icons/Close.mjs +20 -31
  302. package/dist/icons/Close.mjs.map +1 -1
  303. package/dist/icons/Code.cjs +31 -0
  304. package/dist/icons/Code.cjs.map +1 -0
  305. package/dist/icons/Code.d.cts +11 -0
  306. package/dist/icons/Code.d.cts.map +1 -0
  307. package/dist/icons/Code.d.mts +9 -4
  308. package/dist/icons/Code.d.mts.map +1 -0
  309. package/dist/icons/Code.mjs +24 -32
  310. package/dist/icons/Code.mjs.map +1 -1
  311. package/dist/icons/Copy.cjs +25 -0
  312. package/dist/icons/Copy.cjs.map +1 -0
  313. package/dist/icons/Copy.d.cts +11 -0
  314. package/dist/icons/Copy.d.cts.map +1 -0
  315. package/dist/icons/Copy.d.mts +9 -4
  316. package/dist/icons/Copy.d.mts.map +1 -0
  317. package/dist/icons/Copy.mjs +18 -29
  318. package/dist/icons/Copy.mjs.map +1 -1
  319. package/dist/icons/Cross.cjs +25 -0
  320. package/dist/icons/Cross.cjs.map +1 -0
  321. package/dist/icons/Cross.d.cts +11 -0
  322. package/dist/icons/Cross.d.cts.map +1 -0
  323. package/dist/icons/Cross.d.mts +10 -5
  324. package/dist/icons/Cross.d.mts.map +1 -0
  325. package/dist/icons/Cross.mjs +20 -31
  326. package/dist/icons/Cross.mjs.map +1 -1
  327. package/dist/icons/Developer.cjs +34 -0
  328. package/dist/icons/Developer.cjs.map +1 -0
  329. package/dist/icons/Developer.d.cts +11 -0
  330. package/dist/icons/Developer.d.cts.map +1 -0
  331. package/dist/icons/Developer.d.mts +9 -4
  332. package/dist/icons/Developer.d.mts.map +1 -0
  333. package/dist/icons/Developer.mjs +27 -38
  334. package/dist/icons/Developer.mjs.map +1 -1
  335. package/dist/icons/Disconnect.cjs +40 -0
  336. package/dist/icons/Disconnect.cjs.map +1 -0
  337. package/dist/icons/Disconnect.d.cts +11 -0
  338. package/dist/icons/Disconnect.d.cts.map +1 -0
  339. package/dist/icons/Disconnect.d.mts +9 -4
  340. package/dist/icons/Disconnect.d.mts.map +1 -0
  341. package/dist/icons/Disconnect.mjs +33 -38
  342. package/dist/icons/Disconnect.mjs.map +1 -1
  343. package/dist/icons/Discord.cjs +22 -0
  344. package/dist/icons/Discord.cjs.map +1 -0
  345. package/dist/icons/Discord.d.cts +11 -0
  346. package/dist/icons/Discord.d.cts.map +1 -0
  347. package/dist/icons/Discord.d.mts +9 -4
  348. package/dist/icons/Discord.d.mts.map +1 -0
  349. package/dist/icons/Discord.mjs +15 -20
  350. package/dist/icons/Discord.mjs.map +1 -1
  351. package/dist/icons/Dollar.cjs +24 -0
  352. package/dist/icons/Dollar.cjs.map +1 -0
  353. package/dist/icons/Dollar.d.cts +11 -0
  354. package/dist/icons/Dollar.d.cts.map +1 -0
  355. package/dist/icons/Dollar.d.mts +9 -4
  356. package/dist/icons/Dollar.d.mts.map +1 -0
  357. package/dist/icons/Dollar.mjs +17 -22
  358. package/dist/icons/Dollar.mjs.map +1 -1
  359. package/dist/icons/DoubleArrow.cjs +25 -0
  360. package/dist/icons/DoubleArrow.cjs.map +1 -0
  361. package/dist/icons/DoubleArrow.d.cts +11 -0
  362. package/dist/icons/DoubleArrow.d.cts.map +1 -0
  363. package/dist/icons/DoubleArrow.d.mts +9 -4
  364. package/dist/icons/DoubleArrow.d.mts.map +1 -0
  365. package/dist/icons/DoubleArrow.mjs +18 -29
  366. package/dist/icons/DoubleArrow.mjs.map +1 -1
  367. package/dist/icons/EVM.cjs +29 -0
  368. package/dist/icons/EVM.cjs.map +1 -0
  369. package/dist/icons/EVM.d.cts +11 -0
  370. package/dist/icons/EVM.d.cts.map +1 -0
  371. package/dist/icons/EVM.d.mts +9 -4
  372. package/dist/icons/EVM.d.mts.map +1 -0
  373. package/dist/icons/EVM.mjs +22 -33
  374. package/dist/icons/EVM.mjs.map +1 -1
  375. package/dist/icons/Email.cjs +33 -0
  376. package/dist/icons/Email.cjs.map +1 -0
  377. package/dist/icons/Email.d.cts +11 -0
  378. package/dist/icons/Email.d.cts.map +1 -0
  379. package/dist/icons/Email.d.mts +9 -4
  380. package/dist/icons/Email.d.mts.map +1 -0
  381. package/dist/icons/Email.mjs +26 -37
  382. package/dist/icons/Email.mjs.map +1 -1
  383. package/dist/icons/Error.cjs +22 -0
  384. package/dist/icons/Error.cjs.map +1 -0
  385. package/dist/icons/Error.d.cts +11 -0
  386. package/dist/icons/Error.d.cts.map +1 -0
  387. package/dist/icons/Error.d.mts +9 -4
  388. package/dist/icons/Error.d.mts.map +1 -0
  389. package/dist/icons/Error.mjs +15 -20
  390. package/dist/icons/Error.mjs.map +1 -1
  391. package/dist/icons/Expand.cjs +25 -0
  392. package/dist/icons/Expand.cjs.map +1 -0
  393. package/dist/icons/Expand.d.cts +11 -0
  394. package/dist/icons/Expand.d.cts.map +1 -0
  395. package/dist/icons/Expand.d.mts +9 -4
  396. package/dist/icons/Expand.d.mts.map +1 -0
  397. package/dist/icons/Expand.mjs +18 -29
  398. package/dist/icons/Expand.mjs.map +1 -1
  399. package/dist/icons/External.cjs +26 -0
  400. package/dist/icons/External.cjs.map +1 -0
  401. package/dist/icons/External.d.cts +11 -0
  402. package/dist/icons/External.d.cts.map +1 -0
  403. package/dist/icons/External.d.mts +9 -4
  404. package/dist/icons/External.d.mts.map +1 -0
  405. package/dist/icons/External.mjs +19 -30
  406. package/dist/icons/External.mjs.map +1 -1
  407. package/dist/icons/Filter.cjs +33 -0
  408. package/dist/icons/Filter.cjs.map +1 -0
  409. package/dist/icons/Filter.d.cts +11 -0
  410. package/dist/icons/Filter.d.cts.map +1 -0
  411. package/dist/icons/Filter.d.mts +9 -4
  412. package/dist/icons/Filter.d.mts.map +1 -0
  413. package/dist/icons/Filter.mjs +26 -37
  414. package/dist/icons/Filter.mjs.map +1 -1
  415. package/dist/icons/Firmware.cjs +25 -0
  416. package/dist/icons/Firmware.cjs.map +1 -0
  417. package/dist/icons/Firmware.d.cts +11 -0
  418. package/dist/icons/Firmware.d.cts.map +1 -0
  419. package/dist/icons/Firmware.d.mts +9 -4
  420. package/dist/icons/Firmware.d.mts.map +1 -0
  421. package/dist/icons/Firmware.mjs +18 -29
  422. package/dist/icons/Firmware.mjs.map +1 -1
  423. package/dist/icons/Flag.cjs +25 -0
  424. package/dist/icons/Flag.cjs.map +1 -0
  425. package/dist/icons/Flag.d.cts +11 -0
  426. package/dist/icons/Flag.d.cts.map +1 -0
  427. package/dist/icons/Flag.d.mts +9 -4
  428. package/dist/icons/Flag.d.mts.map +1 -0
  429. package/dist/icons/Flag.mjs +18 -29
  430. package/dist/icons/Flag.mjs.map +1 -1
  431. package/dist/icons/Flame.cjs +22 -0
  432. package/dist/icons/Flame.cjs.map +1 -0
  433. package/dist/icons/Flame.d.cts +11 -0
  434. package/dist/icons/Flame.d.cts.map +1 -0
  435. package/dist/icons/Flame.d.mts +9 -4
  436. package/dist/icons/Flame.d.mts.map +1 -0
  437. package/dist/icons/Flame.mjs +15 -20
  438. package/dist/icons/Flame.mjs.map +1 -1
  439. package/dist/icons/Flexible.cjs +40 -0
  440. package/dist/icons/Flexible.cjs.map +1 -0
  441. package/dist/icons/Flexible.d.cts +11 -0
  442. package/dist/icons/Flexible.d.cts.map +1 -0
  443. package/dist/icons/Flexible.d.mts +9 -4
  444. package/dist/icons/Flexible.d.mts.map +1 -0
  445. package/dist/icons/Flexible.mjs +33 -44
  446. package/dist/icons/Flexible.mjs.map +1 -1
  447. package/dist/icons/Free.cjs +38 -0
  448. package/dist/icons/Free.cjs.map +1 -0
  449. package/dist/icons/Free.d.cts +11 -0
  450. package/dist/icons/Free.d.cts.map +1 -0
  451. package/dist/icons/Free.d.mts +9 -4
  452. package/dist/icons/Free.d.mts.map +1 -0
  453. package/dist/icons/Free.mjs +31 -45
  454. package/dist/icons/Free.mjs.map +1 -1
  455. package/dist/icons/General.cjs +63 -0
  456. package/dist/icons/General.cjs.map +1 -0
  457. package/dist/icons/General.d.cts +11 -0
  458. package/dist/icons/General.d.cts.map +1 -0
  459. package/dist/icons/General.d.mts +9 -4
  460. package/dist/icons/General.d.mts.map +1 -0
  461. package/dist/icons/General.mjs +56 -52
  462. package/dist/icons/General.mjs.map +1 -1
  463. package/dist/icons/Github.cjs +33 -0
  464. package/dist/icons/Github.cjs.map +1 -0
  465. package/dist/icons/Github.d.cts +11 -0
  466. package/dist/icons/Github.d.cts.map +1 -0
  467. package/dist/icons/Github.d.mts +9 -4
  468. package/dist/icons/Github.d.mts.map +1 -0
  469. package/dist/icons/Github.mjs +26 -31
  470. package/dist/icons/Github.mjs.map +1 -1
  471. package/dist/icons/Globe.cjs +22 -0
  472. package/dist/icons/Globe.cjs.map +1 -0
  473. package/dist/icons/Globe.d.cts +11 -0
  474. package/dist/icons/Globe.d.cts.map +1 -0
  475. package/dist/icons/Globe.d.mts +9 -4
  476. package/dist/icons/Globe.d.mts.map +1 -0
  477. package/dist/icons/Globe.mjs +15 -17
  478. package/dist/icons/Globe.mjs.map +1 -1
  479. package/dist/icons/GridView.cjs +36 -0
  480. package/dist/icons/GridView.cjs.map +1 -0
  481. package/dist/icons/GridView.d.cts +11 -0
  482. package/dist/icons/GridView.d.cts.map +1 -0
  483. package/dist/icons/GridView.d.mts +9 -4
  484. package/dist/icons/GridView.d.mts.map +1 -0
  485. package/dist/icons/GridView.mjs +29 -43
  486. package/dist/icons/GridView.mjs.map +1 -1
  487. package/dist/icons/Heart.cjs +22 -0
  488. package/dist/icons/Heart.cjs.map +1 -0
  489. package/dist/icons/Heart.d.cts +11 -0
  490. package/dist/icons/Heart.d.cts.map +1 -0
  491. package/dist/icons/Heart.d.mts +9 -4
  492. package/dist/icons/Heart.d.mts.map +1 -0
  493. package/dist/icons/Heart.mjs +15 -20
  494. package/dist/icons/Heart.mjs.map +1 -1
  495. package/dist/icons/Info.cjs +22 -0
  496. package/dist/icons/Info.cjs.map +1 -0
  497. package/dist/icons/Info.d.cts +11 -0
  498. package/dist/icons/Info.d.cts.map +1 -0
  499. package/dist/icons/Info.d.mts +9 -4
  500. package/dist/icons/Info.d.mts.map +1 -0
  501. package/dist/icons/Info.mjs +15 -20
  502. package/dist/icons/Info.mjs.map +1 -1
  503. package/dist/icons/Language.cjs +30 -0
  504. package/dist/icons/Language.cjs.map +1 -0
  505. package/dist/icons/Language.d.cts +11 -0
  506. package/dist/icons/Language.d.cts.map +1 -0
  507. package/dist/icons/Language.d.mts +9 -4
  508. package/dist/icons/Language.d.mts.map +1 -0
  509. package/dist/icons/Language.mjs +23 -34
  510. package/dist/icons/Language.mjs.map +1 -1
  511. package/dist/icons/Lessons.cjs +26 -0
  512. package/dist/icons/Lessons.cjs.map +1 -0
  513. package/dist/icons/Lessons.d.cts +11 -0
  514. package/dist/icons/Lessons.d.cts.map +1 -0
  515. package/dist/icons/Lessons.d.mts +9 -4
  516. package/dist/icons/Lessons.d.mts.map +1 -0
  517. package/dist/icons/Lessons.mjs +19 -30
  518. package/dist/icons/Lessons.mjs.map +1 -1
  519. package/dist/icons/Link.cjs +28 -0
  520. package/dist/icons/Link.cjs.map +1 -0
  521. package/dist/icons/Link.d.cts +11 -0
  522. package/dist/icons/Link.d.cts.map +1 -0
  523. package/dist/icons/Link.d.mts +9 -4
  524. package/dist/icons/Link.d.mts.map +1 -0
  525. package/dist/icons/Link.mjs +21 -29
  526. package/dist/icons/Link.mjs.map +1 -1
  527. package/dist/icons/ListView.cjs +32 -0
  528. package/dist/icons/ListView.cjs.map +1 -0
  529. package/dist/icons/ListView.d.cts +11 -0
  530. package/dist/icons/ListView.d.cts.map +1 -0
  531. package/dist/icons/ListView.d.mts +9 -4
  532. package/dist/icons/ListView.d.mts.map +1 -0
  533. package/dist/icons/ListView.mjs +25 -36
  534. package/dist/icons/ListView.mjs.map +1 -1
  535. package/dist/icons/Loading.cjs +26 -0
  536. package/dist/icons/Loading.cjs.map +1 -0
  537. package/dist/icons/Loading.d.cts +11 -0
  538. package/dist/icons/Loading.d.cts.map +1 -0
  539. package/dist/icons/Loading.d.mts +9 -4
  540. package/dist/icons/Loading.d.mts.map +1 -0
  541. package/dist/icons/Loading.mjs +19 -32
  542. package/dist/icons/Loading.mjs.map +1 -1
  543. package/dist/icons/Locked.cjs +25 -0
  544. package/dist/icons/Locked.cjs.map +1 -0
  545. package/dist/icons/Locked.d.cts +11 -0
  546. package/dist/icons/Locked.d.cts.map +1 -0
  547. package/dist/icons/Locked.d.mts +9 -4
  548. package/dist/icons/Locked.d.mts.map +1 -0
  549. package/dist/icons/Locked.mjs +18 -29
  550. package/dist/icons/Locked.mjs.map +1 -1
  551. package/dist/icons/Logs.cjs +33 -0
  552. package/dist/icons/Logs.cjs.map +1 -0
  553. package/dist/icons/Logs.d.cts +11 -0
  554. package/dist/icons/Logs.d.cts.map +1 -0
  555. package/dist/icons/Logs.d.mts +9 -4
  556. package/dist/icons/Logs.d.mts.map +1 -0
  557. package/dist/icons/Logs.mjs +26 -18
  558. package/dist/icons/Logs.mjs.map +1 -1
  559. package/dist/icons/Mentor.cjs +38 -0
  560. package/dist/icons/Mentor.cjs.map +1 -0
  561. package/dist/icons/Mentor.d.cts +11 -0
  562. package/dist/icons/Mentor.d.cts.map +1 -0
  563. package/dist/icons/Mentor.d.mts +9 -4
  564. package/dist/icons/Mentor.d.mts.map +1 -0
  565. package/dist/icons/Mentor.mjs +31 -39
  566. package/dist/icons/Mentor.mjs.map +1 -1
  567. package/dist/icons/Metamask.cjs +48 -0
  568. package/dist/icons/Metamask.cjs.map +1 -0
  569. package/dist/icons/Metamask.d.cts +11 -0
  570. package/dist/icons/Metamask.d.cts.map +1 -0
  571. package/dist/icons/Metamask.d.mts +9 -4
  572. package/dist/icons/Metamask.d.mts.map +1 -0
  573. package/dist/icons/Metamask.mjs +41 -64
  574. package/dist/icons/Metamask.mjs.map +1 -1
  575. package/dist/icons/Minimize.cjs +25 -0
  576. package/dist/icons/Minimize.cjs.map +1 -0
  577. package/dist/icons/Minimize.d.cts +11 -0
  578. package/dist/icons/Minimize.d.cts.map +1 -0
  579. package/dist/icons/Minimize.d.mts +9 -4
  580. package/dist/icons/Minimize.d.mts.map +1 -0
  581. package/dist/icons/Minimize.mjs +18 -29
  582. package/dist/icons/Minimize.mjs.map +1 -1
  583. package/dist/icons/Modular.cjs +38 -0
  584. package/dist/icons/Modular.cjs.map +1 -0
  585. package/dist/icons/Modular.d.cts +11 -0
  586. package/dist/icons/Modular.d.cts.map +1 -0
  587. package/dist/icons/Modular.d.mts +9 -4
  588. package/dist/icons/Modular.d.mts.map +1 -0
  589. package/dist/icons/Modular.mjs +31 -45
  590. package/dist/icons/Modular.mjs.map +1 -1
  591. package/dist/icons/NFT.cjs +37 -0
  592. package/dist/icons/NFT.cjs.map +1 -0
  593. package/dist/icons/NFT.d.cts +11 -0
  594. package/dist/icons/NFT.d.cts.map +1 -0
  595. package/dist/icons/NFT.d.mts +9 -4
  596. package/dist/icons/NFT.d.mts.map +1 -0
  597. package/dist/icons/NFT.mjs +30 -41
  598. package/dist/icons/NFT.mjs.map +1 -1
  599. package/dist/icons/Online.cjs +47 -0
  600. package/dist/icons/Online.cjs.map +1 -0
  601. package/dist/icons/Online.d.cts +11 -0
  602. package/dist/icons/Online.d.cts.map +1 -0
  603. package/dist/icons/Online.d.mts +9 -4
  604. package/dist/icons/Online.d.mts.map +1 -0
  605. package/dist/icons/Online.mjs +40 -47
  606. package/dist/icons/Online.mjs.map +1 -1
  607. package/dist/icons/Password.cjs +32 -0
  608. package/dist/icons/Password.cjs.map +1 -0
  609. package/dist/icons/Password.d.cts +11 -0
  610. package/dist/icons/Password.d.cts.map +1 -0
  611. package/dist/icons/Password.d.mts +9 -4
  612. package/dist/icons/Password.d.mts.map +1 -0
  613. package/dist/icons/Password.mjs +25 -36
  614. package/dist/icons/Password.mjs.map +1 -1
  615. package/dist/icons/Path.cjs +30 -0
  616. package/dist/icons/Path.cjs.map +1 -0
  617. package/dist/icons/Path.d.cts +11 -0
  618. package/dist/icons/Path.d.cts.map +1 -0
  619. package/dist/icons/Path.d.mts +9 -4
  620. package/dist/icons/Path.d.mts.map +1 -0
  621. package/dist/icons/Path.mjs +23 -34
  622. package/dist/icons/Path.mjs.map +1 -1
  623. package/dist/icons/Perks.cjs +35 -0
  624. package/dist/icons/Perks.cjs.map +1 -0
  625. package/dist/icons/Perks.d.cts +11 -0
  626. package/dist/icons/Perks.d.cts.map +1 -0
  627. package/dist/icons/Perks.d.mts +9 -4
  628. package/dist/icons/Perks.d.mts.map +1 -0
  629. package/dist/icons/Perks.mjs +28 -33
  630. package/dist/icons/Perks.mjs.map +1 -1
  631. package/dist/icons/Phantom.cjs +22 -0
  632. package/dist/icons/Phantom.cjs.map +1 -0
  633. package/dist/icons/Phantom.d.cts +11 -0
  634. package/dist/icons/Phantom.d.cts.map +1 -0
  635. package/dist/icons/Phantom.d.mts +9 -4
  636. package/dist/icons/Phantom.d.mts.map +1 -0
  637. package/dist/icons/Phantom.mjs +15 -20
  638. package/dist/icons/Phantom.mjs.map +1 -1
  639. package/dist/icons/Play.cjs +22 -0
  640. package/dist/icons/Play.cjs.map +1 -0
  641. package/dist/icons/Play.d.cts +11 -0
  642. package/dist/icons/Play.d.cts.map +1 -0
  643. package/dist/icons/Play.d.mts +9 -4
  644. package/dist/icons/Play.d.mts.map +1 -0
  645. package/dist/icons/Play.mjs +15 -20
  646. package/dist/icons/Play.mjs.map +1 -1
  647. package/dist/icons/Product.cjs +32 -0
  648. package/dist/icons/Product.cjs.map +1 -0
  649. package/dist/icons/Product.d.cts +11 -0
  650. package/dist/icons/Product.d.cts.map +1 -0
  651. package/dist/icons/Product.d.mts +9 -4
  652. package/dist/icons/Product.d.mts.map +1 -0
  653. package/dist/icons/Product.mjs +25 -36
  654. package/dist/icons/Product.mjs.map +1 -1
  655. package/dist/icons/Progress.cjs +28 -0
  656. package/dist/icons/Progress.cjs.map +1 -0
  657. package/dist/icons/Progress.d.cts +11 -0
  658. package/dist/icons/Progress.d.cts.map +1 -0
  659. package/dist/icons/Progress.d.mts +9 -4
  660. package/dist/icons/Progress.d.mts.map +1 -0
  661. package/dist/icons/Progress.mjs +21 -29
  662. package/dist/icons/Progress.mjs.map +1 -1
  663. package/dist/icons/Protocol.cjs +32 -0
  664. package/dist/icons/Protocol.cjs.map +1 -0
  665. package/dist/icons/Protocol.d.cts +11 -0
  666. package/dist/icons/Protocol.d.cts.map +1 -0
  667. package/dist/icons/Protocol.d.mts +9 -4
  668. package/dist/icons/Protocol.d.mts.map +1 -0
  669. package/dist/icons/Protocol.mjs +25 -36
  670. package/dist/icons/Protocol.mjs.map +1 -1
  671. package/dist/icons/Refresh.cjs +25 -0
  672. package/dist/icons/Refresh.cjs.map +1 -0
  673. package/dist/icons/Refresh.d.cts +11 -0
  674. package/dist/icons/Refresh.d.cts.map +1 -0
  675. package/dist/icons/Refresh.d.mts +9 -4
  676. package/dist/icons/Refresh.d.mts.map +1 -0
  677. package/dist/icons/Refresh.mjs +18 -29
  678. package/dist/icons/Refresh.mjs.map +1 -1
  679. package/dist/icons/Rewards.cjs +26 -0
  680. package/dist/icons/Rewards.cjs.map +1 -0
  681. package/dist/icons/Rewards.d.cts +11 -0
  682. package/dist/icons/Rewards.d.cts.map +1 -0
  683. package/dist/icons/Rewards.d.mts +9 -4
  684. package/dist/icons/Rewards.d.mts.map +1 -0
  685. package/dist/icons/Rewards.mjs +19 -30
  686. package/dist/icons/Rewards.mjs.map +1 -1
  687. package/dist/icons/Rust.cjs +95 -0
  688. package/dist/icons/Rust.cjs.map +1 -0
  689. package/dist/icons/Rust.d.cts +11 -0
  690. package/dist/icons/Rust.d.cts.map +1 -0
  691. package/dist/icons/Rust.d.mts +9 -4
  692. package/dist/icons/Rust.d.mts.map +1 -0
  693. package/dist/icons/Rust.mjs +88 -138
  694. package/dist/icons/Rust.mjs.map +1 -1
  695. package/dist/icons/Search.cjs +37 -0
  696. package/dist/icons/Search.cjs.map +1 -0
  697. package/dist/icons/Search.d.cts +11 -0
  698. package/dist/icons/Search.d.cts.map +1 -0
  699. package/dist/icons/Search.d.mts +9 -4
  700. package/dist/icons/Search.d.mts.map +1 -0
  701. package/dist/icons/Search.mjs +30 -44
  702. package/dist/icons/Search.mjs.map +1 -1
  703. package/dist/icons/SmartContract.cjs +22 -0
  704. package/dist/icons/SmartContract.cjs.map +1 -0
  705. package/dist/icons/SmartContract.d.cts +11 -0
  706. package/dist/icons/SmartContract.d.cts.map +1 -0
  707. package/dist/icons/SmartContract.d.mts +9 -4
  708. package/dist/icons/SmartContract.d.mts.map +1 -0
  709. package/dist/icons/SmartContract.mjs +15 -20
  710. package/dist/icons/SmartContract.mjs.map +1 -1
  711. package/dist/icons/Solana.cjs +64 -0
  712. package/dist/icons/Solana.cjs.map +1 -0
  713. package/dist/icons/Solana.d.cts +11 -0
  714. package/dist/icons/Solana.d.cts.map +1 -0
  715. package/dist/icons/Solana.d.mts +9 -4
  716. package/dist/icons/Solana.d.mts.map +1 -0
  717. package/dist/icons/Solana.mjs +57 -44
  718. package/dist/icons/Solana.mjs.map +1 -1
  719. package/dist/icons/Solflare.cjs +22 -0
  720. package/dist/icons/Solflare.cjs.map +1 -0
  721. package/dist/icons/Solflare.d.cts +11 -0
  722. package/dist/icons/Solflare.d.cts.map +1 -0
  723. package/dist/icons/Solflare.d.mts +9 -4
  724. package/dist/icons/Solflare.d.mts.map +1 -0
  725. package/dist/icons/Solflare.mjs +15 -20
  726. package/dist/icons/Solflare.mjs.map +1 -1
  727. package/dist/icons/Success.cjs +25 -0
  728. package/dist/icons/Success.cjs.map +1 -0
  729. package/dist/icons/Success.d.cts +11 -0
  730. package/dist/icons/Success.d.cts.map +1 -0
  731. package/dist/icons/Success.d.mts +9 -4
  732. package/dist/icons/Success.d.mts.map +1 -0
  733. package/dist/icons/Success.mjs +18 -23
  734. package/dist/icons/Success.mjs.map +1 -1
  735. package/dist/icons/SuccessCircle.cjs +25 -0
  736. package/dist/icons/SuccessCircle.cjs.map +1 -0
  737. package/dist/icons/SuccessCircle.d.cts +11 -0
  738. package/dist/icons/SuccessCircle.d.cts.map +1 -0
  739. package/dist/icons/SuccessCircle.d.mts +9 -4
  740. package/dist/icons/SuccessCircle.d.mts.map +1 -0
  741. package/dist/icons/SuccessCircle.mjs +18 -23
  742. package/dist/icons/SuccessCircle.mjs.map +1 -1
  743. package/dist/icons/Table.cjs +32 -0
  744. package/dist/icons/Table.cjs.map +1 -0
  745. package/dist/icons/Table.d.cts +11 -0
  746. package/dist/icons/Table.d.cts.map +1 -0
  747. package/dist/icons/Table.d.mts +9 -4
  748. package/dist/icons/Table.d.mts.map +1 -0
  749. package/dist/icons/Table.mjs +25 -36
  750. package/dist/icons/Table.mjs.map +1 -1
  751. package/dist/icons/Target.cjs +35 -0
  752. package/dist/icons/Target.cjs.map +1 -0
  753. package/dist/icons/Target.d.cts +11 -0
  754. package/dist/icons/Target.d.cts.map +1 -0
  755. package/dist/icons/Target.d.mts +9 -4
  756. package/dist/icons/Target.d.mts.map +1 -0
  757. package/dist/icons/Target.mjs +28 -39
  758. package/dist/icons/Target.mjs.map +1 -1
  759. package/dist/icons/Training.cjs +32 -0
  760. package/dist/icons/Training.cjs.map +1 -0
  761. package/dist/icons/Training.d.cts +11 -0
  762. package/dist/icons/Training.d.cts.map +1 -0
  763. package/dist/icons/Training.d.mts +9 -4
  764. package/dist/icons/Training.d.mts.map +1 -0
  765. package/dist/icons/Training.mjs +25 -36
  766. package/dist/icons/Training.mjs.map +1 -1
  767. package/dist/icons/Typescript.cjs +79 -0
  768. package/dist/icons/Typescript.cjs.map +1 -0
  769. package/dist/icons/Typescript.d.cts +11 -0
  770. package/dist/icons/Typescript.d.cts.map +1 -0
  771. package/dist/icons/Typescript.d.mts +9 -4
  772. package/dist/icons/Typescript.d.mts.map +1 -0
  773. package/dist/icons/Typescript.mjs +72 -116
  774. package/dist/icons/Typescript.mjs.map +1 -1
  775. package/dist/icons/Unclaimed.cjs +25 -0
  776. package/dist/icons/Unclaimed.cjs.map +1 -0
  777. package/dist/icons/Unclaimed.d.cts +11 -0
  778. package/dist/icons/Unclaimed.d.cts.map +1 -0
  779. package/dist/icons/Unclaimed.d.mts +9 -4
  780. package/dist/icons/Unclaimed.d.mts.map +1 -0
  781. package/dist/icons/Unclaimed.mjs +18 -29
  782. package/dist/icons/Unclaimed.mjs.map +1 -1
  783. package/dist/icons/Upload.cjs +26 -0
  784. package/dist/icons/Upload.cjs.map +1 -0
  785. package/dist/icons/Upload.d.cts +11 -0
  786. package/dist/icons/Upload.d.cts.map +1 -0
  787. package/dist/icons/Upload.d.mts +9 -4
  788. package/dist/icons/Upload.d.mts.map +1 -0
  789. package/dist/icons/Upload.mjs +19 -30
  790. package/dist/icons/Upload.mjs.map +1 -1
  791. package/dist/icons/User.cjs +32 -0
  792. package/dist/icons/User.cjs.map +1 -0
  793. package/dist/icons/User.d.cts +11 -0
  794. package/dist/icons/User.d.cts.map +1 -0
  795. package/dist/icons/User.d.mts +9 -4
  796. package/dist/icons/User.d.mts.map +1 -0
  797. package/dist/icons/User.mjs +25 -36
  798. package/dist/icons/User.mjs.map +1 -1
  799. package/dist/icons/Wallet.cjs +34 -0
  800. package/dist/icons/Wallet.cjs.map +1 -0
  801. package/dist/icons/Wallet.d.cts +11 -0
  802. package/dist/icons/Wallet.d.cts.map +1 -0
  803. package/dist/icons/Wallet.d.mts +9 -4
  804. package/dist/icons/Wallet.d.mts.map +1 -0
  805. package/dist/icons/Wallet.mjs +27 -38
  806. package/dist/icons/Wallet.mjs.map +1 -1
  807. package/dist/icons/WalletSmall.cjs +25 -0
  808. package/dist/icons/WalletSmall.cjs.map +1 -0
  809. package/dist/icons/WalletSmall.d.cts +11 -0
  810. package/dist/icons/WalletSmall.d.cts.map +1 -0
  811. package/dist/icons/WalletSmall.d.mts +9 -4
  812. package/dist/icons/WalletSmall.d.mts.map +1 -0
  813. package/dist/icons/WalletSmall.mjs +18 -29
  814. package/dist/icons/WalletSmall.mjs.map +1 -1
  815. package/dist/icons/Warning.cjs +30 -0
  816. package/dist/icons/Warning.cjs.map +1 -0
  817. package/dist/icons/Warning.d.cts +11 -0
  818. package/dist/icons/Warning.d.cts.map +1 -0
  819. package/dist/icons/Warning.d.mts +9 -4
  820. package/dist/icons/Warning.d.mts.map +1 -0
  821. package/dist/icons/Warning.mjs +23 -25
  822. package/dist/icons/Warning.mjs.map +1 -1
  823. package/dist/icons/X.cjs +22 -0
  824. package/dist/icons/X.cjs.map +1 -0
  825. package/dist/icons/X.d.cts +11 -0
  826. package/dist/icons/X.d.cts.map +1 -0
  827. package/dist/icons/X.d.mts +9 -4
  828. package/dist/icons/X.d.mts.map +1 -0
  829. package/dist/icons/X.mjs +15 -20
  830. package/dist/icons/X.mjs.map +1 -1
  831. package/dist/icons/index.cjs +178 -0
  832. package/dist/icons/index.cjs.map +1 -0
  833. package/dist/icons/index.d.cts +331 -0
  834. package/dist/icons/index.d.cts.map +1 -0
  835. package/dist/icons/index.d.mts +331 -2
  836. package/dist/icons/index.d.mts.map +1 -0
  837. package/dist/icons/index.mjs +169 -166
  838. package/dist/icons/index.mjs.map +1 -1
  839. package/dist/index.cjs +64 -0
  840. package/dist/index.d.cts +26 -0
  841. package/dist/index.d.mts +26 -27
  842. package/dist/index.mjs +27 -27
  843. package/dist/utils/colours.cjs +36 -0
  844. package/dist/utils/colours.cjs.map +1 -0
  845. package/dist/utils/colours.d.cts +33 -0
  846. package/dist/utils/colours.d.cts.map +1 -0
  847. package/dist/utils/colours.d.mts +26 -24
  848. package/dist/utils/colours.d.mts.map +1 -0
  849. package/dist/utils/colours.mjs +24 -23
  850. package/dist/utils/colours.mjs.map +1 -1
  851. package/dist/utils/easings.cjs +58 -0
  852. package/dist/utils/easings.cjs.map +1 -0
  853. package/dist/utils/easings.d.cts +15 -0
  854. package/dist/utils/easings.d.cts.map +1 -0
  855. package/dist/utils/easings.d.mts +12 -16
  856. package/dist/utils/easings.d.mts.map +1 -0
  857. package/dist/utils/easings.mjs +44 -8
  858. package/dist/utils/easings.mjs.map +1 -1
  859. package/package.json +3 -3
  860. package/dist/Alert.d.ts +0 -19
  861. package/dist/Alert.js +0 -102
  862. package/dist/Alert.js.map +0 -1
  863. package/dist/Avatar.d.ts +0 -17
  864. package/dist/Avatar.js +0 -72
  865. package/dist/Avatar.js.map +0 -1
  866. package/dist/Badge.d.ts +0 -20
  867. package/dist/Badge.js +0 -88
  868. package/dist/Badge.js.map +0 -1
  869. package/dist/Banner.d.ts +0 -18
  870. package/dist/Banner.js +0 -69
  871. package/dist/Banner.js.map +0 -1
  872. package/dist/Button.d.ts +0 -31
  873. package/dist/Button.js +0 -155
  874. package/dist/Button.js.map +0 -1
  875. package/dist/Checkbox.d.ts +0 -12
  876. package/dist/Checkbox.js +0 -63
  877. package/dist/Checkbox.js.map +0 -1
  878. package/dist/Codeblock.d.ts +0 -15
  879. package/dist/Codeblock.js +0 -99
  880. package/dist/Codeblock.js.map +0 -1
  881. package/dist/CrossHair.d.ts +0 -18
  882. package/dist/CrossHair.js +0 -267
  883. package/dist/CrossHair.js.map +0 -1
  884. package/dist/DecryptText.d.ts +0 -13
  885. package/dist/DecryptText.js +0 -105
  886. package/dist/DecryptText.js.map +0 -1
  887. package/dist/Difficulty.d.ts +0 -10
  888. package/dist/Difficulty.js +0 -142
  889. package/dist/Difficulty.js.map +0 -1
  890. package/dist/Divider.d.ts +0 -9
  891. package/dist/Divider.js +0 -51
  892. package/dist/Divider.js.map +0 -1
  893. package/dist/Dropdown.d.ts +0 -80
  894. package/dist/Dropdown.js +0 -613
  895. package/dist/Dropdown.js.map +0 -1
  896. package/dist/GridLines.d.ts +0 -11
  897. package/dist/GridLines.js +0 -91
  898. package/dist/GridLines.js.map +0 -1
  899. package/dist/HeadingReveal.d.ts +0 -15
  900. package/dist/HeadingReveal.js +0 -68
  901. package/dist/HeadingReveal.js.map +0 -1
  902. package/dist/Icon-CuvV8l9m.d.mts +0 -96
  903. package/dist/Icon-CuvV8l9m.d.ts +0 -96
  904. package/dist/Icon.d.ts +0 -2
  905. package/dist/Icon.js +0 -32
  906. package/dist/Icon.js.map +0 -1
  907. package/dist/Input.d.ts +0 -40
  908. package/dist/Input.js +0 -189
  909. package/dist/Input.js.map +0 -1
  910. package/dist/Logo.d.ts +0 -11
  911. package/dist/Logo.js +0 -157
  912. package/dist/Logo.js.map +0 -1
  913. package/dist/Pagination.d.ts +0 -23
  914. package/dist/Pagination.js +0 -188
  915. package/dist/Pagination.js.map +0 -1
  916. package/dist/Slider.d.ts +0 -27
  917. package/dist/Slider.js +0 -344
  918. package/dist/Slider.js.map +0 -1
  919. package/dist/Tabs.d.ts +0 -26
  920. package/dist/Tabs.js +0 -111
  921. package/dist/Tabs.js.map +0 -1
  922. package/dist/Toast.d.ts +0 -18
  923. package/dist/Toast.js +0 -89
  924. package/dist/Toast.js.map +0 -1
  925. package/dist/Tooltip.d.ts +0 -10
  926. package/dist/Tooltip.js +0 -146
  927. package/dist/Tooltip.js.map +0 -1
  928. package/dist/fonts/CommitMono-Regular.woff2.d.mts +0 -2
  929. package/dist/fonts/CommitMono-Regular.woff2.d.ts +0 -2
  930. package/dist/fonts/MONTECHV02-Medium.woff2.d.mts +0 -2
  931. package/dist/fonts/MONTECHV02-Medium.woff2.d.ts +0 -2
  932. package/dist/fonts/Switzer-Regular.woff2.d.mts +0 -2
  933. package/dist/fonts/Switzer-Regular.woff2.d.ts +0 -2
  934. package/dist/icons/Anchor.d.ts +0 -6
  935. package/dist/icons/Anchor.js +0 -89
  936. package/dist/icons/Anchor.js.map +0 -1
  937. package/dist/icons/ArrowLeft.d.ts +0 -6
  938. package/dist/icons/ArrowLeft.js +0 -37
  939. package/dist/icons/ArrowLeft.js.map +0 -1
  940. package/dist/icons/ArrowRight.d.ts +0 -6
  941. package/dist/icons/ArrowRight.js +0 -37
  942. package/dist/icons/ArrowRight.js.map +0 -1
  943. package/dist/icons/Assembly.d.ts +0 -6
  944. package/dist/icons/Assembly.js +0 -172
  945. package/dist/icons/Assembly.js.map +0 -1
  946. package/dist/icons/Backpack.d.ts +0 -6
  947. package/dist/icons/Backpack.js +0 -46
  948. package/dist/icons/Backpack.js.map +0 -1
  949. package/dist/icons/Brave.d.ts +0 -6
  950. package/dist/icons/Brave.js +0 -60
  951. package/dist/icons/Brave.js.map +0 -1
  952. package/dist/icons/Challenge.d.ts +0 -6
  953. package/dist/icons/Challenge.js +0 -42
  954. package/dist/icons/Challenge.js.map +0 -1
  955. package/dist/icons/Chevron.d.ts +0 -6
  956. package/dist/icons/Chevron.js +0 -28
  957. package/dist/icons/Chevron.js.map +0 -1
  958. package/dist/icons/ChevronLeft.d.ts +0 -6
  959. package/dist/icons/ChevronLeft.js +0 -28
  960. package/dist/icons/ChevronLeft.js.map +0 -1
  961. package/dist/icons/ChevronRight.d.ts +0 -6
  962. package/dist/icons/ChevronRight.js +0 -28
  963. package/dist/icons/ChevronRight.js.map +0 -1
  964. package/dist/icons/Claim.d.ts +0 -6
  965. package/dist/icons/Claim.js +0 -38
  966. package/dist/icons/Claim.js.map +0 -1
  967. package/dist/icons/Claimed.d.ts +0 -6
  968. package/dist/icons/Claimed.js +0 -28
  969. package/dist/icons/Claimed.js.map +0 -1
  970. package/dist/icons/Clock.d.ts +0 -6
  971. package/dist/icons/Clock.js +0 -42
  972. package/dist/icons/Clock.js.map +0 -1
  973. package/dist/icons/Close.d.ts +0 -6
  974. package/dist/icons/Close.js +0 -39
  975. package/dist/icons/Close.js.map +0 -1
  976. package/dist/icons/Code.d.ts +0 -6
  977. package/dist/icons/Code.js +0 -40
  978. package/dist/icons/Code.js.map +0 -1
  979. package/dist/icons/Copy.d.ts +0 -6
  980. package/dist/icons/Copy.js +0 -37
  981. package/dist/icons/Copy.js.map +0 -1
  982. package/dist/icons/Cross.d.ts +0 -6
  983. package/dist/icons/Cross.js +0 -37
  984. package/dist/icons/Cross.js.map +0 -1
  985. package/dist/icons/Developer.d.ts +0 -6
  986. package/dist/icons/Developer.js +0 -46
  987. package/dist/icons/Developer.js.map +0 -1
  988. package/dist/icons/Disconnect.d.ts +0 -6
  989. package/dist/icons/Disconnect.js +0 -46
  990. package/dist/icons/Disconnect.js.map +0 -1
  991. package/dist/icons/Discord.d.ts +0 -6
  992. package/dist/icons/Discord.js +0 -28
  993. package/dist/icons/Discord.js.map +0 -1
  994. package/dist/icons/Dollar.d.ts +0 -6
  995. package/dist/icons/Dollar.js +0 -30
  996. package/dist/icons/Dollar.js.map +0 -1
  997. package/dist/icons/DoubleArrow.d.ts +0 -6
  998. package/dist/icons/DoubleArrow.js +0 -37
  999. package/dist/icons/DoubleArrow.js.map +0 -1
  1000. package/dist/icons/EVM.d.ts +0 -6
  1001. package/dist/icons/EVM.js +0 -41
  1002. package/dist/icons/EVM.js.map +0 -1
  1003. package/dist/icons/Email.d.ts +0 -6
  1004. package/dist/icons/Email.js +0 -45
  1005. package/dist/icons/Email.js.map +0 -1
  1006. package/dist/icons/Error.d.ts +0 -6
  1007. package/dist/icons/Error.js +0 -28
  1008. package/dist/icons/Error.js.map +0 -1
  1009. package/dist/icons/Expand.d.ts +0 -6
  1010. package/dist/icons/Expand.js +0 -37
  1011. package/dist/icons/Expand.js.map +0 -1
  1012. package/dist/icons/External.d.ts +0 -6
  1013. package/dist/icons/External.js +0 -38
  1014. package/dist/icons/External.js.map +0 -1
  1015. package/dist/icons/Filter.d.ts +0 -6
  1016. package/dist/icons/Filter.js +0 -45
  1017. package/dist/icons/Filter.js.map +0 -1
  1018. package/dist/icons/Firmware.d.ts +0 -6
  1019. package/dist/icons/Firmware.js +0 -37
  1020. package/dist/icons/Firmware.js.map +0 -1
  1021. package/dist/icons/Flag.d.ts +0 -6
  1022. package/dist/icons/Flag.js +0 -37
  1023. package/dist/icons/Flag.js.map +0 -1
  1024. package/dist/icons/Flame.d.ts +0 -6
  1025. package/dist/icons/Flame.js +0 -28
  1026. package/dist/icons/Flame.js.map +0 -1
  1027. package/dist/icons/Flexible.d.ts +0 -6
  1028. package/dist/icons/Flexible.js +0 -52
  1029. package/dist/icons/Flexible.js.map +0 -1
  1030. package/dist/icons/Free.d.ts +0 -6
  1031. package/dist/icons/Free.js +0 -53
  1032. package/dist/icons/Free.js.map +0 -1
  1033. package/dist/icons/General.d.ts +0 -6
  1034. package/dist/icons/General.js +0 -60
  1035. package/dist/icons/General.js.map +0 -1
  1036. package/dist/icons/Github.d.ts +0 -6
  1037. package/dist/icons/Github.js +0 -39
  1038. package/dist/icons/Github.js.map +0 -1
  1039. package/dist/icons/Globe.d.ts +0 -6
  1040. package/dist/icons/Globe.js +0 -25
  1041. package/dist/icons/Globe.js.map +0 -1
  1042. package/dist/icons/GridView.d.ts +0 -6
  1043. package/dist/icons/GridView.js +0 -51
  1044. package/dist/icons/GridView.js.map +0 -1
  1045. package/dist/icons/Heart.d.ts +0 -6
  1046. package/dist/icons/Heart.js +0 -28
  1047. package/dist/icons/Heart.js.map +0 -1
  1048. package/dist/icons/Info.d.ts +0 -6
  1049. package/dist/icons/Info.js +0 -28
  1050. package/dist/icons/Info.js.map +0 -1
  1051. package/dist/icons/Language.d.ts +0 -6
  1052. package/dist/icons/Language.js +0 -42
  1053. package/dist/icons/Language.js.map +0 -1
  1054. package/dist/icons/Lessons.d.ts +0 -6
  1055. package/dist/icons/Lessons.js +0 -38
  1056. package/dist/icons/Lessons.js.map +0 -1
  1057. package/dist/icons/Link.d.ts +0 -6
  1058. package/dist/icons/Link.js +0 -37
  1059. package/dist/icons/Link.js.map +0 -1
  1060. package/dist/icons/ListView.d.ts +0 -6
  1061. package/dist/icons/ListView.js +0 -44
  1062. package/dist/icons/ListView.js.map +0 -1
  1063. package/dist/icons/Loading.d.ts +0 -6
  1064. package/dist/icons/Loading.js +0 -40
  1065. package/dist/icons/Loading.js.map +0 -1
  1066. package/dist/icons/Locked.d.ts +0 -6
  1067. package/dist/icons/Locked.js +0 -37
  1068. package/dist/icons/Locked.js.map +0 -1
  1069. package/dist/icons/Logs.d.ts +0 -6
  1070. package/dist/icons/Logs.js +0 -26
  1071. package/dist/icons/Logs.js.map +0 -1
  1072. package/dist/icons/Mentor.d.ts +0 -6
  1073. package/dist/icons/Mentor.js +0 -47
  1074. package/dist/icons/Mentor.js.map +0 -1
  1075. package/dist/icons/Metamask.d.ts +0 -6
  1076. package/dist/icons/Metamask.js +0 -72
  1077. package/dist/icons/Metamask.js.map +0 -1
  1078. package/dist/icons/Minimize.d.ts +0 -6
  1079. package/dist/icons/Minimize.js +0 -37
  1080. package/dist/icons/Minimize.js.map +0 -1
  1081. package/dist/icons/Modular.d.ts +0 -6
  1082. package/dist/icons/Modular.js +0 -53
  1083. package/dist/icons/Modular.js.map +0 -1
  1084. package/dist/icons/NFT.d.ts +0 -6
  1085. package/dist/icons/NFT.js +0 -49
  1086. package/dist/icons/NFT.js.map +0 -1
  1087. package/dist/icons/Online.d.ts +0 -6
  1088. package/dist/icons/Online.js +0 -55
  1089. package/dist/icons/Online.js.map +0 -1
  1090. package/dist/icons/Password.d.ts +0 -6
  1091. package/dist/icons/Password.js +0 -44
  1092. package/dist/icons/Password.js.map +0 -1
  1093. package/dist/icons/Path.d.ts +0 -6
  1094. package/dist/icons/Path.js +0 -42
  1095. package/dist/icons/Path.js.map +0 -1
  1096. package/dist/icons/Perks.d.ts +0 -6
  1097. package/dist/icons/Perks.js +0 -41
  1098. package/dist/icons/Perks.js.map +0 -1
  1099. package/dist/icons/Phantom.d.ts +0 -6
  1100. package/dist/icons/Phantom.js +0 -28
  1101. package/dist/icons/Phantom.js.map +0 -1
  1102. package/dist/icons/Play.d.ts +0 -6
  1103. package/dist/icons/Play.js +0 -28
  1104. package/dist/icons/Play.js.map +0 -1
  1105. package/dist/icons/Product.d.ts +0 -6
  1106. package/dist/icons/Product.js +0 -44
  1107. package/dist/icons/Product.js.map +0 -1
  1108. package/dist/icons/Progress.d.ts +0 -6
  1109. package/dist/icons/Progress.js +0 -37
  1110. package/dist/icons/Progress.js.map +0 -1
  1111. package/dist/icons/Protocol.d.ts +0 -6
  1112. package/dist/icons/Protocol.js +0 -44
  1113. package/dist/icons/Protocol.js.map +0 -1
  1114. package/dist/icons/Refresh.d.ts +0 -6
  1115. package/dist/icons/Refresh.js +0 -37
  1116. package/dist/icons/Refresh.js.map +0 -1
  1117. package/dist/icons/Rewards.d.ts +0 -6
  1118. package/dist/icons/Rewards.js +0 -38
  1119. package/dist/icons/Rewards.js.map +0 -1
  1120. package/dist/icons/Rust.d.ts +0 -6
  1121. package/dist/icons/Rust.js +0 -146
  1122. package/dist/icons/Rust.js.map +0 -1
  1123. package/dist/icons/Search.d.ts +0 -6
  1124. package/dist/icons/Search.js +0 -52
  1125. package/dist/icons/Search.js.map +0 -1
  1126. package/dist/icons/SmartContract.d.ts +0 -6
  1127. package/dist/icons/SmartContract.js +0 -28
  1128. package/dist/icons/SmartContract.js.map +0 -1
  1129. package/dist/icons/Solana.d.ts +0 -6
  1130. package/dist/icons/Solana.js +0 -52
  1131. package/dist/icons/Solana.js.map +0 -1
  1132. package/dist/icons/Solflare.d.ts +0 -6
  1133. package/dist/icons/Solflare.js +0 -28
  1134. package/dist/icons/Solflare.js.map +0 -1
  1135. package/dist/icons/Success.d.ts +0 -6
  1136. package/dist/icons/Success.js +0 -31
  1137. package/dist/icons/Success.js.map +0 -1
  1138. package/dist/icons/SuccessCircle.d.ts +0 -6
  1139. package/dist/icons/SuccessCircle.js +0 -31
  1140. package/dist/icons/SuccessCircle.js.map +0 -1
  1141. package/dist/icons/Table.d.ts +0 -6
  1142. package/dist/icons/Table.js +0 -44
  1143. package/dist/icons/Table.js.map +0 -1
  1144. package/dist/icons/Target.d.ts +0 -6
  1145. package/dist/icons/Target.js +0 -47
  1146. package/dist/icons/Target.js.map +0 -1
  1147. package/dist/icons/Training.d.ts +0 -6
  1148. package/dist/icons/Training.js +0 -44
  1149. package/dist/icons/Training.js.map +0 -1
  1150. package/dist/icons/Typescript.d.ts +0 -6
  1151. package/dist/icons/Typescript.js +0 -124
  1152. package/dist/icons/Typescript.js.map +0 -1
  1153. package/dist/icons/Unclaimed.d.ts +0 -6
  1154. package/dist/icons/Unclaimed.js +0 -37
  1155. package/dist/icons/Unclaimed.js.map +0 -1
  1156. package/dist/icons/Upload.d.ts +0 -6
  1157. package/dist/icons/Upload.js +0 -38
  1158. package/dist/icons/Upload.js.map +0 -1
  1159. package/dist/icons/User.d.ts +0 -6
  1160. package/dist/icons/User.js +0 -44
  1161. package/dist/icons/User.js.map +0 -1
  1162. package/dist/icons/Wallet.d.ts +0 -6
  1163. package/dist/icons/Wallet.js +0 -46
  1164. package/dist/icons/Wallet.js.map +0 -1
  1165. package/dist/icons/WalletSmall.d.ts +0 -6
  1166. package/dist/icons/WalletSmall.js +0 -37
  1167. package/dist/icons/WalletSmall.js.map +0 -1
  1168. package/dist/icons/Warning.d.ts +0 -6
  1169. package/dist/icons/Warning.js +0 -33
  1170. package/dist/icons/Warning.js.map +0 -1
  1171. package/dist/icons/X.d.ts +0 -6
  1172. package/dist/icons/X.js +0 -28
  1173. package/dist/icons/X.js.map +0 -1
  1174. package/dist/icons/index.d.ts +0 -2
  1175. package/dist/icons/index.js +0 -177
  1176. package/dist/icons/index.js.map +0 -1
  1177. package/dist/index.d.ts +0 -27
  1178. package/dist/index.js +0 -154
  1179. package/dist/index.js.map +0 -1
  1180. package/dist/index.mjs.map +0 -1
  1181. package/dist/utils/colours.d.ts +0 -31
  1182. package/dist/utils/colours.js +0 -36
  1183. package/dist/utils/colours.js.map +0 -1
  1184. package/dist/utils/easings.d.ts +0 -19
  1185. package/dist/utils/easings.js +0 -23
  1186. package/dist/utils/easings.js.map +0 -1
  1187. /package/dist/{fonts/CommitMono-Regular.woff2 → assets/CommitMono-Regular-CO8xzcA8.woff2} +0 -0
  1188. /package/dist/{fonts/MONTECHV02-Medium.woff2 → assets/MONTECHV02-Medium-sFbAcPHg.woff2} +0 -0
  1189. /package/dist/{fonts/Switzer-Regular.woff2 → assets/Switzer-Regular-T9RxCVNS.woff2} +0 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/Dropdown.tsx"],"names":[],"mappings":"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","file":"Dropdown.mjs","sourcesContent":["\"use client\";\n\nimport { Button, ButtonProps } from \"./Button\";\nimport { useRef, useState, useEffect, useCallback } from \"react\";\nimport { AnimatePresence, motion } from \"motion/react\";\nimport classNames from \"classnames\";\nimport { swift } from \"./utils/easings\";\nimport { Checkbox } from \"./Checkbox\";\nimport { Divider } from \"./Divider\";\nimport { Icon, type IconProps } from \"./Icon\";\nimport { useOnClickOutside } from \"usehooks-ts\";\nimport { CrosshairCorners } from \"./CrossHair\";\nimport { isValidElement, ReactNode } from \"react\";\n\nexport type DropdownOption = {\n label: string;\n icon?: IconProps | ReactNode;\n value: string;\n disabled?: boolean;\n children?: DropdownOption[];\n};\n\nexport type DropdownProps = {\n className?: string;\n items: DropdownOption[];\n selectedItem?: string | string[] | undefined;\n handleChange: (item: string | string[] | undefined) => void;\n multiple?: boolean;\n disabled?: boolean;\n label: string | ((selectedLabel: string) => string);\n multiSelectLabel?: string;\n buttonClassName?: string;\n menuClassName?: string;\n subMenuClassName?: string;\n menuIcon?: IconProps | ReactNode;\n size?: \"sm\" | \"md\" | \"lg\";\n isScrollable?: boolean;\n animationOrigin?: \"top-left\" | \"top-center\" | \"top-right\";\n search?: string;\n onClearSearch?: () => void;\n showSelectAll?: boolean;\n showClear?: boolean;\n showSelectedItem?: boolean;\n};\n\nexport type DropdownButtonProps = {\n label: string | ((selectedLabel: string) => string);\n multiSelectLabel?: string;\n disabled?: boolean;\n className?: string;\n onClick: () => void;\n buttonClassName?: string;\n selectedItems?: DropdownProps[\"items\"];\n multiple?: boolean;\n count?: number;\n menuIcon?: IconProps | ReactNode;\n size?: \"sm\" | \"md\" | \"lg\";\n onClear?: () => void;\n showSelectedItem?: boolean;\n showClear?: boolean;\n};\n\nexport type DropdownItemProps = {\n label: string;\n icon?: IconProps | ReactNode;\n onClick: () => void;\n disabled?: boolean;\n isSelected?: boolean;\n size?: \"sm\" | \"md\" | \"lg\";\n};\n\nexport type DropdownMenuProps = {\n items: DropdownOption[];\n selectedItem?: string | string[] | undefined;\n handleChange: (item: string | string[] | undefined) => void;\n multiple?: boolean;\n menuClassName?: string;\n size?: \"sm\" | \"md\" | \"lg\";\n isOpen: boolean;\n onItemClick?: (value: string) => void;\n isScrollable?: boolean;\n animationOrigin?: \"top-left\" | \"top-center\" | \"top-right\";\n search?: string;\n onClearSearch?: () => void;\n showSelectAll?: boolean;\n showSafeTriangle?: boolean;\n subMenuClassName?: string;\n};\n\n// Track mouse position for SafeArea triangles\nconst useMousePosition = () => {\n const [mousePosition, setMousePosition] = useState<[number, number]>([0, 0]);\n\n const updateMousePosition = useCallback((ev: MouseEvent) => {\n setMousePosition([ev.clientX, ev.clientY]);\n }, []);\n\n useEffect(() => {\n const throttledUpdate = (ev: MouseEvent) => {\n requestAnimationFrame(() => updateMousePosition(ev));\n };\n\n window.addEventListener(\"mousemove\", throttledUpdate);\n return () => window.removeEventListener(\"mousemove\", throttledUpdate);\n }, [updateMousePosition]);\n\n return mousePosition;\n};\n\ntype MouseSafeAreaProps = {\n submenuRef: React.RefObject<HTMLDivElement | null>;\n parentRef: React.RefObject<HTMLDivElement | null>;\n onEnter?: () => void;\n onLeave?: () => void;\n debug?: boolean;\n};\n\n// Component to cover the area between the mouse cursor and the sub-menu, to allow moving cursor to lower parts of sub-menu without the sub-menu disappearing.\nconst MouseSafeArea = ({\n parentRef,\n submenuRef,\n onEnter,\n onLeave,\n debug = false,\n}: MouseSafeAreaProps) => {\n const {\n x = 0,\n y = 0,\n height: h = 0,\n width: w = 0,\n } = submenuRef.current?.getBoundingClientRect() || {};\n const [mouseX, mouseY] = useMousePosition();\n const positions = { x, y, h, w, mouseX, mouseY };\n\n return (\n <div\n style={{\n position: \"absolute\",\n left: getLeft(positions),\n right: getRight(positions),\n top: 0,\n width: getWidth(positions),\n height: h,\n clipPath: getClipPath(positions),\n pointerEvents: \"auto\",\n zIndex: 9999,\n backgroundColor: debug ? \"rgba(0, 179, 179, 0.25)\" : \"transparent\",\n }}\n onMouseEnter={onEnter}\n onMouseLeave={onLeave}\n />\n );\n};\n\ninterface Positions {\n /* Sub-menu x */\n x: number;\n /* Sub-menu y */\n y: number;\n /* Sub-menu height */\n h: number;\n /* Sub-menu width */\n w: number;\n /* Mouse x */\n mouseX: number;\n /* Mouse y */\n mouseY: number;\n}\n\nconst getLeft = ({ x, mouseX }: Positions) =>\n mouseX > x ? undefined : -Math.max(x - mouseX, 10) + \"px\";\nconst getRight = ({ x, w, mouseX }: Positions) =>\n mouseX > x ? -Math.max(mouseX - (x + w), 10) + \"px\" : undefined;\nconst getWidth = ({ x, w, mouseX }: Positions) =>\n mouseX > x\n ? Math.max(mouseX - (x + w), 10) + \"px\"\n : Math.max(x - mouseX, 10) + \"px\";\nconst getClipPath = ({ x, y, h, mouseX, mouseY }: Positions) =>\n mouseX < x\n ? `polygon(100% 0%, 0% ${(100 * (mouseY - y)) / h}%, 100% 100%)`\n : `polygon(0% 0%, 0% 100%, 100% ${(100 * (mouseY - y)) / h}%)`;\n\nexport const DropdownMenu = ({\n items,\n selectedItem,\n handleChange,\n multiple = false,\n menuClassName,\n size = \"md\",\n isOpen,\n onItemClick,\n isScrollable = false,\n animationOrigin = \"top-left\",\n search,\n onClearSearch,\n showSelectAll = true,\n showSafeTriangle = false,\n subMenuClassName,\n}: DropdownMenuProps) => {\n const [isAtBottom, setIsAtBottom] = useState(false);\n const scrollContainerRef = useRef<HTMLDivElement>(null);\n\n // Filter items based on search term\n const filteredItems = (() => {\n // If search is provided, filter based on search\n if (search) {\n return items.filter((item) =>\n item.label.toLowerCase().includes(search.toLowerCase()),\n );\n }\n\n // Default: show all items\n return items;\n })();\n\n // Handle scroll detection\n const handleScroll = useCallback(() => {\n const container = scrollContainerRef.current;\n if (!container) return;\n\n const { scrollTop, scrollHeight, clientHeight } = container;\n const threshold = 5; // Small threshold to account for rounding\n const isNearBottom = scrollTop + clientHeight >= scrollHeight - threshold;\n\n setIsAtBottom(isNearBottom);\n }, []);\n\n // Reset scroll state when items change or menu opens\n useEffect(() => {\n if (isOpen) {\n setIsAtBottom(false);\n }\n }, [isOpen, filteredItems.length]);\n\n // Check if content is actually scrollable\n useEffect(() => {\n const container = scrollContainerRef.current;\n if (!container || !isOpen) return;\n\n const { scrollHeight, clientHeight } = container;\n const hasScrollbar = scrollHeight > clientHeight;\n\n // If no scrollbar (content fits), consider it \"at bottom\"\n if (!hasScrollbar) {\n setIsAtBottom(true);\n }\n }, [isOpen, filteredItems.length]);\n\n // Helper to check if an item is selected\n const isItemSelected = (value: string) => {\n if (multiple) {\n return (\n Array.isArray(selectedItem) &&\n selectedItem.length > 0 &&\n selectedItem.includes(value)\n );\n }\n return !!selectedItem && selectedItem === value;\n };\n\n const flattenSelectable = (options: DropdownOption[]): DropdownOption[] => {\n const out: DropdownOption[] = [];\n const walk = (nodes: DropdownOption[]) => {\n nodes.forEach((n) => {\n if (n.children && n.children.length > 0) {\n walk(n.children);\n } else {\n out.push(n);\n }\n });\n };\n walk(options);\n return out;\n };\n\n // Handle item selection\n const handleItemClick = (value: string) => {\n if (multiple) {\n const currentSelection = Array.isArray(selectedItem) ? selectedItem : [];\n\n // If all items are selected, clicking any item should deselect all others\n if (isAllSelected()) {\n handleChange([value]);\n } else if (currentSelection.includes(value)) {\n // Remove from selection\n handleChange(currentSelection.filter((item) => item !== value));\n } else {\n // Add to selection\n handleChange([...currentSelection, value]);\n }\n } else {\n // Single select - if clicking the already selected item, deselect it\n if (selectedItem === value) {\n handleChange(undefined);\n } else {\n // Otherwise, select the new item\n handleChange(value);\n }\n // Call the optional callback for single select\n onItemClick?.(value);\n }\n };\n\n // Handle select all\n const handleSelectAll = () => {\n const currentSelection = Array.isArray(selectedItem) ? selectedItem : [];\n const allValues = flattenSelectable(filteredItems)\n .filter((item) => !item.disabled)\n .map((item) => item.value);\n\n if (currentSelection.length === allValues.length) {\n // Deselect all\n handleChange([]);\n } else {\n // Select all\n handleChange(allValues);\n }\n };\n\n // Check if all items are selected\n const isAllSelected = () => {\n if (!Array.isArray(selectedItem) || selectedItem.length === 0) return false;\n const selectableItems = flattenSelectable(filteredItems).filter(\n (item) => !item.disabled,\n );\n return (\n selectableItems.length > 0 &&\n selectedItem.length === selectableItems.length &&\n selectableItems.every((item) => selectedItem.includes(item.value))\n );\n };\n\n return (\n <AnimatePresence>\n {isOpen && (\n <motion.div\n initial={{ opacity: 0, scale: 0.8, y: -15 }}\n animate={{ opacity: 1, scale: 1, y: 0 }}\n transition={{ duration: 0.1, ease: swift }}\n exit={{ opacity: 0, scale: 0.8, y: -5 }}\n className={classNames(\n \"z-50 absolute top-[calc(100%+6px)] p-1 bg-card-foreground border border-border-light\",\n (size === \"lg\" || size === \"md\") && \"min-w-[200px]\",\n animationOrigin === \"top-left\" && \"origin-top-left\",\n animationOrigin === \"top-center\" && \"origin-top-center\",\n animationOrigin === \"top-right\" && \"origin-top-right\",\n menuClassName,\n )}\n >\n <div\n ref={scrollContainerRef}\n onScroll={handleScroll}\n className={classNames(\n \"flex flex-col gap-y-1\",\n isScrollable && [\n \"max-h-[250px] overflow-y-auto\",\n !isAtBottom &&\n \"[mask-image:linear-gradient(180deg,black,black_85%,transparent_100%)]\",\n ],\n )}\n >\n {multiple && showSelectAll && (\n <div className=\"group flex flex-col gap-y-1\">\n <button\n onClick={handleSelectAll}\n className={classNames(\n \"py-3 pl-2.5 pr-3 flex items-center gap-x-2.5 outline-none bg-transparent transition-colors duration-100 ease-crisp hover:bg-border-light/50\",\n )}\n >\n <Checkbox checked={isAllSelected()} />\n <span className=\"text-sm text-shade-primary font-medium\">\n Select All\n </span>\n </button>\n <Divider direction=\"horizontal\" />\n </div>\n )}\n {filteredItems.length > 0 ? (\n filteredItems.map((item) =>\n item.children && item.children.length > 0 ? (\n <DropdownSubmenuItem\n key={item.value}\n item={item}\n size={size}\n onLeafClick={handleItemClick}\n isLeafSelected={isItemSelected}\n />\n ) : (\n <DropdownItem\n key={item.value}\n label={item.label}\n icon={item.icon}\n onClick={() => handleItemClick(item.value)}\n disabled={item.disabled}\n isSelected={isItemSelected(item.value)}\n size={size}\n />\n ),\n )\n ) : (\n <button\n onClick={() => {\n // Clear search by calling the onClearSearch callback\n if (onClearSearch) {\n onClearSearch();\n }\n }}\n className=\"py-3 pl-2.5 pr-3 text-sm font-mono text-shade-tertiary hover:bg-border-light/50 transition-colors duration-100 ease-crisp w-full text-center\"\n >\n No options found\n </button>\n )}\n </div>\n </motion.div>\n )}\n </AnimatePresence>\n );\n};\n\nexport const Dropdown = ({\n className,\n items,\n selectedItem,\n handleChange,\n label = \"View All\",\n multiSelectLabel,\n disabled,\n buttonClassName,\n menuClassName,\n multiple = false,\n menuIcon,\n size = \"md\",\n isScrollable = false,\n search,\n onClearSearch,\n showSelectAll,\n showClear = true,\n subMenuClassName,\n showSelectedItem = true,\n}: DropdownProps) => {\n const [isOpen, setIsOpen] = useState(false);\n\n // Handle item selection for single select (closes menu)\n const handleItemClick = (value: string) => {\n if (!multiple) {\n // Single select - if clicking the already selected item, deselect it\n if (selectedItem === value) {\n handleChange(undefined);\n } else {\n // Otherwise, select the new item\n handleChange(value);\n }\n setIsOpen(false);\n }\n };\n\n const ref = useRef<HTMLDivElement>(null);\n\n const handleClickOutside = () => {\n setIsOpen(false);\n };\n\n // Cast ref to RefObject<HTMLElement> to satisfy useOnClickOutside's expected type\n useOnClickOutside(ref as React.RefObject<HTMLElement>, handleClickOutside);\n\n // Get selected items for display in button\n const getSelectedItems = () => {\n const flatten = (options: DropdownOption[]): DropdownOption[] => {\n const out: DropdownOption[] = [];\n const walk = (nodes: DropdownOption[]) => {\n nodes.forEach((n) => {\n if (n.children && n.children.length > 0) {\n walk(n.children);\n } else {\n out.push(n);\n }\n });\n };\n walk(options);\n return out;\n };\n\n const leaves = flatten(items);\n if (multiple) {\n const selectedValues = Array.isArray(selectedItem) ? selectedItem : [];\n return leaves.filter((item) => selectedValues.includes(item.value));\n }\n const selected = leaves.find((item) => item.value === selectedItem);\n return selected ? [selected] : [];\n };\n\n return (\n <div\n ref={ref}\n className={classNames(\n \"relative flex flex-col gap-y-1.5 items-start\",\n className,\n )}\n >\n <DropdownButton\n label={label}\n multiSelectLabel={multiSelectLabel}\n disabled={disabled}\n className={buttonClassName}\n onClick={() => setIsOpen(!isOpen)}\n selectedItems={getSelectedItems()}\n multiple={multiple}\n count={getSelectedItems().length}\n menuIcon={menuIcon}\n size={size}\n onClear={() => handleChange(multiple ? [] : undefined)}\n showClear={showClear}\n showSelectedItem={showSelectedItem}\n />\n\n <DropdownMenu\n items={items}\n selectedItem={selectedItem}\n handleChange={handleChange}\n multiple={multiple}\n menuClassName={menuClassName}\n size={size}\n isOpen={isOpen}\n onItemClick={handleItemClick}\n isScrollable={isScrollable}\n search={search}\n onClearSearch={onClearSearch}\n showSelectAll={showSelectAll}\n subMenuClassName={subMenuClassName}\n />\n </div>\n );\n};\n\nexport const DropdownButton = ({\n label,\n multiSelectLabel,\n disabled,\n className,\n onClick,\n selectedItems = [],\n multiple = false,\n count = 0,\n menuIcon,\n size,\n onClear,\n showClear,\n showSelectedItem,\n}: DropdownButtonProps) => {\n const [isHovered, setIsHovered] = useState(false);\n\n // Determine what to display\n const hasSelection = selectedItems.length > 0;\n const isSingleSelection = selectedItems.length === 1;\n const isMultipleSelection = selectedItems.length > 1;\n\n // Compute icon and label based on selection state\n let buttonIcon: ButtonProps[\"icon\"] | undefined;\n let buttonLabel: string;\n\n if (hasSelection && isSingleSelection) {\n // Single selection: show selected item's icon and label\n const selectedItem = selectedItems[0];\n buttonIcon = selectedItem.icon\n ? isValidElement(selectedItem.icon)\n ? selectedItem.icon\n : {\n name: (selectedItem.icon as IconProps).name,\n className: (selectedItem.icon as IconProps).className || \"\",\n size: (selectedItem.icon as IconProps).size || 18,\n }\n : menuIcon;\n // If label is a function, call it with the selected item's label; otherwise use the selected item's label directly\n buttonLabel =\n typeof label === \"function\"\n ? label(selectedItem.label)\n : selectedItem.label;\n } else if (isMultipleSelection && multiple && multiSelectLabel) {\n // Multiple selections: show count and multiSelectLabel\n\n buttonIcon = menuIcon\n ? isValidElement(menuIcon)\n ? menuIcon\n : {\n name: (menuIcon as IconProps).name,\n className: (menuIcon as IconProps).className || \"\",\n size: (menuIcon as IconProps).size || 18,\n }\n : undefined;\n buttonLabel = `${count} ${multiSelectLabel}`;\n } else {\n // Default: no selection - use label as string\n buttonIcon = menuIcon;\n buttonLabel = typeof label === \"function\" ? label(\"\") : label;\n }\n\n return (\n <Button\n icon={buttonIcon}\n label={showSelectedItem ? buttonLabel : undefined}\n disabled={disabled}\n size={size}\n variant=\"secondary\"\n className={classNames(\n \"!origin-bottom-left !justify-start w-full\",\n (size === \"md\" || size === \"lg\") && \"!pr-[18px] !pl-[12px]\",\n size === \"sm\" && \"!pr-4 !pl-3\",\n showClear && \"!pr-[48px]\",\n className,\n )}\n useDecryptAnimation={false}\n useHoverEffect={false}\n crosshairProps={{\n variant: \"corners\",\n corners: [\"bottom-right\"],\n spacingX: !isHovered ? -6 : -4,\n spacingY: !isHovered ? -6 : -4,\n animationDuration: 0.5,\n animationDelay: 0,\n className: \"text-shade-mute group-hover:text-shade-primary\",\n }}\n onClick={onClick}\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n children={\n hasSelection &&\n showClear && (\n <div\n className=\"order-last top-1/2 -translate-y-1/2 right-2 absolute h-[24px] w-[24px] flex items-center justify-center hover:bg-background/40 transition duration-100 ease-crisp cursor-pointer\"\n onClick={(e) => {\n e.stopPropagation();\n onClear?.();\n }}\n >\n <Icon name=\"Close\" size={12} />\n </div>\n )\n }\n />\n );\n};\n\nexport const DropdownItem = ({\n label,\n icon,\n onClick,\n disabled,\n isSelected = false,\n size,\n}: DropdownItemProps) => {\n return (\n <button\n onClick={onClick}\n disabled={disabled}\n className={classNames(\n \"hover:bg-border-light/50 relative group/item disabled:opacity-40 flex items-center gap-x-2.5 outline-none transition-colors duration-100 ease-crisp\",\n size === \"lg\" && \"py-4 pl-3 pr-3 text-base\",\n size === \"md\" && \"py-3 pl-2.5 pr-3 text-sm\",\n size === \"sm\" && \"py-2 pl-2.5 pr-3 h-[36px] text-sm\",\n isSelected && \"bg-background/50\",\n )}\n >\n <div className=\"opacity-0 group-hover/item:!opacity-100 absolute inset-0.5\">\n <CrosshairCorners\n size={6}\n variant=\"corners\"\n corners={[\"bottom-right\"]}\n className=\"text-shade-mute\"\n animationDelay={0}\n animationDuration={0.5}\n />\n </div>\n\n {icon && (\n <>\n {isValidElement(icon) ? (\n icon\n ) : (\n <Icon\n name={(icon as IconProps).name}\n className={classNames(\n \"flex-shrink-0\",\n (icon as IconProps).className,\n )}\n size={(icon as IconProps).size || 18}\n />\n )}\n </>\n )}\n <span\n className={classNames(\" text-shade-primary font-medium leading-[100%]\")}\n >\n {label}\n </span>\n </button>\n );\n};\n\ntype DropdownSubmenuItemProps = {\n item: DropdownOption;\n size?: \"sm\" | \"md\" | \"lg\";\n onLeafClick: (value: string) => void;\n isLeafSelected: (value: string) => boolean;\n subMenuClassName?: string;\n};\n\nconst DropdownSubmenuItem = ({\n item,\n size = \"md\",\n subMenuClassName,\n onLeafClick,\n isLeafSelected,\n}: DropdownSubmenuItemProps) => {\n const parentRef = useRef<HTMLDivElement | null>(null);\n const submenuRef = useRef<HTMLDivElement | null>(null);\n\n const [hoverParent, setHoverParent] = useState(false);\n const [hoverSubmenu, setHoverSubmenu] = useState(false);\n const [hoverSafe, setHoverSafe] = useState(false);\n\n const open = hoverParent || hoverSubmenu || hoverSafe;\n\n return (\n <div\n ref={parentRef}\n className={classNames(\"relative\", subMenuClassName)}\n onMouseEnter={() => setHoverParent(true)}\n onMouseLeave={() => setHoverParent(false)}\n >\n <button\n type=\"button\"\n className={classNames(\n \"hover:bg-border-light/50 relative h-max group/item disabled:opacity-40 flex items-center justify-between gap-x-2.5 w-full outline-none transition-colors duration-100 ease-crisp\",\n size === \"lg\" && \"py-4 pl-3 pr-3 text-base\",\n size === \"md\" && \"py-3 pl-2.5 pr-3 text-sm\",\n size === \"sm\" && \"py-2 pl-2.5 pr-3 !h-[36px] text-sm\",\n open && \"bg-border-light/50\",\n )}\n disabled={item.disabled}\n >\n <span className=\"flex items-center gap-x-2.5\">\n {item.icon && (\n <>\n {isValidElement(item.icon) ? (\n item.icon\n ) : (\n <Icon\n name={(item.icon as IconProps).name}\n className={classNames(\n \"flex-shrink-0\",\n (item.icon as IconProps).className,\n )}\n size={(item.icon as IconProps).size || 18}\n />\n )}\n </>\n )}\n <span className=\"text-shade-primary font-medium leading-[100%]\">\n {item.label}\n </span>\n </span>\n <Icon name=\"ChevronRight\" size={12} className=\"text-shade-tertiary\" />\n </button>\n\n {open && (\n <div\n ref={submenuRef}\n onMouseEnter={() => setHoverSubmenu(true)}\n onMouseLeave={() => setHoverSubmenu(false)}\n className={classNames(\n \"z-[60] !absolute top-0 left-[calc(100%+6px)] p-1 bg-card-foreground gradient-border before:bg-card-border min-w-[180px]\",\n )}\n >\n <MouseSafeArea\n parentRef={parentRef}\n submenuRef={submenuRef}\n onEnter={() => setHoverSafe(true)}\n onLeave={() => setHoverSafe(false)}\n />\n <div className=\"flex flex-col gap-y-1\">\n {(item.children || []).map((child) =>\n child.children && child.children.length > 0 ? (\n <DropdownSubmenuItem\n key={child.value}\n item={child}\n size={size}\n onLeafClick={onLeafClick}\n isLeafSelected={isLeafSelected}\n />\n ) : (\n <DropdownItem\n key={child.value}\n label={child.label}\n icon={child.icon}\n onClick={() => onLeafClick(child.value)}\n disabled={child.disabled}\n isSelected={isLeafSelected(child.value)}\n size={size}\n />\n ),\n )}\n </div>\n </div>\n )}\n </div>\n );\n};\n"]}
1
+ {"version":3,"file":"Dropdown.mjs","names":["out: DropdownOption[]","buttonIcon: ButtonProps[\"icon\"] | undefined","buttonLabel: string"],"sources":["../src/Dropdown.tsx"],"sourcesContent":["\"use client\";\n\nimport { Button, ButtonProps } from \"./Button\";\nimport { useRef, useState, useEffect, useCallback } from \"react\";\nimport { AnimatePresence, motion } from \"motion/react\";\nimport classNames from \"classnames\";\nimport { swift } from \"./utils/easings\";\nimport { Checkbox } from \"./Checkbox\";\nimport { Divider } from \"./Divider\";\nimport { Icon, type IconProps } from \"./Icon\";\nimport { useOnClickOutside } from \"usehooks-ts\";\nimport { CrosshairCorners } from \"./CrossHair\";\nimport { isValidElement, ReactNode } from \"react\";\n\nexport type DropdownOption = {\n label: string;\n icon?: IconProps | ReactNode;\n value: string;\n disabled?: boolean;\n children?: DropdownOption[];\n};\n\nexport type DropdownProps = {\n className?: string;\n items: DropdownOption[];\n selectedItem?: string | string[] | undefined;\n handleChange: (item: string | string[] | undefined) => void;\n multiple?: boolean;\n disabled?: boolean;\n label: string | ((selectedLabel: string) => string);\n multiSelectLabel?: string;\n buttonClassName?: string;\n menuClassName?: string;\n subMenuClassName?: string;\n menuIcon?: IconProps | ReactNode;\n size?: \"sm\" | \"md\" | \"lg\";\n isScrollable?: boolean;\n animationOrigin?: \"top-left\" | \"top-center\" | \"top-right\";\n search?: string;\n onClearSearch?: () => void;\n showSelectAll?: boolean;\n showClear?: boolean;\n showSelectedItem?: boolean;\n};\n\nexport type DropdownButtonProps = {\n label: string | ((selectedLabel: string) => string);\n multiSelectLabel?: string;\n disabled?: boolean;\n className?: string;\n onClick: () => void;\n buttonClassName?: string;\n selectedItems?: DropdownProps[\"items\"];\n multiple?: boolean;\n count?: number;\n menuIcon?: IconProps | ReactNode;\n size?: \"sm\" | \"md\" | \"lg\";\n onClear?: () => void;\n showSelectedItem?: boolean;\n showClear?: boolean;\n};\n\nexport type DropdownItemProps = {\n label: string;\n icon?: IconProps | ReactNode;\n onClick: () => void;\n disabled?: boolean;\n isSelected?: boolean;\n size?: \"sm\" | \"md\" | \"lg\";\n};\n\nexport type DropdownMenuProps = {\n items: DropdownOption[];\n selectedItem?: string | string[] | undefined;\n handleChange: (item: string | string[] | undefined) => void;\n multiple?: boolean;\n menuClassName?: string;\n size?: \"sm\" | \"md\" | \"lg\";\n isOpen: boolean;\n onItemClick?: (value: string) => void;\n isScrollable?: boolean;\n animationOrigin?: \"top-left\" | \"top-center\" | \"top-right\";\n search?: string;\n onClearSearch?: () => void;\n showSelectAll?: boolean;\n showSafeTriangle?: boolean;\n subMenuClassName?: string;\n};\n\n// Track mouse position for SafeArea triangles\nconst useMousePosition = () => {\n const [mousePosition, setMousePosition] = useState<[number, number]>([0, 0]);\n\n const updateMousePosition = useCallback((ev: MouseEvent) => {\n setMousePosition([ev.clientX, ev.clientY]);\n }, []);\n\n useEffect(() => {\n const throttledUpdate = (ev: MouseEvent) => {\n requestAnimationFrame(() => updateMousePosition(ev));\n };\n\n window.addEventListener(\"mousemove\", throttledUpdate);\n return () => window.removeEventListener(\"mousemove\", throttledUpdate);\n }, [updateMousePosition]);\n\n return mousePosition;\n};\n\ntype MouseSafeAreaProps = {\n submenuRef: React.RefObject<HTMLDivElement | null>;\n parentRef: React.RefObject<HTMLDivElement | null>;\n onEnter?: () => void;\n onLeave?: () => void;\n debug?: boolean;\n};\n\n// Component to cover the area between the mouse cursor and the sub-menu, to allow moving cursor to lower parts of sub-menu without the sub-menu disappearing.\nconst MouseSafeArea = ({\n parentRef,\n submenuRef,\n onEnter,\n onLeave,\n debug = false,\n}: MouseSafeAreaProps) => {\n const {\n x = 0,\n y = 0,\n height: h = 0,\n width: w = 0,\n } = submenuRef.current?.getBoundingClientRect() || {};\n const [mouseX, mouseY] = useMousePosition();\n const positions = { x, y, h, w, mouseX, mouseY };\n\n return (\n <div\n style={{\n position: \"absolute\",\n left: getLeft(positions),\n right: getRight(positions),\n top: 0,\n width: getWidth(positions),\n height: h,\n clipPath: getClipPath(positions),\n pointerEvents: \"auto\",\n zIndex: 9999,\n backgroundColor: debug ? \"rgba(0, 179, 179, 0.25)\" : \"transparent\",\n }}\n onMouseEnter={onEnter}\n onMouseLeave={onLeave}\n />\n );\n};\n\ninterface Positions {\n /* Sub-menu x */\n x: number;\n /* Sub-menu y */\n y: number;\n /* Sub-menu height */\n h: number;\n /* Sub-menu width */\n w: number;\n /* Mouse x */\n mouseX: number;\n /* Mouse y */\n mouseY: number;\n}\n\nconst getLeft = ({ x, mouseX }: Positions) =>\n mouseX > x ? undefined : -Math.max(x - mouseX, 10) + \"px\";\nconst getRight = ({ x, w, mouseX }: Positions) =>\n mouseX > x ? -Math.max(mouseX - (x + w), 10) + \"px\" : undefined;\nconst getWidth = ({ x, w, mouseX }: Positions) =>\n mouseX > x\n ? Math.max(mouseX - (x + w), 10) + \"px\"\n : Math.max(x - mouseX, 10) + \"px\";\nconst getClipPath = ({ x, y, h, mouseX, mouseY }: Positions) =>\n mouseX < x\n ? `polygon(100% 0%, 0% ${(100 * (mouseY - y)) / h}%, 100% 100%)`\n : `polygon(0% 0%, 0% 100%, 100% ${(100 * (mouseY - y)) / h}%)`;\n\nexport const DropdownMenu = ({\n items,\n selectedItem,\n handleChange,\n multiple = false,\n menuClassName,\n size = \"md\",\n isOpen,\n onItemClick,\n isScrollable = false,\n animationOrigin = \"top-left\",\n search,\n onClearSearch,\n showSelectAll = true,\n showSafeTriangle = false,\n subMenuClassName,\n}: DropdownMenuProps) => {\n const [isAtBottom, setIsAtBottom] = useState(false);\n const scrollContainerRef = useRef<HTMLDivElement>(null);\n\n // Filter items based on search term\n const filteredItems = (() => {\n // If search is provided, filter based on search\n if (search) {\n return items.filter((item) =>\n item.label.toLowerCase().includes(search.toLowerCase()),\n );\n }\n\n // Default: show all items\n return items;\n })();\n\n // Handle scroll detection\n const handleScroll = useCallback(() => {\n const container = scrollContainerRef.current;\n if (!container) return;\n\n const { scrollTop, scrollHeight, clientHeight } = container;\n const threshold = 5; // Small threshold to account for rounding\n const isNearBottom = scrollTop + clientHeight >= scrollHeight - threshold;\n\n setIsAtBottom(isNearBottom);\n }, []);\n\n // Reset scroll state when items change or menu opens\n useEffect(() => {\n if (isOpen) {\n setIsAtBottom(false);\n }\n }, [isOpen, filteredItems.length]);\n\n // Check if content is actually scrollable\n useEffect(() => {\n const container = scrollContainerRef.current;\n if (!container || !isOpen) return;\n\n const { scrollHeight, clientHeight } = container;\n const hasScrollbar = scrollHeight > clientHeight;\n\n // If no scrollbar (content fits), consider it \"at bottom\"\n if (!hasScrollbar) {\n setIsAtBottom(true);\n }\n }, [isOpen, filteredItems.length]);\n\n // Helper to check if an item is selected\n const isItemSelected = (value: string) => {\n if (multiple) {\n return (\n Array.isArray(selectedItem) &&\n selectedItem.length > 0 &&\n selectedItem.includes(value)\n );\n }\n return !!selectedItem && selectedItem === value;\n };\n\n const flattenSelectable = (options: DropdownOption[]): DropdownOption[] => {\n const out: DropdownOption[] = [];\n const walk = (nodes: DropdownOption[]) => {\n nodes.forEach((n) => {\n if (n.children && n.children.length > 0) {\n walk(n.children);\n } else {\n out.push(n);\n }\n });\n };\n walk(options);\n return out;\n };\n\n // Handle item selection\n const handleItemClick = (value: string) => {\n if (multiple) {\n const currentSelection = Array.isArray(selectedItem) ? selectedItem : [];\n\n // If all items are selected, clicking any item should deselect all others\n if (isAllSelected()) {\n handleChange([value]);\n } else if (currentSelection.includes(value)) {\n // Remove from selection\n handleChange(currentSelection.filter((item) => item !== value));\n } else {\n // Add to selection\n handleChange([...currentSelection, value]);\n }\n } else {\n // Single select - if clicking the already selected item, deselect it\n if (selectedItem === value) {\n handleChange(undefined);\n } else {\n // Otherwise, select the new item\n handleChange(value);\n }\n // Call the optional callback for single select\n onItemClick?.(value);\n }\n };\n\n // Handle select all\n const handleSelectAll = () => {\n const currentSelection = Array.isArray(selectedItem) ? selectedItem : [];\n const allValues = flattenSelectable(filteredItems)\n .filter((item) => !item.disabled)\n .map((item) => item.value);\n\n if (currentSelection.length === allValues.length) {\n // Deselect all\n handleChange([]);\n } else {\n // Select all\n handleChange(allValues);\n }\n };\n\n // Check if all items are selected\n const isAllSelected = () => {\n if (!Array.isArray(selectedItem) || selectedItem.length === 0) return false;\n const selectableItems = flattenSelectable(filteredItems).filter(\n (item) => !item.disabled,\n );\n return (\n selectableItems.length > 0 &&\n selectedItem.length === selectableItems.length &&\n selectableItems.every((item) => selectedItem.includes(item.value))\n );\n };\n\n return (\n <AnimatePresence>\n {isOpen && (\n <motion.div\n initial={{ opacity: 0, scale: 0.8, y: -15 }}\n animate={{ opacity: 1, scale: 1, y: 0 }}\n transition={{ duration: 0.1, ease: swift }}\n exit={{ opacity: 0, scale: 0.8, y: -5 }}\n className={classNames(\n \"z-50 absolute top-[calc(100%+6px)] p-1 bg-card-foreground border border-border-light\",\n (size === \"lg\" || size === \"md\") && \"min-w-[200px]\",\n animationOrigin === \"top-left\" && \"origin-top-left\",\n animationOrigin === \"top-center\" && \"origin-top-center\",\n animationOrigin === \"top-right\" && \"origin-top-right\",\n menuClassName,\n )}\n >\n <div\n ref={scrollContainerRef}\n onScroll={handleScroll}\n className={classNames(\n \"flex flex-col gap-y-1\",\n isScrollable && [\n \"max-h-[250px] overflow-y-auto\",\n !isAtBottom &&\n \"[mask-image:linear-gradient(180deg,black,black_85%,transparent_100%)]\",\n ],\n )}\n >\n {multiple && showSelectAll && (\n <div className=\"group flex flex-col gap-y-1\">\n <button\n onClick={handleSelectAll}\n className={classNames(\n \"py-3 pl-2.5 pr-3 flex items-center gap-x-2.5 outline-none bg-transparent transition-colors duration-100 ease-crisp hover:bg-border-light/50\",\n )}\n >\n <Checkbox checked={isAllSelected()} />\n <span className=\"text-sm text-shade-primary font-medium\">\n Select All\n </span>\n </button>\n <Divider direction=\"horizontal\" />\n </div>\n )}\n {filteredItems.length > 0 ? (\n filteredItems.map((item) =>\n item.children && item.children.length > 0 ? (\n <DropdownSubmenuItem\n key={item.value}\n item={item}\n size={size}\n onLeafClick={handleItemClick}\n isLeafSelected={isItemSelected}\n />\n ) : (\n <DropdownItem\n key={item.value}\n label={item.label}\n icon={item.icon}\n onClick={() => handleItemClick(item.value)}\n disabled={item.disabled}\n isSelected={isItemSelected(item.value)}\n size={size}\n />\n ),\n )\n ) : (\n <button\n onClick={() => {\n // Clear search by calling the onClearSearch callback\n if (onClearSearch) {\n onClearSearch();\n }\n }}\n className=\"py-3 pl-2.5 pr-3 text-sm font-mono text-shade-tertiary hover:bg-border-light/50 transition-colors duration-100 ease-crisp w-full text-center\"\n >\n No options found\n </button>\n )}\n </div>\n </motion.div>\n )}\n </AnimatePresence>\n );\n};\n\nexport const Dropdown = ({\n className,\n items,\n selectedItem,\n handleChange,\n label = \"View All\",\n multiSelectLabel,\n disabled,\n buttonClassName,\n menuClassName,\n multiple = false,\n menuIcon,\n size = \"md\",\n isScrollable = false,\n search,\n onClearSearch,\n showSelectAll,\n showClear = true,\n subMenuClassName,\n showSelectedItem = true,\n}: DropdownProps) => {\n const [isOpen, setIsOpen] = useState(false);\n\n // Handle item selection for single select (closes menu)\n const handleItemClick = (value: string) => {\n if (!multiple) {\n // Single select - if clicking the already selected item, deselect it\n if (selectedItem === value) {\n handleChange(undefined);\n } else {\n // Otherwise, select the new item\n handleChange(value);\n }\n setIsOpen(false);\n }\n };\n\n const ref = useRef<HTMLDivElement>(null);\n\n const handleClickOutside = () => {\n setIsOpen(false);\n };\n\n // Cast ref to RefObject<HTMLElement> to satisfy useOnClickOutside's expected type\n useOnClickOutside(ref as React.RefObject<HTMLElement>, handleClickOutside);\n\n // Get selected items for display in button\n const getSelectedItems = () => {\n const flatten = (options: DropdownOption[]): DropdownOption[] => {\n const out: DropdownOption[] = [];\n const walk = (nodes: DropdownOption[]) => {\n nodes.forEach((n) => {\n if (n.children && n.children.length > 0) {\n walk(n.children);\n } else {\n out.push(n);\n }\n });\n };\n walk(options);\n return out;\n };\n\n const leaves = flatten(items);\n if (multiple) {\n const selectedValues = Array.isArray(selectedItem) ? selectedItem : [];\n return leaves.filter((item) => selectedValues.includes(item.value));\n }\n const selected = leaves.find((item) => item.value === selectedItem);\n return selected ? [selected] : [];\n };\n\n return (\n <div\n ref={ref}\n className={classNames(\n \"relative flex flex-col gap-y-1.5 items-start\",\n className,\n )}\n >\n <DropdownButton\n label={label}\n multiSelectLabel={multiSelectLabel}\n disabled={disabled}\n className={buttonClassName}\n onClick={() => setIsOpen(!isOpen)}\n selectedItems={getSelectedItems()}\n multiple={multiple}\n count={getSelectedItems().length}\n menuIcon={menuIcon}\n size={size}\n onClear={() => handleChange(multiple ? [] : undefined)}\n showClear={showClear}\n showSelectedItem={showSelectedItem}\n />\n\n <DropdownMenu\n items={items}\n selectedItem={selectedItem}\n handleChange={handleChange}\n multiple={multiple}\n menuClassName={menuClassName}\n size={size}\n isOpen={isOpen}\n onItemClick={handleItemClick}\n isScrollable={isScrollable}\n search={search}\n onClearSearch={onClearSearch}\n showSelectAll={showSelectAll}\n subMenuClassName={subMenuClassName}\n />\n </div>\n );\n};\n\nexport const DropdownButton = ({\n label,\n multiSelectLabel,\n disabled,\n className,\n onClick,\n selectedItems = [],\n multiple = false,\n count = 0,\n menuIcon,\n size,\n onClear,\n showClear,\n showSelectedItem,\n}: DropdownButtonProps) => {\n const [isHovered, setIsHovered] = useState(false);\n\n // Determine what to display\n const hasSelection = selectedItems.length > 0;\n const isSingleSelection = selectedItems.length === 1;\n const isMultipleSelection = selectedItems.length > 1;\n\n // Compute icon and label based on selection state\n let buttonIcon: ButtonProps[\"icon\"] | undefined;\n let buttonLabel: string;\n\n if (hasSelection && isSingleSelection) {\n // Single selection: show selected item's icon and label\n const selectedItem = selectedItems[0];\n buttonIcon = selectedItem.icon\n ? isValidElement(selectedItem.icon)\n ? selectedItem.icon\n : {\n name: (selectedItem.icon as IconProps).name,\n className: (selectedItem.icon as IconProps).className || \"\",\n size: (selectedItem.icon as IconProps).size || 18,\n }\n : menuIcon;\n // If label is a function, call it with the selected item's label; otherwise use the selected item's label directly\n buttonLabel =\n typeof label === \"function\"\n ? label(selectedItem.label)\n : selectedItem.label;\n } else if (isMultipleSelection && multiple && multiSelectLabel) {\n // Multiple selections: show count and multiSelectLabel\n\n buttonIcon = menuIcon\n ? isValidElement(menuIcon)\n ? menuIcon\n : {\n name: (menuIcon as IconProps).name,\n className: (menuIcon as IconProps).className || \"\",\n size: (menuIcon as IconProps).size || 18,\n }\n : undefined;\n buttonLabel = `${count} ${multiSelectLabel}`;\n } else {\n // Default: no selection - use label as string\n buttonIcon = menuIcon;\n buttonLabel = typeof label === \"function\" ? label(\"\") : label;\n }\n\n return (\n <Button\n icon={buttonIcon}\n label={showSelectedItem ? buttonLabel : undefined}\n disabled={disabled}\n size={size}\n variant=\"secondary\"\n className={classNames(\n \"!origin-bottom-left !justify-start w-full\",\n (size === \"md\" || size === \"lg\") && \"!pr-[18px] !pl-[12px]\",\n size === \"sm\" && \"!pr-4 !pl-3\",\n showClear && \"!pr-[48px]\",\n className,\n )}\n useDecryptAnimation={false}\n useHoverEffect={false}\n crosshairProps={{\n variant: \"corners\",\n corners: [\"bottom-right\"],\n spacingX: !isHovered ? -6 : -4,\n spacingY: !isHovered ? -6 : -4,\n animationDuration: 0.5,\n animationDelay: 0,\n className: \"text-shade-mute group-hover:text-shade-primary\",\n }}\n onClick={onClick}\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n children={\n hasSelection &&\n showClear && (\n <div\n className=\"order-last top-1/2 -translate-y-1/2 right-2 absolute h-[24px] w-[24px] flex items-center justify-center hover:bg-background/40 transition duration-100 ease-crisp cursor-pointer\"\n onClick={(e) => {\n e.stopPropagation();\n onClear?.();\n }}\n >\n <Icon name=\"Close\" size={12} />\n </div>\n )\n }\n />\n );\n};\n\nexport const DropdownItem = ({\n label,\n icon,\n onClick,\n disabled,\n isSelected = false,\n size,\n}: DropdownItemProps) => {\n return (\n <button\n onClick={onClick}\n disabled={disabled}\n className={classNames(\n \"hover:bg-border-light/50 relative group/item disabled:opacity-40 flex items-center gap-x-2.5 outline-none transition-colors duration-100 ease-crisp\",\n size === \"lg\" && \"py-4 pl-3 pr-3 text-base\",\n size === \"md\" && \"py-3 pl-2.5 pr-3 text-sm\",\n size === \"sm\" && \"py-2 pl-2.5 pr-3 h-[36px] text-sm\",\n isSelected && \"bg-background/50\",\n )}\n >\n <div className=\"opacity-0 group-hover/item:!opacity-100 absolute inset-0.5\">\n <CrosshairCorners\n size={6}\n variant=\"corners\"\n corners={[\"bottom-right\"]}\n className=\"text-shade-mute\"\n animationDelay={0}\n animationDuration={0.5}\n />\n </div>\n\n {icon && (\n <>\n {isValidElement(icon) ? (\n icon\n ) : (\n <Icon\n name={(icon as IconProps).name}\n className={classNames(\n \"flex-shrink-0\",\n (icon as IconProps).className,\n )}\n size={(icon as IconProps).size || 18}\n />\n )}\n </>\n )}\n <span\n className={classNames(\" text-shade-primary font-medium leading-[100%]\")}\n >\n {label}\n </span>\n </button>\n );\n};\n\ntype DropdownSubmenuItemProps = {\n item: DropdownOption;\n size?: \"sm\" | \"md\" | \"lg\";\n onLeafClick: (value: string) => void;\n isLeafSelected: (value: string) => boolean;\n subMenuClassName?: string;\n};\n\nconst DropdownSubmenuItem = ({\n item,\n size = \"md\",\n subMenuClassName,\n onLeafClick,\n isLeafSelected,\n}: DropdownSubmenuItemProps) => {\n const parentRef = useRef<HTMLDivElement | null>(null);\n const submenuRef = useRef<HTMLDivElement | null>(null);\n\n const [hoverParent, setHoverParent] = useState(false);\n const [hoverSubmenu, setHoverSubmenu] = useState(false);\n const [hoverSafe, setHoverSafe] = useState(false);\n\n const open = hoverParent || hoverSubmenu || hoverSafe;\n\n return (\n <div\n ref={parentRef}\n className={classNames(\"relative\", subMenuClassName)}\n onMouseEnter={() => setHoverParent(true)}\n onMouseLeave={() => setHoverParent(false)}\n >\n <button\n type=\"button\"\n className={classNames(\n \"hover:bg-border-light/50 relative h-max group/item disabled:opacity-40 flex items-center justify-between gap-x-2.5 w-full outline-none transition-colors duration-100 ease-crisp\",\n size === \"lg\" && \"py-4 pl-3 pr-3 text-base\",\n size === \"md\" && \"py-3 pl-2.5 pr-3 text-sm\",\n size === \"sm\" && \"py-2 pl-2.5 pr-3 !h-[36px] text-sm\",\n open && \"bg-border-light/50\",\n )}\n disabled={item.disabled}\n >\n <span className=\"flex items-center gap-x-2.5\">\n {item.icon && (\n <>\n {isValidElement(item.icon) ? (\n item.icon\n ) : (\n <Icon\n name={(item.icon as IconProps).name}\n className={classNames(\n \"flex-shrink-0\",\n (item.icon as IconProps).className,\n )}\n size={(item.icon as IconProps).size || 18}\n />\n )}\n </>\n )}\n <span className=\"text-shade-primary font-medium leading-[100%]\">\n {item.label}\n </span>\n </span>\n <Icon name=\"ChevronRight\" size={12} className=\"text-shade-tertiary\" />\n </button>\n\n {open && (\n <div\n ref={submenuRef}\n onMouseEnter={() => setHoverSubmenu(true)}\n onMouseLeave={() => setHoverSubmenu(false)}\n className={classNames(\n \"z-[60] !absolute top-0 left-[calc(100%+6px)] p-1 bg-card-foreground gradient-border before:bg-card-border min-w-[180px]\",\n )}\n >\n <MouseSafeArea\n parentRef={parentRef}\n submenuRef={submenuRef}\n onEnter={() => setHoverSafe(true)}\n onLeave={() => setHoverSafe(false)}\n />\n <div className=\"flex flex-col gap-y-1\">\n {(item.children || []).map((child) =>\n child.children && child.children.length > 0 ? (\n <DropdownSubmenuItem\n key={child.value}\n item={child}\n size={size}\n onLeafClick={onLeafClick}\n isLeafSelected={isLeafSelected}\n />\n ) : (\n <DropdownItem\n key={child.value}\n label={child.label}\n icon={child.icon}\n onClick={() => onLeafClick(child.value)}\n disabled={child.disabled}\n isSelected={isLeafSelected(child.value)}\n size={size}\n />\n ),\n )}\n </div>\n </div>\n )}\n </div>\n );\n};\n"],"mappings":"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"}
@@ -0,0 +1,82 @@
1
+ "use client";
2
+
3
+ const require_rolldown_runtime = require('./_virtual/rolldown_runtime.cjs');
4
+ const require_utils_easings = require('./utils/easings.cjs');
5
+ let motion_react = require("motion/react");
6
+ let classnames = require("classnames");
7
+ classnames = require_rolldown_runtime.__toESM(classnames);
8
+ let react_jsx_runtime = require("react/jsx-runtime");
9
+
10
+ //#region src/GridLines.tsx
11
+ const GridLines = ({ gap = 8, animateLines = false, lines = [
12
+ "top",
13
+ "bottom",
14
+ "left",
15
+ "right"
16
+ ], className }) => {
17
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
18
+ className: (0, classnames.default)("absolute", className),
19
+ style: { inset: `${-gap}px` },
20
+ children: [
21
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(motion_react.motion.div, {
22
+ initial: { clipPath: animateLines ? "inset(0 0 100% 0)" : "inset(0 0 0 0)" },
23
+ animate: { clipPath: "inset(0 0 0 0)" },
24
+ transition: {
25
+ duration: .25,
26
+ ease: require_utils_easings.glide
27
+ },
28
+ className: (0, classnames.default)(!lines.includes("left") && "hidden", "absolute w-px bg-border-light left-0 top-1/2 -translate-y-1/2"),
29
+ style: {
30
+ minHeight: "100dvh",
31
+ height: "100%"
32
+ }
33
+ }),
34
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(motion_react.motion.div, {
35
+ initial: { clipPath: animateLines ? "inset(100% 0 0 0)" : "inset(0 0 0 0)" },
36
+ animate: { clipPath: "inset(0 0 0 0)" },
37
+ transition: {
38
+ duration: .25,
39
+ ease: require_utils_easings.glide,
40
+ delay: .05
41
+ },
42
+ className: (0, classnames.default)(!lines.includes("right") && "hidden", "absolute w-px bg-border-light right-0 top-1/2 -translate-y-1/2"),
43
+ style: {
44
+ minHeight: "100dvh",
45
+ height: "100%"
46
+ }
47
+ }),
48
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(motion_react.motion.div, {
49
+ initial: { clipPath: animateLines ? "inset(0 100% 0 0)" : "inset(0 0 0 0)" },
50
+ animate: { clipPath: "inset(0 0 0 0)" },
51
+ transition: {
52
+ duration: .25,
53
+ ease: require_utils_easings.glide,
54
+ delay: .1
55
+ },
56
+ className: (0, classnames.default)(!lines.includes("top") && "hidden", "absolute h-px bg-border-light top-0 left-1/2 -translate-x-1/2"),
57
+ style: {
58
+ minWidth: "100dvw",
59
+ width: "100%"
60
+ }
61
+ }),
62
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(motion_react.motion.div, {
63
+ initial: { clipPath: animateLines ? "inset(0 0 0 100%)" : "inset(0 0 0 0)" },
64
+ animate: { clipPath: "inset(0 0 0 0)" },
65
+ transition: {
66
+ duration: .25,
67
+ ease: require_utils_easings.glide,
68
+ delay: .15
69
+ },
70
+ className: (0, classnames.default)(!lines.includes("bottom") && "hidden", "absolute h-px bg-border-light bottom-0 left-1/2 -translate-x-1/2"),
71
+ style: {
72
+ minWidth: "100dvw",
73
+ width: "100%"
74
+ }
75
+ })
76
+ ]
77
+ });
78
+ };
79
+
80
+ //#endregion
81
+ exports.GridLines = GridLines;
82
+ //# sourceMappingURL=GridLines.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GridLines.cjs","names":["motion","glide"],"sources":["../src/GridLines.tsx"],"sourcesContent":["\"use client\";\n\nimport { motion } from \"motion/react\";\nimport { glide } from \"./utils/easings\";\nimport classNames from \"classnames\";\n\nexport type GridLinesProps = {\n className?: string;\n animateLines?: boolean;\n gap?: number;\n lines?: (\"top\" | \"bottom\" | \"left\" | \"right\")[];\n};\n\nexport const GridLines = ({\n gap = 8,\n animateLines = false,\n lines = [\"top\", \"bottom\", \"left\", \"right\"],\n className,\n}: GridLinesProps) => {\n return (\n <div\n className={classNames(\"absolute\", className)}\n style={{ inset: `${-gap}px` }}\n >\n <motion.div\n initial={{\n clipPath: animateLines ? \"inset(0 0 100% 0)\" : \"inset(0 0 0 0)\",\n }}\n animate={{ clipPath: \"inset(0 0 0 0)\" }}\n transition={{ duration: 0.25, ease: glide }}\n className={classNames(\n !lines.includes(\"left\") && \"hidden\",\n \"absolute w-px bg-border-light left-0 top-1/2 -translate-y-1/2\"\n )}\n style={{ minHeight: \"100dvh\", height: \"100%\" }}\n />\n <motion.div\n initial={{\n clipPath: animateLines ? \"inset(100% 0 0 0)\" : \"inset(0 0 0 0)\",\n }}\n animate={{ clipPath: \"inset(0 0 0 0)\" }}\n transition={{ duration: 0.25, ease: glide, delay: 0.05 }}\n className={classNames(\n !lines.includes(\"right\") && \"hidden\",\n \"absolute w-px bg-border-light right-0 top-1/2 -translate-y-1/2\"\n )}\n style={{ minHeight: \"100dvh\", height: \"100%\" }}\n />\n <motion.div\n initial={{\n clipPath: animateLines ? \"inset(0 100% 0 0)\" : \"inset(0 0 0 0)\",\n }}\n animate={{ clipPath: \"inset(0 0 0 0)\" }}\n transition={{ duration: 0.25, ease: glide, delay: 0.1 }}\n className={classNames(\n !lines.includes(\"top\") && \"hidden\",\n \"absolute h-px bg-border-light top-0 left-1/2 -translate-x-1/2\"\n )}\n style={{ minWidth: \"100dvw\", width: \"100%\" }}\n />\n <motion.div\n initial={{\n clipPath: animateLines ? \"inset(0 0 0 100%)\" : \"inset(0 0 0 0)\",\n }}\n animate={{ clipPath: \"inset(0 0 0 0)\" }}\n transition={{ duration: 0.25, ease: glide, delay: 0.15 }}\n className={classNames(\n !lines.includes(\"bottom\") && \"hidden\",\n \"absolute h-px bg-border-light bottom-0 left-1/2 -translate-x-1/2\"\n )}\n style={{ minWidth: \"100dvw\", width: \"100%\" }}\n />\n </div>\n );\n};\n"],"mappings":";;;;;;;;;;AAaA,MAAa,aAAa,EACxB,MAAM,GACN,eAAe,OACf,QAAQ;CAAC;CAAO;CAAU;CAAQ;CAAQ,EAC1C,gBACoB;AACpB,QACE,4CAAC;EACC,mCAAsB,YAAY,UAAU;EAC5C,OAAO,EAAE,OAAO,GAAG,CAAC,IAAI,KAAK;;GAE7B,2CAACA,oBAAO;IACN,SAAS,EACP,UAAU,eAAe,sBAAsB,kBAChD;IACD,SAAS,EAAE,UAAU,kBAAkB;IACvC,YAAY;KAAE,UAAU;KAAM,MAAMC;KAAO;IAC3C,mCACE,CAAC,MAAM,SAAS,OAAO,IAAI,UAC3B,gEACD;IACD,OAAO;KAAE,WAAW;KAAU,QAAQ;KAAQ;KAC9C;GACF,2CAACD,oBAAO;IACN,SAAS,EACP,UAAU,eAAe,sBAAsB,kBAChD;IACD,SAAS,EAAE,UAAU,kBAAkB;IACvC,YAAY;KAAE,UAAU;KAAM,MAAMC;KAAO,OAAO;KAAM;IACxD,mCACE,CAAC,MAAM,SAAS,QAAQ,IAAI,UAC5B,iEACD;IACD,OAAO;KAAE,WAAW;KAAU,QAAQ;KAAQ;KAC9C;GACF,2CAACD,oBAAO;IACN,SAAS,EACP,UAAU,eAAe,sBAAsB,kBAChD;IACD,SAAS,EAAE,UAAU,kBAAkB;IACvC,YAAY;KAAE,UAAU;KAAM,MAAMC;KAAO,OAAO;KAAK;IACvD,mCACE,CAAC,MAAM,SAAS,MAAM,IAAI,UAC1B,gEACD;IACD,OAAO;KAAE,UAAU;KAAU,OAAO;KAAQ;KAC5C;GACF,2CAACD,oBAAO;IACN,SAAS,EACP,UAAU,eAAe,sBAAsB,kBAChD;IACD,SAAS,EAAE,UAAU,kBAAkB;IACvC,YAAY;KAAE,UAAU;KAAM,MAAMC;KAAO,OAAO;KAAM;IACxD,mCACE,CAAC,MAAM,SAAS,SAAS,IAAI,UAC7B,mEACD;IACD,OAAO;KAAE,UAAU;KAAU,OAAO;KAAQ;KAC5C;;GACE"}
@@ -0,0 +1,18 @@
1
+ import * as react_jsx_runtime1 from "react/jsx-runtime";
2
+
3
+ //#region src/GridLines.d.ts
4
+ type GridLinesProps = {
5
+ className?: string;
6
+ animateLines?: boolean;
7
+ gap?: number;
8
+ lines?: ("top" | "bottom" | "left" | "right")[];
9
+ };
10
+ declare const GridLines: ({
11
+ gap,
12
+ animateLines,
13
+ lines,
14
+ className
15
+ }: GridLinesProps) => react_jsx_runtime1.JSX.Element;
16
+ //#endregion
17
+ export { GridLines, GridLinesProps };
18
+ //# sourceMappingURL=GridLines.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GridLines.d.cts","names":[],"sources":["../src/GridLines.tsx"],"sourcesContent":[],"mappings":";;;KAMY,cAAA;;;EAAA,GAAA,CAAA,EAAA,MAAA;EAOC,KAAA,CAAA,EAAA,CAAA,KA6DZ,GAAA,QAAA,GAAA,MAAA,GAAA,OAAA,CAAA,EAAA;CA7DyB;AAAA,cAAb,SAAa,EAAA,CAAA;EAAA,GAAA;EAAA,YAAA;EAAA,KAAA;EAAA;AAAA,CAAA,EAKvB,cALuB,EAAA,GAKT,kBAAA,CAAA,GAAA,CAAA,OALS"}
@@ -1,11 +1,18 @@
1
- import * as react_jsx_runtime from 'react/jsx-runtime';
1
+ import * as react_jsx_runtime27 from "react/jsx-runtime";
2
2
 
3
+ //#region src/GridLines.d.ts
3
4
  type GridLinesProps = {
4
- className?: string;
5
- animateLines?: boolean;
6
- gap?: number;
7
- lines?: ("top" | "bottom" | "left" | "right")[];
5
+ className?: string;
6
+ animateLines?: boolean;
7
+ gap?: number;
8
+ lines?: ("top" | "bottom" | "left" | "right")[];
8
9
  };
9
- declare const GridLines: ({ gap, animateLines, lines, className, }: GridLinesProps) => react_jsx_runtime.JSX.Element;
10
-
11
- export { GridLines, type GridLinesProps };
10
+ declare const GridLines: ({
11
+ gap,
12
+ animateLines,
13
+ lines,
14
+ className
15
+ }: GridLinesProps) => react_jsx_runtime27.JSX.Element;
16
+ //#endregion
17
+ export { GridLines, GridLinesProps };
18
+ //# sourceMappingURL=GridLines.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GridLines.d.mts","names":[],"sources":["../src/GridLines.tsx"],"sourcesContent":[],"mappings":";;;KAMY,cAAA;;;EAAA,GAAA,CAAA,EAAA,MAAA;EAOC,KAAA,CAAA,EAAA,CAAA,KA6DZ,GAAA,QAAA,GAAA,MAAA,GAAA,OAAA,CAAA,EAAA;CA7DyB;AAAA,cAAb,SAAa,EAAA,CAAA;EAAA,GAAA;EAAA,YAAA;EAAA,KAAA;EAAA;AAAA,CAAA,EAKvB,cALuB,EAAA,GAKT,mBAAA,CAAA,GAAA,CAAA,OALS"}
@@ -1,85 +1,80 @@
1
- import { jsxs, jsx } from 'react/jsx-runtime';
2
- import { motion } from 'motion/react';
3
- import { glide } from './utils/easings';
4
- import classNames from 'classnames';
1
+ "use client";
5
2
 
6
- const GridLines = ({
7
- gap = 8,
8
- animateLines = false,
9
- lines = ["top", "bottom", "left", "right"],
10
- className
11
- }) => {
12
- return /* @__PURE__ */ jsxs(
13
- "div",
14
- {
15
- className: classNames("absolute", className),
16
- style: { inset: `${-gap}px` },
17
- children: [
18
- /* @__PURE__ */ jsx(
19
- motion.div,
20
- {
21
- initial: {
22
- clipPath: animateLines ? "inset(0 0 100% 0)" : "inset(0 0 0 0)"
23
- },
24
- animate: { clipPath: "inset(0 0 0 0)" },
25
- transition: { duration: 0.25, ease: glide },
26
- className: classNames(
27
- !lines.includes("left") && "hidden",
28
- "absolute w-px bg-border-light left-0 top-1/2 -translate-y-1/2"
29
- ),
30
- style: { minHeight: "100dvh", height: "100%" }
31
- }
32
- ),
33
- /* @__PURE__ */ jsx(
34
- motion.div,
35
- {
36
- initial: {
37
- clipPath: animateLines ? "inset(100% 0 0 0)" : "inset(0 0 0 0)"
38
- },
39
- animate: { clipPath: "inset(0 0 0 0)" },
40
- transition: { duration: 0.25, ease: glide, delay: 0.05 },
41
- className: classNames(
42
- !lines.includes("right") && "hidden",
43
- "absolute w-px bg-border-light right-0 top-1/2 -translate-y-1/2"
44
- ),
45
- style: { minHeight: "100dvh", height: "100%" }
46
- }
47
- ),
48
- /* @__PURE__ */ jsx(
49
- motion.div,
50
- {
51
- initial: {
52
- clipPath: animateLines ? "inset(0 100% 0 0)" : "inset(0 0 0 0)"
53
- },
54
- animate: { clipPath: "inset(0 0 0 0)" },
55
- transition: { duration: 0.25, ease: glide, delay: 0.1 },
56
- className: classNames(
57
- !lines.includes("top") && "hidden",
58
- "absolute h-px bg-border-light top-0 left-1/2 -translate-x-1/2"
59
- ),
60
- style: { minWidth: "100dvw", width: "100%" }
61
- }
62
- ),
63
- /* @__PURE__ */ jsx(
64
- motion.div,
65
- {
66
- initial: {
67
- clipPath: animateLines ? "inset(0 0 0 100%)" : "inset(0 0 0 0)"
68
- },
69
- animate: { clipPath: "inset(0 0 0 0)" },
70
- transition: { duration: 0.25, ease: glide, delay: 0.15 },
71
- className: classNames(
72
- !lines.includes("bottom") && "hidden",
73
- "absolute h-px bg-border-light bottom-0 left-1/2 -translate-x-1/2"
74
- ),
75
- style: { minWidth: "100dvw", width: "100%" }
76
- }
77
- )
78
- ]
79
- }
80
- );
3
+ import { glide } from "./utils/easings.mjs";
4
+ import { motion } from "motion/react";
5
+ import classNames from "classnames";
6
+ import { jsx, jsxs } from "react/jsx-runtime";
7
+
8
+ //#region src/GridLines.tsx
9
+ const GridLines = ({ gap = 8, animateLines = false, lines = [
10
+ "top",
11
+ "bottom",
12
+ "left",
13
+ "right"
14
+ ], className }) => {
15
+ return /* @__PURE__ */ jsxs("div", {
16
+ className: classNames("absolute", className),
17
+ style: { inset: `${-gap}px` },
18
+ children: [
19
+ /* @__PURE__ */ jsx(motion.div, {
20
+ initial: { clipPath: animateLines ? "inset(0 0 100% 0)" : "inset(0 0 0 0)" },
21
+ animate: { clipPath: "inset(0 0 0 0)" },
22
+ transition: {
23
+ duration: .25,
24
+ ease: glide
25
+ },
26
+ className: classNames(!lines.includes("left") && "hidden", "absolute w-px bg-border-light left-0 top-1/2 -translate-y-1/2"),
27
+ style: {
28
+ minHeight: "100dvh",
29
+ height: "100%"
30
+ }
31
+ }),
32
+ /* @__PURE__ */ jsx(motion.div, {
33
+ initial: { clipPath: animateLines ? "inset(100% 0 0 0)" : "inset(0 0 0 0)" },
34
+ animate: { clipPath: "inset(0 0 0 0)" },
35
+ transition: {
36
+ duration: .25,
37
+ ease: glide,
38
+ delay: .05
39
+ },
40
+ className: classNames(!lines.includes("right") && "hidden", "absolute w-px bg-border-light right-0 top-1/2 -translate-y-1/2"),
41
+ style: {
42
+ minHeight: "100dvh",
43
+ height: "100%"
44
+ }
45
+ }),
46
+ /* @__PURE__ */ jsx(motion.div, {
47
+ initial: { clipPath: animateLines ? "inset(0 100% 0 0)" : "inset(0 0 0 0)" },
48
+ animate: { clipPath: "inset(0 0 0 0)" },
49
+ transition: {
50
+ duration: .25,
51
+ ease: glide,
52
+ delay: .1
53
+ },
54
+ className: classNames(!lines.includes("top") && "hidden", "absolute h-px bg-border-light top-0 left-1/2 -translate-x-1/2"),
55
+ style: {
56
+ minWidth: "100dvw",
57
+ width: "100%"
58
+ }
59
+ }),
60
+ /* @__PURE__ */ jsx(motion.div, {
61
+ initial: { clipPath: animateLines ? "inset(0 0 0 100%)" : "inset(0 0 0 0)" },
62
+ animate: { clipPath: "inset(0 0 0 0)" },
63
+ transition: {
64
+ duration: .25,
65
+ ease: glide,
66
+ delay: .15
67
+ },
68
+ className: classNames(!lines.includes("bottom") && "hidden", "absolute h-px bg-border-light bottom-0 left-1/2 -translate-x-1/2"),
69
+ style: {
70
+ minWidth: "100dvw",
71
+ width: "100%"
72
+ }
73
+ })
74
+ ]
75
+ });
81
76
  };
82
77
 
78
+ //#endregion
83
79
  export { GridLines };
84
- //# sourceMappingURL=GridLines.mjs.map
85
80
  //# sourceMappingURL=GridLines.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/GridLines.tsx"],"names":[],"mappings":"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","file":"GridLines.mjs","sourcesContent":["\"use client\";\n\nimport { motion } from \"motion/react\";\nimport { glide } from \"./utils/easings\";\nimport classNames from \"classnames\";\n\nexport type GridLinesProps = {\n className?: string;\n animateLines?: boolean;\n gap?: number;\n lines?: (\"top\" | \"bottom\" | \"left\" | \"right\")[];\n};\n\nexport const GridLines = ({\n gap = 8,\n animateLines = false,\n lines = [\"top\", \"bottom\", \"left\", \"right\"],\n className,\n}: GridLinesProps) => {\n return (\n <div\n className={classNames(\"absolute\", className)}\n style={{ inset: `${-gap}px` }}\n >\n <motion.div\n initial={{\n clipPath: animateLines ? \"inset(0 0 100% 0)\" : \"inset(0 0 0 0)\",\n }}\n animate={{ clipPath: \"inset(0 0 0 0)\" }}\n transition={{ duration: 0.25, ease: glide }}\n className={classNames(\n !lines.includes(\"left\") && \"hidden\",\n \"absolute w-px bg-border-light left-0 top-1/2 -translate-y-1/2\"\n )}\n style={{ minHeight: \"100dvh\", height: \"100%\" }}\n />\n <motion.div\n initial={{\n clipPath: animateLines ? \"inset(100% 0 0 0)\" : \"inset(0 0 0 0)\",\n }}\n animate={{ clipPath: \"inset(0 0 0 0)\" }}\n transition={{ duration: 0.25, ease: glide, delay: 0.05 }}\n className={classNames(\n !lines.includes(\"right\") && \"hidden\",\n \"absolute w-px bg-border-light right-0 top-1/2 -translate-y-1/2\"\n )}\n style={{ minHeight: \"100dvh\", height: \"100%\" }}\n />\n <motion.div\n initial={{\n clipPath: animateLines ? \"inset(0 100% 0 0)\" : \"inset(0 0 0 0)\",\n }}\n animate={{ clipPath: \"inset(0 0 0 0)\" }}\n transition={{ duration: 0.25, ease: glide, delay: 0.1 }}\n className={classNames(\n !lines.includes(\"top\") && \"hidden\",\n \"absolute h-px bg-border-light top-0 left-1/2 -translate-x-1/2\"\n )}\n style={{ minWidth: \"100dvw\", width: \"100%\" }}\n />\n <motion.div\n initial={{\n clipPath: animateLines ? \"inset(0 0 0 100%)\" : \"inset(0 0 0 0)\",\n }}\n animate={{ clipPath: \"inset(0 0 0 0)\" }}\n transition={{ duration: 0.25, ease: glide, delay: 0.15 }}\n className={classNames(\n !lines.includes(\"bottom\") && \"hidden\",\n \"absolute h-px bg-border-light bottom-0 left-1/2 -translate-x-1/2\"\n )}\n style={{ minWidth: \"100dvw\", width: \"100%\" }}\n />\n </div>\n );\n};\n"]}
1
+ {"version":3,"file":"GridLines.mjs","names":[],"sources":["../src/GridLines.tsx"],"sourcesContent":["\"use client\";\n\nimport { motion } from \"motion/react\";\nimport { glide } from \"./utils/easings\";\nimport classNames from \"classnames\";\n\nexport type GridLinesProps = {\n className?: string;\n animateLines?: boolean;\n gap?: number;\n lines?: (\"top\" | \"bottom\" | \"left\" | \"right\")[];\n};\n\nexport const GridLines = ({\n gap = 8,\n animateLines = false,\n lines = [\"top\", \"bottom\", \"left\", \"right\"],\n className,\n}: GridLinesProps) => {\n return (\n <div\n className={classNames(\"absolute\", className)}\n style={{ inset: `${-gap}px` }}\n >\n <motion.div\n initial={{\n clipPath: animateLines ? \"inset(0 0 100% 0)\" : \"inset(0 0 0 0)\",\n }}\n animate={{ clipPath: \"inset(0 0 0 0)\" }}\n transition={{ duration: 0.25, ease: glide }}\n className={classNames(\n !lines.includes(\"left\") && \"hidden\",\n \"absolute w-px bg-border-light left-0 top-1/2 -translate-y-1/2\"\n )}\n style={{ minHeight: \"100dvh\", height: \"100%\" }}\n />\n <motion.div\n initial={{\n clipPath: animateLines ? \"inset(100% 0 0 0)\" : \"inset(0 0 0 0)\",\n }}\n animate={{ clipPath: \"inset(0 0 0 0)\" }}\n transition={{ duration: 0.25, ease: glide, delay: 0.05 }}\n className={classNames(\n !lines.includes(\"right\") && \"hidden\",\n \"absolute w-px bg-border-light right-0 top-1/2 -translate-y-1/2\"\n )}\n style={{ minHeight: \"100dvh\", height: \"100%\" }}\n />\n <motion.div\n initial={{\n clipPath: animateLines ? \"inset(0 100% 0 0)\" : \"inset(0 0 0 0)\",\n }}\n animate={{ clipPath: \"inset(0 0 0 0)\" }}\n transition={{ duration: 0.25, ease: glide, delay: 0.1 }}\n className={classNames(\n !lines.includes(\"top\") && \"hidden\",\n \"absolute h-px bg-border-light top-0 left-1/2 -translate-x-1/2\"\n )}\n style={{ minWidth: \"100dvw\", width: \"100%\" }}\n />\n <motion.div\n initial={{\n clipPath: animateLines ? \"inset(0 0 0 100%)\" : \"inset(0 0 0 0)\",\n }}\n animate={{ clipPath: \"inset(0 0 0 0)\" }}\n transition={{ duration: 0.25, ease: glide, delay: 0.15 }}\n className={classNames(\n !lines.includes(\"bottom\") && \"hidden\",\n \"absolute h-px bg-border-light bottom-0 left-1/2 -translate-x-1/2\"\n )}\n style={{ minWidth: \"100dvw\", width: \"100%\" }}\n />\n </div>\n );\n};\n"],"mappings":";;;;;;;;AAaA,MAAa,aAAa,EACxB,MAAM,GACN,eAAe,OACf,QAAQ;CAAC;CAAO;CAAU;CAAQ;CAAQ,EAC1C,gBACoB;AACpB,QACE,qBAAC;EACC,WAAW,WAAW,YAAY,UAAU;EAC5C,OAAO,EAAE,OAAO,GAAG,CAAC,IAAI,KAAK;;GAE7B,oBAAC,OAAO;IACN,SAAS,EACP,UAAU,eAAe,sBAAsB,kBAChD;IACD,SAAS,EAAE,UAAU,kBAAkB;IACvC,YAAY;KAAE,UAAU;KAAM,MAAM;KAAO;IAC3C,WAAW,WACT,CAAC,MAAM,SAAS,OAAO,IAAI,UAC3B,gEACD;IACD,OAAO;KAAE,WAAW;KAAU,QAAQ;KAAQ;KAC9C;GACF,oBAAC,OAAO;IACN,SAAS,EACP,UAAU,eAAe,sBAAsB,kBAChD;IACD,SAAS,EAAE,UAAU,kBAAkB;IACvC,YAAY;KAAE,UAAU;KAAM,MAAM;KAAO,OAAO;KAAM;IACxD,WAAW,WACT,CAAC,MAAM,SAAS,QAAQ,IAAI,UAC5B,iEACD;IACD,OAAO;KAAE,WAAW;KAAU,QAAQ;KAAQ;KAC9C;GACF,oBAAC,OAAO;IACN,SAAS,EACP,UAAU,eAAe,sBAAsB,kBAChD;IACD,SAAS,EAAE,UAAU,kBAAkB;IACvC,YAAY;KAAE,UAAU;KAAM,MAAM;KAAO,OAAO;KAAK;IACvD,WAAW,WACT,CAAC,MAAM,SAAS,MAAM,IAAI,UAC1B,gEACD;IACD,OAAO;KAAE,UAAU;KAAU,OAAO;KAAQ;KAC5C;GACF,oBAAC,OAAO;IACN,SAAS,EACP,UAAU,eAAe,sBAAsB,kBAChD;IACD,SAAS,EAAE,UAAU,kBAAkB;IACvC,YAAY;KAAE,UAAU;KAAM,MAAM;KAAO,OAAO;KAAM;IACxD,WAAW,WACT,CAAC,MAAM,SAAS,SAAS,IAAI,UAC7B,mEACD;IACD,OAAO;KAAE,UAAU;KAAU,OAAO;KAAQ;KAC5C;;GACE"}
@@ -0,0 +1,64 @@
1
+ "use client";
2
+
3
+ const require_rolldown_runtime = require('./_virtual/rolldown_runtime.cjs');
4
+ let classnames = require("classnames");
5
+ classnames = require_rolldown_runtime.__toESM(classnames);
6
+ let react_jsx_runtime = require("react/jsx-runtime");
7
+ let react = require("react");
8
+ let motion = require("motion");
9
+ let motion_plus = require("motion-plus");
10
+
11
+ //#region src/HeadingReveal.tsx
12
+ const HeadingReveal = ({ text, headingLevel, className, color = "#EFF1F6", cursorColor = "#00FFFF", baseDelay = 0, splitBy = "words", speed = .25 }) => {
13
+ const containerRef = (0, react.useRef)(null);
14
+ (0, react.useEffect)(() => {
15
+ document.fonts.ready.then(() => {
16
+ if (!containerRef.current) return;
17
+ containerRef.current.style.visibility = "visible";
18
+ const { words, chars } = (0, motion_plus.splitText)(containerRef.current.querySelector(headingLevel));
19
+ (0, motion.animate)(splitBy === "words" ? words : chars, {
20
+ backgroundColor: [
21
+ "rgba(255,255,255,0)",
22
+ "rgba(255,255,255,0)",
23
+ cursorColor,
24
+ cursorColor,
25
+ cursorColor,
26
+ "rgba(255,255,255,0)"
27
+ ],
28
+ color: [
29
+ "rgba(255,255,255,0)",
30
+ "rgba(255,255,255,0)",
31
+ cursorColor,
32
+ cursorColor,
33
+ cursorColor,
34
+ color
35
+ ]
36
+ }, {
37
+ ease: motion.anticipate,
38
+ duration: speed,
39
+ delay: (0, motion.stagger)(speed / 2, { startDelay: baseDelay })
40
+ });
41
+ });
42
+ }, []);
43
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
44
+ ref: containerRef,
45
+ children: [
46
+ headingLevel === "h1" && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("h1", {
47
+ className: (0, classnames.default)("h1", className),
48
+ children: text
49
+ }),
50
+ headingLevel === "h2" && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("h2", {
51
+ className: (0, classnames.default)("h2", className),
52
+ children: text
53
+ }),
54
+ headingLevel === "h3" && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("h3", {
55
+ className: (0, classnames.default)("h3", className),
56
+ children: text
57
+ })
58
+ ]
59
+ });
60
+ };
61
+
62
+ //#endregion
63
+ exports.HeadingReveal = HeadingReveal;
64
+ //# sourceMappingURL=HeadingReveal.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HeadingReveal.cjs","names":["anticipate"],"sources":["../src/HeadingReveal.tsx"],"sourcesContent":["\"use client\";\n\nimport { animate, stagger, anticipate } from \"motion\";\nimport { splitText } from \"motion-plus\";\nimport { useEffect, useRef } from \"react\";\nimport classNames from \"classnames\";\n\nexport type HeadingRevealProps = {\n text: string;\n headingLevel: \"h1\" | \"h2\" | \"h3\";\n className?: string;\n color?: string;\n cursorColor?: string;\n baseDelay?: number;\n splitBy?: \"words\" | \"chars\";\n speed?: number;\n};\nexport const HeadingReveal = ({\n text,\n headingLevel,\n className,\n color = \"#EFF1F6\",\n cursorColor = \"#00FFFF\",\n baseDelay = 0,\n splitBy = \"words\",\n speed = 0.25,\n}: HeadingRevealProps) => {\n const containerRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n document.fonts.ready.then(() => {\n if (!containerRef.current) return;\n\n // Hide the container until the fonts are loaded\n containerRef.current.style.visibility = \"visible\";\n\n const { words, chars } = splitText(\n containerRef.current.querySelector(headingLevel)!\n );\n\n // Animate the words in the h1\n animate(\n splitBy === \"words\" ? words : chars,\n {\n backgroundColor: [\n \"rgba(255,255,255,0)\",\n \"rgba(255,255,255,0)\",\n cursorColor,\n cursorColor,\n cursorColor,\n \"rgba(255,255,255,0)\",\n ],\n color: [\n \"rgba(255,255,255,0)\",\n \"rgba(255,255,255,0)\",\n cursorColor,\n cursorColor,\n cursorColor,\n color,\n ],\n },\n {\n ease: anticipate,\n duration: speed,\n delay: stagger(speed / 2, { startDelay: baseDelay }),\n }\n );\n });\n }, []);\n\n return (\n <div ref={containerRef}>\n {headingLevel === \"h1\" && (\n <h1 className={classNames(\"h1\", className)}>{text}</h1>\n )}\n {headingLevel === \"h2\" && (\n <h2 className={classNames(\"h2\", className)}>{text}</h2>\n )}\n {headingLevel === \"h3\" && (\n <h3 className={classNames(\"h3\", className)}>{text}</h3>\n )}\n </div>\n );\n};\n"],"mappings":";;;;;;;;;;;AAiBA,MAAa,iBAAiB,EAC5B,MACA,cACA,WACA,QAAQ,WACR,cAAc,WACd,YAAY,GACZ,UAAU,SACV,QAAQ,UACgB;CACxB,MAAM,iCAAsC,KAAK;AAEjD,4BAAgB;AACd,WAAS,MAAM,MAAM,WAAW;AAC9B,OAAI,CAAC,aAAa,QAAS;AAG3B,gBAAa,QAAQ,MAAM,aAAa;GAExC,MAAM,EAAE,OAAO,qCACb,aAAa,QAAQ,cAAc,aAAa,CACjD;AAGD,uBACE,YAAY,UAAU,QAAQ,OAC9B;IACE,iBAAiB;KACf;KACA;KACA;KACA;KACA;KACA;KACD;IACD,OAAO;KACL;KACA;KACA;KACA;KACA;KACA;KACD;IACF,EACD;IACE,MAAMA;IACN,UAAU;IACV,2BAAe,QAAQ,GAAG,EAAE,YAAY,WAAW,CAAC;IACrD,CACF;IACD;IACD,EAAE,CAAC;AAEN,QACE,4CAAC;EAAI,KAAK;;GACP,iBAAiB,QAChB,2CAAC;IAAG,mCAAsB,MAAM,UAAU;cAAG;KAAU;GAExD,iBAAiB,QAChB,2CAAC;IAAG,mCAAsB,MAAM,UAAU;cAAG;KAAU;GAExD,iBAAiB,QAChB,2CAAC;IAAG,mCAAsB,MAAM,UAAU;cAAG;KAAU;;GAErD"}
@@ -0,0 +1,26 @@
1
+ import * as react_jsx_runtime50 from "react/jsx-runtime";
2
+
3
+ //#region src/HeadingReveal.d.ts
4
+ type HeadingRevealProps = {
5
+ text: string;
6
+ headingLevel: "h1" | "h2" | "h3";
7
+ className?: string;
8
+ color?: string;
9
+ cursorColor?: string;
10
+ baseDelay?: number;
11
+ splitBy?: "words" | "chars";
12
+ speed?: number;
13
+ };
14
+ declare const HeadingReveal: ({
15
+ text,
16
+ headingLevel,
17
+ className,
18
+ color,
19
+ cursorColor,
20
+ baseDelay,
21
+ splitBy,
22
+ speed
23
+ }: HeadingRevealProps) => react_jsx_runtime50.JSX.Element;
24
+ //#endregion
25
+ export { HeadingReveal, HeadingRevealProps };
26
+ //# sourceMappingURL=HeadingReveal.d.cts.map