@cogentic-co/ds 0.6.1 → 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 -1503
  623. package/dist/index.js +125 -9507
  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
@@ -1,5 +1,6 @@
1
1
  "use client";
2
- import { cn } from '../chunk-GZNLQE3I.js';
2
+ import { cn } from '../chunk-MHRCB42B.js';
3
+ import '../chunk-2NMEKWO5.js';
3
4
  import { LazyMotion, domAnimation, m } from 'motion/react';
4
5
  import { useState, useRef, useCallback, useEffect } from 'react';
5
6
  import { jsx, jsxs } from 'react/jsx-runtime';
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/animations/animation-rest-api.tsx"],"names":[],"mappings":"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","file":"animation-rest-api.js","sourcesContent":["\"use client\"\n\nimport { domAnimation, LazyMotion, m } from \"motion/react\"\nimport { useCallback, useEffect, useRef, useState } from \"react\"\n\nimport { cn } from \"../lib/utils\"\n\ntype CodeLine = {\n text: string\n colour?: string\n indent?: number\n}\n\nconst REQUEST: CodeLine[] = [\n { text: \"POST /v1/transfers/screen\", colour: \"text-emerald-400\" },\n { text: \"Authorization: Bearer sk_live_\\u2022\\u2022\\u2022\", colour: \"text-gray-500\" },\n { text: \"Content-Type: application/json\", colour: \"text-gray-500\" },\n { text: \"\" },\n { text: \"{\", colour: \"text-gray-300\" },\n { text: '\"transfer_id\": \"TXN-0847\",', colour: \"text-[#00D4FF]\", indent: 1 },\n { text: '\"originator\": {', colour: \"text-gray-300\", indent: 1 },\n { text: '\"vasp_id\": \"vasp_au_001\",', colour: \"text-amber-400\", indent: 2 },\n { text: '\"jurisdiction\": \"AU\"', colour: \"text-amber-400\", indent: 2 },\n { text: \"},\", colour: \"text-gray-300\", indent: 1 },\n { text: '\"beneficiary\": {', colour: \"text-gray-300\", indent: 1 },\n { text: '\"vasp_id\": \"vasp_sg_042\",', colour: \"text-amber-400\", indent: 2 },\n { text: '\"jurisdiction\": \"SG\"', colour: \"text-amber-400\", indent: 2 },\n { text: \"},\", colour: \"text-gray-300\", indent: 1 },\n { text: '\"amount\": \"45000.00\",', colour: \"text-violet-400\", indent: 1 },\n { text: '\"currency\": \"USD\"', colour: \"text-violet-400\", indent: 1 },\n { text: \"}\", colour: \"text-gray-300\" },\n]\n\nconst RESPONSE: CodeLine[] = [\n { text: \"200 OK\", colour: \"text-emerald-400\" },\n { text: \"\" },\n { text: \"{\", colour: \"text-gray-300\" },\n { text: '\"status\": \"compliant\",', colour: \"text-emerald-400\", indent: 1 },\n { text: '\"risk_score\": 18,', colour: \"text-[#00D4FF]\", indent: 1 },\n { text: '\"travel_rule\": \"verified\",', colour: \"text-emerald-400\", indent: 1 },\n { text: '\"jurisdiction_pair\": \"AU→SG\",', colour: \"text-amber-400\", indent: 1 },\n { text: '\"report_ref\": \"CR-2024-0847\"', colour: \"text-violet-400\", indent: 1 },\n { text: \"}\", colour: \"text-gray-300\" },\n]\n\nexport default function AnimationRestApi({ className }: { className?: string }) {\n const [phase, setPhase] = useState<\"request\" | \"response\">(\"request\")\n const [visibleLines, setVisibleLines] = useState(0)\n const scrollRef = useRef<HTMLDivElement>(null)\n const lines = phase === \"request\" ? REQUEST : RESPONSE\n\n const reset = useCallback(() => {\n setPhase(\"request\")\n setVisibleLines(0)\n }, [])\n\n useEffect(() => {\n if (visibleLines < lines.length) {\n const id = setTimeout(() => setVisibleLines((v) => v + 1), 80)\n return () => clearTimeout(id)\n } else if (phase === \"request\") {\n const id = setTimeout(() => {\n setPhase(\"response\")\n setVisibleLines(0)\n }, 1200)\n return () => clearTimeout(id)\n } else {\n const id = setTimeout(reset, 3000)\n return () => clearTimeout(id)\n }\n }, [visibleLines, lines.length, phase, reset])\n\n useEffect(() => {\n const el = scrollRef.current\n if (!el) return\n requestAnimationFrame(() => {\n el.scrollTop = el.scrollHeight\n })\n }, [])\n\n return (\n <LazyMotion features={domAnimation}>\n <div className={cn(\"flex flex-col bg-[#1a1a2e]\", className)}>\n {/* Tab bar */}\n <div className=\"flex items-center gap-3 border-white/10 border-b px-4 py-2\">\n <div className=\"flex gap-1.5\">\n <span className=\"size-2.5 rounded-full bg-red-400/80\" />\n <span className=\"size-2.5 rounded-full bg-amber-400/80\" />\n <span className=\"size-2.5 rounded-full bg-emerald-400/80\" />\n </div>\n <span className=\"ml-2 font-mono text-[10px] text-white/40\">cogentic-api</span>\n <m.span\n key={phase}\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n className={cn(\n \"ml-auto rounded-full px-2 py-0.5 font-bold text-[9px]\",\n phase === \"request\"\n ? \"bg-amber-500/20 text-amber-300\"\n : \"bg-emerald-500/20 text-emerald-300\",\n )}\n >\n {phase === \"request\" ? \"REQUEST\" : \"RESPONSE\"}\n </m.span>\n </div>\n\n {/* Code */}\n <div ref={scrollRef} className=\"scrollbar-none flex-1 overflow-y-auto px-4 py-3\">\n <div className=\"space-y-0.5\">\n {lines.slice(0, visibleLines).map((line, i) => (\n <m.div\n key={`${phase}-${i}`}\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n className=\"flex\"\n >\n <span className=\"w-5 shrink-0 text-right font-mono text-[10px] text-white/20\">\n {i + 1}\n </span>\n <span\n className={cn(\"ml-3 font-mono text-[11px]\", line.colour ?? \"text-white/60\")}\n style={{ paddingLeft: (line.indent ?? 0) * 16 }}\n >\n {line.text || \"\\u00A0\"}\n </span>\n </m.div>\n ))}\n {visibleLines < lines.length && (\n <div className=\"flex\">\n <span className=\"w-5\" />\n <span className=\"ml-3 animate-pulse font-mono text-[11px] text-white/30\">\n {\"\\u2588\"}\n </span>\n </div>\n )}\n </div>\n </div>\n </div>\n </LazyMotion>\n )\n}\n"]}
1
+ {"version":3,"sources":["../../src/animations/animation-rest-api.tsx"],"names":[],"mappings":"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","file":"animation-rest-api.js","sourcesContent":["\"use client\"\n\nimport { domAnimation, LazyMotion, m } from \"motion/react\"\nimport { useCallback, useEffect, useRef, useState } from \"react\"\n\nimport { cn } from \"../lib/utils\"\n\ntype CodeLine = {\n text: string\n colour?: string\n indent?: number\n}\n\nconst REQUEST: CodeLine[] = [\n { text: \"POST /v1/transfers/screen\", colour: \"text-emerald-400\" },\n { text: \"Authorization: Bearer sk_live_\\u2022\\u2022\\u2022\", colour: \"text-gray-500\" },\n { text: \"Content-Type: application/json\", colour: \"text-gray-500\" },\n { text: \"\" },\n { text: \"{\", colour: \"text-gray-300\" },\n { text: '\"transfer_id\": \"TXN-0847\",', colour: \"text-[#00D4FF]\", indent: 1 },\n { text: '\"originator\": {', colour: \"text-gray-300\", indent: 1 },\n { text: '\"vasp_id\": \"vasp_au_001\",', colour: \"text-amber-400\", indent: 2 },\n { text: '\"jurisdiction\": \"AU\"', colour: \"text-amber-400\", indent: 2 },\n { text: \"},\", colour: \"text-gray-300\", indent: 1 },\n { text: '\"beneficiary\": {', colour: \"text-gray-300\", indent: 1 },\n { text: '\"vasp_id\": \"vasp_sg_042\",', colour: \"text-amber-400\", indent: 2 },\n { text: '\"jurisdiction\": \"SG\"', colour: \"text-amber-400\", indent: 2 },\n { text: \"},\", colour: \"text-gray-300\", indent: 1 },\n { text: '\"amount\": \"45000.00\",', colour: \"text-violet-400\", indent: 1 },\n { text: '\"currency\": \"USD\"', colour: \"text-violet-400\", indent: 1 },\n { text: \"}\", colour: \"text-gray-300\" },\n]\n\nconst RESPONSE: CodeLine[] = [\n { text: \"200 OK\", colour: \"text-emerald-400\" },\n { text: \"\" },\n { text: \"{\", colour: \"text-gray-300\" },\n { text: '\"status\": \"compliant\",', colour: \"text-emerald-400\", indent: 1 },\n { text: '\"risk_score\": 18,', colour: \"text-[#00D4FF]\", indent: 1 },\n { text: '\"travel_rule\": \"verified\",', colour: \"text-emerald-400\", indent: 1 },\n { text: '\"jurisdiction_pair\": \"AU→SG\",', colour: \"text-amber-400\", indent: 1 },\n { text: '\"report_ref\": \"CR-2024-0847\"', colour: \"text-violet-400\", indent: 1 },\n { text: \"}\", colour: \"text-gray-300\" },\n]\n\nexport default function AnimationRestApi({ className }: { className?: string }) {\n const [phase, setPhase] = useState<\"request\" | \"response\">(\"request\")\n const [visibleLines, setVisibleLines] = useState(0)\n const scrollRef = useRef<HTMLDivElement>(null)\n const lines = phase === \"request\" ? REQUEST : RESPONSE\n\n const reset = useCallback(() => {\n setPhase(\"request\")\n setVisibleLines(0)\n }, [])\n\n useEffect(() => {\n if (visibleLines < lines.length) {\n const id = setTimeout(() => setVisibleLines((v) => v + 1), 80)\n return () => clearTimeout(id)\n } else if (phase === \"request\") {\n const id = setTimeout(() => {\n setPhase(\"response\")\n setVisibleLines(0)\n }, 1200)\n return () => clearTimeout(id)\n } else {\n const id = setTimeout(reset, 3000)\n return () => clearTimeout(id)\n }\n }, [visibleLines, lines.length, phase, reset])\n\n useEffect(() => {\n const el = scrollRef.current\n if (!el) return\n requestAnimationFrame(() => {\n el.scrollTop = el.scrollHeight\n })\n }, [])\n\n return (\n <LazyMotion features={domAnimation}>\n <div className={cn(\"flex flex-col bg-[#1a1a2e]\", className)}>\n {/* Tab bar */}\n <div className=\"flex items-center gap-3 border-white/10 border-b px-4 py-2\">\n <div className=\"flex gap-1.5\">\n <span className=\"size-2.5 rounded-full bg-red-400/80\" />\n <span className=\"size-2.5 rounded-full bg-amber-400/80\" />\n <span className=\"size-2.5 rounded-full bg-emerald-400/80\" />\n </div>\n <span className=\"ml-2 font-mono text-[10px] text-white/40\">cogentic-api</span>\n <m.span\n key={phase}\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n className={cn(\n \"ml-auto rounded-full px-2 py-0.5 font-bold text-[9px]\",\n phase === \"request\"\n ? \"bg-amber-500/20 text-amber-300\"\n : \"bg-emerald-500/20 text-emerald-300\",\n )}\n >\n {phase === \"request\" ? \"REQUEST\" : \"RESPONSE\"}\n </m.span>\n </div>\n\n {/* Code */}\n <div ref={scrollRef} className=\"scrollbar-none flex-1 overflow-y-auto px-4 py-3\">\n <div className=\"space-y-0.5\">\n {lines.slice(0, visibleLines).map((line, i) => (\n <m.div\n key={`${phase}-${i}`}\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n className=\"flex\"\n >\n <span className=\"w-5 shrink-0 text-right font-mono text-[10px] text-white/20\">\n {i + 1}\n </span>\n <span\n className={cn(\"ml-3 font-mono text-[11px]\", line.colour ?? \"text-white/60\")}\n style={{ paddingLeft: (line.indent ?? 0) * 16 }}\n >\n {line.text || \"\\u00A0\"}\n </span>\n </m.div>\n ))}\n {visibleLines < lines.length && (\n <div className=\"flex\">\n <span className=\"w-5\" />\n <span className=\"ml-3 animate-pulse font-mono text-[11px] text-white/30\">\n {\"\\u2588\"}\n </span>\n </div>\n )}\n </div>\n </div>\n </div>\n </LazyMotion>\n )\n}\n"]}
@@ -1,8 +1,9 @@
1
1
  "use client";
2
- import { EASE_OUT } from '../chunk-TAPJEVUA.js';
3
- import { useCycleIndex } from '../chunk-6RWCZUAD.js';
4
- import '../chunk-RXV2XUDZ.js';
5
- import { cn } from '../chunk-GZNLQE3I.js';
2
+ import { EASE_OUT } from '../chunk-D3KGHRRC.js';
3
+ import { useCycleIndex } from '../chunk-XAIRLU4F.js';
4
+ import '../chunk-SLSJ6OOL.js';
5
+ import { cn } from '../chunk-MHRCB42B.js';
6
+ import '../chunk-2NMEKWO5.js';
6
7
  import { ShieldCheck, ShieldAlert, AlertTriangle } from 'lucide-react';
7
8
  import { LazyMotion, domAnimation, m } from 'motion/react';
8
9
  import { useState, useEffect } from 'react';
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/animations/animation-risk-scoring.tsx"],"names":[],"mappings":"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","file":"animation-risk-scoring.js","sourcesContent":["\"use client\"\n\nimport { AlertTriangle, ShieldAlert, ShieldCheck } from \"lucide-react\"\nimport { domAnimation, LazyMotion, m } from \"motion/react\"\nimport { useEffect, useState } from \"react\"\n\nimport { useCycleIndex } from \"../hooks/use-cycle-index\"\n\nimport { EASE_OUT } from \"../lib/animation\"\nimport { cn } from \"../lib/utils\"\n\ntype Scenario = {\n txn: string\n corridor: string\n score: number\n level: \"Low\" | \"Medium\" | \"High\"\n colour: string\n barColour: string\n icon: typeof ShieldCheck\n checks: { label: string; result: string; ok: boolean }[]\n}\n\nconst SCENARIOS: Scenario[] = [\n {\n txn: \"TXN-0847\",\n corridor: \"AU \\u2192 SG\",\n score: 18,\n level: \"Low\",\n colour: \"text-emerald-600\",\n barColour: \"bg-emerald-400\",\n icon: ShieldCheck,\n checks: [\n { label: \"Sanctions\", result: \"Clear\", ok: true },\n { label: \"PEP screening\", result: \"Clear\", ok: true },\n { label: \"Travel Rule\", result: \"Verified\", ok: true },\n { label: \"Threshold\", result: \"Below limit\", ok: true },\n ],\n },\n {\n txn: \"TXN-0846\",\n corridor: \"HK \\u2192 GB\",\n score: 72,\n level: \"High\",\n colour: \"text-red-500\",\n barColour: \"bg-red-400\",\n icon: ShieldAlert,\n checks: [\n { label: \"Sanctions\", result: \"Clear\", ok: true },\n { label: \"PEP screening\", result: \"1 match\", ok: false },\n { label: \"Travel Rule\", result: \"Verified\", ok: true },\n { label: \"Threshold\", result: \"Exceeded\", ok: false },\n ],\n },\n {\n txn: \"TXN-0845\",\n corridor: \"AE \\u2192 NL\",\n score: 41,\n level: \"Medium\",\n colour: \"text-amber-500\",\n barColour: \"bg-amber-400\",\n icon: AlertTriangle,\n checks: [\n { label: \"Sanctions\", result: \"Clear\", ok: true },\n { label: \"PEP screening\", result: \"Clear\", ok: true },\n { label: \"Travel Rule\", result: \"Pending\", ok: false },\n { label: \"Threshold\", result: \"Below limit\", ok: true },\n ],\n },\n]\n\nconst CYCLE_MS = 3800\n\nfunction AnimatedNumber({ value, duration = 1000 }: { value: number; duration?: number }) {\n const [display, setDisplay] = useState(0)\n\n useEffect(() => {\n let start: number | null = null\n let raf: number\n\n function tick(ts: number) {\n if (start === null) start = ts\n const progress = Math.min((ts - start) / duration, 1)\n const eased = 1 - (1 - progress) ** 3\n setDisplay(Math.round(value * eased))\n if (progress < 1) raf = requestAnimationFrame(tick)\n }\n\n raf = requestAnimationFrame(tick)\n return () => cancelAnimationFrame(raf)\n }, [value, duration])\n\n return <>{display}</>\n}\n\nexport default function AnimationRiskScoring({ className }: { className?: string }) {\n const [containerRef, index] = useCycleIndex(SCENARIOS.length, CYCLE_MS)\n const s = SCENARIOS[index]\n const Icon = s.icon\n\n return (\n <LazyMotion features={domAnimation}>\n <div ref={containerRef} className={cn(\"flex flex-col p-5\", className)}>\n {/* Header */}\n <div className=\"flex items-center justify-between\">\n <div>\n <p className=\"font-semibold text-[15px] text-forground\">Risk Analysis</p>\n <p className=\"text-[12px] text-gray-400\">Real-time transfer scoring</p>\n </div>\n <m.div\n key={index}\n initial={{ opacity: 0, scale: 0.9 }}\n animate={{ opacity: 1, scale: 1 }}\n className={cn(\n \"flex items-center gap-1.5 rounded-full px-2.5 py-1\",\n s.level === \"Low\"\n ? \"bg-emerald-50\"\n : s.level === \"Medium\"\n ? \"bg-amber-50\"\n : \"bg-red-50\",\n )}\n >\n <Icon className={cn(\"size-3.5\", s.colour)} strokeWidth={2} />\n <span className={cn(\"font-semibold text-[11px]\", s.colour)}>{s.level}</span>\n </m.div>\n </div>\n\n {/* Transfer info */}\n <m.div\n key={`info-${index}`}\n initial={{ opacity: 0, y: 6 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ duration: 0.3 }}\n className=\"mt-4 flex items-center gap-3 rounded-lg border border-gray-100 bg-gray-50 px-3 py-2.5\"\n >\n <div className=\"flex-1\">\n <p className=\"font-bold font-mono text-[11px] text-gray-400\">{s.txn}</p>\n <p className=\"font-medium text-[12px] text-gray-700\">{s.corridor}</p>\n </div>\n <div className=\"text-right\">\n <p className=\"font-bold font-mono text-2xl text-gray-900\">\n <AnimatedNumber value={s.score} />\n </p>\n <p className=\"text-[10px] text-gray-400\">/100</p>\n </div>\n </m.div>\n\n {/* Score bar */}\n <div className=\"mt-3 h-2 overflow-hidden rounded-full bg-gray-100\">\n <m.div\n key={`bar-${index}`}\n className={cn(\"h-full rounded-full\", s.barColour)}\n style={{ transformOrigin: \"left\", width: \"100%\" }}\n initial={{ scaleX: 0 }}\n animate={{ scaleX: s.score / 100 }}\n transition={{ duration: 1, ease: EASE_OUT }}\n />\n </div>\n\n {/* Check results */}\n <div className=\"mt-4 grid grid-cols-2 gap-2\">\n {s.checks.map((check, i) => (\n <m.div\n key={`${check.label}-${index}`}\n initial={{ opacity: 0, y: 4 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ duration: 0.25, delay: 0.1 + i * 0.08 }}\n className=\"flex items-center justify-between rounded-lg border border-gray-100 bg-white px-3 py-2\"\n >\n <span className=\"font-medium text-[11px] text-gray-600\">{check.label}</span>\n <span\n className={cn(\n \"font-semibold text-[10px]\",\n check.ok ? \"text-emerald-600\" : \"text-red-500\",\n )}\n >\n {check.result}\n </span>\n </m.div>\n ))}\n </div>\n </div>\n </LazyMotion>\n )\n}\n"]}
1
+ {"version":3,"sources":["../../src/animations/animation-risk-scoring.tsx"],"names":[],"mappings":";;;;;;;;;;AAsBA,IAAM,SAAA,GAAwB;AAAA,EAC5B;AAAA,IACE,GAAA,EAAK,UAAA;AAAA,IACL,QAAA,EAAU,cAAA;AAAA,IACV,KAAA,EAAO,EAAA;AAAA,IACP,KAAA,EAAO,KAAA;AAAA,IACP,MAAA,EAAQ,kBAAA;AAAA,IACR,SAAA,EAAW,gBAAA;AAAA,IACX,IAAA,EAAM,WAAA;AAAA,IACN,MAAA,EAAQ;AAAA,MACN,EAAE,KAAA,EAAO,WAAA,EAAa,MAAA,EAAQ,OAAA,EAAS,IAAI,IAAA,EAAK;AAAA,MAChD,EAAE,KAAA,EAAO,eAAA,EAAiB,MAAA,EAAQ,OAAA,EAAS,IAAI,IAAA,EAAK;AAAA,MACpD,EAAE,KAAA,EAAO,aAAA,EAAe,MAAA,EAAQ,UAAA,EAAY,IAAI,IAAA,EAAK;AAAA,MACrD,EAAE,KAAA,EAAO,WAAA,EAAa,MAAA,EAAQ,aAAA,EAAe,IAAI,IAAA;AAAK;AACxD,GACF;AAAA,EACA;AAAA,IACE,GAAA,EAAK,UAAA;AAAA,IACL,QAAA,EAAU,cAAA;AAAA,IACV,KAAA,EAAO,EAAA;AAAA,IACP,KAAA,EAAO,MAAA;AAAA,IACP,MAAA,EAAQ,cAAA;AAAA,IACR,SAAA,EAAW,YAAA;AAAA,IACX,IAAA,EAAM,WAAA;AAAA,IACN,MAAA,EAAQ;AAAA,MACN,EAAE,KAAA,EAAO,WAAA,EAAa,MAAA,EAAQ,OAAA,EAAS,IAAI,IAAA,EAAK;AAAA,MAChD,EAAE,KAAA,EAAO,eAAA,EAAiB,MAAA,EAAQ,SAAA,EAAW,IAAI,KAAA,EAAM;AAAA,MACvD,EAAE,KAAA,EAAO,aAAA,EAAe,MAAA,EAAQ,UAAA,EAAY,IAAI,IAAA,EAAK;AAAA,MACrD,EAAE,KAAA,EAAO,WAAA,EAAa,MAAA,EAAQ,UAAA,EAAY,IAAI,KAAA;AAAM;AACtD,GACF;AAAA,EACA;AAAA,IACE,GAAA,EAAK,UAAA;AAAA,IACL,QAAA,EAAU,cAAA;AAAA,IACV,KAAA,EAAO,EAAA;AAAA,IACP,KAAA,EAAO,QAAA;AAAA,IACP,MAAA,EAAQ,gBAAA;AAAA,IACR,SAAA,EAAW,cAAA;AAAA,IACX,IAAA,EAAM,aAAA;AAAA,IACN,MAAA,EAAQ;AAAA,MACN,EAAE,KAAA,EAAO,WAAA,EAAa,MAAA,EAAQ,OAAA,EAAS,IAAI,IAAA,EAAK;AAAA,MAChD,EAAE,KAAA,EAAO,eAAA,EAAiB,MAAA,EAAQ,OAAA,EAAS,IAAI,IAAA,EAAK;AAAA,MACpD,EAAE,KAAA,EAAO,aAAA,EAAe,MAAA,EAAQ,SAAA,EAAW,IAAI,KAAA,EAAM;AAAA,MACrD,EAAE,KAAA,EAAO,WAAA,EAAa,MAAA,EAAQ,aAAA,EAAe,IAAI,IAAA;AAAK;AACxD;AAEJ,CAAA;AAEA,IAAM,QAAA,GAAW,IAAA;AAEjB,SAAS,cAAA,CAAe,EAAE,KAAA,EAAO,QAAA,GAAW,KAAK,EAAyC;AACxF,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAI,SAAS,CAAC,CAAA;AAExC,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,KAAA,GAAuB,IAAA;AAC3B,IAAA,IAAI,GAAA;AAEJ,IAAA,SAAS,KAAK,EAAA,EAAY;AACxB,MAAA,IAAI,KAAA,KAAU,MAAM,KAAA,GAAQ,EAAA;AAC5B,MAAA,MAAM,WAAW,IAAA,CAAK,GAAA,CAAA,CAAK,EAAA,GAAK,KAAA,IAAS,UAAU,CAAC,CAAA;AACpD,MAAA,MAAM,KAAA,GAAQ,CAAA,GAAA,CAAK,CAAA,GAAI,QAAA,KAAa,CAAA;AACpC,MAAA,UAAA,CAAW,IAAA,CAAK,KAAA,CAAM,KAAA,GAAQ,KAAK,CAAC,CAAA;AACpC,MAAA,IAAI,QAAA,GAAW,CAAA,EAAG,GAAA,GAAM,qBAAA,CAAsB,IAAI,CAAA;AAAA,IACpD;AAEA,IAAA,GAAA,GAAM,sBAAsB,IAAI,CAAA;AAChC,IAAA,OAAO,MAAM,qBAAqB,GAAG,CAAA;AAAA,EACvC,CAAA,EAAG,CAAC,KAAA,EAAO,QAAQ,CAAC,CAAA;AAEpB,EAAA,uCAAU,QAAA,EAAA,OAAA,EAAQ,CAAA;AACpB;AAEe,SAAR,oBAAA,CAAsC,EAAE,SAAA,EAAU,EAA2B;AAClF,EAAA,MAAM,CAAC,YAAA,EAAc,KAAK,IAAI,aAAA,CAAc,SAAA,CAAU,QAAQ,QAAQ,CAAA;AACtE,EAAA,MAAM,CAAA,GAAI,UAAU,KAAK,CAAA;AACzB,EAAA,MAAM,OAAO,CAAA,CAAE,IAAA;AAEf,EAAA,uBACE,GAAA,CAAC,UAAA,EAAA,EAAW,QAAA,EAAU,YAAA,EACpB,QAAA,kBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,GAAA,EAAK,YAAA,EAAc,SAAA,EAAW,EAAA,CAAG,mBAAA,EAAqB,SAAS,CAAA,EAElE,QAAA,EAAA;AAAA,oBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,mCAAA,EACb,QAAA,EAAA;AAAA,sBAAA,IAAA,CAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,0CAAA,EAA2C,QAAA,EAAA,eAAA,EAAa,CAAA;AAAA,wBACrE,GAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,2BAAA,EAA4B,QAAA,EAAA,4BAAA,EAA0B;AAAA,OAAA,EACrE,CAAA;AAAA,sBACA,IAAA;AAAA,QAAC,CAAA,CAAE,GAAA;AAAA,QAAF;AAAA,UAEC,OAAA,EAAS,EAAE,OAAA,EAAS,CAAA,EAAG,OAAO,GAAA,EAAI;AAAA,UAClC,OAAA,EAAS,EAAE,OAAA,EAAS,CAAA,EAAG,OAAO,CAAA,EAAE;AAAA,UAChC,SAAA,EAAW,EAAA;AAAA,YACT,oDAAA;AAAA,YACA,EAAE,KAAA,KAAU,KAAA,GACR,kBACA,CAAA,CAAE,KAAA,KAAU,WACV,aAAA,GACA;AAAA,WACR;AAAA,UAEA,QAAA,EAAA;AAAA,4BAAA,GAAA,CAAC,IAAA,EAAA,EAAK,WAAW,EAAA,CAAG,UAAA,EAAY,EAAE,MAAM,CAAA,EAAG,aAAa,CAAA,EAAG,CAAA;AAAA,4BAC3D,GAAA,CAAC,UAAK,SAAA,EAAW,EAAA,CAAG,6BAA6B,CAAA,CAAE,MAAM,CAAA,EAAI,QAAA,EAAA,CAAA,CAAE,KAAA,EAAM;AAAA;AAAA,SAAA;AAAA,QAbhE;AAAA;AAcP,KAAA,EACF,CAAA;AAAA,oBAGA,IAAA;AAAA,MAAC,CAAA,CAAE,GAAA;AAAA,MAAF;AAAA,QAEC,OAAA,EAAS,EAAE,OAAA,EAAS,CAAA,EAAG,GAAG,CAAA,EAAE;AAAA,QAC5B,OAAA,EAAS,EAAE,OAAA,EAAS,CAAA,EAAG,GAAG,CAAA,EAAE;AAAA,QAC5B,UAAA,EAAY,EAAE,QAAA,EAAU,GAAA,EAAI;AAAA,QAC5B,SAAA,EAAU,uFAAA;AAAA,QAEV,QAAA,EAAA;AAAA,0BAAA,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,QAAA,EACb,QAAA,EAAA;AAAA,4BAAA,GAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,+CAAA,EAAiD,QAAA,EAAA,CAAA,CAAE,GAAA,EAAI,CAAA;AAAA,4BACpE,GAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,uCAAA,EAAyC,YAAE,QAAA,EAAS;AAAA,WAAA,EACnE,CAAA;AAAA,0BACA,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,YAAA,EACb,QAAA,EAAA;AAAA,4BAAA,GAAA,CAAC,GAAA,EAAA,EAAE,WAAU,4CAAA,EACX,QAAA,kBAAA,GAAA,CAAC,kBAAe,KAAA,EAAO,CAAA,CAAE,OAAO,CAAA,EAClC,CAAA;AAAA,4BACA,GAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,2BAAA,EAA4B,QAAA,EAAA,MAAA,EAAI;AAAA,WAAA,EAC/C;AAAA;AAAA,OAAA;AAAA,MAfK,QAAQ,KAAK,CAAA;AAAA,KAgBpB;AAAA,oBAGA,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,mDAAA,EACb,QAAA,kBAAA,GAAA;AAAA,MAAC,CAAA,CAAE,GAAA;AAAA,MAAF;AAAA,QAEC,SAAA,EAAW,EAAA,CAAG,qBAAA,EAAuB,CAAA,CAAE,SAAS,CAAA;AAAA,QAChD,KAAA,EAAO,EAAE,eAAA,EAAiB,MAAA,EAAQ,OAAO,MAAA,EAAO;AAAA,QAChD,OAAA,EAAS,EAAE,MAAA,EAAQ,CAAA,EAAE;AAAA,QACrB,OAAA,EAAS,EAAE,MAAA,EAAQ,CAAA,CAAE,QAAQ,GAAA,EAAI;AAAA,QACjC,UAAA,EAAY,EAAE,QAAA,EAAU,CAAA,EAAG,MAAM,QAAA;AAAS,OAAA;AAAA,MALrC,OAAO,KAAK,CAAA;AAAA,KAMnB,EACF,CAAA;AAAA,oBAGA,GAAA,CAAC,SAAI,SAAA,EAAU,6BAAA,EACZ,YAAE,MAAA,CAAO,GAAA,CAAI,CAAC,KAAA,EAAO,CAAA,qBACpB,IAAA;AAAA,MAAC,CAAA,CAAE,GAAA;AAAA,MAAF;AAAA,QAEC,OAAA,EAAS,EAAE,OAAA,EAAS,CAAA,EAAG,GAAG,CAAA,EAAE;AAAA,QAC5B,OAAA,EAAS,EAAE,OAAA,EAAS,CAAA,EAAG,GAAG,CAAA,EAAE;AAAA,QAC5B,YAAY,EAAE,QAAA,EAAU,MAAM,KAAA,EAAO,GAAA,GAAM,IAAI,IAAA,EAAK;AAAA,QACpD,SAAA,EAAU,wFAAA;AAAA,QAEV,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,uCAAA,EAAyC,QAAA,EAAA,KAAA,CAAM,KAAA,EAAM,CAAA;AAAA,0BACrE,GAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAW,EAAA;AAAA,gBACT,2BAAA;AAAA,gBACA,KAAA,CAAM,KAAK,kBAAA,GAAqB;AAAA,eAClC;AAAA,cAEC,QAAA,EAAA,KAAA,CAAM;AAAA;AAAA;AACT;AAAA,OAAA;AAAA,MAdK,CAAA,EAAG,KAAA,CAAM,KAAK,CAAA,CAAA,EAAI,KAAK,CAAA;AAAA,KAgB/B,CAAA,EACH;AAAA,GAAA,EACF,CAAA,EACF,CAAA;AAEJ","file":"animation-risk-scoring.js","sourcesContent":["\"use client\"\n\nimport { AlertTriangle, ShieldAlert, ShieldCheck } from \"lucide-react\"\nimport { domAnimation, LazyMotion, m } from \"motion/react\"\nimport { useEffect, useState } from \"react\"\n\nimport { useCycleIndex } from \"../hooks/use-cycle-index\"\n\nimport { EASE_OUT } from \"../lib/animation\"\nimport { cn } from \"../lib/utils\"\n\ntype Scenario = {\n txn: string\n corridor: string\n score: number\n level: \"Low\" | \"Medium\" | \"High\"\n colour: string\n barColour: string\n icon: typeof ShieldCheck\n checks: { label: string; result: string; ok: boolean }[]\n}\n\nconst SCENARIOS: Scenario[] = [\n {\n txn: \"TXN-0847\",\n corridor: \"AU \\u2192 SG\",\n score: 18,\n level: \"Low\",\n colour: \"text-emerald-600\",\n barColour: \"bg-emerald-400\",\n icon: ShieldCheck,\n checks: [\n { label: \"Sanctions\", result: \"Clear\", ok: true },\n { label: \"PEP screening\", result: \"Clear\", ok: true },\n { label: \"Travel Rule\", result: \"Verified\", ok: true },\n { label: \"Threshold\", result: \"Below limit\", ok: true },\n ],\n },\n {\n txn: \"TXN-0846\",\n corridor: \"HK \\u2192 GB\",\n score: 72,\n level: \"High\",\n colour: \"text-red-500\",\n barColour: \"bg-red-400\",\n icon: ShieldAlert,\n checks: [\n { label: \"Sanctions\", result: \"Clear\", ok: true },\n { label: \"PEP screening\", result: \"1 match\", ok: false },\n { label: \"Travel Rule\", result: \"Verified\", ok: true },\n { label: \"Threshold\", result: \"Exceeded\", ok: false },\n ],\n },\n {\n txn: \"TXN-0845\",\n corridor: \"AE \\u2192 NL\",\n score: 41,\n level: \"Medium\",\n colour: \"text-amber-500\",\n barColour: \"bg-amber-400\",\n icon: AlertTriangle,\n checks: [\n { label: \"Sanctions\", result: \"Clear\", ok: true },\n { label: \"PEP screening\", result: \"Clear\", ok: true },\n { label: \"Travel Rule\", result: \"Pending\", ok: false },\n { label: \"Threshold\", result: \"Below limit\", ok: true },\n ],\n },\n]\n\nconst CYCLE_MS = 3800\n\nfunction AnimatedNumber({ value, duration = 1000 }: { value: number; duration?: number }) {\n const [display, setDisplay] = useState(0)\n\n useEffect(() => {\n let start: number | null = null\n let raf: number\n\n function tick(ts: number) {\n if (start === null) start = ts\n const progress = Math.min((ts - start) / duration, 1)\n const eased = 1 - (1 - progress) ** 3\n setDisplay(Math.round(value * eased))\n if (progress < 1) raf = requestAnimationFrame(tick)\n }\n\n raf = requestAnimationFrame(tick)\n return () => cancelAnimationFrame(raf)\n }, [value, duration])\n\n return <>{display}</>\n}\n\nexport default function AnimationRiskScoring({ className }: { className?: string }) {\n const [containerRef, index] = useCycleIndex(SCENARIOS.length, CYCLE_MS)\n const s = SCENARIOS[index]\n const Icon = s.icon\n\n return (\n <LazyMotion features={domAnimation}>\n <div ref={containerRef} className={cn(\"flex flex-col p-5\", className)}>\n {/* Header */}\n <div className=\"flex items-center justify-between\">\n <div>\n <p className=\"font-semibold text-[15px] text-forground\">Risk Analysis</p>\n <p className=\"text-[12px] text-gray-400\">Real-time transfer scoring</p>\n </div>\n <m.div\n key={index}\n initial={{ opacity: 0, scale: 0.9 }}\n animate={{ opacity: 1, scale: 1 }}\n className={cn(\n \"flex items-center gap-1.5 rounded-full px-2.5 py-1\",\n s.level === \"Low\"\n ? \"bg-emerald-50\"\n : s.level === \"Medium\"\n ? \"bg-amber-50\"\n : \"bg-red-50\",\n )}\n >\n <Icon className={cn(\"size-3.5\", s.colour)} strokeWidth={2} />\n <span className={cn(\"font-semibold text-[11px]\", s.colour)}>{s.level}</span>\n </m.div>\n </div>\n\n {/* Transfer info */}\n <m.div\n key={`info-${index}`}\n initial={{ opacity: 0, y: 6 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ duration: 0.3 }}\n className=\"mt-4 flex items-center gap-3 rounded-lg border border-gray-100 bg-gray-50 px-3 py-2.5\"\n >\n <div className=\"flex-1\">\n <p className=\"font-bold font-mono text-[11px] text-gray-400\">{s.txn}</p>\n <p className=\"font-medium text-[12px] text-gray-700\">{s.corridor}</p>\n </div>\n <div className=\"text-right\">\n <p className=\"font-bold font-mono text-2xl text-gray-900\">\n <AnimatedNumber value={s.score} />\n </p>\n <p className=\"text-[10px] text-gray-400\">/100</p>\n </div>\n </m.div>\n\n {/* Score bar */}\n <div className=\"mt-3 h-2 overflow-hidden rounded-full bg-gray-100\">\n <m.div\n key={`bar-${index}`}\n className={cn(\"h-full rounded-full\", s.barColour)}\n style={{ transformOrigin: \"left\", width: \"100%\" }}\n initial={{ scaleX: 0 }}\n animate={{ scaleX: s.score / 100 }}\n transition={{ duration: 1, ease: EASE_OUT }}\n />\n </div>\n\n {/* Check results */}\n <div className=\"mt-4 grid grid-cols-2 gap-2\">\n {s.checks.map((check, i) => (\n <m.div\n key={`${check.label}-${index}`}\n initial={{ opacity: 0, y: 4 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ duration: 0.25, delay: 0.1 + i * 0.08 }}\n className=\"flex items-center justify-between rounded-lg border border-gray-100 bg-white px-3 py-2\"\n >\n <span className=\"font-medium text-[11px] text-gray-600\">{check.label}</span>\n <span\n className={cn(\n \"font-semibold text-[10px]\",\n check.ok ? \"text-emerald-600\" : \"text-red-500\",\n )}\n >\n {check.result}\n </span>\n </m.div>\n ))}\n </div>\n </div>\n </LazyMotion>\n )\n}\n"]}
@@ -1,5 +1,6 @@
1
1
  "use client";
2
- import { cn } from '../chunk-GZNLQE3I.js';
2
+ import { cn } from '../chunk-MHRCB42B.js';
3
+ import '../chunk-2NMEKWO5.js';
3
4
  import { RotateCcw, Play } from 'lucide-react';
4
5
  import { LazyMotion, domAnimation, m } from 'motion/react';
5
6
  import { useState, useRef, useCallback, useEffect } from 'react';
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/animations/animation-sandbox.tsx"],"names":[],"mappings":"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","file":"animation-sandbox.js","sourcesContent":["\"use client\"\n\nimport { Play, RotateCcw } from \"lucide-react\"\nimport { domAnimation, LazyMotion, m } from \"motion/react\"\nimport { useCallback, useEffect, useRef, useState } from \"react\"\n\nimport { cn } from \"../lib/utils\"\n\ntype ConsoleLine = {\n type: \"command\" | \"output\" | \"success\" | \"info\"\n text: string\n}\n\nconst SCRIPT: ConsoleLine[] = [\n { type: \"command\", text: \"$ cogentic-cli test transfer --corridor AU:SG --amount 45000\" },\n { type: \"info\", text: \"\\u2192 Using sandbox environment (test mode)\" },\n { type: \"output\", text: \"Creating test transfer TXN-TEST-0001...\" },\n { type: \"output\", text: \"Screening against sandbox ruleset...\" },\n { type: \"output\", text: \" Jurisdiction: AUSTRAC \\u2192 MAS\" },\n { type: \"output\", text: \" Threshold check: AUD 10,000 exceeded\" },\n { type: \"output\", text: \" Travel Rule: IVMS101 required\" },\n { type: \"output\", text: \" Risk score: 18/100 (Low)\" },\n { type: \"success\", text: \"\\u2713 Transfer screened: COMPLIANT\" },\n { type: \"info\", text: \"\\u2192 Sandbox report: SR-TEST-0001 generated\" },\n { type: \"info\", text: \"\\u2192 No production data affected\" },\n { type: \"command\", text: \"\" },\n { type: \"command\", text: \"$ cogentic-cli test transfer --corridor HK:GB --amount 120000\" },\n { type: \"info\", text: \"\\u2192 Using sandbox environment (test mode)\" },\n { type: \"output\", text: \"Creating test transfer TXN-TEST-0002...\" },\n { type: \"output\", text: \"Screening against sandbox ruleset...\" },\n { type: \"output\", text: \" Jurisdiction: SFC \\u2192 FCA\" },\n { type: \"output\", text: \" High-risk corridor detected\" },\n { type: \"output\", text: \" Enhanced due diligence triggered\" },\n { type: \"output\", text: \" Risk score: 72/100 (High)\" },\n { type: \"success\", text: \"\\u26A0 Transfer screened: FLAGGED \\u2014 manual review required\" },\n]\n\nconst lineColour: Record<ConsoleLine[\"type\"], string> = {\n command: \"text-white/90\",\n output: \"text-white/50\",\n success: \"text-emerald-400\",\n info: \"text-[#00D4FF]/80\",\n}\n\nexport default function AnimationSandbox({ className }: { className?: string }) {\n const [visibleLines, setVisibleLines] = useState(0)\n const scrollRef = useRef<HTMLDivElement>(null)\n\n const reset = useCallback(() => {\n setVisibleLines(0)\n }, [])\n\n useEffect(() => {\n if (visibleLines < SCRIPT.length) {\n const line = SCRIPT[visibleLines]\n const delay = line.type === \"command\" ? 400 : line.text === \"\" ? 200 : 120\n const id = setTimeout(() => setVisibleLines((v) => v + 1), delay)\n return () => clearTimeout(id)\n } else {\n const id = setTimeout(reset, 4000)\n return () => clearTimeout(id)\n }\n }, [visibleLines, reset])\n\n useEffect(() => {\n const el = scrollRef.current\n if (!el) return\n requestAnimationFrame(() => {\n el.scrollTop = el.scrollHeight\n })\n }, [])\n\n return (\n <LazyMotion features={domAnimation}>\n <div className={cn(\"flex flex-col bg-[#1a1a2e]\", className)}>\n {/* Terminal bar */}\n <div className=\"flex items-center gap-3 border-white/10 border-b px-4 py-2\">\n <div className=\"flex gap-1.5\">\n <span className=\"size-2.5 rounded-full bg-red-400/80\" />\n <span className=\"size-2.5 rounded-full bg-amber-400/80\" />\n <span className=\"size-2.5 rounded-full bg-emerald-400/80\" />\n </div>\n <span className=\"ml-2 font-mono text-[10px] text-white/40\">cogentic-sandbox</span>\n <div className=\"ml-auto flex items-center gap-2\">\n <span className=\"rounded-full bg-amber-500/20 px-2 py-0.5 font-bold font-mono text-[9px] text-amber-300\">\n SANDBOX\n </span>\n <button\n onClick={reset}\n className=\"text-white/30 transition-colors hover:text-white/60\"\n aria-label=\"Restart\"\n >\n <RotateCcw className=\"size-3\" />\n </button>\n </div>\n </div>\n\n {/* Console output */}\n <div ref={scrollRef} className=\"scrollbar-none flex-1 overflow-y-auto px-4 py-3\">\n <div className=\"space-y-0.5\">\n {SCRIPT.slice(0, visibleLines).map((line, i) => (\n <m.p\n key={i}\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n className={cn(\"font-mono text-[11px] leading-relaxed\", lineColour[line.type])}\n >\n {line.text || \"\\u00A0\"}\n </m.p>\n ))}\n {visibleLines < SCRIPT.length && (\n <p className=\"animate-pulse font-mono text-[11px] text-white/30\">{\"\\u2588\"}</p>\n )}\n </div>\n </div>\n\n {/* Footer */}\n <div className=\"flex items-center gap-2 border-white/10 border-t px-4 py-1.5\">\n <Play className=\"size-3 text-emerald-400\" />\n <span className=\"font-mono text-[9px] text-white/30\">\n Sandbox {\"\\u2022\"} No production data {\"\\u2022\"} Realistic responses\n </span>\n </div>\n </div>\n </LazyMotion>\n )\n}\n"]}
1
+ {"version":3,"sources":["../../src/animations/animation-sandbox.tsx"],"names":[],"mappings":"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","file":"animation-sandbox.js","sourcesContent":["\"use client\"\n\nimport { Play, RotateCcw } from \"lucide-react\"\nimport { domAnimation, LazyMotion, m } from \"motion/react\"\nimport { useCallback, useEffect, useRef, useState } from \"react\"\n\nimport { cn } from \"../lib/utils\"\n\ntype ConsoleLine = {\n type: \"command\" | \"output\" | \"success\" | \"info\"\n text: string\n}\n\nconst SCRIPT: ConsoleLine[] = [\n { type: \"command\", text: \"$ cogentic-cli test transfer --corridor AU:SG --amount 45000\" },\n { type: \"info\", text: \"\\u2192 Using sandbox environment (test mode)\" },\n { type: \"output\", text: \"Creating test transfer TXN-TEST-0001...\" },\n { type: \"output\", text: \"Screening against sandbox ruleset...\" },\n { type: \"output\", text: \" Jurisdiction: AUSTRAC \\u2192 MAS\" },\n { type: \"output\", text: \" Threshold check: AUD 10,000 exceeded\" },\n { type: \"output\", text: \" Travel Rule: IVMS101 required\" },\n { type: \"output\", text: \" Risk score: 18/100 (Low)\" },\n { type: \"success\", text: \"\\u2713 Transfer screened: COMPLIANT\" },\n { type: \"info\", text: \"\\u2192 Sandbox report: SR-TEST-0001 generated\" },\n { type: \"info\", text: \"\\u2192 No production data affected\" },\n { type: \"command\", text: \"\" },\n { type: \"command\", text: \"$ cogentic-cli test transfer --corridor HK:GB --amount 120000\" },\n { type: \"info\", text: \"\\u2192 Using sandbox environment (test mode)\" },\n { type: \"output\", text: \"Creating test transfer TXN-TEST-0002...\" },\n { type: \"output\", text: \"Screening against sandbox ruleset...\" },\n { type: \"output\", text: \" Jurisdiction: SFC \\u2192 FCA\" },\n { type: \"output\", text: \" High-risk corridor detected\" },\n { type: \"output\", text: \" Enhanced due diligence triggered\" },\n { type: \"output\", text: \" Risk score: 72/100 (High)\" },\n { type: \"success\", text: \"\\u26A0 Transfer screened: FLAGGED \\u2014 manual review required\" },\n]\n\nconst lineColour: Record<ConsoleLine[\"type\"], string> = {\n command: \"text-white/90\",\n output: \"text-white/50\",\n success: \"text-emerald-400\",\n info: \"text-[#00D4FF]/80\",\n}\n\nexport default function AnimationSandbox({ className }: { className?: string }) {\n const [visibleLines, setVisibleLines] = useState(0)\n const scrollRef = useRef<HTMLDivElement>(null)\n\n const reset = useCallback(() => {\n setVisibleLines(0)\n }, [])\n\n useEffect(() => {\n if (visibleLines < SCRIPT.length) {\n const line = SCRIPT[visibleLines]\n const delay = line.type === \"command\" ? 400 : line.text === \"\" ? 200 : 120\n const id = setTimeout(() => setVisibleLines((v) => v + 1), delay)\n return () => clearTimeout(id)\n } else {\n const id = setTimeout(reset, 4000)\n return () => clearTimeout(id)\n }\n }, [visibleLines, reset])\n\n useEffect(() => {\n const el = scrollRef.current\n if (!el) return\n requestAnimationFrame(() => {\n el.scrollTop = el.scrollHeight\n })\n }, [])\n\n return (\n <LazyMotion features={domAnimation}>\n <div className={cn(\"flex flex-col bg-[#1a1a2e]\", className)}>\n {/* Terminal bar */}\n <div className=\"flex items-center gap-3 border-white/10 border-b px-4 py-2\">\n <div className=\"flex gap-1.5\">\n <span className=\"size-2.5 rounded-full bg-red-400/80\" />\n <span className=\"size-2.5 rounded-full bg-amber-400/80\" />\n <span className=\"size-2.5 rounded-full bg-emerald-400/80\" />\n </div>\n <span className=\"ml-2 font-mono text-[10px] text-white/40\">cogentic-sandbox</span>\n <div className=\"ml-auto flex items-center gap-2\">\n <span className=\"rounded-full bg-amber-500/20 px-2 py-0.5 font-bold font-mono text-[9px] text-amber-300\">\n SANDBOX\n </span>\n <button\n onClick={reset}\n className=\"text-white/30 transition-colors hover:text-white/60\"\n aria-label=\"Restart\"\n >\n <RotateCcw className=\"size-3\" />\n </button>\n </div>\n </div>\n\n {/* Console output */}\n <div ref={scrollRef} className=\"scrollbar-none flex-1 overflow-y-auto px-4 py-3\">\n <div className=\"space-y-0.5\">\n {SCRIPT.slice(0, visibleLines).map((line, i) => (\n <m.p\n key={i}\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n className={cn(\"font-mono text-[11px] leading-relaxed\", lineColour[line.type])}\n >\n {line.text || \"\\u00A0\"}\n </m.p>\n ))}\n {visibleLines < SCRIPT.length && (\n <p className=\"animate-pulse font-mono text-[11px] text-white/30\">{\"\\u2588\"}</p>\n )}\n </div>\n </div>\n\n {/* Footer */}\n <div className=\"flex items-center gap-2 border-white/10 border-t px-4 py-1.5\">\n <Play className=\"size-3 text-emerald-400\" />\n <span className=\"font-mono text-[9px] text-white/30\">\n Sandbox {\"\\u2022\"} No production data {\"\\u2022\"} Realistic responses\n </span>\n </div>\n </div>\n </LazyMotion>\n )\n}\n"]}
@@ -1,7 +1,8 @@
1
1
  "use client";
2
- import { useCycleIndex } from '../chunk-6RWCZUAD.js';
3
- import '../chunk-RXV2XUDZ.js';
4
- import { cn } from '../chunk-GZNLQE3I.js';
2
+ import { useCycleIndex } from '../chunk-XAIRLU4F.js';
3
+ import '../chunk-SLSJ6OOL.js';
4
+ import { cn } from '../chunk-MHRCB42B.js';
5
+ import '../chunk-2NMEKWO5.js';
5
6
  import { Mail, Clock, CheckCircle2 } from 'lucide-react';
6
7
  import { LazyMotion, domAnimation, m } from 'motion/react';
7
8
  import { jsx, jsxs } from 'react/jsx-runtime';
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/animations/animation-scheduled-reports.tsx"],"names":[],"mappings":"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","file":"animation-scheduled-reports.js","sourcesContent":["\"use client\"\n\nimport { CheckCircle2, Clock, Mail } from \"lucide-react\"\nimport { domAnimation, LazyMotion, m } from \"motion/react\"\n\nimport { useCycleIndex } from \"../hooks/use-cycle-index\"\n\nimport { cn } from \"../lib/utils\"\n\ntype ScheduledReport = {\n name: string\n frequency: string\n recipients: string\n lastSent: string\n nextDue: string\n status: \"sent\" | \"scheduled\" | \"overdue\"\n}\n\nconst REPORTS: ScheduledReport[] = [\n {\n name: \"Weekly compliance summary\",\n frequency: \"Every Monday 09:00\",\n recipients: \"compliance-team@\",\n lastSent: \"Today, 09:00\",\n nextDue: \"Next Monday\",\n status: \"sent\",\n },\n {\n name: \"Monthly STR filing digest\",\n frequency: \"1st of each month\",\n recipients: \"cco@, legal@\",\n lastSent: \"1 Feb 2025\",\n nextDue: \"1 Mar 2025\",\n status: \"scheduled\",\n },\n {\n name: \"Quarterly board report\",\n frequency: \"Quarterly\",\n recipients: \"board@, cco@\",\n lastSent: \"1 Jan 2025\",\n nextDue: \"1 Apr 2025\",\n status: \"scheduled\",\n },\n {\n name: \"Daily high-risk alerts\",\n frequency: \"Daily 08:00\",\n recipients: \"senior-analysts@\",\n lastSent: \"Today, 08:00\",\n nextDue: \"Tomorrow, 08:00\",\n status: \"sent\",\n },\n]\n\nconst statusConfig: Record<string, { icon: typeof Clock; colour: string; label: string }> = {\n sent: { icon: CheckCircle2, colour: \"text-emerald-500\", label: \"Sent\" },\n scheduled: { icon: Clock, colour: \"text-[#00D4FF]\", label: \"Scheduled\" },\n overdue: { icon: Clock, colour: \"text-red-500\", label: \"Overdue\" },\n}\n\nexport default function AnimationScheduledReports({ className }: { className?: string }) {\n const [containerRef, activeIdx] = useCycleIndex(REPORTS.length, 3000)\n\n return (\n <LazyMotion features={domAnimation}>\n <div ref={containerRef} className={cn(\"flex flex-col p-5\", className)}>\n {/* Header */}\n <div className=\"flex items-center justify-between\">\n <div>\n <p className=\"font-semibold text-[15px] text-foreground\">Scheduled Reports</p>\n <p className=\"text-[12px] text-gray-400\">{REPORTS.length} active schedules</p>\n </div>\n <div className=\"flex items-center gap-1.5 rounded-full bg-[#00D4FF]/10 px-2.5 py-1\">\n <Mail className=\"size-3 text-[#00D4FF]\" />\n <span className=\"font-semibold text-[#0099BB] text-[11px]\">Auto</span>\n </div>\n </div>\n\n {/* Report list */}\n <div className=\"mt-4 space-y-2\">\n {REPORTS.map((r, i) => {\n const st = statusConfig[r.status]\n const Icon = st.icon\n const isActive = i === activeIdx\n return (\n <m.div\n key={r.name}\n animate={{\n borderColor: isActive ? \"#00D4FF\" : \"#f3f4f6\",\n }}\n transition={{ duration: 0.3 }}\n className=\"rounded-lg border bg-white px-3 py-2.5\"\n >\n <div className=\"flex items-center gap-2\">\n <Icon className={cn(\"size-3.5 shrink-0\", st.colour)} />\n <span className=\"flex-1 truncate font-semibold text-[12px] text-gray-800\">\n {r.name}\n </span>\n <span className=\"text-[10px] text-gray-400\">{r.frequency}</span>\n </div>\n\n {isActive && (\n <m.div\n initial={{ opacity: 0, height: 0 }}\n animate={{ opacity: 1, height: \"auto\" }}\n transition={{ duration: 0.25 }}\n className=\"mt-2 grid grid-cols-2 gap-2 border-gray-100 border-t pt-2\"\n >\n <div>\n <p className=\"text-[9px] text-gray-400\">Recipients</p>\n <p className=\"font-mono text-[10px] text-gray-600\">{r.recipients}</p>\n </div>\n <div>\n <p className=\"text-[9px] text-gray-400\">Last sent</p>\n <p className=\"font-medium text-[10px] text-gray-700\">{r.lastSent}</p>\n </div>\n </m.div>\n )}\n </m.div>\n )\n })}\n </div>\n </div>\n </LazyMotion>\n )\n}\n"]}
1
+ {"version":3,"sources":["../../src/animations/animation-scheduled-reports.tsx"],"names":[],"mappings":"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","file":"animation-scheduled-reports.js","sourcesContent":["\"use client\"\n\nimport { CheckCircle2, Clock, Mail } from \"lucide-react\"\nimport { domAnimation, LazyMotion, m } from \"motion/react\"\n\nimport { useCycleIndex } from \"../hooks/use-cycle-index\"\n\nimport { cn } from \"../lib/utils\"\n\ntype ScheduledReport = {\n name: string\n frequency: string\n recipients: string\n lastSent: string\n nextDue: string\n status: \"sent\" | \"scheduled\" | \"overdue\"\n}\n\nconst REPORTS: ScheduledReport[] = [\n {\n name: \"Weekly compliance summary\",\n frequency: \"Every Monday 09:00\",\n recipients: \"compliance-team@\",\n lastSent: \"Today, 09:00\",\n nextDue: \"Next Monday\",\n status: \"sent\",\n },\n {\n name: \"Monthly STR filing digest\",\n frequency: \"1st of each month\",\n recipients: \"cco@, legal@\",\n lastSent: \"1 Feb 2025\",\n nextDue: \"1 Mar 2025\",\n status: \"scheduled\",\n },\n {\n name: \"Quarterly board report\",\n frequency: \"Quarterly\",\n recipients: \"board@, cco@\",\n lastSent: \"1 Jan 2025\",\n nextDue: \"1 Apr 2025\",\n status: \"scheduled\",\n },\n {\n name: \"Daily high-risk alerts\",\n frequency: \"Daily 08:00\",\n recipients: \"senior-analysts@\",\n lastSent: \"Today, 08:00\",\n nextDue: \"Tomorrow, 08:00\",\n status: \"sent\",\n },\n]\n\nconst statusConfig: Record<string, { icon: typeof Clock; colour: string; label: string }> = {\n sent: { icon: CheckCircle2, colour: \"text-emerald-500\", label: \"Sent\" },\n scheduled: { icon: Clock, colour: \"text-[#00D4FF]\", label: \"Scheduled\" },\n overdue: { icon: Clock, colour: \"text-red-500\", label: \"Overdue\" },\n}\n\nexport default function AnimationScheduledReports({ className }: { className?: string }) {\n const [containerRef, activeIdx] = useCycleIndex(REPORTS.length, 3000)\n\n return (\n <LazyMotion features={domAnimation}>\n <div ref={containerRef} className={cn(\"flex flex-col p-5\", className)}>\n {/* Header */}\n <div className=\"flex items-center justify-between\">\n <div>\n <p className=\"font-semibold text-[15px] text-foreground\">Scheduled Reports</p>\n <p className=\"text-[12px] text-gray-400\">{REPORTS.length} active schedules</p>\n </div>\n <div className=\"flex items-center gap-1.5 rounded-full bg-[#00D4FF]/10 px-2.5 py-1\">\n <Mail className=\"size-3 text-[#00D4FF]\" />\n <span className=\"font-semibold text-[#0099BB] text-[11px]\">Auto</span>\n </div>\n </div>\n\n {/* Report list */}\n <div className=\"mt-4 space-y-2\">\n {REPORTS.map((r, i) => {\n const st = statusConfig[r.status]\n const Icon = st.icon\n const isActive = i === activeIdx\n return (\n <m.div\n key={r.name}\n animate={{\n borderColor: isActive ? \"#00D4FF\" : \"#f3f4f6\",\n }}\n transition={{ duration: 0.3 }}\n className=\"rounded-lg border bg-white px-3 py-2.5\"\n >\n <div className=\"flex items-center gap-2\">\n <Icon className={cn(\"size-3.5 shrink-0\", st.colour)} />\n <span className=\"flex-1 truncate font-semibold text-[12px] text-gray-800\">\n {r.name}\n </span>\n <span className=\"text-[10px] text-gray-400\">{r.frequency}</span>\n </div>\n\n {isActive && (\n <m.div\n initial={{ opacity: 0, height: 0 }}\n animate={{ opacity: 1, height: \"auto\" }}\n transition={{ duration: 0.25 }}\n className=\"mt-2 grid grid-cols-2 gap-2 border-gray-100 border-t pt-2\"\n >\n <div>\n <p className=\"text-[9px] text-gray-400\">Recipients</p>\n <p className=\"font-mono text-[10px] text-gray-600\">{r.recipients}</p>\n </div>\n <div>\n <p className=\"text-[9px] text-gray-400\">Last sent</p>\n <p className=\"font-medium text-[10px] text-gray-700\">{r.lastSent}</p>\n </div>\n </m.div>\n )}\n </m.div>\n )\n })}\n </div>\n </div>\n </LazyMotion>\n )\n}\n"]}
@@ -1,6 +1,7 @@
1
1
  "use client";
2
- import { useAnimationTimer } from '../chunk-RXV2XUDZ.js';
3
- import { cn } from '../chunk-GZNLQE3I.js';
2
+ import { useAnimationTimer } from '../chunk-SLSJ6OOL.js';
3
+ import { cn } from '../chunk-MHRCB42B.js';
4
+ import '../chunk-2NMEKWO5.js';
4
5
  import { Lock, ShieldCheck } from 'lucide-react';
5
6
  import { LazyMotion, domAnimation, m } from 'motion/react';
6
7
  import { useRef, useEffect } from 'react';
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/animations/animation-secure-messaging.tsx"],"names":[],"mappings":"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","file":"animation-secure-messaging.js","sourcesContent":["\"use client\"\n\nimport { Lock, ShieldCheck } from \"lucide-react\"\nimport { domAnimation, LazyMotion, m } from \"motion/react\"\nimport { useEffect, useRef } from \"react\"\n\nimport { useAnimationTimer } from \"../hooks/use-animation-timer\"\n\nimport { cn } from \"../lib/utils\"\n\ntype Message = {\n direction: \"sent\" | \"received\"\n label: string\n fields: { key: string; value: string }[]\n encrypted: boolean\n}\n\nconst MESSAGES: Message[] = [\n {\n direction: \"sent\",\n label: \"Originator data sent\",\n fields: [\n { key: \"Name\", value: \"J\\u2022\\u2022\\u2022\\u2022\\u2022\\u2022 S\\u2022\\u2022\\u2022h\" },\n { key: \"Account\", value: \"\\u2022\\u2022\\u2022\\u2022\\u2022\\u20227a4f\" },\n { key: \"Institution\", value: \"Aqua Exchange\" },\n ],\n encrypted: true,\n },\n {\n direction: \"received\",\n label: \"Beneficiary data received\",\n fields: [\n { key: \"Name\", value: \"L\\u2022\\u2022 C\\u2022\\u2022n\" },\n { key: \"Account\", value: \"\\u2022\\u2022\\u2022\\u2022\\u2022\\u2022e81b\" },\n { key: \"Institution\", value: \"Atlas Digital\" },\n ],\n encrypted: true,\n },\n {\n direction: \"sent\",\n label: \"Verification complete\",\n fields: [\n { key: \"Status\", value: \"Both parties verified\" },\n { key: \"Protocol\", value: \"TRP v2.0\" },\n { key: \"Ref\", value: \"TR-2024-0847\" },\n ],\n encrypted: true,\n },\n]\n\nexport default function AnimationSecureMessaging({ className }: { className?: string }) {\n const [timerRef, tick] = useAnimationTimer(2800)\n // Reset to [0] after showing all messages, then accumulate again\n const cyclePos = tick % (MESSAGES.length + 1)\n const visible =\n cyclePos === 0\n ? [0]\n : Array.from(\n { length: Math.min(cyclePos + 1, MESSAGES.length) },\n (_, i) => i % MESSAGES.length,\n )\n const scrollRef = useRef<HTMLDivElement>(null)\n\n useEffect(() => {\n if (scrollRef.current) {\n scrollRef.current.scrollTo({ top: scrollRef.current.scrollHeight, behavior: \"smooth\" })\n }\n }, [])\n\n return (\n <LazyMotion features={domAnimation}>\n <div ref={timerRef} className={cn(\"flex flex-col\", className)}>\n {/* Header */}\n <div className=\"flex items-center gap-2 border-gray-100 border-b bg-gray-50/80 px-4 py-2\">\n <Lock className=\"size-3 text-[#00D4FF]\" />\n <span className=\"font-semibold text-[11px] text-gray-700\">Encrypted Channel</span>\n <span className=\"ml-auto flex items-center gap-1 text-[10px] text-emerald-600\">\n <ShieldCheck className=\"size-3\" />\n TLS 1.3\n </span>\n </div>\n\n {/* Messages */}\n <div ref={scrollRef} className=\"scrollbar-none flex-1 space-y-3 overflow-y-auto px-4 py-3\">\n {visible.map((msgIdx, i) => {\n const msg = MESSAGES[msgIdx]\n const isLatest = i === visible.length - 1\n return (\n <m.div\n key={`${i}-${msgIdx}`}\n initial={{ opacity: 0, y: 10 }}\n animate={{ opacity: isLatest ? 1 : 0.5, y: 0 }}\n transition={{ duration: 0.35 }}\n className={cn(\n \"max-w-[85%] rounded-lg border bg-white p-3\",\n msg.direction === \"sent\" ? \"ml-auto border-[#00D4FF]/20\" : \"border-gray-100\",\n )}\n >\n <div className=\"flex items-center gap-1.5\">\n <Lock className=\"size-2.5 text-[#00D4FF]\" />\n <span className=\"font-semibold text-[10px] text-gray-600\">{msg.label}</span>\n </div>\n <div className=\"mt-2 space-y-1\">\n {msg.fields.map((f) => (\n <div key={f.key} className=\"flex items-center justify-between\">\n <span className=\"text-[10px] text-gray-400\">{f.key}</span>\n <span className=\"font-medium font-mono text-[10px] text-gray-700\">\n {f.value}\n </span>\n </div>\n ))}\n </div>\n </m.div>\n )\n })}\n </div>\n\n {/* Footer */}\n <div className=\"border-gray-100 border-t bg-gray-50/60 px-4 py-2\">\n <p className=\"text-center text-[9px] text-gray-400\">\n AES-256 at rest {\"\\u2022\"} TLS 1.3 in transit {\"\\u2022\"} End-to-end encrypted\n </p>\n </div>\n </div>\n </LazyMotion>\n )\n}\n"]}
1
+ {"version":3,"sources":["../../src/animations/animation-secure-messaging.tsx"],"names":[],"mappings":";;;;;;;;AAiBA,IAAM,QAAA,GAAsB;AAAA,EAC1B;AAAA,IACE,SAAA,EAAW,MAAA;AAAA,IACX,KAAA,EAAO,sBAAA;AAAA,IACP,MAAA,EAAQ;AAAA,MACN,EAAE,GAAA,EAAK,MAAA,EAAQ,KAAA,EAAO,4DAAA,EAA6D;AAAA,MACnF,EAAE,GAAA,EAAK,SAAA,EAAW,KAAA,EAAO,0CAAA,EAA2C;AAAA,MACpE,EAAE,GAAA,EAAK,aAAA,EAAe,KAAA,EAAO,eAAA;AAAgB,KAC/C;AAAA,IACA,SAAA,EAAW;AAAA,GACb;AAAA,EACA;AAAA,IACE,SAAA,EAAW,UAAA;AAAA,IACX,KAAA,EAAO,2BAAA;AAAA,IACP,MAAA,EAAQ;AAAA,MACN,EAAE,GAAA,EAAK,MAAA,EAAQ,KAAA,EAAO,8BAAA,EAA+B;AAAA,MACrD,EAAE,GAAA,EAAK,SAAA,EAAW,KAAA,EAAO,0CAAA,EAA2C;AAAA,MACpE,EAAE,GAAA,EAAK,aAAA,EAAe,KAAA,EAAO,eAAA;AAAgB,KAC/C;AAAA,IACA,SAAA,EAAW;AAAA,GACb;AAAA,EACA;AAAA,IACE,SAAA,EAAW,MAAA;AAAA,IACX,KAAA,EAAO,uBAAA;AAAA,IACP,MAAA,EAAQ;AAAA,MACN,EAAE,GAAA,EAAK,QAAA,EAAU,KAAA,EAAO,uBAAA,EAAwB;AAAA,MAChD,EAAE,GAAA,EAAK,UAAA,EAAY,KAAA,EAAO,UAAA,EAAW;AAAA,MACrC,EAAE,GAAA,EAAK,KAAA,EAAO,KAAA,EAAO,cAAA;AAAe,KACtC;AAAA,IACA,SAAA,EAAW;AAAA;AAEf,CAAA;AAEe,SAAR,wBAAA,CAA0C,EAAE,SAAA,EAAU,EAA2B;AACtF,EAAA,MAAM,CAAC,QAAA,EAAU,IAAI,CAAA,GAAI,kBAAkB,IAAI,CAAA;AAE/C,EAAA,MAAM,QAAA,GAAW,IAAA,IAAQ,QAAA,CAAS,MAAA,GAAS,CAAA,CAAA;AAC3C,EAAA,MAAM,UACJ,QAAA,KAAa,CAAA,GACT,CAAC,CAAC,IACF,KAAA,CAAM,IAAA;AAAA,IACJ,EAAE,QAAQ,IAAA,CAAK,GAAA,CAAI,WAAW,CAAA,EAAG,QAAA,CAAS,MAAM,CAAA,EAAE;AAAA,IAClD,CAAC,CAAA,EAAG,CAAA,KAAM,CAAA,GAAI,QAAA,CAAS;AAAA,GACzB;AACN,EAAA,MAAM,SAAA,GAAY,OAAuB,IAAI,CAAA;AAE7C,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,UAAU,OAAA,EAAS;AACrB,MAAA,SAAA,CAAU,OAAA,CAAQ,SAAS,EAAE,GAAA,EAAK,UAAU,OAAA,CAAQ,YAAA,EAAc,QAAA,EAAU,QAAA,EAAU,CAAA;AAAA,IACxF;AAAA,EACF,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,uBACE,GAAA,CAAC,UAAA,EAAA,EAAW,QAAA,EAAU,YAAA,EACpB,QAAA,kBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,GAAA,EAAK,QAAA,EAAU,SAAA,EAAW,EAAA,CAAG,eAAA,EAAiB,SAAS,CAAA,EAE1D,QAAA,EAAA;AAAA,oBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,0EAAA,EACb,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,IAAA,EAAA,EAAK,WAAU,uBAAA,EAAwB,CAAA;AAAA,sBACxC,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,yCAAA,EAA0C,QAAA,EAAA,mBAAA,EAAiB,CAAA;AAAA,sBAC3E,IAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,8DAAA,EACd,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,WAAA,EAAA,EAAY,WAAU,QAAA,EAAS,CAAA;AAAA,QAAE;AAAA,OAAA,EAEpC;AAAA,KAAA,EACF,CAAA;AAAA,oBAGA,GAAA,CAAC,KAAA,EAAA,EAAI,GAAA,EAAK,SAAA,EAAW,SAAA,EAAU,6DAC5B,QAAA,EAAA,OAAA,CAAQ,GAAA,CAAI,CAAC,MAAA,EAAQ,CAAA,KAAM;AAC1B,MAAA,MAAM,GAAA,GAAM,SAAS,MAAM,CAAA;AAC3B,MAAA,MAAM,QAAA,GAAW,CAAA,KAAM,OAAA,CAAQ,MAAA,GAAS,CAAA;AACxC,MAAA,uBACE,IAAA;AAAA,QAAC,CAAA,CAAE,GAAA;AAAA,QAAF;AAAA,UAEC,OAAA,EAAS,EAAE,OAAA,EAAS,CAAA,EAAG,GAAG,EAAA,EAAG;AAAA,UAC7B,SAAS,EAAE,OAAA,EAAS,WAAW,CAAA,GAAI,GAAA,EAAK,GAAG,CAAA,EAAE;AAAA,UAC7C,UAAA,EAAY,EAAE,QAAA,EAAU,IAAA,EAAK;AAAA,UAC7B,SAAA,EAAW,EAAA;AAAA,YACT,4CAAA;AAAA,YACA,GAAA,CAAI,SAAA,KAAc,MAAA,GAAS,6BAAA,GAAgC;AAAA,WAC7D;AAAA,UAEA,QAAA,EAAA;AAAA,4BAAA,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,2BAAA,EACb,QAAA,EAAA;AAAA,8BAAA,GAAA,CAAC,IAAA,EAAA,EAAK,WAAU,yBAAA,EAA0B,CAAA;AAAA,8BAC1C,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,yCAAA,EAA2C,cAAI,KAAA,EAAM;AAAA,aAAA,EACvE,CAAA;AAAA,4BACA,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gBAAA,EACZ,QAAA,EAAA,GAAA,CAAI,MAAA,CAAO,GAAA,CAAI,CAAC,CAAA,qBACf,IAAA,CAAC,KAAA,EAAA,EAAgB,SAAA,EAAU,mCAAA,EACzB,QAAA,EAAA;AAAA,8BAAA,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,2BAAA,EAA6B,QAAA,EAAA,CAAA,CAAE,GAAA,EAAI,CAAA;AAAA,8BACnD,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,iDAAA,EACb,YAAE,KAAA,EACL;AAAA,aAAA,EAAA,EAJQ,CAAA,CAAE,GAKZ,CACD,CAAA,EACH;AAAA;AAAA,SAAA;AAAA,QAtBK,CAAA,EAAG,CAAC,CAAA,CAAA,EAAI,MAAM,CAAA;AAAA,OAuBrB;AAAA,IAEJ,CAAC,CAAA,EACH,CAAA;AAAA,wBAGC,KAAA,EAAA,EAAI,SAAA,EAAU,oDACb,QAAA,kBAAA,IAAA,CAAC,GAAA,EAAA,EAAE,WAAU,sCAAA,EAAuC,QAAA,EAAA;AAAA,MAAA,kBAAA;AAAA,MACjC,QAAA;AAAA,MAAS,sBAAA;AAAA,MAAqB,QAAA;AAAA,MAAS;AAAA,KAAA,EAC1D,CAAA,EACF;AAAA,GAAA,EACF,CAAA,EACF,CAAA;AAEJ","file":"animation-secure-messaging.js","sourcesContent":["\"use client\"\n\nimport { Lock, ShieldCheck } from \"lucide-react\"\nimport { domAnimation, LazyMotion, m } from \"motion/react\"\nimport { useEffect, useRef } from \"react\"\n\nimport { useAnimationTimer } from \"../hooks/use-animation-timer\"\n\nimport { cn } from \"../lib/utils\"\n\ntype Message = {\n direction: \"sent\" | \"received\"\n label: string\n fields: { key: string; value: string }[]\n encrypted: boolean\n}\n\nconst MESSAGES: Message[] = [\n {\n direction: \"sent\",\n label: \"Originator data sent\",\n fields: [\n { key: \"Name\", value: \"J\\u2022\\u2022\\u2022\\u2022\\u2022\\u2022 S\\u2022\\u2022\\u2022h\" },\n { key: \"Account\", value: \"\\u2022\\u2022\\u2022\\u2022\\u2022\\u20227a4f\" },\n { key: \"Institution\", value: \"Aqua Exchange\" },\n ],\n encrypted: true,\n },\n {\n direction: \"received\",\n label: \"Beneficiary data received\",\n fields: [\n { key: \"Name\", value: \"L\\u2022\\u2022 C\\u2022\\u2022n\" },\n { key: \"Account\", value: \"\\u2022\\u2022\\u2022\\u2022\\u2022\\u2022e81b\" },\n { key: \"Institution\", value: \"Atlas Digital\" },\n ],\n encrypted: true,\n },\n {\n direction: \"sent\",\n label: \"Verification complete\",\n fields: [\n { key: \"Status\", value: \"Both parties verified\" },\n { key: \"Protocol\", value: \"TRP v2.0\" },\n { key: \"Ref\", value: \"TR-2024-0847\" },\n ],\n encrypted: true,\n },\n]\n\nexport default function AnimationSecureMessaging({ className }: { className?: string }) {\n const [timerRef, tick] = useAnimationTimer(2800)\n // Reset to [0] after showing all messages, then accumulate again\n const cyclePos = tick % (MESSAGES.length + 1)\n const visible =\n cyclePos === 0\n ? [0]\n : Array.from(\n { length: Math.min(cyclePos + 1, MESSAGES.length) },\n (_, i) => i % MESSAGES.length,\n )\n const scrollRef = useRef<HTMLDivElement>(null)\n\n useEffect(() => {\n if (scrollRef.current) {\n scrollRef.current.scrollTo({ top: scrollRef.current.scrollHeight, behavior: \"smooth\" })\n }\n }, [])\n\n return (\n <LazyMotion features={domAnimation}>\n <div ref={timerRef} className={cn(\"flex flex-col\", className)}>\n {/* Header */}\n <div className=\"flex items-center gap-2 border-gray-100 border-b bg-gray-50/80 px-4 py-2\">\n <Lock className=\"size-3 text-[#00D4FF]\" />\n <span className=\"font-semibold text-[11px] text-gray-700\">Encrypted Channel</span>\n <span className=\"ml-auto flex items-center gap-1 text-[10px] text-emerald-600\">\n <ShieldCheck className=\"size-3\" />\n TLS 1.3\n </span>\n </div>\n\n {/* Messages */}\n <div ref={scrollRef} className=\"scrollbar-none flex-1 space-y-3 overflow-y-auto px-4 py-3\">\n {visible.map((msgIdx, i) => {\n const msg = MESSAGES[msgIdx]\n const isLatest = i === visible.length - 1\n return (\n <m.div\n key={`${i}-${msgIdx}`}\n initial={{ opacity: 0, y: 10 }}\n animate={{ opacity: isLatest ? 1 : 0.5, y: 0 }}\n transition={{ duration: 0.35 }}\n className={cn(\n \"max-w-[85%] rounded-lg border bg-white p-3\",\n msg.direction === \"sent\" ? \"ml-auto border-[#00D4FF]/20\" : \"border-gray-100\",\n )}\n >\n <div className=\"flex items-center gap-1.5\">\n <Lock className=\"size-2.5 text-[#00D4FF]\" />\n <span className=\"font-semibold text-[10px] text-gray-600\">{msg.label}</span>\n </div>\n <div className=\"mt-2 space-y-1\">\n {msg.fields.map((f) => (\n <div key={f.key} className=\"flex items-center justify-between\">\n <span className=\"text-[10px] text-gray-400\">{f.key}</span>\n <span className=\"font-medium font-mono text-[10px] text-gray-700\">\n {f.value}\n </span>\n </div>\n ))}\n </div>\n </m.div>\n )\n })}\n </div>\n\n {/* Footer */}\n <div className=\"border-gray-100 border-t bg-gray-50/60 px-4 py-2\">\n <p className=\"text-center text-[9px] text-gray-400\">\n AES-256 at rest {\"\\u2022\"} TLS 1.3 in transit {\"\\u2022\"} End-to-end encrypted\n </p>\n </div>\n </div>\n </LazyMotion>\n )\n}\n"]}
@@ -1,6 +1,7 @@
1
1
  "use client";
2
- import { EASE_OUT } from '../chunk-TAPJEVUA.js';
3
- import { cn } from '../chunk-GZNLQE3I.js';
2
+ import { EASE_OUT } from '../chunk-D3KGHRRC.js';
3
+ import { cn } from '../chunk-MHRCB42B.js';
4
+ import '../chunk-2NMEKWO5.js';
4
5
  import { motion } from 'motion/react';
5
6
  import { jsxs, jsx } from 'react/jsx-runtime';
6
7
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/animations/animation-slack-notification.tsx"],"names":[],"mappings":"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","file":"animation-slack-notification.js","sourcesContent":["\"use client\"\n\nimport { motion } from \"motion/react\"\n\nimport { EASE_OUT } from \"../lib/animation\"\nimport { cn } from \"../lib/utils\"\n\nexport default function AnimationSlackNotification({ className }: { className?: string }) {\n return (\n <div className={cn(\"flex flex-col bg-white p-4\", className)}>\n {/* Channel header */}\n <div className=\"flex items-center gap-2 border-gray-100 border-b pb-2.5\">\n <span className=\"font-bold text-[13px] text-gray-900\"># compliance-alerts</span>\n <span className=\"rounded bg-red-100 px-1.5 py-0.5 font-bold text-[9px] text-red-600\">\n 3 new\n </span>\n </div>\n\n {/* Bot message */}\n <motion.div\n initial={{ opacity: 0, y: 10 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ duration: 0.5, ease: EASE_OUT, delay: 0.3 }}\n className=\"mt-3 flex gap-2.5\"\n >\n {/* Bot avatar */}\n <div className=\"flex size-8 shrink-0 items-center justify-center rounded-md bg-gray-900\">\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\">\n <path d=\"M7 1L12 4V10L7 13L2 10V4L7 1Z\" stroke=\"#00D4FF\" strokeWidth=\"1.2\" />\n </svg>\n </div>\n\n <div className=\"min-w-0 flex-1\">\n <div className=\"flex items-baseline gap-2\">\n <span className=\"font-bold text-[13px] text-gray-900\">Cogentic</span>\n <span className=\"text-[10px] text-gray-400\">APP 10:42 AM</span>\n </div>\n\n {/* Attachment card */}\n <motion.div\n initial={{ opacity: 0, x: -8 }}\n animate={{ opacity: 1, x: 0 }}\n transition={{ duration: 0.4, ease: EASE_OUT, delay: 0.6 }}\n className=\"mt-1.5 rounded-md border-red-400 border-l-[3px] bg-gray-50 px-3 py-2.5\"\n >\n <p className=\"font-semibold text-[12px] text-gray-900\">\n Transfer flagged — manual review required\n </p>\n <div className=\"mt-1.5 flex flex-wrap gap-x-4 gap-y-1\">\n <span className=\"text-[11px] text-gray-500\">\n <span className=\"font-medium text-gray-700\">TXN-0847</span> &middot; AU &rarr; SG\n </span>\n <span className=\"text-[11px] text-gray-500\">\n Risk: <span className=\"font-semibold text-red-500\">High (72)</span>\n </span>\n </div>\n <p className=\"mt-1.5 text-[11px] text-gray-500 leading-relaxed\">\n PEP screening match detected. Beneficiary threshold exceeded for SG corridor.\n </p>\n </motion.div>\n\n {/* Action buttons */}\n <motion.div\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n transition={{ duration: 0.3, delay: 0.9 }}\n className=\"mt-2 flex gap-1.5\"\n >\n {[\"Review\", \"Approve\", \"Escalate\"].map((label) => (\n <span\n key={label}\n className=\"rounded border border-gray-200 bg-white px-2.5 py-1 font-medium text-[11px] text-gray-700\"\n >\n {label}\n </span>\n ))}\n </motion.div>\n\n {/* Thread reply */}\n <motion.div\n initial={{ opacity: 0, y: 6 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ duration: 0.4, ease: EASE_OUT, delay: 1.3 }}\n className=\"mt-3 flex items-start gap-2 border-gray-100 border-t pt-2.5\"\n >\n <div className=\"flex size-5 shrink-0 items-center justify-center rounded-full bg-emerald-100 font-bold text-[9px] text-emerald-700\">\n JC\n </div>\n <div>\n <span className=\"font-semibold text-[11px] text-gray-900\">J. Chen</span>\n <span className=\"ml-1.5 text-[10px] text-gray-400\">10:44 AM</span>\n <p className=\"mt-0.5 text-[11px] text-gray-600\">\n Reviewed. PEP match is a false positive — approved.\n </p>\n </div>\n </motion.div>\n </div>\n </motion.div>\n </div>\n )\n}\n"]}
1
+ {"version":3,"sources":["../../src/animations/animation-slack-notification.tsx"],"names":[],"mappings":"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","file":"animation-slack-notification.js","sourcesContent":["\"use client\"\n\nimport { motion } from \"motion/react\"\n\nimport { EASE_OUT } from \"../lib/animation\"\nimport { cn } from \"../lib/utils\"\n\nexport default function AnimationSlackNotification({ className }: { className?: string }) {\n return (\n <div className={cn(\"flex flex-col bg-white p-4\", className)}>\n {/* Channel header */}\n <div className=\"flex items-center gap-2 border-gray-100 border-b pb-2.5\">\n <span className=\"font-bold text-[13px] text-gray-900\"># compliance-alerts</span>\n <span className=\"rounded bg-red-100 px-1.5 py-0.5 font-bold text-[9px] text-red-600\">\n 3 new\n </span>\n </div>\n\n {/* Bot message */}\n <motion.div\n initial={{ opacity: 0, y: 10 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ duration: 0.5, ease: EASE_OUT, delay: 0.3 }}\n className=\"mt-3 flex gap-2.5\"\n >\n {/* Bot avatar */}\n <div className=\"flex size-8 shrink-0 items-center justify-center rounded-md bg-gray-900\">\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\">\n <path d=\"M7 1L12 4V10L7 13L2 10V4L7 1Z\" stroke=\"#00D4FF\" strokeWidth=\"1.2\" />\n </svg>\n </div>\n\n <div className=\"min-w-0 flex-1\">\n <div className=\"flex items-baseline gap-2\">\n <span className=\"font-bold text-[13px] text-gray-900\">Cogentic</span>\n <span className=\"text-[10px] text-gray-400\">APP 10:42 AM</span>\n </div>\n\n {/* Attachment card */}\n <motion.div\n initial={{ opacity: 0, x: -8 }}\n animate={{ opacity: 1, x: 0 }}\n transition={{ duration: 0.4, ease: EASE_OUT, delay: 0.6 }}\n className=\"mt-1.5 rounded-md border-red-400 border-l-[3px] bg-gray-50 px-3 py-2.5\"\n >\n <p className=\"font-semibold text-[12px] text-gray-900\">\n Transfer flagged — manual review required\n </p>\n <div className=\"mt-1.5 flex flex-wrap gap-x-4 gap-y-1\">\n <span className=\"text-[11px] text-gray-500\">\n <span className=\"font-medium text-gray-700\">TXN-0847</span> &middot; AU &rarr; SG\n </span>\n <span className=\"text-[11px] text-gray-500\">\n Risk: <span className=\"font-semibold text-red-500\">High (72)</span>\n </span>\n </div>\n <p className=\"mt-1.5 text-[11px] text-gray-500 leading-relaxed\">\n PEP screening match detected. Beneficiary threshold exceeded for SG corridor.\n </p>\n </motion.div>\n\n {/* Action buttons */}\n <motion.div\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n transition={{ duration: 0.3, delay: 0.9 }}\n className=\"mt-2 flex gap-1.5\"\n >\n {[\"Review\", \"Approve\", \"Escalate\"].map((label) => (\n <span\n key={label}\n className=\"rounded border border-gray-200 bg-white px-2.5 py-1 font-medium text-[11px] text-gray-700\"\n >\n {label}\n </span>\n ))}\n </motion.div>\n\n {/* Thread reply */}\n <motion.div\n initial={{ opacity: 0, y: 6 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ duration: 0.4, ease: EASE_OUT, delay: 1.3 }}\n className=\"mt-3 flex items-start gap-2 border-gray-100 border-t pt-2.5\"\n >\n <div className=\"flex size-5 shrink-0 items-center justify-center rounded-full bg-emerald-100 font-bold text-[9px] text-emerald-700\">\n JC\n </div>\n <div>\n <span className=\"font-semibold text-[11px] text-gray-900\">J. Chen</span>\n <span className=\"ml-1.5 text-[10px] text-gray-400\">10:44 AM</span>\n <p className=\"mt-0.5 text-[11px] text-gray-600\">\n Reviewed. PEP match is a false positive — approved.\n </p>\n </div>\n </motion.div>\n </div>\n </motion.div>\n </div>\n )\n}\n"]}
@@ -1,5 +1,6 @@
1
1
  "use client";
2
- import { cn } from '../chunk-GZNLQE3I.js';
2
+ import { cn } from '../chunk-MHRCB42B.js';
3
+ import '../chunk-2NMEKWO5.js';
3
4
  import { jsxs, jsx } from 'react/jsx-runtime';
4
5
 
5
6
  var ITEMS = [
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/animations/animation-sop-mapping.tsx"],"names":[],"mappings":"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","file":"animation-sop-mapping.js","sourcesContent":["\"use client\"\n\nimport { cn } from \"../lib/utils\"\n\ntype SopItem = {\n code: string\n regulation: string\n jurisdiction: string\n flag: string\n version: string\n coverage: string\n lastReview: string\n status: \"mapped\" | \"review\" | \"updated\"\n}\n\nconst ITEMS: SopItem[] = [\n {\n code: \"SOP-001\",\n regulation: \"AML/CFT Policy\",\n jurisdiction: \"AUSTRAC\",\n flag: \"\\u{1F1E6}\\u{1F1FA}\",\n version: \"v3.2\",\n coverage: \"14 controls mapped\",\n lastReview: \"Reviewed 3 days ago\",\n status: \"mapped\",\n },\n {\n code: \"SOP-014\",\n regulation: \"Travel Rule — IVMS101\",\n jurisdiction: \"MAS\",\n flag: \"\\u{1F1F8}\\u{1F1EC}\",\n version: \"v2.1\",\n coverage: \"8 controls mapped\",\n lastReview: \"Updated 12 hours ago\",\n status: \"updated\",\n },\n {\n code: \"SOP-007\",\n regulation: \"Enhanced Due Diligence\",\n jurisdiction: \"FCA\",\n flag: \"\\u{1F1EC}\\u{1F1E7}\",\n version: \"v1.8\",\n coverage: \"11 controls mapped\",\n lastReview: \"Review due in 2 days\",\n status: \"review\",\n },\n {\n code: \"SOP-023\",\n regulation: \"Sanctions Screening\",\n jurisdiction: \"OFAC\",\n flag: \"\\u{1F1FA}\\u{1F1F8}\",\n version: \"v4.0\",\n coverage: \"6 controls mapped\",\n lastReview: \"Reviewed 1 week ago\",\n status: \"mapped\",\n },\n {\n code: \"SOP-009\",\n regulation: \"MiCA Compliance\",\n jurisdiction: \"EU\",\n flag: \"\\u{1F1EA}\\u{1F1FA}\",\n version: \"v1.4\",\n coverage: \"19 controls mapped\",\n lastReview: \"Updated 2 days ago\",\n status: \"updated\",\n },\n {\n code: \"SOP-031\",\n regulation: \"VA Licensing Framework\",\n jurisdiction: \"SFC\",\n flag: \"\\u{1F1ED}\\u{1F1F0}\",\n version: \"v2.0\",\n coverage: \"9 controls mapped\",\n lastReview: \"Reviewed 5 days ago\",\n status: \"mapped\",\n },\n {\n code: \"SOP-018\",\n regulation: \"Threshold Reporting\",\n jurisdiction: \"FINTRAC\",\n flag: \"\\u{1F1E8}\\u{1F1E6}\",\n version: \"v3.1\",\n coverage: \"7 controls mapped\",\n lastReview: \"Review due tomorrow\",\n status: \"review\",\n },\n {\n code: \"SOP-042\",\n regulation: \"VASP Obligations\",\n jurisdiction: \"VARA\",\n flag: \"\\u{1F1E6}\\u{1F1EA}\",\n version: \"v1.1\",\n coverage: \"12 controls mapped\",\n lastReview: \"Reviewed 2 weeks ago\",\n status: \"mapped\",\n },\n]\n\nconst statusStyle: Record<SopItem[\"status\"], { dot: string; label: string; bg: string }> = {\n mapped: { dot: \"bg-emerald-400\", label: \"Mapped\", bg: \"bg-emerald-50 text-emerald-700\" },\n review: { dot: \"bg-amber-400\", label: \"Review\", bg: \"bg-amber-50 text-amber-700\" },\n updated: { dot: \"bg-[#00D4FF]\", label: \"Updated\", bg: \"bg-sky-50 text-sky-700\" },\n}\n\nexport default function AnimationSopMapping({ className }: { className?: string }) {\n const doubled = [...ITEMS, ...ITEMS]\n\n return (\n <div className={cn(\"relative flex items-center overflow-hidden\", className)}>\n {/* Fade edges */}\n <div className=\"pointer-events-none absolute inset-y-0 left-0 z-10 w-16 bg-gradient-to-r from-card/40 to-transparent\" />\n <div className=\"pointer-events-none absolute inset-y-0 right-0 z-10 w-16 bg-gradient-to-l from-card/40 to-transparent\" />\n\n {/* Scrolling row */}\n <div\n className=\"flex w-max animate-marquee-left gap-4 px-4\"\n style={{ animationDuration: \"55s\" }}\n >\n {doubled.map((item, i) => {\n const st = statusStyle[item.status]\n return (\n <div\n key={`${item.code}-${i}`}\n className=\"flex shrink-0 flex-col rounded-xl border border-gray-200 bg-white shadow-sm\"\n style={{ width: 260 }}\n >\n {/* Header */}\n <div className=\"flex items-center gap-2 border-gray-100 border-b px-4 py-3\">\n <span className=\"font-bold font-mono text-[11px] text-gray-400\">{item.code}</span>\n <span className=\"text-[10px] text-gray-300\">{item.version}</span>\n <span\n className={cn(\n \"ml-auto rounded-full px-2 py-0.5 font-semibold text-[10px]\",\n st.bg,\n )}\n >\n {st.label}\n </span>\n </div>\n\n {/* Body */}\n <div className=\"flex flex-col gap-2.5 px-4 py-3\">\n <div>\n <p className=\"font-semibold text-[13px] text-gray-900 leading-snug\">\n {item.regulation}\n </p>\n <div className=\"mt-1 flex items-center gap-1.5\">\n <span className=\"text-sm\">{item.flag}</span>\n <span className=\"text-[11px] text-gray-500\">{item.jurisdiction}</span>\n </div>\n </div>\n\n {/* Progress bar */}\n <div>\n <div className=\"flex items-center justify-between\">\n <span className=\"font-medium text-[10px] text-gray-500\">{item.coverage}</span>\n </div>\n <div className=\"mt-1 h-1.5 overflow-hidden rounded-full bg-gray-100\">\n <div\n className={cn(\n \"h-full rounded-full\",\n item.status === \"mapped\"\n ? \"bg-emerald-400\"\n : item.status === \"updated\"\n ? \"bg-[#00D4FF]\"\n : \"bg-amber-400\",\n )}\n style={{\n width:\n item.status === \"mapped\"\n ? \"100%\"\n : item.status === \"updated\"\n ? \"85%\"\n : \"60%\",\n }}\n />\n </div>\n </div>\n\n <p className=\"text-[10px] text-gray-400\">{item.lastReview}</p>\n </div>\n </div>\n )\n })}\n </div>\n </div>\n )\n}\n"]}
1
+ {"version":3,"sources":["../../src/animations/animation-sop-mapping.tsx"],"names":[],"mappings":"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","file":"animation-sop-mapping.js","sourcesContent":["\"use client\"\n\nimport { cn } from \"../lib/utils\"\n\ntype SopItem = {\n code: string\n regulation: string\n jurisdiction: string\n flag: string\n version: string\n coverage: string\n lastReview: string\n status: \"mapped\" | \"review\" | \"updated\"\n}\n\nconst ITEMS: SopItem[] = [\n {\n code: \"SOP-001\",\n regulation: \"AML/CFT Policy\",\n jurisdiction: \"AUSTRAC\",\n flag: \"\\u{1F1E6}\\u{1F1FA}\",\n version: \"v3.2\",\n coverage: \"14 controls mapped\",\n lastReview: \"Reviewed 3 days ago\",\n status: \"mapped\",\n },\n {\n code: \"SOP-014\",\n regulation: \"Travel Rule — IVMS101\",\n jurisdiction: \"MAS\",\n flag: \"\\u{1F1F8}\\u{1F1EC}\",\n version: \"v2.1\",\n coverage: \"8 controls mapped\",\n lastReview: \"Updated 12 hours ago\",\n status: \"updated\",\n },\n {\n code: \"SOP-007\",\n regulation: \"Enhanced Due Diligence\",\n jurisdiction: \"FCA\",\n flag: \"\\u{1F1EC}\\u{1F1E7}\",\n version: \"v1.8\",\n coverage: \"11 controls mapped\",\n lastReview: \"Review due in 2 days\",\n status: \"review\",\n },\n {\n code: \"SOP-023\",\n regulation: \"Sanctions Screening\",\n jurisdiction: \"OFAC\",\n flag: \"\\u{1F1FA}\\u{1F1F8}\",\n version: \"v4.0\",\n coverage: \"6 controls mapped\",\n lastReview: \"Reviewed 1 week ago\",\n status: \"mapped\",\n },\n {\n code: \"SOP-009\",\n regulation: \"MiCA Compliance\",\n jurisdiction: \"EU\",\n flag: \"\\u{1F1EA}\\u{1F1FA}\",\n version: \"v1.4\",\n coverage: \"19 controls mapped\",\n lastReview: \"Updated 2 days ago\",\n status: \"updated\",\n },\n {\n code: \"SOP-031\",\n regulation: \"VA Licensing Framework\",\n jurisdiction: \"SFC\",\n flag: \"\\u{1F1ED}\\u{1F1F0}\",\n version: \"v2.0\",\n coverage: \"9 controls mapped\",\n lastReview: \"Reviewed 5 days ago\",\n status: \"mapped\",\n },\n {\n code: \"SOP-018\",\n regulation: \"Threshold Reporting\",\n jurisdiction: \"FINTRAC\",\n flag: \"\\u{1F1E8}\\u{1F1E6}\",\n version: \"v3.1\",\n coverage: \"7 controls mapped\",\n lastReview: \"Review due tomorrow\",\n status: \"review\",\n },\n {\n code: \"SOP-042\",\n regulation: \"VASP Obligations\",\n jurisdiction: \"VARA\",\n flag: \"\\u{1F1E6}\\u{1F1EA}\",\n version: \"v1.1\",\n coverage: \"12 controls mapped\",\n lastReview: \"Reviewed 2 weeks ago\",\n status: \"mapped\",\n },\n]\n\nconst statusStyle: Record<SopItem[\"status\"], { dot: string; label: string; bg: string }> = {\n mapped: { dot: \"bg-emerald-400\", label: \"Mapped\", bg: \"bg-emerald-50 text-emerald-700\" },\n review: { dot: \"bg-amber-400\", label: \"Review\", bg: \"bg-amber-50 text-amber-700\" },\n updated: { dot: \"bg-[#00D4FF]\", label: \"Updated\", bg: \"bg-sky-50 text-sky-700\" },\n}\n\nexport default function AnimationSopMapping({ className }: { className?: string }) {\n const doubled = [...ITEMS, ...ITEMS]\n\n return (\n <div className={cn(\"relative flex items-center overflow-hidden\", className)}>\n {/* Fade edges */}\n <div className=\"pointer-events-none absolute inset-y-0 left-0 z-10 w-16 bg-gradient-to-r from-card/40 to-transparent\" />\n <div className=\"pointer-events-none absolute inset-y-0 right-0 z-10 w-16 bg-gradient-to-l from-card/40 to-transparent\" />\n\n {/* Scrolling row */}\n <div\n className=\"flex w-max animate-marquee-left gap-4 px-4\"\n style={{ animationDuration: \"55s\" }}\n >\n {doubled.map((item, i) => {\n const st = statusStyle[item.status]\n return (\n <div\n key={`${item.code}-${i}`}\n className=\"flex shrink-0 flex-col rounded-xl border border-gray-200 bg-white shadow-sm\"\n style={{ width: 260 }}\n >\n {/* Header */}\n <div className=\"flex items-center gap-2 border-gray-100 border-b px-4 py-3\">\n <span className=\"font-bold font-mono text-[11px] text-gray-400\">{item.code}</span>\n <span className=\"text-[10px] text-gray-300\">{item.version}</span>\n <span\n className={cn(\n \"ml-auto rounded-full px-2 py-0.5 font-semibold text-[10px]\",\n st.bg,\n )}\n >\n {st.label}\n </span>\n </div>\n\n {/* Body */}\n <div className=\"flex flex-col gap-2.5 px-4 py-3\">\n <div>\n <p className=\"font-semibold text-[13px] text-gray-900 leading-snug\">\n {item.regulation}\n </p>\n <div className=\"mt-1 flex items-center gap-1.5\">\n <span className=\"text-sm\">{item.flag}</span>\n <span className=\"text-[11px] text-gray-500\">{item.jurisdiction}</span>\n </div>\n </div>\n\n {/* Progress bar */}\n <div>\n <div className=\"flex items-center justify-between\">\n <span className=\"font-medium text-[10px] text-gray-500\">{item.coverage}</span>\n </div>\n <div className=\"mt-1 h-1.5 overflow-hidden rounded-full bg-gray-100\">\n <div\n className={cn(\n \"h-full rounded-full\",\n item.status === \"mapped\"\n ? \"bg-emerald-400\"\n : item.status === \"updated\"\n ? \"bg-[#00D4FF]\"\n : \"bg-amber-400\",\n )}\n style={{\n width:\n item.status === \"mapped\"\n ? \"100%\"\n : item.status === \"updated\"\n ? \"85%\"\n : \"60%\",\n }}\n />\n </div>\n </div>\n\n <p className=\"text-[10px] text-gray-400\">{item.lastReview}</p>\n </div>\n </div>\n )\n })}\n </div>\n </div>\n )\n}\n"]}
@@ -1,7 +1,8 @@
1
1
  "use client";
2
- import { EASE_OUT } from '../chunk-TAPJEVUA.js';
3
- import { useAnimationTimer } from '../chunk-RXV2XUDZ.js';
4
- import { cn } from '../chunk-GZNLQE3I.js';
2
+ import { EASE_OUT } from '../chunk-D3KGHRRC.js';
3
+ import { useAnimationTimer } from '../chunk-SLSJ6OOL.js';
4
+ import { cn } from '../chunk-MHRCB42B.js';
5
+ import '../chunk-2NMEKWO5.js';
5
6
  import { LazyMotion, domAnimation, m } from 'motion/react';
6
7
  import { jsx, jsxs } from 'react/jsx-runtime';
7
8
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/animations/animation-team-routing.tsx"],"names":[],"mappings":"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","file":"animation-team-routing.js","sourcesContent":["\"use client\"\n\nimport { domAnimation, LazyMotion, m } from \"motion/react\"\n\nimport { useAnimationTimer } from \"../hooks/use-animation-timer\"\n\nimport { EASE_OUT } from \"../lib/animation\"\nimport { cn } from \"../lib/utils\"\n\ntype Transfer = {\n txn: string\n corridor: string\n risk: \"Low\" | \"Medium\" | \"High\"\n assignee: { name: string; initials: string; colour: string }\n reason: string\n}\n\nconst TRANSFERS: Transfer[] = [\n {\n txn: \"TXN-0847\",\n corridor: \"AU \\u2192 SG\",\n risk: \"High\",\n assignee: { name: \"Sarah Chen\", initials: \"SC\", colour: \"bg-violet-100 text-violet-700\" },\n reason: \"High risk \\u2192 Senior analyst\",\n },\n {\n txn: \"TXN-0848\",\n corridor: \"DE \\u2192 US\",\n risk: \"Low\",\n assignee: {\n name: \"Auto-approved\",\n initials: \"\\u2713\",\n colour: \"bg-emerald-100 text-emerald-700\",\n },\n reason: \"Low risk \\u2192 Auto-approval\",\n },\n {\n txn: \"TXN-0849\",\n corridor: \"JP \\u2192 AE\",\n risk: \"Medium\",\n assignee: { name: \"Marcus Webb\", initials: \"MW\", colour: \"bg-blue-100 text-blue-700\" },\n reason: \"MENA specialist\",\n },\n {\n txn: \"TXN-0850\",\n corridor: \"CA \\u2192 HK\",\n risk: \"High\",\n assignee: { name: \"Li Wei\", initials: \"LW\", colour: \"bg-amber-100 text-amber-700\" },\n reason: \"APAC jurisdiction\",\n },\n]\n\nconst riskColour: Record<string, string> = {\n Low: \"bg-emerald-50 text-emerald-700\",\n Medium: \"bg-amber-50 text-amber-700\",\n High: \"bg-red-50 text-red-700\",\n}\n\nexport default function AnimationTeamRouting({ className }: { className?: string }) {\n const [timerRef, tick] = useAnimationTimer(2400)\n const count = Math.min(tick + 1, 4)\n const startIdx = Math.max(0, tick + 1 - count)\n const visible = Array.from({ length: count }, (_, i) => (startIdx + i) % TRANSFERS.length)\n\n return (\n <LazyMotion features={domAnimation}>\n <div ref={timerRef} className={cn(\"flex flex-col p-5\", className)}>\n {/* Header */}\n <div className=\"flex items-center justify-between\">\n <div>\n <p className=\"font-semibold text-[15px] text-foreground\">Team Routing</p>\n <p className=\"text-[12px] text-gray-400\">Automatic assignment</p>\n </div>\n <div className=\"flex -space-x-1.5\">\n {[\"SC\", \"MW\", \"LW\"].map((init) => (\n <div\n key={init}\n className=\"flex size-6 items-center justify-center rounded-full border-2 border-white bg-gray-100 font-bold text-[9px] text-gray-500\"\n >\n {init}\n </div>\n ))}\n <div className=\"flex size-6 items-center justify-center rounded-full border-2 border-white bg-gray-100 font-bold text-[9px] text-gray-400\">\n +4\n </div>\n </div>\n </div>\n\n {/* Routing entries */}\n <div className=\"mt-4 space-y-2\">\n {visible.map((tIdx, i) => {\n const t = TRANSFERS[tIdx]\n const isLatest = i === visible.length - 1\n return (\n <m.div\n key={`${i}-${tIdx}`}\n initial={{ opacity: 0, x: -12 }}\n animate={{ opacity: isLatest ? 1 : 0.5, x: 0 }}\n transition={{ duration: 0.35, ease: EASE_OUT }}\n className={cn(\n \"flex items-center gap-3 rounded-lg border bg-white px-3 py-2.5\",\n isLatest ? \"border-gray-200 shadow-sm\" : \"border-gray-100\",\n )}\n >\n {/* Avatar */}\n <div\n className={cn(\n \"flex size-8 shrink-0 items-center justify-center rounded-full font-bold text-[11px]\",\n t.assignee.colour,\n )}\n >\n {t.assignee.initials}\n </div>\n\n {/* Info */}\n <div className=\"min-w-0 flex-1\">\n <div className=\"flex items-center gap-2\">\n <span className=\"font-bold font-mono text-[11px] text-gray-400\">{t.txn}</span>\n <span className=\"text-[11px] text-gray-400\">{t.corridor}</span>\n </div>\n <p className=\"truncate text-[11px] text-gray-500\">{t.reason}</p>\n </div>\n\n {/* Risk badge */}\n <span\n className={cn(\n \"shrink-0 rounded-full px-2 py-0.5 font-semibold text-[10px]\",\n riskColour[t.risk],\n )}\n >\n {t.risk}\n </span>\n </m.div>\n )\n })}\n </div>\n </div>\n </LazyMotion>\n )\n}\n"]}
1
+ {"version":3,"sources":["../../src/animations/animation-team-routing.tsx"],"names":[],"mappings":";;;;;;;AAiBA,IAAM,SAAA,GAAwB;AAAA,EAC5B;AAAA,IACE,GAAA,EAAK,UAAA;AAAA,IACL,QAAA,EAAU,cAAA;AAAA,IACV,IAAA,EAAM,MAAA;AAAA,IACN,UAAU,EAAE,IAAA,EAAM,cAAc,QAAA,EAAU,IAAA,EAAM,QAAQ,+BAAA,EAAgC;AAAA,IACxF,MAAA,EAAQ;AAAA,GACV;AAAA,EACA;AAAA,IACE,GAAA,EAAK,UAAA;AAAA,IACL,QAAA,EAAU,cAAA;AAAA,IACV,IAAA,EAAM,KAAA;AAAA,IACN,QAAA,EAAU;AAAA,MACR,IAAA,EAAM,eAAA;AAAA,MACN,QAAA,EAAU,QAAA;AAAA,MACV,MAAA,EAAQ;AAAA,KACV;AAAA,IACA,MAAA,EAAQ;AAAA,GACV;AAAA,EACA;AAAA,IACE,GAAA,EAAK,UAAA;AAAA,IACL,QAAA,EAAU,cAAA;AAAA,IACV,IAAA,EAAM,QAAA;AAAA,IACN,UAAU,EAAE,IAAA,EAAM,eAAe,QAAA,EAAU,IAAA,EAAM,QAAQ,2BAAA,EAA4B;AAAA,IACrF,MAAA,EAAQ;AAAA,GACV;AAAA,EACA;AAAA,IACE,GAAA,EAAK,UAAA;AAAA,IACL,QAAA,EAAU,cAAA;AAAA,IACV,IAAA,EAAM,MAAA;AAAA,IACN,UAAU,EAAE,IAAA,EAAM,UAAU,QAAA,EAAU,IAAA,EAAM,QAAQ,6BAAA,EAA8B;AAAA,IAClF,MAAA,EAAQ;AAAA;AAEZ,CAAA;AAEA,IAAM,UAAA,GAAqC;AAAA,EACzC,GAAA,EAAK,gCAAA;AAAA,EACL,MAAA,EAAQ,4BAAA;AAAA,EACR,IAAA,EAAM;AACR,CAAA;AAEe,SAAR,oBAAA,CAAsC,EAAE,SAAA,EAAU,EAA2B;AAClF,EAAA,MAAM,CAAC,QAAA,EAAU,IAAI,CAAA,GAAI,kBAAkB,IAAI,CAAA;AAC/C,EAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,GAAA,CAAI,IAAA,GAAO,GAAG,CAAC,CAAA;AAClC,EAAA,MAAM,WAAW,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,IAAA,GAAO,IAAI,KAAK,CAAA;AAC7C,EAAA,MAAM,OAAA,GAAU,KAAA,CAAM,IAAA,CAAK,EAAE,MAAA,EAAQ,KAAA,EAAM,EAAG,CAAC,CAAA,EAAG,CAAA,KAAA,CAAO,QAAA,GAAW,CAAA,IAAK,UAAU,MAAM,CAAA;AAEzF,EAAA,uBACE,GAAA,CAAC,UAAA,EAAA,EAAW,QAAA,EAAU,YAAA,EACpB,QAAA,kBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,GAAA,EAAK,QAAA,EAAU,SAAA,EAAW,EAAA,CAAG,mBAAA,EAAqB,SAAS,CAAA,EAE9D,QAAA,EAAA;AAAA,oBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,mCAAA,EACb,QAAA,EAAA;AAAA,sBAAA,IAAA,CAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,2CAAA,EAA4C,QAAA,EAAA,cAAA,EAAY,CAAA;AAAA,wBACrE,GAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,2BAAA,EAA4B,QAAA,EAAA,sBAAA,EAAoB;AAAA,OAAA,EAC/D,CAAA;AAAA,sBACA,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,mBAAA,EACZ,QAAA,EAAA;AAAA,QAAA,CAAC,MAAM,IAAA,EAAM,IAAI,CAAA,CAAE,GAAA,CAAI,CAAC,IAAA,qBACvB,GAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YAEC,SAAA,EAAU,2HAAA;AAAA,YAET,QAAA,EAAA;AAAA,WAAA;AAAA,UAHI;AAAA,SAKR,CAAA;AAAA,wBACD,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,2HAAA,EAA4H,QAAA,EAAA,IAAA,EAE3I;AAAA,OAAA,EACF;AAAA,KAAA,EACF,CAAA;AAAA,oBAGA,GAAA,CAAC,SAAI,SAAA,EAAU,gBAAA,EACZ,kBAAQ,GAAA,CAAI,CAAC,MAAM,CAAA,KAAM;AACxB,MAAA,MAAM,CAAA,GAAI,UAAU,IAAI,CAAA;AACxB,MAAA,MAAM,QAAA,GAAW,CAAA,KAAM,OAAA,CAAQ,MAAA,GAAS,CAAA;AACxC,MAAA,uBACE,IAAA;AAAA,QAAC,CAAA,CAAE,GAAA;AAAA,QAAF;AAAA,UAEC,OAAA,EAAS,EAAE,OAAA,EAAS,CAAA,EAAG,GAAG,GAAA,EAAI;AAAA,UAC9B,SAAS,EAAE,OAAA,EAAS,WAAW,CAAA,GAAI,GAAA,EAAK,GAAG,CAAA,EAAE;AAAA,UAC7C,UAAA,EAAY,EAAE,QAAA,EAAU,IAAA,EAAM,MAAM,QAAA,EAAS;AAAA,UAC7C,SAAA,EAAW,EAAA;AAAA,YACT,gEAAA;AAAA,YACA,WAAW,2BAAA,GAA8B;AAAA,WAC3C;AAAA,UAGA,QAAA,EAAA;AAAA,4BAAA,GAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBACC,SAAA,EAAW,EAAA;AAAA,kBACT,qFAAA;AAAA,kBACA,EAAE,QAAA,CAAS;AAAA,iBACb;AAAA,gBAEC,YAAE,QAAA,CAAS;AAAA;AAAA,aACd;AAAA,4BAGA,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gBAAA,EACb,QAAA,EAAA;AAAA,8BAAA,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,yBAAA,EACb,QAAA,EAAA;AAAA,gCAAA,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,+CAAA,EAAiD,QAAA,EAAA,CAAA,CAAE,GAAA,EAAI,CAAA;AAAA,gCACvE,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,2BAAA,EAA6B,YAAE,QAAA,EAAS;AAAA,eAAA,EAC1D,CAAA;AAAA,8BACA,GAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,oCAAA,EAAsC,YAAE,MAAA,EAAO;AAAA,aAAA,EAC9D,CAAA;AAAA,4BAGA,GAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACC,SAAA,EAAW,EAAA;AAAA,kBACT,6DAAA;AAAA,kBACA,UAAA,CAAW,EAAE,IAAI;AAAA,iBACnB;AAAA,gBAEC,QAAA,EAAA,CAAA,CAAE;AAAA;AAAA;AACL;AAAA,SAAA;AAAA,QApCK,CAAA,EAAG,CAAC,CAAA,CAAA,EAAI,IAAI,CAAA;AAAA,OAqCnB;AAAA,IAEJ,CAAC,CAAA,EACH;AAAA,GAAA,EACF,CAAA,EACF,CAAA;AAEJ","file":"animation-team-routing.js","sourcesContent":["\"use client\"\n\nimport { domAnimation, LazyMotion, m } from \"motion/react\"\n\nimport { useAnimationTimer } from \"../hooks/use-animation-timer\"\n\nimport { EASE_OUT } from \"../lib/animation\"\nimport { cn } from \"../lib/utils\"\n\ntype Transfer = {\n txn: string\n corridor: string\n risk: \"Low\" | \"Medium\" | \"High\"\n assignee: { name: string; initials: string; colour: string }\n reason: string\n}\n\nconst TRANSFERS: Transfer[] = [\n {\n txn: \"TXN-0847\",\n corridor: \"AU \\u2192 SG\",\n risk: \"High\",\n assignee: { name: \"Sarah Chen\", initials: \"SC\", colour: \"bg-violet-100 text-violet-700\" },\n reason: \"High risk \\u2192 Senior analyst\",\n },\n {\n txn: \"TXN-0848\",\n corridor: \"DE \\u2192 US\",\n risk: \"Low\",\n assignee: {\n name: \"Auto-approved\",\n initials: \"\\u2713\",\n colour: \"bg-emerald-100 text-emerald-700\",\n },\n reason: \"Low risk \\u2192 Auto-approval\",\n },\n {\n txn: \"TXN-0849\",\n corridor: \"JP \\u2192 AE\",\n risk: \"Medium\",\n assignee: { name: \"Marcus Webb\", initials: \"MW\", colour: \"bg-blue-100 text-blue-700\" },\n reason: \"MENA specialist\",\n },\n {\n txn: \"TXN-0850\",\n corridor: \"CA \\u2192 HK\",\n risk: \"High\",\n assignee: { name: \"Li Wei\", initials: \"LW\", colour: \"bg-amber-100 text-amber-700\" },\n reason: \"APAC jurisdiction\",\n },\n]\n\nconst riskColour: Record<string, string> = {\n Low: \"bg-emerald-50 text-emerald-700\",\n Medium: \"bg-amber-50 text-amber-700\",\n High: \"bg-red-50 text-red-700\",\n}\n\nexport default function AnimationTeamRouting({ className }: { className?: string }) {\n const [timerRef, tick] = useAnimationTimer(2400)\n const count = Math.min(tick + 1, 4)\n const startIdx = Math.max(0, tick + 1 - count)\n const visible = Array.from({ length: count }, (_, i) => (startIdx + i) % TRANSFERS.length)\n\n return (\n <LazyMotion features={domAnimation}>\n <div ref={timerRef} className={cn(\"flex flex-col p-5\", className)}>\n {/* Header */}\n <div className=\"flex items-center justify-between\">\n <div>\n <p className=\"font-semibold text-[15px] text-foreground\">Team Routing</p>\n <p className=\"text-[12px] text-gray-400\">Automatic assignment</p>\n </div>\n <div className=\"flex -space-x-1.5\">\n {[\"SC\", \"MW\", \"LW\"].map((init) => (\n <div\n key={init}\n className=\"flex size-6 items-center justify-center rounded-full border-2 border-white bg-gray-100 font-bold text-[9px] text-gray-500\"\n >\n {init}\n </div>\n ))}\n <div className=\"flex size-6 items-center justify-center rounded-full border-2 border-white bg-gray-100 font-bold text-[9px] text-gray-400\">\n +4\n </div>\n </div>\n </div>\n\n {/* Routing entries */}\n <div className=\"mt-4 space-y-2\">\n {visible.map((tIdx, i) => {\n const t = TRANSFERS[tIdx]\n const isLatest = i === visible.length - 1\n return (\n <m.div\n key={`${i}-${tIdx}`}\n initial={{ opacity: 0, x: -12 }}\n animate={{ opacity: isLatest ? 1 : 0.5, x: 0 }}\n transition={{ duration: 0.35, ease: EASE_OUT }}\n className={cn(\n \"flex items-center gap-3 rounded-lg border bg-white px-3 py-2.5\",\n isLatest ? \"border-gray-200 shadow-sm\" : \"border-gray-100\",\n )}\n >\n {/* Avatar */}\n <div\n className={cn(\n \"flex size-8 shrink-0 items-center justify-center rounded-full font-bold text-[11px]\",\n t.assignee.colour,\n )}\n >\n {t.assignee.initials}\n </div>\n\n {/* Info */}\n <div className=\"min-w-0 flex-1\">\n <div className=\"flex items-center gap-2\">\n <span className=\"font-bold font-mono text-[11px] text-gray-400\">{t.txn}</span>\n <span className=\"text-[11px] text-gray-400\">{t.corridor}</span>\n </div>\n <p className=\"truncate text-[11px] text-gray-500\">{t.reason}</p>\n </div>\n\n {/* Risk badge */}\n <span\n className={cn(\n \"shrink-0 rounded-full px-2 py-0.5 font-semibold text-[10px]\",\n riskColour[t.risk],\n )}\n >\n {t.risk}\n </span>\n </m.div>\n )\n })}\n </div>\n </div>\n </LazyMotion>\n )\n}\n"]}
@@ -1,6 +1,7 @@
1
1
  "use client";
2
- import { EASE_OUT } from '../chunk-TAPJEVUA.js';
3
- import { cn } from '../chunk-GZNLQE3I.js';
2
+ import { EASE_OUT } from '../chunk-D3KGHRRC.js';
3
+ import { cn } from '../chunk-MHRCB42B.js';
4
+ import '../chunk-2NMEKWO5.js';
4
5
  import { motion } from 'motion/react';
5
6
  import { jsxs, jsx } from 'react/jsx-runtime';
6
7
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/animations/animation-teams-notification.tsx"],"names":[],"mappings":"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","file":"animation-teams-notification.js","sourcesContent":["\"use client\"\n\nimport { motion } from \"motion/react\"\n\nimport { EASE_OUT } from \"../lib/animation\"\nimport { cn } from \"../lib/utils\"\n\nexport default function AnimationTeamsNotification({ className }: { className?: string }) {\n return (\n <div className={cn(\"flex flex-col bg-[#f5f5f5] p-4\", className)}>\n {/* Teams channel header */}\n <div className=\"flex items-center gap-2 pb-2.5\">\n <div className=\"flex size-5 items-center justify-center rounded bg-[#6264A7]\">\n <svg width=\"10\" height=\"10\" viewBox=\"0 0 10 10\" fill=\"none\">\n <path d=\"M1 3H9M1 5H6M1 7H7\" stroke=\"white\" strokeWidth=\"1\" strokeLinecap=\"round\" />\n </svg>\n </div>\n <span className=\"font-semibold text-[13px] text-gray-900\">Compliance Reviews</span>\n </div>\n\n {/* Adaptive card message */}\n <motion.div\n initial={{ opacity: 0, y: 10 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ duration: 0.5, ease: EASE_OUT, delay: 0.3 }}\n className=\"rounded-lg bg-white shadow-sm\"\n >\n {/* Card header with accent */}\n <div className=\"h-1 rounded-t-lg bg-[#6264A7]\" />\n <div className=\"p-3.5\">\n <div className=\"flex items-center gap-2\">\n <div className=\"flex size-6 items-center justify-center rounded bg-gray-900\">\n <svg width=\"10\" height=\"10\" viewBox=\"0 0 14 14\" fill=\"none\">\n <path d=\"M7 1L12 4V10L7 13L2 10V4L7 1Z\" stroke=\"#00D4FF\" strokeWidth=\"1.2\" />\n </svg>\n </div>\n <span className=\"font-bold text-[12px] text-gray-900\">Cogentic Compliance</span>\n <span className=\"text-[10px] text-gray-400\">10:42 AM</span>\n </div>\n\n <motion.div\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n transition={{ duration: 0.4, delay: 0.6 }}\n >\n <p className=\"mt-2.5 font-semibold text-[12px] text-gray-900\">\n Transfer requires review\n </p>\n\n {/* Transfer details grid */}\n <div className=\"mt-2 grid grid-cols-2 gap-x-4 gap-y-1.5\">\n {[\n { label: \"Transfer\", value: \"TXN-0847\" },\n { label: \"Corridor\", value: \"AU \\u2192 SG\" },\n { label: \"Risk score\", value: \"72 / 100\", highlight: true },\n { label: \"Trigger\", value: \"PEP match\" },\n ].map((item) => (\n <div key={item.label}>\n <span className=\"font-medium text-[10px] text-gray-400\">{item.label}</span>\n <p\n className={cn(\n \"font-semibold text-[11px]\",\n item.highlight ? \"text-red-500\" : \"text-gray-800\",\n )}\n >\n {item.value}\n </p>\n </div>\n ))}\n </div>\n\n {/* Jurisdiction badge */}\n <motion.div\n initial={{ opacity: 0, scale: 0.95 }}\n animate={{ opacity: 1, scale: 1 }}\n transition={{ duration: 0.3, delay: 0.9 }}\n className=\"mt-2.5 flex items-center gap-2 rounded bg-amber-50 px-2.5 py-1.5\"\n >\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\n <path d=\"M6 1L11 3.5V8.5L6 11L1 8.5V3.5L6 1Z\" stroke=\"#D97706\" strokeWidth=\"1\" />\n </svg>\n <span className=\"font-medium text-[10px] text-amber-700\">\n SG jurisdiction requires beneficiary verification within 24h\n </span>\n </motion.div>\n </motion.div>\n\n {/* Action buttons */}\n <motion.div\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n transition={{ duration: 0.3, delay: 1.1 }}\n className=\"mt-3 flex gap-2\"\n >\n <span className=\"rounded bg-[#6264A7] px-3 py-1.5 font-semibold text-[11px] text-white\">\n Review transfer\n </span>\n <span className=\"rounded border border-gray-200 px-3 py-1.5 font-semibold text-[11px] text-gray-600\">\n Assign reviewer\n </span>\n </motion.div>\n </div>\n </motion.div>\n </div>\n )\n}\n"]}
1
+ {"version":3,"sources":["../../src/animations/animation-teams-notification.tsx"],"names":[],"mappings":";;;;;;AAOe,SAAR,0BAAA,CAA4C,EAAE,SAAA,EAAU,EAA2B;AACxF,EAAA,4BACG,KAAA,EAAA,EAAI,SAAA,EAAW,EAAA,CAAG,gCAAA,EAAkC,SAAS,CAAA,EAE5D,QAAA,EAAA;AAAA,oBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,gCAAA,EACb,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,8DAAA,EACb,QAAA,kBAAA,GAAA,CAAC,KAAA,EAAA,EAAI,OAAM,IAAA,EAAK,MAAA,EAAO,IAAA,EAAK,OAAA,EAAQ,WAAA,EAAY,IAAA,EAAK,QACnD,QAAA,kBAAA,GAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,oBAAA,EAAqB,MAAA,EAAO,OAAA,EAAQ,aAAY,GAAA,EAAI,aAAA,EAAc,OAAA,EAAQ,CAAA,EACpF,CAAA,EACF,CAAA;AAAA,sBACA,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,yCAAA,EAA0C,QAAA,EAAA,oBAAA,EAAkB;AAAA,KAAA,EAC9E,CAAA;AAAA,oBAGA,IAAA;AAAA,MAAC,MAAA,CAAO,GAAA;AAAA,MAAP;AAAA,QACC,OAAA,EAAS,EAAE,OAAA,EAAS,CAAA,EAAG,GAAG,EAAA,EAAG;AAAA,QAC7B,OAAA,EAAS,EAAE,OAAA,EAAS,CAAA,EAAG,GAAG,CAAA,EAAE;AAAA,QAC5B,YAAY,EAAE,QAAA,EAAU,KAAK,IAAA,EAAM,QAAA,EAAU,OAAO,GAAA,EAAI;AAAA,QACxD,SAAA,EAAU,+BAAA;AAAA,QAGV,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,KAAA,EAAA,EAAI,WAAU,+BAAA,EAAgC,CAAA;AAAA,0BAC/C,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,OAAA,EACb,QAAA,EAAA;AAAA,4BAAA,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,yBAAA,EACb,QAAA,EAAA;AAAA,8BAAA,GAAA,CAAC,KAAA,EAAA,EAAI,WAAU,6DAAA,EACb,QAAA,kBAAA,GAAA,CAAC,SAAI,KAAA,EAAM,IAAA,EAAK,MAAA,EAAO,IAAA,EAAK,OAAA,EAAQ,WAAA,EAAY,MAAK,MAAA,EACnD,QAAA,kBAAA,GAAA,CAAC,UAAK,CAAA,EAAE,+BAAA,EAAgC,QAAO,SAAA,EAAU,WAAA,EAAY,KAAA,EAAM,CAAA,EAC7E,CAAA,EACF,CAAA;AAAA,8BACA,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,qCAAA,EAAsC,QAAA,EAAA,qBAAA,EAAmB,CAAA;AAAA,8BACzE,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,2BAAA,EAA4B,QAAA,EAAA,UAAA,EAAQ;AAAA,aAAA,EACtD,CAAA;AAAA,4BAEA,IAAA;AAAA,cAAC,MAAA,CAAO,GAAA;AAAA,cAAP;AAAA,gBACC,OAAA,EAAS,EAAE,OAAA,EAAS,CAAA,EAAE;AAAA,gBACtB,OAAA,EAAS,EAAE,OAAA,EAAS,CAAA,EAAE;AAAA,gBACtB,UAAA,EAAY,EAAE,QAAA,EAAU,GAAA,EAAK,OAAO,GAAA,EAAI;AAAA,gBAExC,QAAA,EAAA;AAAA,kCAAA,GAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,gDAAA,EAAiD,QAAA,EAAA,0BAAA,EAE9D,CAAA;AAAA,kCAGA,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yCAAA,EACZ,QAAA,EAAA;AAAA,oBACC,EAAE,KAAA,EAAO,UAAA,EAAY,KAAA,EAAO,UAAA,EAAW;AAAA,oBACvC,EAAE,KAAA,EAAO,UAAA,EAAY,KAAA,EAAO,cAAA,EAAe;AAAA,oBAC3C,EAAE,KAAA,EAAO,YAAA,EAAc,KAAA,EAAO,UAAA,EAAY,WAAW,IAAA,EAAK;AAAA,oBAC1D,EAAE,KAAA,EAAO,SAAA,EAAW,KAAA,EAAO,WAAA;AAAY,mBACzC,CAAE,GAAA,CAAI,CAAC,IAAA,0BACJ,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,oCAAA,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,uCAAA,EAAyC,QAAA,EAAA,IAAA,CAAK,KAAA,EAAM,CAAA;AAAA,oCACpE,GAAA;AAAA,sBAAC,GAAA;AAAA,sBAAA;AAAA,wBACC,SAAA,EAAW,EAAA;AAAA,0BACT,2BAAA;AAAA,0BACA,IAAA,CAAK,YAAY,cAAA,GAAiB;AAAA,yBACpC;AAAA,wBAEC,QAAA,EAAA,IAAA,CAAK;AAAA;AAAA;AACR,mBAAA,EAAA,EATQ,IAAA,CAAK,KAUf,CACD,CAAA,EACH,CAAA;AAAA,kCAGA,IAAA;AAAA,oBAAC,MAAA,CAAO,GAAA;AAAA,oBAAP;AAAA,sBACC,OAAA,EAAS,EAAE,OAAA,EAAS,CAAA,EAAG,OAAO,IAAA,EAAK;AAAA,sBACnC,OAAA,EAAS,EAAE,OAAA,EAAS,CAAA,EAAG,OAAO,CAAA,EAAE;AAAA,sBAChC,UAAA,EAAY,EAAE,QAAA,EAAU,GAAA,EAAK,OAAO,GAAA,EAAI;AAAA,sBACxC,SAAA,EAAU,kEAAA;AAAA,sBAEV,QAAA,EAAA;AAAA,wCAAA,GAAA,CAAC,SAAI,KAAA,EAAM,IAAA,EAAK,MAAA,EAAO,IAAA,EAAK,SAAQ,WAAA,EAAY,IAAA,EAAK,MAAA,EACnD,QAAA,kBAAA,GAAA,CAAC,UAAK,CAAA,EAAE,qCAAA,EAAsC,QAAO,SAAA,EAAU,WAAA,EAAY,KAAI,CAAA,EACjF,CAAA;AAAA,wCACA,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,wCAAA,EAAyC,QAAA,EAAA,8DAAA,EAEzD;AAAA;AAAA;AAAA;AACF;AAAA;AAAA,aACF;AAAA,4BAGA,IAAA;AAAA,cAAC,MAAA,CAAO,GAAA;AAAA,cAAP;AAAA,gBACC,OAAA,EAAS,EAAE,OAAA,EAAS,CAAA,EAAE;AAAA,gBACtB,OAAA,EAAS,EAAE,OAAA,EAAS,CAAA,EAAE;AAAA,gBACtB,UAAA,EAAY,EAAE,QAAA,EAAU,GAAA,EAAK,OAAO,GAAA,EAAI;AAAA,gBACxC,SAAA,EAAU,iBAAA;AAAA,gBAEV,QAAA,EAAA;AAAA,kCAAA,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,uEAAA,EAAwE,QAAA,EAAA,iBAAA,EAExF,CAAA;AAAA,kCACA,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,oFAAA,EAAqF,QAAA,EAAA,iBAAA,EAErG;AAAA;AAAA;AAAA;AACF,WAAA,EACF;AAAA;AAAA;AAAA;AACF,GAAA,EACF,CAAA;AAEJ","file":"animation-teams-notification.js","sourcesContent":["\"use client\"\n\nimport { motion } from \"motion/react\"\n\nimport { EASE_OUT } from \"../lib/animation\"\nimport { cn } from \"../lib/utils\"\n\nexport default function AnimationTeamsNotification({ className }: { className?: string }) {\n return (\n <div className={cn(\"flex flex-col bg-[#f5f5f5] p-4\", className)}>\n {/* Teams channel header */}\n <div className=\"flex items-center gap-2 pb-2.5\">\n <div className=\"flex size-5 items-center justify-center rounded bg-[#6264A7]\">\n <svg width=\"10\" height=\"10\" viewBox=\"0 0 10 10\" fill=\"none\">\n <path d=\"M1 3H9M1 5H6M1 7H7\" stroke=\"white\" strokeWidth=\"1\" strokeLinecap=\"round\" />\n </svg>\n </div>\n <span className=\"font-semibold text-[13px] text-gray-900\">Compliance Reviews</span>\n </div>\n\n {/* Adaptive card message */}\n <motion.div\n initial={{ opacity: 0, y: 10 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ duration: 0.5, ease: EASE_OUT, delay: 0.3 }}\n className=\"rounded-lg bg-white shadow-sm\"\n >\n {/* Card header with accent */}\n <div className=\"h-1 rounded-t-lg bg-[#6264A7]\" />\n <div className=\"p-3.5\">\n <div className=\"flex items-center gap-2\">\n <div className=\"flex size-6 items-center justify-center rounded bg-gray-900\">\n <svg width=\"10\" height=\"10\" viewBox=\"0 0 14 14\" fill=\"none\">\n <path d=\"M7 1L12 4V10L7 13L2 10V4L7 1Z\" stroke=\"#00D4FF\" strokeWidth=\"1.2\" />\n </svg>\n </div>\n <span className=\"font-bold text-[12px] text-gray-900\">Cogentic Compliance</span>\n <span className=\"text-[10px] text-gray-400\">10:42 AM</span>\n </div>\n\n <motion.div\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n transition={{ duration: 0.4, delay: 0.6 }}\n >\n <p className=\"mt-2.5 font-semibold text-[12px] text-gray-900\">\n Transfer requires review\n </p>\n\n {/* Transfer details grid */}\n <div className=\"mt-2 grid grid-cols-2 gap-x-4 gap-y-1.5\">\n {[\n { label: \"Transfer\", value: \"TXN-0847\" },\n { label: \"Corridor\", value: \"AU \\u2192 SG\" },\n { label: \"Risk score\", value: \"72 / 100\", highlight: true },\n { label: \"Trigger\", value: \"PEP match\" },\n ].map((item) => (\n <div key={item.label}>\n <span className=\"font-medium text-[10px] text-gray-400\">{item.label}</span>\n <p\n className={cn(\n \"font-semibold text-[11px]\",\n item.highlight ? \"text-red-500\" : \"text-gray-800\",\n )}\n >\n {item.value}\n </p>\n </div>\n ))}\n </div>\n\n {/* Jurisdiction badge */}\n <motion.div\n initial={{ opacity: 0, scale: 0.95 }}\n animate={{ opacity: 1, scale: 1 }}\n transition={{ duration: 0.3, delay: 0.9 }}\n className=\"mt-2.5 flex items-center gap-2 rounded bg-amber-50 px-2.5 py-1.5\"\n >\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\n <path d=\"M6 1L11 3.5V8.5L6 11L1 8.5V3.5L6 1Z\" stroke=\"#D97706\" strokeWidth=\"1\" />\n </svg>\n <span className=\"font-medium text-[10px] text-amber-700\">\n SG jurisdiction requires beneficiary verification within 24h\n </span>\n </motion.div>\n </motion.div>\n\n {/* Action buttons */}\n <motion.div\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n transition={{ duration: 0.3, delay: 1.1 }}\n className=\"mt-3 flex gap-2\"\n >\n <span className=\"rounded bg-[#6264A7] px-3 py-1.5 font-semibold text-[11px] text-white\">\n Review transfer\n </span>\n <span className=\"rounded border border-gray-200 px-3 py-1.5 font-semibold text-[11px] text-gray-600\">\n Assign reviewer\n </span>\n </motion.div>\n </div>\n </motion.div>\n </div>\n )\n}\n"]}
@@ -1,7 +1,8 @@
1
1
  "use client";
2
- import { useCycleIndex } from '../chunk-6RWCZUAD.js';
3
- import '../chunk-RXV2XUDZ.js';
4
- import { cn } from '../chunk-GZNLQE3I.js';
2
+ import { useCycleIndex } from '../chunk-XAIRLU4F.js';
3
+ import '../chunk-SLSJ6OOL.js';
4
+ import { cn } from '../chunk-MHRCB42B.js';
5
+ import '../chunk-2NMEKWO5.js';
5
6
  import { CheckCircle2, XCircle } from 'lucide-react';
6
7
  import { LazyMotion, domAnimation, m } from 'motion/react';
7
8
  import { jsx, jsxs } from 'react/jsx-runtime';