@cogentic-co/ds 0.6.0 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (645) hide show
  1. package/dist/animations/animation-ai-analysis.js +4 -3
  2. package/dist/animations/animation-ai-analysis.js.map +1 -1
  3. package/dist/animations/animation-audit-trail.js +2 -1
  4. package/dist/animations/animation-audit-trail.js.map +1 -1
  5. package/dist/animations/animation-compliance-reports.js +4 -3
  6. package/dist/animations/animation-compliance-reports.js.map +1 -1
  7. package/dist/animations/animation-custom-rules.js +4 -3
  8. package/dist/animations/animation-custom-rules.js.map +1 -1
  9. package/dist/animations/animation-jira-ticket.js +3 -2
  10. package/dist/animations/animation-jira-ticket.js.map +1 -1
  11. package/dist/animations/animation-jurisdiction-detection.js +4 -3
  12. package/dist/animations/animation-jurisdiction-detection.js.map +1 -1
  13. package/dist/animations/animation-multi-protocol.js +2 -1
  14. package/dist/animations/animation-multi-protocol.js.map +1 -1
  15. package/dist/animations/animation-pricing-preview.js +4 -3
  16. package/dist/animations/animation-pricing-preview.js.map +1 -1
  17. package/dist/animations/animation-realtime-updates.js +5 -4
  18. package/dist/animations/animation-realtime-updates.js.map +1 -1
  19. package/dist/animations/animation-rest-api.js +2 -1
  20. package/dist/animations/animation-rest-api.js.map +1 -1
  21. package/dist/animations/animation-risk-scoring.js +5 -4
  22. package/dist/animations/animation-risk-scoring.js.map +1 -1
  23. package/dist/animations/animation-sandbox.js +2 -1
  24. package/dist/animations/animation-sandbox.js.map +1 -1
  25. package/dist/animations/animation-scheduled-reports.js +4 -3
  26. package/dist/animations/animation-scheduled-reports.js.map +1 -1
  27. package/dist/animations/animation-secure-messaging.js +3 -2
  28. package/dist/animations/animation-secure-messaging.js.map +1 -1
  29. package/dist/animations/animation-slack-notification.js +3 -2
  30. package/dist/animations/animation-slack-notification.js.map +1 -1
  31. package/dist/animations/animation-sop-mapping.js +2 -1
  32. package/dist/animations/animation-sop-mapping.js.map +1 -1
  33. package/dist/animations/animation-team-routing.js +4 -3
  34. package/dist/animations/animation-team-routing.js.map +1 -1
  35. package/dist/animations/animation-teams-notification.js +3 -2
  36. package/dist/animations/animation-teams-notification.js.map +1 -1
  37. package/dist/animations/animation-vasp-identification.js +4 -3
  38. package/dist/animations/animation-vasp-identification.js.map +1 -1
  39. package/dist/animations/animation-webhooks.js +3 -2
  40. package/dist/animations/animation-webhooks.js.map +1 -1
  41. package/dist/blocks/auth-form.d.ts +1 -1
  42. package/dist/blocks/auth-form.js +7 -4
  43. package/dist/blocks/feature-section.js +3 -2
  44. package/dist/blocks/hero-section.js +3 -2
  45. package/dist/blocks/pricing-table.js +6 -3
  46. package/dist/blocks/stat-card.d.ts +1 -1
  47. package/dist/blocks/stat-card.js +4 -3
  48. package/dist/charts.d.ts +1 -1
  49. package/dist/charts.js +3 -2
  50. package/dist/charts.js.map +1 -1
  51. package/dist/chatbot.js +2 -1
  52. package/dist/chatbot.js.map +1 -1
  53. package/dist/chunk-2BIKWTWM.js +53 -0
  54. package/dist/chunk-2BIKWTWM.js.map +1 -0
  55. package/dist/{chunk-GZNLQE3I.js → chunk-2NMEKWO5.js} +3 -22
  56. package/dist/chunk-2NMEKWO5.js.map +1 -0
  57. package/dist/chunk-2TRJUH3V.js +104 -0
  58. package/dist/chunk-2TRJUH3V.js.map +1 -0
  59. package/dist/chunk-2X37XLH2.js +143 -0
  60. package/dist/chunk-2X37XLH2.js.map +1 -0
  61. package/dist/chunk-37V55OP6.js +191 -0
  62. package/dist/chunk-37V55OP6.js.map +1 -0
  63. package/dist/{chunk-GJAWCIGE.js → chunk-3IXL43BU.js} +4 -3
  64. package/dist/chunk-3IXL43BU.js.map +1 -0
  65. package/dist/chunk-3T2NATO3.js +50 -0
  66. package/dist/chunk-3T2NATO3.js.map +1 -0
  67. package/dist/chunk-455KJGDL.js +185 -0
  68. package/dist/chunk-455KJGDL.js.map +1 -0
  69. package/dist/chunk-466GQKGZ.js +311 -0
  70. package/dist/chunk-466GQKGZ.js.map +1 -0
  71. package/dist/chunk-46UBZI4D.js +119 -0
  72. package/dist/chunk-46UBZI4D.js.map +1 -0
  73. package/dist/chunk-4BLD6BKF.js +53 -0
  74. package/dist/chunk-4BLD6BKF.js.map +1 -0
  75. package/dist/chunk-4FJIJXG4.js +45 -0
  76. package/dist/chunk-4FJIJXG4.js.map +1 -0
  77. package/dist/chunk-4FVHSHHI.js +89 -0
  78. package/dist/chunk-4FVHSHHI.js.map +1 -0
  79. package/dist/chunk-4J2PVZ33.js +43 -0
  80. package/dist/chunk-4J2PVZ33.js.map +1 -0
  81. package/dist/chunk-4VREYXB4.js +136 -0
  82. package/dist/chunk-4VREYXB4.js.map +1 -0
  83. package/dist/chunk-5KYZ5PI5.js +12 -0
  84. package/dist/chunk-5KYZ5PI5.js.map +1 -0
  85. package/dist/{chunk-VWSX75RB.js → chunk-5OVGEXTO.js} +9 -65
  86. package/dist/chunk-5OVGEXTO.js.map +1 -0
  87. package/dist/chunk-5OYIXT3N.js +141 -0
  88. package/dist/chunk-5OYIXT3N.js.map +1 -0
  89. package/dist/chunk-5Q4NJ7WO.js +119 -0
  90. package/dist/chunk-5Q4NJ7WO.js.map +1 -0
  91. package/dist/chunk-5U5NBPQE.js +33 -0
  92. package/dist/chunk-5U5NBPQE.js.map +1 -0
  93. package/dist/chunk-667PB7XR.js +200 -0
  94. package/dist/chunk-667PB7XR.js.map +1 -0
  95. package/dist/chunk-6G52CCDH.js +76 -0
  96. package/dist/chunk-6G52CCDH.js.map +1 -0
  97. package/dist/chunk-6HL4ZHBG.js +16 -0
  98. package/dist/chunk-6HL4ZHBG.js.map +1 -0
  99. package/dist/chunk-6NGFSBVR.js +19 -0
  100. package/dist/chunk-6NGFSBVR.js.map +1 -0
  101. package/dist/chunk-7HOGEYHD.js +99 -0
  102. package/dist/chunk-7HOGEYHD.js.map +1 -0
  103. package/dist/chunk-7IUV2ARF.js +29 -0
  104. package/dist/chunk-7IUV2ARF.js.map +1 -0
  105. package/dist/chunk-7KDR2RWZ.js +121 -0
  106. package/dist/chunk-7KDR2RWZ.js.map +1 -0
  107. package/dist/chunk-7Q7O5LKS.js +155 -0
  108. package/dist/chunk-7Q7O5LKS.js.map +1 -0
  109. package/dist/chunk-7U72AXXX.js +172 -0
  110. package/dist/chunk-7U72AXXX.js.map +1 -0
  111. package/dist/{chunk-LW6GAWZM.js → chunk-AX7QXZKM.js} +10 -35
  112. package/dist/chunk-AX7QXZKM.js.map +1 -0
  113. package/dist/{chunk-XQYFQ6PU.js → chunk-B62UTODY.js} +4 -3
  114. package/dist/chunk-B62UTODY.js.map +1 -0
  115. package/dist/chunk-BB7XG36P.js +98 -0
  116. package/dist/chunk-BB7XG36P.js.map +1 -0
  117. package/dist/chunk-BEU3AQZQ.js +78 -0
  118. package/dist/chunk-BEU3AQZQ.js.map +1 -0
  119. package/dist/chunk-BSKXC3ZQ.js +504 -0
  120. package/dist/chunk-BSKXC3ZQ.js.map +1 -0
  121. package/dist/chunk-BU3PTFMI.js +99 -0
  122. package/dist/chunk-BU3PTFMI.js.map +1 -0
  123. package/dist/chunk-BWCIJWG4.js +20 -0
  124. package/dist/chunk-BWCIJWG4.js.map +1 -0
  125. package/dist/chunk-BYBN4NTY.js +284 -0
  126. package/dist/chunk-BYBN4NTY.js.map +1 -0
  127. package/dist/chunk-CIGS6SLR.js +261 -0
  128. package/dist/chunk-CIGS6SLR.js.map +1 -0
  129. package/dist/{chunk-TAPJEVUA.js → chunk-D3KGHRRC.js} +2 -2
  130. package/dist/{chunk-TAPJEVUA.js.map → chunk-D3KGHRRC.js.map} +1 -1
  131. package/dist/chunk-D75EQCUR.js +81 -0
  132. package/dist/chunk-D75EQCUR.js.map +1 -0
  133. package/dist/chunk-DF7TNBDD.js +84 -0
  134. package/dist/chunk-DF7TNBDD.js.map +1 -0
  135. package/dist/chunk-DO5JNX44.js +123 -0
  136. package/dist/chunk-DO5JNX44.js.map +1 -0
  137. package/dist/chunk-EALF3HQS.js +64 -0
  138. package/dist/chunk-EALF3HQS.js.map +1 -0
  139. package/dist/chunk-EDESQ6HE.js +24 -0
  140. package/dist/chunk-EDESQ6HE.js.map +1 -0
  141. package/dist/{chunk-BNFSXNP2.js → chunk-EN6GS7O4.js} +4 -3
  142. package/dist/chunk-EN6GS7O4.js.map +1 -0
  143. package/dist/chunk-EUAZ42RE.js +32 -0
  144. package/dist/chunk-EUAZ42RE.js.map +1 -0
  145. package/dist/chunk-FDLCCVWI.js +56 -0
  146. package/dist/chunk-FDLCCVWI.js.map +1 -0
  147. package/dist/chunk-FGSFWKIJ.js +60 -0
  148. package/dist/chunk-FGSFWKIJ.js.map +1 -0
  149. package/dist/chunk-FOCJAO6Y.js +167 -0
  150. package/dist/chunk-FOCJAO6Y.js.map +1 -0
  151. package/dist/chunk-FRAFAAPK.js +3 -0
  152. package/dist/chunk-FRAFAAPK.js.map +1 -0
  153. package/dist/chunk-GF3A7RZS.js +118 -0
  154. package/dist/chunk-GF3A7RZS.js.map +1 -0
  155. package/dist/chunk-GHZL6VY5.js +216 -0
  156. package/dist/chunk-GHZL6VY5.js.map +1 -0
  157. package/dist/chunk-GQTDZUUX.js +38 -0
  158. package/dist/chunk-GQTDZUUX.js.map +1 -0
  159. package/dist/chunk-GR6J7HQK.js +24 -0
  160. package/dist/chunk-GR6J7HQK.js.map +1 -0
  161. package/dist/chunk-GV7JJHY5.js +21 -0
  162. package/dist/chunk-GV7JJHY5.js.map +1 -0
  163. package/dist/chunk-H4PJG7O3.js +193 -0
  164. package/dist/chunk-H4PJG7O3.js.map +1 -0
  165. package/dist/chunk-H4T5OTVO.js +83 -0
  166. package/dist/chunk-H4T5OTVO.js.map +1 -0
  167. package/dist/chunk-H5JU3APN.js +36 -0
  168. package/dist/chunk-H5JU3APN.js.map +1 -0
  169. package/dist/chunk-H6BQJNUX.js +39 -0
  170. package/dist/chunk-H6BQJNUX.js.map +1 -0
  171. package/dist/chunk-HK73AOFX.js +646 -0
  172. package/dist/chunk-HK73AOFX.js.map +1 -0
  173. package/dist/chunk-IKY6E2H6.js +38 -0
  174. package/dist/chunk-IKY6E2H6.js.map +1 -0
  175. package/dist/chunk-IVPZ37VC.js +95 -0
  176. package/dist/chunk-IVPZ37VC.js.map +1 -0
  177. package/dist/chunk-J7CT7LH6.js +22 -0
  178. package/dist/chunk-J7CT7LH6.js.map +1 -0
  179. package/dist/chunk-JCJCCQLD.js +182 -0
  180. package/dist/chunk-JCJCCQLD.js.map +1 -0
  181. package/dist/chunk-K4H74FZT.js +43 -0
  182. package/dist/chunk-K4H74FZT.js.map +1 -0
  183. package/dist/chunk-KB665WXG.js +62 -0
  184. package/dist/chunk-KB665WXG.js.map +1 -0
  185. package/dist/chunk-KCPMWAQJ.js +71 -0
  186. package/dist/chunk-KCPMWAQJ.js.map +1 -0
  187. package/dist/chunk-KI4SRSCR.js +83 -0
  188. package/dist/chunk-KI4SRSCR.js.map +1 -0
  189. package/dist/chunk-KKKVOC6T.js +68 -0
  190. package/dist/chunk-KKKVOC6T.js.map +1 -0
  191. package/dist/chunk-KLOBSEH3.js +32 -0
  192. package/dist/chunk-KLOBSEH3.js.map +1 -0
  193. package/dist/{chunk-4NEQV6H2.js → chunk-KX3W7BKP.js} +4 -3
  194. package/dist/chunk-KX3W7BKP.js.map +1 -0
  195. package/dist/chunk-L52PKRST.js +15 -0
  196. package/dist/chunk-L52PKRST.js.map +1 -0
  197. package/dist/chunk-LZ7QCH6T.js +151 -0
  198. package/dist/chunk-LZ7QCH6T.js.map +1 -0
  199. package/dist/chunk-MEQYYN4D.js +22 -0
  200. package/dist/chunk-MEQYYN4D.js.map +1 -0
  201. package/dist/chunk-MHRCB42B.js +24 -0
  202. package/dist/chunk-MHRCB42B.js.map +1 -0
  203. package/dist/chunk-N4YLACF7.js +95 -0
  204. package/dist/chunk-N4YLACF7.js.map +1 -0
  205. package/dist/chunk-NDC2EAYA.js +28 -0
  206. package/dist/chunk-NDC2EAYA.js.map +1 -0
  207. package/dist/chunk-NN2YBLVZ.js +38 -0
  208. package/dist/chunk-NN2YBLVZ.js.map +1 -0
  209. package/dist/chunk-NPIDODOZ.js +100 -0
  210. package/dist/chunk-NPIDODOZ.js.map +1 -0
  211. package/dist/chunk-NSRUYLBC.js +65 -0
  212. package/dist/chunk-NSRUYLBC.js.map +1 -0
  213. package/dist/chunk-NUZM7GDQ.js +49 -0
  214. package/dist/chunk-NUZM7GDQ.js.map +1 -0
  215. package/dist/chunk-O6QB2KVL.js +86 -0
  216. package/dist/chunk-O6QB2KVL.js.map +1 -0
  217. package/dist/chunk-OAVWHBUD.js +250 -0
  218. package/dist/chunk-OAVWHBUD.js.map +1 -0
  219. package/dist/chunk-OG7CCUKC.js +45 -0
  220. package/dist/chunk-OG7CCUKC.js.map +1 -0
  221. package/dist/chunk-PKGKB7JG.js +20 -0
  222. package/dist/chunk-PKGKB7JG.js.map +1 -0
  223. package/dist/chunk-QCY3TBJU.js +130 -0
  224. package/dist/chunk-QCY3TBJU.js.map +1 -0
  225. package/dist/chunk-QTHRRLHF.js +89 -0
  226. package/dist/chunk-QTHRRLHF.js.map +1 -0
  227. package/dist/chunk-REBDYEZX.js +67 -0
  228. package/dist/chunk-REBDYEZX.js.map +1 -0
  229. package/dist/chunk-RI7KG3TF.js +87 -0
  230. package/dist/chunk-RI7KG3TF.js.map +1 -0
  231. package/dist/{chunk-RXV2XUDZ.js → chunk-SLSJ6OOL.js} +2 -2
  232. package/dist/{chunk-RXV2XUDZ.js.map → chunk-SLSJ6OOL.js.map} +1 -1
  233. package/dist/chunk-ST22RZYN.js +122 -0
  234. package/dist/chunk-ST22RZYN.js.map +1 -0
  235. package/dist/chunk-SZFIXV43.js +3 -0
  236. package/dist/chunk-SZFIXV43.js.map +1 -0
  237. package/dist/chunk-TJVE6LDU.js +205 -0
  238. package/dist/chunk-TJVE6LDU.js.map +1 -0
  239. package/dist/chunk-TVGQEQOW.js +83 -0
  240. package/dist/chunk-TVGQEQOW.js.map +1 -0
  241. package/dist/chunk-U37L3S2U.js +22 -0
  242. package/dist/chunk-U37L3S2U.js.map +1 -0
  243. package/dist/chunk-UAFRUBYX.js +42 -0
  244. package/dist/chunk-UAFRUBYX.js.map +1 -0
  245. package/dist/chunk-UAXOFYFR.js +37 -0
  246. package/dist/chunk-UAXOFYFR.js.map +1 -0
  247. package/dist/{chunk-7HRPF2N2.js → chunk-UIDMLHT7.js} +5 -4
  248. package/dist/chunk-UIDMLHT7.js.map +1 -0
  249. package/dist/chunk-V43Q47PK.js +28 -0
  250. package/dist/chunk-V43Q47PK.js.map +1 -0
  251. package/dist/chunk-VUKVUFHU.js +237 -0
  252. package/dist/chunk-VUKVUFHU.js.map +1 -0
  253. package/dist/{chunk-CG5JA7FM.js → chunk-VWZTLFXK.js} +4 -3
  254. package/dist/chunk-VWZTLFXK.js.map +1 -0
  255. package/dist/chunk-VY2ZHEY2.js +170 -0
  256. package/dist/chunk-VY2ZHEY2.js.map +1 -0
  257. package/dist/chunk-WGFU2D4A.js +63 -0
  258. package/dist/chunk-WGFU2D4A.js.map +1 -0
  259. package/dist/chunk-WJRJBMFN.js +22 -0
  260. package/dist/chunk-WJRJBMFN.js.map +1 -0
  261. package/dist/chunk-X5R5H4TO.js +36 -0
  262. package/dist/chunk-X5R5H4TO.js.map +1 -0
  263. package/dist/{chunk-6RWCZUAD.js → chunk-XAIRLU4F.js} +3 -3
  264. package/dist/{chunk-6RWCZUAD.js.map → chunk-XAIRLU4F.js.map} +1 -1
  265. package/dist/chunk-XCZNB4NP.js +86 -0
  266. package/dist/chunk-XCZNB4NP.js.map +1 -0
  267. package/dist/chunk-XWCSV3E4.js +263 -0
  268. package/dist/chunk-XWCSV3E4.js.map +1 -0
  269. package/dist/chunk-XX6UWWUW.js +197 -0
  270. package/dist/chunk-XX6UWWUW.js.map +1 -0
  271. package/dist/chunk-YCBEMVM7.js +145 -0
  272. package/dist/chunk-YCBEMVM7.js.map +1 -0
  273. package/dist/chunk-YEV262XN.js +172 -0
  274. package/dist/chunk-YEV262XN.js.map +1 -0
  275. package/dist/chunk-YJHTT2YB.js +178 -0
  276. package/dist/chunk-YJHTT2YB.js.map +1 -0
  277. package/dist/chunk-YS7M4GKW.js +117 -0
  278. package/dist/chunk-YS7M4GKW.js.map +1 -0
  279. package/dist/chunk-Z2IWEIXF.js +43 -0
  280. package/dist/chunk-Z2IWEIXF.js.map +1 -0
  281. package/dist/chunk-Z3FYDYSM.js +32 -0
  282. package/dist/chunk-Z3FYDYSM.js.map +1 -0
  283. package/dist/chunk-Z3XX65K6.js +84 -0
  284. package/dist/chunk-Z3XX65K6.js.map +1 -0
  285. package/dist/chunk-Z5EHDRCT.js +39 -0
  286. package/dist/chunk-Z5EHDRCT.js.map +1 -0
  287. package/dist/chunk-ZJ7UBKLA.js +21 -0
  288. package/dist/chunk-ZJ7UBKLA.js.map +1 -0
  289. package/dist/components/accordion.d.ts +9 -0
  290. package/dist/components/accordion.js +5 -0
  291. package/dist/components/accordion.js.map +1 -0
  292. package/dist/components/alert-dialog.d.ts +24 -0
  293. package/dist/components/alert-dialog.js +6 -0
  294. package/dist/components/alert-dialog.js.map +1 -0
  295. package/dist/components/alert.d.ts +14 -0
  296. package/dist/components/alert.js +5 -0
  297. package/dist/components/alert.js.map +1 -0
  298. package/dist/components/animated-counter.d.ts +18 -0
  299. package/dist/components/animated-counter.js +4 -0
  300. package/dist/components/animated-counter.js.map +1 -0
  301. package/dist/components/approval-actions.d.ts +30 -0
  302. package/dist/components/approval-actions.js +8 -0
  303. package/dist/components/approval-actions.js.map +1 -0
  304. package/dist/components/ascii-shader.d.ts +8 -0
  305. package/dist/components/ascii-shader.js +5 -0
  306. package/dist/components/ascii-shader.js.map +1 -0
  307. package/dist/components/aspect-ratio.d.ts +7 -0
  308. package/dist/components/aspect-ratio.js +5 -0
  309. package/dist/components/aspect-ratio.js.map +1 -0
  310. package/dist/components/audit-log.d.ts +17 -0
  311. package/dist/components/audit-log.js +5 -0
  312. package/dist/components/audit-log.js.map +1 -0
  313. package/dist/components/avatar.d.ts +14 -0
  314. package/dist/components/avatar.js +5 -0
  315. package/dist/components/avatar.js.map +1 -0
  316. package/dist/components/badge.d.ts +13 -0
  317. package/dist/components/badge.js +5 -0
  318. package/dist/components/badge.js.map +1 -0
  319. package/dist/components/bg-shader.d.ts +18 -0
  320. package/dist/components/bg-shader.js +5 -0
  321. package/dist/components/bg-shader.js.map +1 -0
  322. package/dist/components/blocky-shader.d.ts +8 -0
  323. package/dist/components/blocky-shader.js +5 -0
  324. package/dist/components/blocky-shader.js.map +1 -0
  325. package/dist/components/breadcrumb.d.ts +13 -0
  326. package/dist/components/breadcrumb.js +5 -0
  327. package/dist/components/breadcrumb.js.map +1 -0
  328. package/dist/components/button-group.d.ts +16 -0
  329. package/dist/components/button-group.js +6 -0
  330. package/dist/components/button-group.js.map +1 -0
  331. package/dist/components/button.d.ts +13 -0
  332. package/dist/components/button.js +5 -0
  333. package/dist/components/button.js.map +1 -0
  334. package/dist/components/calendar.d.ts +16 -0
  335. package/dist/components/calendar.js +6 -0
  336. package/dist/components/calendar.js.map +1 -0
  337. package/dist/components/callout.d.ts +12 -0
  338. package/dist/components/callout.js +5 -0
  339. package/dist/components/callout.js.map +1 -0
  340. package/dist/{card-Cumdyf_G.d.ts → components/card.d.ts} +1 -1
  341. package/dist/components/card.js +5 -0
  342. package/dist/components/card.js.map +1 -0
  343. package/dist/components/carousel.d.ts +34 -0
  344. package/dist/components/carousel.js +6 -0
  345. package/dist/components/carousel.js.map +1 -0
  346. package/dist/components/case-card.d.ts +36 -0
  347. package/dist/components/case-card.js +10 -0
  348. package/dist/components/case-card.js.map +1 -0
  349. package/dist/{chart-DkwdRX-i.d.ts → components/chart.d.ts} +1 -1
  350. package/dist/components/chart.js +5 -0
  351. package/dist/components/chart.js.map +1 -0
  352. package/dist/components/checkbox.d.ts +6 -0
  353. package/dist/components/checkbox.js +5 -0
  354. package/dist/components/checkbox.js.map +1 -0
  355. package/dist/components/code-block.d.ts +16 -0
  356. package/dist/components/code-block.js +5 -0
  357. package/dist/components/code-block.js.map +1 -0
  358. package/dist/components/collapsible.d.ts +8 -0
  359. package/dist/components/collapsible.js +4 -0
  360. package/dist/components/collapsible.js.map +1 -0
  361. package/dist/components/combobox.d.ts +27 -0
  362. package/dist/components/combobox.js +9 -0
  363. package/dist/components/combobox.js.map +1 -0
  364. package/dist/components/command.d.ts +23 -0
  365. package/dist/components/command.js +10 -0
  366. package/dist/components/command.js.map +1 -0
  367. package/dist/components/comment-thread.d.ts +18 -0
  368. package/dist/components/comment-thread.js +5 -0
  369. package/dist/components/comment-thread.js.map +1 -0
  370. package/dist/components/compliance-score.d.ts +20 -0
  371. package/dist/components/compliance-score.js +5 -0
  372. package/dist/components/compliance-score.js.map +1 -0
  373. package/dist/components/context-menu.d.ts +32 -0
  374. package/dist/components/context-menu.js +5 -0
  375. package/dist/components/context-menu.js.map +1 -0
  376. package/dist/components/copy-button.d.ts +16 -0
  377. package/dist/components/copy-button.js +6 -0
  378. package/dist/components/copy-button.js.map +1 -0
  379. package/dist/components/data-table.d.ts +84 -0
  380. package/dist/components/data-table.js +18 -0
  381. package/dist/components/data-table.js.map +1 -0
  382. package/dist/components/date-picker.d.ts +58 -0
  383. package/dist/components/date-picker.js +9 -0
  384. package/dist/components/date-picker.js.map +1 -0
  385. package/dist/components/deadline-countdown.d.ts +26 -0
  386. package/dist/components/deadline-countdown.js +5 -0
  387. package/dist/components/deadline-countdown.js.map +1 -0
  388. package/dist/components/description-list.d.ts +9 -0
  389. package/dist/components/description-list.js +5 -0
  390. package/dist/components/description-list.js.map +1 -0
  391. package/dist/components/dialog.d.ts +20 -0
  392. package/dist/components/dialog.js +6 -0
  393. package/dist/components/dialog.js.map +1 -0
  394. package/dist/components/direction.d.ts +2 -0
  395. package/dist/components/direction.js +4 -0
  396. package/dist/components/direction.js.map +1 -0
  397. package/dist/components/drawer.d.ts +16 -0
  398. package/dist/components/drawer.js +5 -0
  399. package/dist/components/drawer.js.map +1 -0
  400. package/dist/components/dropdown-menu.d.ts +32 -0
  401. package/dist/components/dropdown-menu.js +5 -0
  402. package/dist/components/dropdown-menu.js.map +1 -0
  403. package/dist/components/empty.d.ts +15 -0
  404. package/dist/components/empty.js +5 -0
  405. package/dist/components/empty.js.map +1 -0
  406. package/dist/components/entity-header.d.ts +26 -0
  407. package/dist/components/entity-header.js +5 -0
  408. package/dist/components/entity-header.js.map +1 -0
  409. package/dist/components/fade-in.d.ts +11 -0
  410. package/dist/components/fade-in.js +5 -0
  411. package/dist/components/fade-in.js.map +1 -0
  412. package/dist/components/field.d.ts +30 -0
  413. package/dist/components/field.js +7 -0
  414. package/dist/components/field.js.map +1 -0
  415. package/dist/components/file-upload.d.ts +18 -0
  416. package/dist/components/file-upload.js +5 -0
  417. package/dist/components/file-upload.js.map +1 -0
  418. package/dist/components/filter-bar.d.ts +11 -0
  419. package/dist/components/filter-bar.js +5 -0
  420. package/dist/components/filter-bar.js.map +1 -0
  421. package/dist/components/form.d.ts +1 -0
  422. package/dist/components/form.js +4 -0
  423. package/dist/components/form.js.map +1 -0
  424. package/dist/components/grid.d.ts +58 -0
  425. package/dist/components/grid.js +5 -0
  426. package/dist/components/grid.js.map +1 -0
  427. package/dist/components/hover-card.d.ts +8 -0
  428. package/dist/components/hover-card.js +5 -0
  429. package/dist/components/hover-card.js.map +1 -0
  430. package/dist/components/inline-edit.d.ts +16 -0
  431. package/dist/components/inline-edit.js +5 -0
  432. package/dist/components/inline-edit.js.map +1 -0
  433. package/dist/components/input-group.d.ts +23 -0
  434. package/dist/components/input-group.js +8 -0
  435. package/dist/components/input-group.js.map +1 -0
  436. package/dist/components/input-otp.d.ts +14 -0
  437. package/dist/components/input-otp.js +5 -0
  438. package/dist/components/input-otp.js.map +1 -0
  439. package/dist/components/input.d.ts +6 -0
  440. package/dist/components/input.js +5 -0
  441. package/dist/components/input.js.map +1 -0
  442. package/dist/components/item.d.ts +27 -0
  443. package/dist/components/item.js +6 -0
  444. package/dist/components/item.js.map +1 -0
  445. package/dist/components/kbd.d.ts +6 -0
  446. package/dist/components/kbd.js +5 -0
  447. package/dist/components/kbd.js.map +1 -0
  448. package/dist/components/label.d.ts +6 -0
  449. package/dist/components/label.js +5 -0
  450. package/dist/components/label.js.map +1 -0
  451. package/dist/components/loading-overlay.d.ts +12 -0
  452. package/dist/components/loading-overlay.js +6 -0
  453. package/dist/components/loading-overlay.js.map +1 -0
  454. package/dist/components/logo-vasp.d.ts +11 -0
  455. package/dist/components/logo-vasp.js +5 -0
  456. package/dist/components/logo-vasp.js.map +1 -0
  457. package/dist/components/marquee.d.ts +17 -0
  458. package/dist/components/marquee.js +5 -0
  459. package/dist/components/marquee.js.map +1 -0
  460. package/dist/components/menubar.d.ts +32 -0
  461. package/dist/components/menubar.js +6 -0
  462. package/dist/components/menubar.js.map +1 -0
  463. package/dist/components/native-select.d.ts +11 -0
  464. package/dist/components/native-select.js +5 -0
  465. package/dist/components/native-select.js.map +1 -0
  466. package/dist/components/navigation-menu.d.ts +15 -0
  467. package/dist/components/navigation-menu.js +5 -0
  468. package/dist/components/navigation-menu.js.map +1 -0
  469. package/dist/components/number-input.d.ts +14 -0
  470. package/dist/components/number-input.js +7 -0
  471. package/dist/components/number-input.js.map +1 -0
  472. package/dist/components/pagination.d.ts +23 -0
  473. package/dist/components/pagination.js +6 -0
  474. package/dist/components/pagination.js.map +1 -0
  475. package/dist/components/policy-banner.d.ts +21 -0
  476. package/dist/components/policy-banner.js +5 -0
  477. package/dist/components/policy-banner.js.map +1 -0
  478. package/dist/components/popover.d.ts +12 -0
  479. package/dist/components/popover.js +5 -0
  480. package/dist/components/popover.js.map +1 -0
  481. package/dist/components/progress.d.ts +17 -0
  482. package/dist/components/progress.js +5 -0
  483. package/dist/components/progress.js.map +1 -0
  484. package/dist/components/radio-group.d.ts +8 -0
  485. package/dist/components/radio-group.js +5 -0
  486. package/dist/components/radio-group.js.map +1 -0
  487. package/dist/components/resizable.d.ts +10 -0
  488. package/dist/components/resizable.js +5 -0
  489. package/dist/components/resizable.js.map +1 -0
  490. package/dist/components/risk-gauge.d.ts +20 -0
  491. package/dist/components/risk-gauge.js +5 -0
  492. package/dist/components/risk-gauge.js.map +1 -0
  493. package/dist/components/scroll-area.d.ts +7 -0
  494. package/dist/components/scroll-area.js +5 -0
  495. package/dist/components/scroll-area.js.map +1 -0
  496. package/dist/components/search-input.d.ts +17 -0
  497. package/dist/components/search-input.js +7 -0
  498. package/dist/components/search-input.js.map +1 -0
  499. package/dist/components/segmented-control.d.ts +15 -0
  500. package/dist/components/segmented-control.js +5 -0
  501. package/dist/components/segmented-control.js.map +1 -0
  502. package/dist/components/select.d.ts +18 -0
  503. package/dist/components/select.js +5 -0
  504. package/dist/components/select.js.map +1 -0
  505. package/dist/components/separator.d.ts +6 -0
  506. package/dist/components/separator.js +5 -0
  507. package/dist/components/separator.js.map +1 -0
  508. package/dist/components/shadow-root-host.d.ts +16 -0
  509. package/dist/components/shadow-root-host.js +51 -0
  510. package/dist/components/shadow-root-host.js.map +1 -0
  511. package/dist/components/sheet.d.ts +17 -0
  512. package/dist/components/sheet.js +6 -0
  513. package/dist/components/sheet.js.map +1 -0
  514. package/dist/components/sidebar.d.ts +70 -0
  515. package/dist/components/sidebar.js +12 -0
  516. package/dist/components/sidebar.js.map +1 -0
  517. package/dist/components/skeleton.d.ts +5 -0
  518. package/dist/components/skeleton.js +5 -0
  519. package/dist/components/skeleton.js.map +1 -0
  520. package/dist/components/slider.d.ts +6 -0
  521. package/dist/components/slider.js +5 -0
  522. package/dist/components/slider.js.map +1 -0
  523. package/dist/components/sonner.d.ts +6 -0
  524. package/dist/components/sonner.js +4 -0
  525. package/dist/components/sonner.js.map +1 -0
  526. package/dist/components/spinner.d.ts +9 -0
  527. package/dist/components/spinner.js +5 -0
  528. package/dist/components/spinner.js.map +1 -0
  529. package/dist/components/split-pane.d.ts +21 -0
  530. package/dist/components/split-pane.js +6 -0
  531. package/dist/components/split-pane.js.map +1 -0
  532. package/dist/components/stat.d.ts +15 -0
  533. package/dist/components/stat.js +5 -0
  534. package/dist/components/stat.js.map +1 -0
  535. package/dist/components/status-indicator.d.ts +16 -0
  536. package/dist/components/status-indicator.js +5 -0
  537. package/dist/components/status-indicator.js.map +1 -0
  538. package/dist/components/step-progress.d.ts +26 -0
  539. package/dist/components/step-progress.js +5 -0
  540. package/dist/components/step-progress.js.map +1 -0
  541. package/dist/components/streaming-cards.d.ts +16 -0
  542. package/dist/components/streaming-cards.js +66 -0
  543. package/dist/components/streaming-cards.js.map +1 -0
  544. package/dist/components/striped-bar.d.ts +20 -0
  545. package/dist/components/striped-bar.js +6 -0
  546. package/dist/components/striped-bar.js.map +1 -0
  547. package/dist/components/subtle-shader.d.ts +10 -0
  548. package/dist/components/subtle-shader.js +5 -0
  549. package/dist/components/subtle-shader.js.map +1 -0
  550. package/dist/components/switch.d.ts +8 -0
  551. package/dist/components/switch.js +5 -0
  552. package/dist/components/switch.js.map +1 -0
  553. package/dist/components/table.d.ts +13 -0
  554. package/dist/components/table.js +5 -0
  555. package/dist/components/table.js.map +1 -0
  556. package/dist/components/tabs.d.ts +14 -0
  557. package/dist/components/tabs.js +5 -0
  558. package/dist/components/tabs.js.map +1 -0
  559. package/dist/components/tag.d.ts +15 -0
  560. package/dist/components/tag.js +5 -0
  561. package/dist/components/tag.js.map +1 -0
  562. package/dist/components/textarea.d.ts +6 -0
  563. package/dist/components/textarea.js +5 -0
  564. package/dist/components/textarea.js.map +1 -0
  565. package/dist/components/theme-script.d.ts +26 -0
  566. package/dist/components/theme-script.js +4 -0
  567. package/dist/components/theme-script.js.map +1 -0
  568. package/dist/components/timeline.d.ts +13 -0
  569. package/dist/components/timeline.js +5 -0
  570. package/dist/components/timeline.js.map +1 -0
  571. package/dist/components/toggle-group.d.ts +14 -0
  572. package/dist/components/toggle-group.js +6 -0
  573. package/dist/components/toggle-group.js.map +1 -0
  574. package/dist/components/toggle.d.ts +12 -0
  575. package/dist/components/toggle.js +5 -0
  576. package/dist/components/toggle.js.map +1 -0
  577. package/dist/components/tooltip.d.ts +9 -0
  578. package/dist/components/tooltip.js +5 -0
  579. package/dist/components/tooltip.js.map +1 -0
  580. package/dist/components/typewriter.d.ts +25 -0
  581. package/dist/components/typewriter.js +5 -0
  582. package/dist/components/typewriter.js.map +1 -0
  583. package/dist/components/typography.d.ts +26 -0
  584. package/dist/components/typography.js +5 -0
  585. package/dist/components/typography.js.map +1 -0
  586. package/dist/components/visually-hidden.d.ts +6 -0
  587. package/dist/components/visually-hidden.js +5 -0
  588. package/dist/components/visually-hidden.js.map +1 -0
  589. package/dist/components/waffle-chart.d.ts +46 -0
  590. package/dist/components/waffle-chart.js +5 -0
  591. package/dist/components/waffle-chart.js.map +1 -0
  592. package/dist/hooks/use-animation-timer.d.ts +11 -0
  593. package/dist/hooks/use-animation-timer.js +4 -0
  594. package/dist/hooks/use-animation-timer.js.map +1 -0
  595. package/dist/hooks/use-carousel.d.ts +22 -0
  596. package/dist/hooks/use-carousel.js +4 -0
  597. package/dist/hooks/use-carousel.js.map +1 -0
  598. package/dist/hooks/use-clipboard.d.ts +10 -0
  599. package/dist/hooks/use-clipboard.js +4 -0
  600. package/dist/hooks/use-clipboard.js.map +1 -0
  601. package/dist/hooks/use-cycle-index.d.ts +13 -0
  602. package/dist/hooks/use-cycle-index.js +5 -0
  603. package/dist/hooks/use-cycle-index.js.map +1 -0
  604. package/dist/hooks/use-debounce.d.ts +3 -0
  605. package/dist/hooks/use-debounce.js +4 -0
  606. package/dist/hooks/use-debounce.js.map +1 -0
  607. package/dist/hooks/use-disclosure.d.ts +9 -0
  608. package/dist/hooks/use-disclosure.js +4 -0
  609. package/dist/hooks/use-disclosure.js.map +1 -0
  610. package/dist/hooks/use-intersection-observer.d.ts +15 -0
  611. package/dist/hooks/use-intersection-observer.js +4 -0
  612. package/dist/hooks/use-intersection-observer.js.map +1 -0
  613. package/dist/hooks/use-local-storage.d.ts +3 -0
  614. package/dist/hooks/use-local-storage.js +4 -0
  615. package/dist/hooks/use-local-storage.js.map +1 -0
  616. package/dist/hooks/use-media-query.d.ts +3 -0
  617. package/dist/hooks/use-media-query.js +4 -0
  618. package/dist/hooks/use-media-query.js.map +1 -0
  619. package/dist/hooks/use-mobile.d.ts +3 -0
  620. package/dist/hooks/use-mobile.js +4 -0
  621. package/dist/hooks/use-mobile.js.map +1 -0
  622. package/dist/index.d.ts +150 -1499
  623. package/dist/index.js +125 -9475
  624. package/dist/index.js.map +1 -1
  625. package/dist/lib/animation.d.ts +63 -0
  626. package/dist/lib/animation.js +4 -0
  627. package/dist/lib/animation.js.map +1 -0
  628. package/dist/lib/utils.d.ts +6 -0
  629. package/dist/lib/utils.js +4 -0
  630. package/dist/lib/utils.js.map +1 -0
  631. package/dist/shells/app-shell.d.ts +60 -0
  632. package/dist/shells/app-shell.js +18 -0
  633. package/dist/shells/app-shell.js.map +1 -0
  634. package/dist/workflow.js +2 -1
  635. package/dist/workflow.js.map +1 -1
  636. package/package.json +685 -1
  637. package/dist/chunk-4NEQV6H2.js.map +0 -1
  638. package/dist/chunk-7HRPF2N2.js.map +0 -1
  639. package/dist/chunk-BNFSXNP2.js.map +0 -1
  640. package/dist/chunk-CG5JA7FM.js.map +0 -1
  641. package/dist/chunk-GJAWCIGE.js.map +0 -1
  642. package/dist/chunk-GZNLQE3I.js.map +0 -1
  643. package/dist/chunk-LW6GAWZM.js.map +0 -1
  644. package/dist/chunk-VWSX75RB.js.map +0 -1
  645. package/dist/chunk-XQYFQ6PU.js.map +0 -1
@@ -0,0 +1,67 @@
1
+ "use client";
2
+ import { cn } from './chunk-MHRCB42B.js';
3
+ import { __objRest, __spreadProps, __spreadValues } from './chunk-2NMEKWO5.js';
4
+ import { Slider as Slider$1 } from '@base-ui/react/slider';
5
+ import * as React from 'react';
6
+ import { jsx, jsxs } from 'react/jsx-runtime';
7
+
8
+ function Slider(_a) {
9
+ var _b = _a, {
10
+ className,
11
+ defaultValue,
12
+ value,
13
+ min = 0,
14
+ max = 100
15
+ } = _b, props = __objRest(_b, [
16
+ "className",
17
+ "defaultValue",
18
+ "value",
19
+ "min",
20
+ "max"
21
+ ]);
22
+ const _values = React.useMemo(
23
+ () => Array.isArray(value) ? value : Array.isArray(defaultValue) ? defaultValue : [min, max],
24
+ [value, defaultValue, min, max]
25
+ );
26
+ return /* @__PURE__ */ jsx(
27
+ Slider$1.Root,
28
+ __spreadProps(__spreadValues({
29
+ className: cn("data-vertical:h-full data-horizontal:w-full", className),
30
+ "data-slot": "slider",
31
+ defaultValue,
32
+ value,
33
+ min,
34
+ max,
35
+ thumbAlignment: "edge"
36
+ }, props), {
37
+ children: /* @__PURE__ */ jsxs(Slider$1.Control, { className: "relative flex w-full touch-none select-none items-center data-vertical:h-full data-vertical:min-h-40 data-vertical:w-auto data-vertical:flex-col data-disabled:opacity-50", children: [
38
+ /* @__PURE__ */ jsx(
39
+ Slider$1.Track,
40
+ {
41
+ "data-slot": "slider-track",
42
+ className: "relative grow select-none overflow-hidden rounded-full bg-muted data-horizontal:h-1.5 data-vertical:h-full data-horizontal:w-full data-vertical:w-1.5",
43
+ children: /* @__PURE__ */ jsx(
44
+ Slider$1.Indicator,
45
+ {
46
+ "data-slot": "slider-range",
47
+ className: "select-none bg-primary data-horizontal:h-full data-vertical:w-full"
48
+ }
49
+ )
50
+ }
51
+ ),
52
+ Array.from({ length: _values.length }, (_, index) => /* @__PURE__ */ jsx(
53
+ Slider$1.Thumb,
54
+ {
55
+ "data-slot": "slider-thumb",
56
+ className: "block size-4 shrink-0 select-none rounded-full border border-primary bg-white shadow-sm ring-ring/50 transition-[color,box-shadow] hover:ring-4 focus-visible:outline-hidden focus-visible:ring-4 disabled:pointer-events-none disabled:opacity-50"
57
+ },
58
+ index
59
+ ))
60
+ ] })
61
+ })
62
+ );
63
+ }
64
+
65
+ export { Slider };
66
+ //# sourceMappingURL=chunk-REBDYEZX.js.map
67
+ //# sourceMappingURL=chunk-REBDYEZX.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/slider.tsx"],"names":["SliderPrimitive"],"mappings":";;;;;;AAOA,SAAS,OAAO,EAAA,EAOe;AAPf,EAAA,IAAA,EAAA,GAAA,EAAA,EACd;AAAA,IAAA,SAAA;AAAA,IACA,YAAA;AAAA,IACA,KAAA;AAAA,IACA,GAAA,GAAM,CAAA;AAAA,IACN,GAAA,GAAM;AAAA,GAZR,GAOgB,EAAA,EAMX,KAAA,GAAA,SAAA,CANW,EAAA,EAMX;AAAA,IALH,WAAA;AAAA,IACA,cAAA;AAAA,IACA,OAAA;AAAA,IACA,KAAA;AAAA,IACA;AAAA,GAAA,CAAA;AAGA,EAAA,MAAM,OAAA,GAAgB,KAAA,CAAA,OAAA;AAAA,IACpB,MAAO,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,GAAI,KAAA,GAAQ,KAAA,CAAM,OAAA,CAAQ,YAAY,CAAA,GAAI,YAAA,GAAe,CAAC,KAAK,GAAG,CAAA;AAAA,IAC5F,CAAC,KAAA,EAAO,YAAA,EAAc,GAAA,EAAK,GAAG;AAAA,GAChC;AAEA,EAAA,uBACE,GAAA;AAAA,IAACA,QAAA,CAAgB,IAAA;AAAA,IAAhB,aAAA,CAAA,cAAA,CAAA;AAAA,MACC,SAAA,EAAW,EAAA,CAAG,6CAAA,EAA+C,SAAS,CAAA;AAAA,MACtE,WAAA,EAAU,QAAA;AAAA,MACV,YAAA;AAAA,MACA,KAAA;AAAA,MACA,GAAA;AAAA,MACA,GAAA;AAAA,MACA,cAAA,EAAe;AAAA,KAAA,EACX,KAAA,CAAA,EARL;AAAA,MAUC,QAAA,kBAAA,IAAA,CAACA,QAAA,CAAgB,OAAA,EAAhB,EAAwB,WAAU,2KAAA,EACjC,QAAA,EAAA;AAAA,wBAAA,GAAA;AAAA,UAACA,QAAA,CAAgB,KAAA;AAAA,UAAhB;AAAA,YACC,WAAA,EAAU,cAAA;AAAA,YACV,SAAA,EAAU,uJAAA;AAAA,YAEV,QAAA,kBAAA,GAAA;AAAA,cAACA,QAAA,CAAgB,SAAA;AAAA,cAAhB;AAAA,gBACC,WAAA,EAAU,cAAA;AAAA,gBACV,SAAA,EAAU;AAAA;AAAA;AACZ;AAAA,SACF;AAAA,QACC,KAAA,CAAM,KAAK,EAAE,MAAA,EAAQ,QAAQ,MAAA,EAAO,EAAG,CAAC,CAAA,EAAG,KAAA,qBAC1C,GAAA;AAAA,UAACA,QAAA,CAAgB,KAAA;AAAA,UAAhB;AAAA,YACC,WAAA,EAAU,cAAA;AAAA,YAEV,SAAA,EAAU;AAAA,WAAA;AAAA,UADL;AAAA,SAGR;AAAA,OAAA,EACH;AAAA,KAAA;AAAA,GACF;AAEJ","file":"chunk-REBDYEZX.js","sourcesContent":["\"use client\"\n\nimport { Slider as SliderPrimitive } from \"@base-ui/react/slider\"\nimport * as React from \"react\"\n\nimport { cn } from \"../lib/utils\"\n\nfunction Slider({\n className,\n defaultValue,\n value,\n min = 0,\n max = 100,\n ...props\n}: SliderPrimitive.Root.Props) {\n const _values = React.useMemo(\n () => (Array.isArray(value) ? value : Array.isArray(defaultValue) ? defaultValue : [min, max]),\n [value, defaultValue, min, max],\n )\n\n return (\n <SliderPrimitive.Root\n className={cn(\"data-vertical:h-full data-horizontal:w-full\", className)}\n data-slot=\"slider\"\n defaultValue={defaultValue}\n value={value}\n min={min}\n max={max}\n thumbAlignment=\"edge\"\n {...props}\n >\n <SliderPrimitive.Control className=\"relative flex w-full touch-none select-none items-center data-vertical:h-full data-vertical:min-h-40 data-vertical:w-auto data-vertical:flex-col data-disabled:opacity-50\">\n <SliderPrimitive.Track\n data-slot=\"slider-track\"\n className=\"relative grow select-none overflow-hidden rounded-full bg-muted data-horizontal:h-1.5 data-vertical:h-full data-horizontal:w-full data-vertical:w-1.5\"\n >\n <SliderPrimitive.Indicator\n data-slot=\"slider-range\"\n className=\"select-none bg-primary data-horizontal:h-full data-vertical:w-full\"\n />\n </SliderPrimitive.Track>\n {Array.from({ length: _values.length }, (_, index) => (\n <SliderPrimitive.Thumb\n data-slot=\"slider-thumb\"\n key={index}\n className=\"block size-4 shrink-0 select-none rounded-full border border-primary bg-white shadow-sm ring-ring/50 transition-[color,box-shadow] hover:ring-4 focus-visible:outline-hidden focus-visible:ring-4 disabled:pointer-events-none disabled:opacity-50\"\n />\n ))}\n </SliderPrimitive.Control>\n </SliderPrimitive.Root>\n )\n}\n\nexport { Slider }\n"]}
@@ -0,0 +1,87 @@
1
+ "use client";
2
+ import { cn } from './chunk-MHRCB42B.js';
3
+ import { __objRest, __spreadValues, __spreadProps } from './chunk-2NMEKWO5.js';
4
+ import { OTPInput, OTPInputContext } from 'input-otp';
5
+ import { MinusIcon } from 'lucide-react';
6
+ import * as React from 'react';
7
+ import { jsx, jsxs } from 'react/jsx-runtime';
8
+
9
+ function InputOTP(_a) {
10
+ var _b = _a, {
11
+ className,
12
+ containerClassName
13
+ } = _b, props = __objRest(_b, [
14
+ "className",
15
+ "containerClassName"
16
+ ]);
17
+ return /* @__PURE__ */ jsx(
18
+ OTPInput,
19
+ __spreadValues({
20
+ "data-slot": "input-otp",
21
+ containerClassName: cn(
22
+ "cn-input-otp flex items-center has-disabled:opacity-50",
23
+ containerClassName
24
+ ),
25
+ spellCheck: false,
26
+ className: cn("disabled:cursor-not-allowed", className)
27
+ }, props)
28
+ );
29
+ }
30
+ function InputOTPGroup(_a) {
31
+ var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
32
+ return /* @__PURE__ */ jsx(
33
+ "div",
34
+ __spreadValues({
35
+ "data-slot": "input-otp-group",
36
+ className: cn(
37
+ "flex items-center rounded-md has-aria-invalid:border-destructive has-aria-invalid:ring-3 has-aria-invalid:ring-destructive/20 dark:has-aria-invalid:ring-destructive/40",
38
+ className
39
+ )
40
+ }, props)
41
+ );
42
+ }
43
+ function InputOTPSlot(_a) {
44
+ var _b = _a, {
45
+ index,
46
+ className
47
+ } = _b, props = __objRest(_b, [
48
+ "index",
49
+ "className"
50
+ ]);
51
+ var _a2;
52
+ const inputOTPContext = React.useContext(OTPInputContext);
53
+ const { char, hasFakeCaret, isActive } = (_a2 = inputOTPContext == null ? void 0 : inputOTPContext.slots[index]) != null ? _a2 : {};
54
+ return /* @__PURE__ */ jsxs(
55
+ "div",
56
+ __spreadProps(__spreadValues({
57
+ "data-slot": "input-otp-slot",
58
+ "data-active": isActive,
59
+ className: cn(
60
+ "relative flex size-9 items-center justify-center border-input border-y border-r text-sm shadow-xs outline-none transition-all first:rounded-l-md first:border-l last:rounded-r-md aria-invalid:border-destructive data-[active=true]:z-10 data-[active=true]:border-ring data-[active=true]:ring-3 data-[active=true]:ring-ring/50 data-[active=true]:aria-invalid:border-destructive data-[active=true]:aria-invalid:ring-destructive/20 dark:bg-input/30 dark:data-[active=true]:aria-invalid:ring-destructive/40",
61
+ className
62
+ )
63
+ }, props), {
64
+ children: [
65
+ char,
66
+ hasFakeCaret && /* @__PURE__ */ jsx("div", { className: "pointer-events-none absolute inset-0 flex items-center justify-center", children: /* @__PURE__ */ jsx("div", { className: "h-4 w-px animate-caret-blink bg-foreground duration-1000" }) })
67
+ ]
68
+ })
69
+ );
70
+ }
71
+ function InputOTPSeparator(_a) {
72
+ var props = __objRest(_a, []);
73
+ return /* @__PURE__ */ jsx(
74
+ "div",
75
+ __spreadProps(__spreadValues({
76
+ "data-slot": "input-otp-separator",
77
+ className: "flex items-center [&_svg:not([class*='size-'])]:size-4",
78
+ role: "separator"
79
+ }, props), {
80
+ children: /* @__PURE__ */ jsx(MinusIcon, {})
81
+ })
82
+ );
83
+ }
84
+
85
+ export { InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot };
86
+ //# sourceMappingURL=chunk-RI7KG3TF.js.map
87
+ //# sourceMappingURL=chunk-RI7KG3TF.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/input-otp.tsx"],"names":["_a"],"mappings":";;;;;;;AAQA,SAAS,SAAS,EAAA,EAMf;AANe,EAAA,IAAA,EAAA,GAAA,EAAA,EAChB;AAAA,IAAA,SAAA;AAAA,IACA;AAAA,GAVF,GAQkB,EAAA,EAGb,KAAA,GAAA,SAAA,CAHa,EAAA,EAGb;AAAA,IAFH,WAAA;AAAA,IACA;AAAA,GAAA,CAAA;AAKA,EAAA,uBACE,GAAA;AAAA,IAAC,QAAA;AAAA,IAAA,cAAA,CAAA;AAAA,MACC,WAAA,EAAU,WAAA;AAAA,MACV,kBAAA,EAAoB,EAAA;AAAA,QAClB,wDAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,UAAA,EAAY,KAAA;AAAA,MACZ,SAAA,EAAW,EAAA,CAAG,6BAAA,EAA+B,SAAS;AAAA,KAAA,EAClD,KAAA;AAAA,GACN;AAEJ;AAEA,SAAS,cAAc,EAAA,EAAsD;AAAtD,EAAA,IAAA,EAAA,GAAA,EAAA,EAAE,EAAA,SAAA,EA7BzB,GA6BuB,EAAA,EAAgB,KAAA,GAAA,SAAA,CAAhB,IAAgB,CAAd,WAAA,CAAA,CAAA;AACvB,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA,cAAA,CAAA;AAAA,MACC,WAAA,EAAU,iBAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,yKAAA;AAAA,QACA;AAAA;AACF,KAAA,EACI,KAAA;AAAA,GACN;AAEJ;AAEA,SAAS,aAAa,EAAA,EAMnB;AANmB,EAAA,IAAA,EAAA,GAAA,EAAA,EACpB;AAAA,IAAA,KAAA;AAAA,IACA;AAAA,GA5CF,GA0CsB,EAAA,EAGjB,KAAA,GAAA,SAAA,CAHiB,EAAA,EAGjB;AAAA,IAFH,OAAA;AAAA,IACA;AAAA,GAAA,CAAA;AA5CF,EAAA,IAAAA,GAAAA;AAiDE,EAAA,MAAM,eAAA,GAAwB,iBAAW,eAAe,CAAA;AACxD,EAAA,MAAM,EAAE,IAAA,EAAM,YAAA,EAAc,QAAA,EAAS,GAAA,CAAIA,GAAAA,GAAA,eAAA,IAAA,IAAA,GAAA,MAAA,GAAA,eAAA,CAAiB,KAAA,CAAM,KAAA,CAAA,KAAvB,IAAA,GAAAA,GAAAA,GAAiC,EAAC;AAE3E,EAAA,uBACE,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA,aAAA,CAAA,cAAA,CAAA;AAAA,MACC,WAAA,EAAU,gBAAA;AAAA,MACV,aAAA,EAAa,QAAA;AAAA,MACb,SAAA,EAAW,EAAA;AAAA,QACT,qfAAA;AAAA,QACA;AAAA;AACF,KAAA,EACI,KAAA,CAAA,EAPL;AAAA,MASE,QAAA,EAAA;AAAA,QAAA,IAAA;AAAA,QACA,YAAA,wBACE,KAAA,EAAA,EAAI,SAAA,EAAU,yEACb,QAAA,kBAAA,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,0DAAA,EAA2D,CAAA,EAC5E;AAAA;AAAA,KAAA;AAAA,GAEJ;AAEJ;AAEA,SAAS,kBAAkB,EAAA,EAA2C;AAA3C,EAAA,IAAK,kBAAL,EAAA,EAAK,EAAA,CAAA;AAC9B,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA,aAAA,CAAA,cAAA,CAAA;AAAA,MACC,WAAA,EAAU,qBAAA;AAAA,MACV,SAAA,EAAU,wDAAA;AAAA,MACV,IAAA,EAAK;AAAA,KAAA,EACD,KAAA,CAAA,EAJL;AAAA,MAMC,8BAAC,SAAA,EAAA,EAAU;AAAA,KAAA;AAAA,GACb;AAEJ","file":"chunk-RI7KG3TF.js","sourcesContent":["\"use client\"\n\nimport { OTPInput, OTPInputContext } from \"input-otp\"\nimport { MinusIcon } from \"lucide-react\"\nimport * as React from \"react\"\n\nimport { cn } from \"../lib/utils\"\n\nfunction InputOTP({\n className,\n containerClassName,\n ...props\n}: React.ComponentProps<typeof OTPInput> & {\n containerClassName?: string\n}) {\n return (\n <OTPInput\n data-slot=\"input-otp\"\n containerClassName={cn(\n \"cn-input-otp flex items-center has-disabled:opacity-50\",\n containerClassName,\n )}\n spellCheck={false}\n className={cn(\"disabled:cursor-not-allowed\", className)}\n {...props}\n />\n )\n}\n\nfunction InputOTPGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"input-otp-group\"\n className={cn(\n \"flex items-center rounded-md has-aria-invalid:border-destructive has-aria-invalid:ring-3 has-aria-invalid:ring-destructive/20 dark:has-aria-invalid:ring-destructive/40\",\n className,\n )}\n {...props}\n />\n )\n}\n\nfunction InputOTPSlot({\n index,\n className,\n ...props\n}: React.ComponentProps<\"div\"> & {\n index: number\n}) {\n const inputOTPContext = React.useContext(OTPInputContext)\n const { char, hasFakeCaret, isActive } = inputOTPContext?.slots[index] ?? {}\n\n return (\n <div\n data-slot=\"input-otp-slot\"\n data-active={isActive}\n className={cn(\n \"relative flex size-9 items-center justify-center border-input border-y border-r text-sm shadow-xs outline-none transition-all first:rounded-l-md first:border-l last:rounded-r-md aria-invalid:border-destructive data-[active=true]:z-10 data-[active=true]:border-ring data-[active=true]:ring-3 data-[active=true]:ring-ring/50 data-[active=true]:aria-invalid:border-destructive data-[active=true]:aria-invalid:ring-destructive/20 dark:bg-input/30 dark:data-[active=true]:aria-invalid:ring-destructive/40\",\n className,\n )}\n {...props}\n >\n {char}\n {hasFakeCaret && (\n <div className=\"pointer-events-none absolute inset-0 flex items-center justify-center\">\n <div className=\"h-4 w-px animate-caret-blink bg-foreground duration-1000\" />\n </div>\n )}\n </div>\n )\n}\n\nfunction InputOTPSeparator({ ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"input-otp-separator\"\n className=\"flex items-center [&_svg:not([class*='size-'])]:size-4\"\n role=\"separator\"\n {...props}\n >\n <MinusIcon />\n </div>\n )\n}\n\nexport { InputOTP, InputOTPGroup, InputOTPSlot, InputOTPSeparator }\n"]}
@@ -27,5 +27,5 @@ function useAnimationTimer(intervalMs) {
27
27
  }
28
28
 
29
29
  export { useAnimationTimer };
30
- //# sourceMappingURL=chunk-RXV2XUDZ.js.map
31
- //# sourceMappingURL=chunk-RXV2XUDZ.js.map
30
+ //# sourceMappingURL=chunk-SLSJ6OOL.js.map
31
+ //# sourceMappingURL=chunk-SLSJ6OOL.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/hooks/use-animation-timer.ts"],"names":[],"mappings":";;;AAUO,SAAS,kBAAkB,UAAA,EAAoB;AACpD,EAAA,MAAM,GAAA,GAAM,OAAuB,IAAI,CAAA;AACvC,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAI,SAAS,KAAK,CAAA;AAChD,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAI,SAAS,CAAC,CAAA;AAElC,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,MAAM,KAAK,GAAA,CAAI,OAAA;AACf,IAAA,IAAI,CAAC,EAAA,EAAI;AAET,IAAA,MAAM,QAAA,GAAW,IAAI,oBAAA,CAAqB,CAAC,CAAC,KAAK,CAAA,KAAM,YAAA,CAAa,KAAA,CAAM,cAAc,CAAA,EAAG;AAAA,MACzF,SAAA,EAAW;AAAA,KACZ,CAAA;AACD,IAAA,QAAA,CAAS,QAAQ,EAAE,CAAA;AACnB,IAAA,OAAO,MAAM,SAAS,UAAA,EAAW;AAAA,EACnC,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,OAAA,GAAU,YAAY,MAAM;AAChC,IAAA,OAAA,CAAQ,CAAC,CAAA,KAAM,CAAA,GAAI,CAAC,CAAA;AAAA,EACtB,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,CAAC,SAAA,EAAW;AAChB,IAAA,MAAM,EAAA,GAAK,WAAA,CAAY,OAAA,EAAS,UAAU,CAAA;AAC1C,IAAA,OAAO,MAAM,cAAc,EAAE,CAAA;AAAA,EAC/B,CAAA,EAAG,CAAC,SAAA,EAAW,UAAA,EAAY,OAAO,CAAC,CAAA;AAEnC,EAAA,OAAO,CAAC,KAAK,IAAI,CAAA;AACnB","file":"chunk-RXV2XUDZ.js","sourcesContent":["\"use client\"\n\nimport { useCallback, useEffect, useRef, useState } from \"react\"\n\n/**\n * Combines an interval timer with IntersectionObserver visibility detection.\n * The timer only runs when the component is visible in the viewport.\n * Returns [ref, tick] where ref should be attached to the container element,\n * and tick is a counter that increments on each interval.\n */\nexport function useAnimationTimer(intervalMs: number) {\n const ref = useRef<HTMLDivElement>(null)\n const [isVisible, setIsVisible] = useState(false)\n const [tick, setTick] = useState(0)\n\n useEffect(() => {\n const el = ref.current\n if (!el) return\n\n const observer = new IntersectionObserver(([entry]) => setIsVisible(entry.isIntersecting), {\n threshold: 0.1,\n })\n observer.observe(el)\n return () => observer.disconnect()\n }, [])\n\n const advance = useCallback(() => {\n setTick((t) => t + 1)\n }, [])\n\n useEffect(() => {\n if (!isVisible) return\n const id = setInterval(advance, intervalMs)\n return () => clearInterval(id)\n }, [isVisible, intervalMs, advance])\n\n return [ref, tick] as const\n}\n"]}
1
+ {"version":3,"sources":["../src/hooks/use-animation-timer.ts"],"names":[],"mappings":";;;AAUO,SAAS,kBAAkB,UAAA,EAAoB;AACpD,EAAA,MAAM,GAAA,GAAM,OAAuB,IAAI,CAAA;AACvC,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAI,SAAS,KAAK,CAAA;AAChD,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAI,SAAS,CAAC,CAAA;AAElC,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,MAAM,KAAK,GAAA,CAAI,OAAA;AACf,IAAA,IAAI,CAAC,EAAA,EAAI;AAET,IAAA,MAAM,QAAA,GAAW,IAAI,oBAAA,CAAqB,CAAC,CAAC,KAAK,CAAA,KAAM,YAAA,CAAa,KAAA,CAAM,cAAc,CAAA,EAAG;AAAA,MACzF,SAAA,EAAW;AAAA,KACZ,CAAA;AACD,IAAA,QAAA,CAAS,QAAQ,EAAE,CAAA;AACnB,IAAA,OAAO,MAAM,SAAS,UAAA,EAAW;AAAA,EACnC,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,OAAA,GAAU,YAAY,MAAM;AAChC,IAAA,OAAA,CAAQ,CAAC,CAAA,KAAM,CAAA,GAAI,CAAC,CAAA;AAAA,EACtB,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,CAAC,SAAA,EAAW;AAChB,IAAA,MAAM,EAAA,GAAK,WAAA,CAAY,OAAA,EAAS,UAAU,CAAA;AAC1C,IAAA,OAAO,MAAM,cAAc,EAAE,CAAA;AAAA,EAC/B,CAAA,EAAG,CAAC,SAAA,EAAW,UAAA,EAAY,OAAO,CAAC,CAAA;AAEnC,EAAA,OAAO,CAAC,KAAK,IAAI,CAAA;AACnB","file":"chunk-SLSJ6OOL.js","sourcesContent":["\"use client\"\n\nimport { useCallback, useEffect, useRef, useState } from \"react\"\n\n/**\n * Combines an interval timer with IntersectionObserver visibility detection.\n * The timer only runs when the component is visible in the viewport.\n * Returns [ref, tick] where ref should be attached to the container element,\n * and tick is a counter that increments on each interval.\n */\nexport function useAnimationTimer(intervalMs: number) {\n const ref = useRef<HTMLDivElement>(null)\n const [isVisible, setIsVisible] = useState(false)\n const [tick, setTick] = useState(0)\n\n useEffect(() => {\n const el = ref.current\n if (!el) return\n\n const observer = new IntersectionObserver(([entry]) => setIsVisible(entry.isIntersecting), {\n threshold: 0.1,\n })\n observer.observe(el)\n return () => observer.disconnect()\n }, [])\n\n const advance = useCallback(() => {\n setTick((t) => t + 1)\n }, [])\n\n useEffect(() => {\n if (!isVisible) return\n const id = setInterval(advance, intervalMs)\n return () => clearInterval(id)\n }, [isVisible, intervalMs, advance])\n\n return [ref, tick] as const\n}\n"]}
@@ -0,0 +1,122 @@
1
+ "use client";
2
+ import { cn } from './chunk-MHRCB42B.js';
3
+ import { __objRest, __spreadValues } from './chunk-2NMEKWO5.js';
4
+ import { useRef, useEffect } from 'react';
5
+ import { jsx } from 'react/jsx-runtime';
6
+
7
+ var CHARS = " .:-=+*#%@";
8
+ var IS_MOBILE = typeof window !== "undefined" && window.innerWidth < 768;
9
+ var CELL = IS_MOBILE ? 20 : 14;
10
+ var FONT_SIZE = IS_MOBILE ? 16 : 12;
11
+ function isDark() {
12
+ return document.documentElement.classList.contains("dark");
13
+ }
14
+ function AsciiShader(_a) {
15
+ var _b = _a, { paused = false, className } = _b, props = __objRest(_b, ["paused", "className"]);
16
+ const canvasRef = useRef(null);
17
+ const rafRef = useRef(0);
18
+ const pausedRef = useRef(paused);
19
+ const frameCount = useRef(0);
20
+ useEffect(() => {
21
+ pausedRef.current = paused;
22
+ }, [paused]);
23
+ useEffect(() => {
24
+ const canvas = canvasRef.current;
25
+ if (!canvas) return;
26
+ const ctx = canvas.getContext("2d");
27
+ if (!ctx) return;
28
+ const mq = window.matchMedia("(prefers-reduced-motion: reduce)");
29
+ if (mq.matches) return;
30
+ let baseOpacity = isDark() ? 0.15 : 0.08;
31
+ let fgBase = isDark() ? "255,255,255" : "0,0,0";
32
+ const updateColors = () => {
33
+ baseOpacity = isDark() ? 0.15 : 0.08;
34
+ fgBase = isDark() ? "255,255,255" : "0,0,0";
35
+ };
36
+ const darkMq = window.matchMedia("(prefers-color-scheme: dark)");
37
+ darkMq.addEventListener("change", updateColors);
38
+ const mutObs = new MutationObserver(updateColors);
39
+ mutObs.observe(document.documentElement, {
40
+ attributes: true,
41
+ attributeFilter: ["class"]
42
+ });
43
+ const startTime = performance.now();
44
+ let cols = 0;
45
+ let rows = 0;
46
+ const resize = () => {
47
+ const dpr = Math.min(window.devicePixelRatio, 2);
48
+ canvas.width = canvas.clientWidth * dpr;
49
+ canvas.height = canvas.clientHeight * dpr;
50
+ ctx.scale(dpr, dpr);
51
+ cols = Math.ceil(canvas.clientWidth / CELL);
52
+ rows = Math.ceil(canvas.clientHeight / CELL);
53
+ };
54
+ resize();
55
+ window.addEventListener("resize", resize);
56
+ const render = (now) => {
57
+ if (pausedRef.current) {
58
+ rafRef.current = requestAnimationFrame(render);
59
+ return;
60
+ }
61
+ frameCount.current++;
62
+ if (frameCount.current % 3 !== 0) {
63
+ rafRef.current = requestAnimationFrame(render);
64
+ return;
65
+ }
66
+ const w = canvas.clientWidth;
67
+ const h = canvas.clientHeight;
68
+ if (w === 0 || h === 0) {
69
+ rafRef.current = requestAnimationFrame(render);
70
+ return;
71
+ }
72
+ ctx.clearRect(0, 0, w, h);
73
+ ctx.font = `${FONT_SIZE}px var(--font-mono), monospace`;
74
+ ctx.textAlign = "center";
75
+ ctx.textBaseline = "middle";
76
+ const t = (now - startTime) / 1e3 * 0.8;
77
+ const t3 = t / 3;
78
+ const aspect = w / h;
79
+ for (let row = 0; row < rows; row++) {
80
+ for (let col = 0; col < cols; col++) {
81
+ const u = col / cols * aspect * 4 + t3 * 0.2;
82
+ const v = row / rows * 4 + t3 * 0.15;
83
+ const k = Math.cos(v * 1.3 + Math.sin(t3 * 0.8 + u * 0.7)) * 2;
84
+ const w2 = Math.sin(u * 1.1 + Math.cos(t3 * 0.6 - v * 0.9)) * 2;
85
+ const d = Math.sqrt(u * u + v * v) * 0.3;
86
+ const field = Math.cos(d + k) * Math.sin(d + w2) * Math.cos(k * w2 * 0.3 + t3);
87
+ const val = field * 0.5 + 0.5;
88
+ const charIdx = Math.floor(val * (CHARS.length - 1));
89
+ const char = CHARS[Math.min(charIdx, CHARS.length - 1)];
90
+ if (char !== " ") {
91
+ const opacity = baseOpacity * (0.3 + 0.7 * (charIdx / (CHARS.length - 1)));
92
+ ctx.fillStyle = `rgba(${fgBase},${opacity})`;
93
+ const x = col * CELL + CELL / 2;
94
+ const y = row * CELL + CELL / 2;
95
+ ctx.fillText(char, x, y);
96
+ }
97
+ }
98
+ }
99
+ rafRef.current = requestAnimationFrame(render);
100
+ };
101
+ rafRef.current = requestAnimationFrame(render);
102
+ return () => {
103
+ cancelAnimationFrame(rafRef.current);
104
+ window.removeEventListener("resize", resize);
105
+ darkMq.removeEventListener("change", updateColors);
106
+ mutObs.disconnect();
107
+ };
108
+ }, []);
109
+ return /* @__PURE__ */ jsx(
110
+ "canvas",
111
+ __spreadValues({
112
+ ref: canvasRef,
113
+ "aria-hidden": "true",
114
+ "data-slot": "ascii-shader",
115
+ className: cn("absolute inset-0 h-full w-full", className)
116
+ }, props)
117
+ );
118
+ }
119
+
120
+ export { AsciiShader };
121
+ //# sourceMappingURL=chunk-ST22RZYN.js.map
122
+ //# sourceMappingURL=chunk-ST22RZYN.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/ascii-shader.tsx"],"names":[],"mappings":"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","file":"chunk-ST22RZYN.js","sourcesContent":["\"use client\"\n\nimport { useEffect, useRef } from \"react\"\n\nimport { cn } from \"../lib/utils\"\n\nconst CHARS = \" .:-=+*#%@\"\nconst IS_MOBILE = typeof window !== \"undefined\" && window.innerWidth < 768\nconst CELL = IS_MOBILE ? 20 : 14\nconst FONT_SIZE = IS_MOBILE ? 16 : 12\n\ntype AsciiShaderProps = React.ComponentProps<\"canvas\"> & {\n paused?: boolean\n}\n\nfunction isDark() {\n return document.documentElement.classList.contains(\"dark\")\n}\n\nfunction AsciiShader({ paused = false, className, ...props }: AsciiShaderProps) {\n const canvasRef = useRef<HTMLCanvasElement>(null)\n const rafRef = useRef(0)\n const pausedRef = useRef(paused)\n const frameCount = useRef(0)\n\n useEffect(() => {\n pausedRef.current = paused\n }, [paused])\n\n useEffect(() => {\n const canvas = canvasRef.current\n if (!canvas) return\n\n const ctx = canvas.getContext(\"2d\")\n if (!ctx) return\n\n const mq = window.matchMedia(\"(prefers-reduced-motion: reduce)\")\n if (mq.matches) return\n\n let baseOpacity = isDark() ? 0.15 : 0.08\n let fgBase = isDark() ? \"255,255,255\" : \"0,0,0\"\n\n const updateColors = () => {\n baseOpacity = isDark() ? 0.15 : 0.08\n fgBase = isDark() ? \"255,255,255\" : \"0,0,0\"\n }\n\n const darkMq = window.matchMedia(\"(prefers-color-scheme: dark)\")\n darkMq.addEventListener(\"change\", updateColors)\n const mutObs = new MutationObserver(updateColors)\n mutObs.observe(document.documentElement, {\n attributes: true,\n attributeFilter: [\"class\"],\n })\n\n const startTime = performance.now()\n let cols = 0\n let rows = 0\n\n const resize = () => {\n const dpr = Math.min(window.devicePixelRatio, 2)\n canvas.width = canvas.clientWidth * dpr\n canvas.height = canvas.clientHeight * dpr\n ctx.scale(dpr, dpr)\n cols = Math.ceil(canvas.clientWidth / CELL)\n rows = Math.ceil(canvas.clientHeight / CELL)\n }\n\n resize()\n window.addEventListener(\"resize\", resize)\n\n const render = (now: number) => {\n if (pausedRef.current) {\n rafRef.current = requestAnimationFrame(render)\n return\n }\n\n frameCount.current++\n if (frameCount.current % 3 !== 0) {\n rafRef.current = requestAnimationFrame(render)\n return\n }\n\n const w = canvas.clientWidth\n const h = canvas.clientHeight\n if (w === 0 || h === 0) {\n rafRef.current = requestAnimationFrame(render)\n return\n }\n\n ctx.clearRect(0, 0, w, h)\n ctx.font = `${FONT_SIZE}px var(--font-mono), monospace`\n ctx.textAlign = \"center\"\n ctx.textBaseline = \"middle\"\n\n const t = ((now - startTime) / 1000) * 0.8\n const t3 = t / 3\n const aspect = w / h\n\n for (let row = 0; row < rows; row++) {\n for (let col = 0; col < cols; col++) {\n const u = (col / cols) * aspect * 4 + t3 * 0.2\n const v = (row / rows) * 4 + t3 * 0.15\n\n const k = Math.cos(v * 1.3 + Math.sin(t3 * 0.8 + u * 0.7)) * 2\n const w2 = Math.sin(u * 1.1 + Math.cos(t3 * 0.6 - v * 0.9)) * 2\n const d = Math.sqrt(u * u + v * v) * 0.3\n const field = Math.cos(d + k) * Math.sin(d + w2) * Math.cos(k * w2 * 0.3 + t3)\n\n const val = field * 0.5 + 0.5\n const charIdx = Math.floor(val * (CHARS.length - 1))\n const char = CHARS[Math.min(charIdx, CHARS.length - 1)]\n\n if (char !== \" \") {\n const opacity = baseOpacity * (0.3 + 0.7 * (charIdx / (CHARS.length - 1)))\n ctx.fillStyle = `rgba(${fgBase},${opacity})`\n const x = col * CELL + CELL / 2\n const y = row * CELL + CELL / 2\n ctx.fillText(char, x, y)\n }\n }\n }\n\n rafRef.current = requestAnimationFrame(render)\n }\n\n rafRef.current = requestAnimationFrame(render)\n\n return () => {\n cancelAnimationFrame(rafRef.current)\n window.removeEventListener(\"resize\", resize)\n darkMq.removeEventListener(\"change\", updateColors)\n mutObs.disconnect()\n }\n }, [])\n\n return (\n <canvas\n ref={canvasRef}\n aria-hidden=\"true\"\n data-slot=\"ascii-shader\"\n className={cn(\"absolute inset-0 h-full w-full\", className)}\n {...props}\n />\n )\n}\n\nexport { AsciiShader }\nexport type { AsciiShaderProps }\n"]}
@@ -0,0 +1,3 @@
1
+ export { useField, useForm, useStore } from '@tanstack/react-form';
2
+ //# sourceMappingURL=chunk-SZFIXV43.js.map
3
+ //# sourceMappingURL=chunk-SZFIXV43.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"chunk-SZFIXV43.js","sourcesContent":[]}
@@ -0,0 +1,205 @@
1
+ "use client";
2
+ import { cn } from './chunk-MHRCB42B.js';
3
+ import { useRef, useEffect } from 'react';
4
+ import { jsx } from 'react/jsx-runtime';
5
+
6
+ var BAYER = [
7
+ 0 / 16,
8
+ 8 / 16,
9
+ 2 / 16,
10
+ 10 / 16,
11
+ 12 / 16,
12
+ 4 / 16,
13
+ 14 / 16,
14
+ 6 / 16,
15
+ 3 / 16,
16
+ 11 / 16,
17
+ 1 / 16,
18
+ 9 / 16,
19
+ 15 / 16,
20
+ 7 / 16,
21
+ 13 / 16,
22
+ 5 / 16
23
+ ];
24
+ var BAYER_SCALE = 4;
25
+ var DOWNSAMPLE = 4;
26
+ var DEFAULT_COLORS = {
27
+ light: { fg: [220, 223, 227], bg: [250, 250, 250] },
28
+ dark: { fg: [26, 35, 52], bg: [58, 74, 92] }
29
+ };
30
+ function isDark() {
31
+ return document.documentElement.classList.contains("dark");
32
+ }
33
+ function BgShader({ className, colors = DEFAULT_COLORS }) {
34
+ const colorsRef = useRef(colors);
35
+ colorsRef.current = colors;
36
+ const canvasRef = useRef(null);
37
+ const rafRef = useRef(0);
38
+ const visibleRef = useRef(false);
39
+ const frameCount = useRef(0);
40
+ useEffect(() => {
41
+ const canvas = canvasRef.current;
42
+ if (!canvas) return;
43
+ const mq = window.matchMedia("(prefers-reduced-motion: reduce)");
44
+ let reducedMotion = mq.matches;
45
+ const onMotionChange = (e) => {
46
+ reducedMotion = e.matches;
47
+ };
48
+ mq.addEventListener("change", onMotionChange);
49
+ const ctx = canvas.getContext("2d");
50
+ if (!ctx) return;
51
+ const resolve = () => {
52
+ const c = colorsRef.current;
53
+ return isDark() ? c.dark : c.light;
54
+ };
55
+ let { fg, bg } = resolve();
56
+ const updateColors = () => {
57
+ const resolved = resolve();
58
+ fg = resolved.fg;
59
+ bg = resolved.bg;
60
+ };
61
+ const darkMq = window.matchMedia("(prefers-color-scheme: dark)");
62
+ darkMq.addEventListener("change", updateColors);
63
+ const mutObs = new MutationObserver(updateColors);
64
+ mutObs.observe(document.documentElement, {
65
+ attributes: true,
66
+ attributeFilter: ["class"]
67
+ });
68
+ const ioObs = new IntersectionObserver(
69
+ ([entry]) => {
70
+ visibleRef.current = entry.isIntersecting;
71
+ if (entry.isIntersecting) {
72
+ rafRef.current = requestAnimationFrame(render);
73
+ }
74
+ },
75
+ { rootMargin: "100px" }
76
+ );
77
+ ioObs.observe(canvas);
78
+ const startTime = performance.now();
79
+ let cachedImageData = null;
80
+ let cachedW = 0;
81
+ let cachedH = 0;
82
+ const render = (now) => {
83
+ if (!visibleRef.current || reducedMotion) return;
84
+ frameCount.current++;
85
+ if (frameCount.current % 2 !== 0) {
86
+ rafRef.current = requestAnimationFrame(render);
87
+ return;
88
+ }
89
+ const w = canvas.clientWidth;
90
+ const h = canvas.clientHeight;
91
+ if (w === 0 || h === 0) {
92
+ rafRef.current = requestAnimationFrame(render);
93
+ return;
94
+ }
95
+ const cw = Math.ceil(w / DOWNSAMPLE);
96
+ const ch = Math.ceil(h / DOWNSAMPLE);
97
+ if (canvas.width !== cw || canvas.height !== ch) {
98
+ canvas.width = cw;
99
+ canvas.height = ch;
100
+ }
101
+ if (!cachedImageData || cachedW !== cw || cachedH !== ch) {
102
+ cachedImageData = ctx.createImageData(cw, ch);
103
+ cachedW = cw;
104
+ cachedH = ch;
105
+ }
106
+ const data = cachedImageData.data;
107
+ const time = (now - startTime) / 1e3 * 0.5;
108
+ const t3 = time / 3;
109
+ const aspect = w / h;
110
+ for (let py = 0; py < ch; py++) {
111
+ for (let px = 0; px < cw; px++) {
112
+ const u = px / cw * aspect * 3.5 + t3 * 0.3;
113
+ const v = py / ch * 3.5 + t3 * 0.3;
114
+ const k = 0.1 + Math.cos(v + Math.sin(0.148 - t3)) + 2.4 * t3;
115
+ const w2 = 0.9 + Math.sin(u + Math.cos(0.628 + t3)) - 0.7 * t3;
116
+ const d = Math.sqrt(u * u + v * v);
117
+ const s = 7 * Math.cos(d + w2) * Math.sin(k + w2);
118
+ const r = 0.5 + 0.5 * Math.cos(s + 0.2);
119
+ const g = 0.5 + 0.5 * Math.cos(s + 0.5);
120
+ const b = 0.5 + 0.5 * Math.cos(s + 0.9);
121
+ const gray = 0.299 * r + 0.587 * g + 0.114 * b;
122
+ const ox = px * DOWNSAMPLE;
123
+ const oy = py * DOWNSAMPLE;
124
+ const bx = Math.floor(ox / BAYER_SCALE) & 3;
125
+ const by = Math.floor(oy / BAYER_SCALE) & 3;
126
+ const threshold = BAYER[bx + by * 4];
127
+ const idx = (py * cw + px) * 4;
128
+ const c = gray > threshold ? fg : bg;
129
+ data[idx] = c[0];
130
+ data[idx + 1] = c[1];
131
+ data[idx + 2] = c[2];
132
+ data[idx + 3] = 255;
133
+ }
134
+ }
135
+ ctx.putImageData(cachedImageData, 0, 0);
136
+ rafRef.current = requestAnimationFrame(render);
137
+ };
138
+ if (reducedMotion) {
139
+ rafRef.current = requestAnimationFrame(() => {
140
+ visibleRef.current = true;
141
+ frameCount.current = 1;
142
+ const w = canvas.clientWidth;
143
+ const h = canvas.clientHeight;
144
+ if (w === 0 || h === 0) return;
145
+ const cw = Math.ceil(w / DOWNSAMPLE);
146
+ const ch = Math.ceil(h / DOWNSAMPLE);
147
+ canvas.width = cw;
148
+ canvas.height = ch;
149
+ const imageData = ctx.createImageData(cw, ch);
150
+ const data = imageData.data;
151
+ const aspect = w / h;
152
+ for (let py = 0; py < ch; py++) {
153
+ for (let px = 0; px < cw; px++) {
154
+ const u = px / cw * aspect * 3.5;
155
+ const v = py / ch * 3.5;
156
+ const k = 0.1 + Math.cos(v + Math.sin(0.148));
157
+ const w2 = 0.9 + Math.sin(u + Math.cos(0.628));
158
+ const d = Math.sqrt(u * u + v * v);
159
+ const s = 7 * Math.cos(d + w2) * Math.sin(k + w2);
160
+ const gray = 0.299 * (0.5 + 0.5 * Math.cos(s + 0.2)) + 0.587 * (0.5 + 0.5 * Math.cos(s + 0.5)) + 0.114 * (0.5 + 0.5 * Math.cos(s + 0.9));
161
+ const ox = px * DOWNSAMPLE;
162
+ const oy = py * DOWNSAMPLE;
163
+ const bx = Math.floor(ox / BAYER_SCALE) & 3;
164
+ const by = Math.floor(oy / BAYER_SCALE) & 3;
165
+ const threshold = BAYER[bx + by * 4];
166
+ const idx = (py * cw + px) * 4;
167
+ const c = gray > threshold ? fg : bg;
168
+ data[idx] = c[0];
169
+ data[idx + 1] = c[1];
170
+ data[idx + 2] = c[2];
171
+ data[idx + 3] = 255;
172
+ }
173
+ }
174
+ ctx.putImageData(imageData, 0, 0);
175
+ });
176
+ }
177
+ return () => {
178
+ cancelAnimationFrame(rafRef.current);
179
+ ioObs.disconnect();
180
+ mutObs.disconnect();
181
+ darkMq.removeEventListener("change", updateColors);
182
+ mq.removeEventListener("change", onMotionChange);
183
+ };
184
+ }, []);
185
+ return /* @__PURE__ */ jsx(
186
+ "div",
187
+ {
188
+ "aria-hidden": "true",
189
+ className: cn("absolute inset-0 opacity-50", className),
190
+ "data-slot": "bg-shader",
191
+ children: /* @__PURE__ */ jsx(
192
+ "canvas",
193
+ {
194
+ ref: canvasRef,
195
+ className: "block h-full w-full",
196
+ style: { imageRendering: "pixelated" }
197
+ }
198
+ )
199
+ }
200
+ );
201
+ }
202
+
203
+ export { BgShader };
204
+ //# sourceMappingURL=chunk-TJVE6LDU.js.map
205
+ //# sourceMappingURL=chunk-TJVE6LDU.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/bg-shader.tsx"],"names":[],"mappings":"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","file":"chunk-TJVE6LDU.js","sourcesContent":["\"use client\"\n\nimport { useEffect, useRef } from \"react\"\n\nimport { cn } from \"../lib/utils\"\n\n// 4×4 Bayer dithering matrix (normalised to 0–1)\nconst BAYER = [\n 0 / 16,\n 8 / 16,\n 2 / 16,\n 10 / 16,\n 12 / 16,\n 4 / 16,\n 14 / 16,\n 6 / 16,\n 3 / 16,\n 11 / 16,\n 1 / 16,\n 9 / 16,\n 15 / 16,\n 7 / 16,\n 13 / 16,\n 5 / 16,\n]\n\nconst BAYER_SCALE = 4\nconst DOWNSAMPLE = 4\n\ntype RGB = [number, number, number]\n\ntype ThemeColors = {\n fg: RGB\n bg: RGB\n}\n\nconst DEFAULT_COLORS = {\n light: { fg: [0xdc, 0xdf, 0xe3] as RGB, bg: [0xfa, 0xfa, 0xfa] as RGB },\n dark: { fg: [0x1a, 0x23, 0x34] as RGB, bg: [0x3a, 0x4a, 0x5c] as RGB },\n}\n\nfunction isDark() {\n return document.documentElement.classList.contains(\"dark\")\n}\n\ninterface BgShaderProps {\n className?: string\n /** Override foreground/background colors for light and dark modes. Accepts RGB tuples. */\n colors?: { light: ThemeColors; dark: ThemeColors }\n}\n\nfunction BgShader({ className, colors = DEFAULT_COLORS }: BgShaderProps) {\n const colorsRef = useRef(colors)\n colorsRef.current = colors\n\n const canvasRef = useRef<HTMLCanvasElement>(null)\n const rafRef = useRef<number>(0)\n const visibleRef = useRef(false)\n const frameCount = useRef(0)\n\n useEffect(() => {\n const canvas = canvasRef.current\n if (!canvas) return\n\n const mq = window.matchMedia(\"(prefers-reduced-motion: reduce)\")\n let reducedMotion = mq.matches\n const onMotionChange = (e: MediaQueryListEvent) => {\n reducedMotion = e.matches\n }\n mq.addEventListener(\"change\", onMotionChange)\n\n const ctx = canvas.getContext(\"2d\")\n if (!ctx) return\n\n const resolve = () => {\n const c = colorsRef.current\n return isDark() ? c.dark : c.light\n }\n\n let { fg, bg } = resolve()\n\n const updateColors = () => {\n const resolved = resolve()\n fg = resolved.fg\n bg = resolved.bg\n }\n\n const darkMq = window.matchMedia(\"(prefers-color-scheme: dark)\")\n darkMq.addEventListener(\"change\", updateColors)\n\n const mutObs = new MutationObserver(updateColors)\n mutObs.observe(document.documentElement, {\n attributes: true,\n attributeFilter: [\"class\"],\n })\n\n const ioObs = new IntersectionObserver(\n ([entry]) => {\n visibleRef.current = entry.isIntersecting\n if (entry.isIntersecting) {\n rafRef.current = requestAnimationFrame(render)\n }\n },\n { rootMargin: \"100px\" },\n )\n ioObs.observe(canvas)\n\n const startTime = performance.now()\n let cachedImageData: ImageData | null = null\n let cachedW = 0\n let cachedH = 0\n\n const render = (now: number) => {\n if (!visibleRef.current || reducedMotion) return\n\n frameCount.current++\n if (frameCount.current % 2 !== 0) {\n rafRef.current = requestAnimationFrame(render)\n return\n }\n\n const w = canvas.clientWidth\n const h = canvas.clientHeight\n if (w === 0 || h === 0) {\n rafRef.current = requestAnimationFrame(render)\n return\n }\n\n const cw = Math.ceil(w / DOWNSAMPLE)\n const ch = Math.ceil(h / DOWNSAMPLE)\n\n if (canvas.width !== cw || canvas.height !== ch) {\n canvas.width = cw\n canvas.height = ch\n }\n\n if (!cachedImageData || cachedW !== cw || cachedH !== ch) {\n cachedImageData = ctx.createImageData(cw, ch)\n cachedW = cw\n cachedH = ch\n }\n\n const data = cachedImageData.data\n const time = ((now - startTime) / 1000) * 0.5\n const t3 = time / 3\n const aspect = w / h\n\n for (let py = 0; py < ch; py++) {\n for (let px = 0; px < cw; px++) {\n const u = (px / cw) * aspect * 3.5 + t3 * 0.3\n const v = (py / ch) * 3.5 + t3 * 0.3\n\n const k = 0.1 + Math.cos(v + Math.sin(0.148 - t3)) + 2.4 * t3\n const w2 = 0.9 + Math.sin(u + Math.cos(0.628 + t3)) - 0.7 * t3\n const d = Math.sqrt(u * u + v * v)\n const s = 7.0 * Math.cos(d + w2) * Math.sin(k + w2)\n\n const r = 0.5 + 0.5 * Math.cos(s + 0.2)\n const g = 0.5 + 0.5 * Math.cos(s + 0.5)\n const b = 0.5 + 0.5 * Math.cos(s + 0.9)\n\n const gray = 0.299 * r + 0.587 * g + 0.114 * b\n\n const ox = px * DOWNSAMPLE\n const oy = py * DOWNSAMPLE\n const bx = Math.floor(ox / BAYER_SCALE) & 3\n const by = Math.floor(oy / BAYER_SCALE) & 3\n const threshold = BAYER[bx + by * 4]\n\n const idx = (py * cw + px) * 4\n const c = gray > threshold ? fg : bg\n data[idx] = c[0]\n data[idx + 1] = c[1]\n data[idx + 2] = c[2]\n data[idx + 3] = 255\n }\n }\n\n ctx.putImageData(cachedImageData, 0, 0)\n rafRef.current = requestAnimationFrame(render)\n }\n\n if (reducedMotion) {\n rafRef.current = requestAnimationFrame(() => {\n visibleRef.current = true\n frameCount.current = 1\n const w = canvas.clientWidth\n const h = canvas.clientHeight\n if (w === 0 || h === 0) return\n const cw = Math.ceil(w / DOWNSAMPLE)\n const ch = Math.ceil(h / DOWNSAMPLE)\n canvas.width = cw\n canvas.height = ch\n const imageData = ctx.createImageData(cw, ch)\n const data = imageData.data\n const aspect = w / h\n for (let py = 0; py < ch; py++) {\n for (let px = 0; px < cw; px++) {\n const u = (px / cw) * aspect * 3.5\n const v = (py / ch) * 3.5\n const k = 0.1 + Math.cos(v + Math.sin(0.148))\n const w2 = 0.9 + Math.sin(u + Math.cos(0.628))\n const d = Math.sqrt(u * u + v * v)\n const s = 7.0 * Math.cos(d + w2) * Math.sin(k + w2)\n const gray =\n 0.299 * (0.5 + 0.5 * Math.cos(s + 0.2)) +\n 0.587 * (0.5 + 0.5 * Math.cos(s + 0.5)) +\n 0.114 * (0.5 + 0.5 * Math.cos(s + 0.9))\n const ox = px * DOWNSAMPLE\n const oy = py * DOWNSAMPLE\n const bx = Math.floor(ox / BAYER_SCALE) & 3\n const by = Math.floor(oy / BAYER_SCALE) & 3\n const threshold = BAYER[bx + by * 4]\n const idx = (py * cw + px) * 4\n const c = gray > threshold ? fg : bg\n data[idx] = c[0]\n data[idx + 1] = c[1]\n data[idx + 2] = c[2]\n data[idx + 3] = 255\n }\n }\n ctx.putImageData(imageData, 0, 0)\n })\n }\n\n return () => {\n cancelAnimationFrame(rafRef.current)\n ioObs.disconnect()\n mutObs.disconnect()\n darkMq.removeEventListener(\"change\", updateColors)\n mq.removeEventListener(\"change\", onMotionChange)\n }\n }, [])\n\n return (\n <div\n aria-hidden=\"true\"\n className={cn(\"absolute inset-0 opacity-50\", className)}\n data-slot=\"bg-shader\"\n >\n <canvas\n ref={canvasRef}\n className=\"block h-full w-full\"\n style={{ imageRendering: \"pixelated\" }}\n />\n </div>\n )\n}\n\nexport { BgShader }\nexport type { BgShaderProps, ThemeColors, RGB }\n"]}