@cogentic-co/ds 0.6.0 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/animations/animation-ai-analysis.js +4 -3
- package/dist/animations/animation-ai-analysis.js.map +1 -1
- package/dist/animations/animation-audit-trail.js +2 -1
- package/dist/animations/animation-audit-trail.js.map +1 -1
- package/dist/animations/animation-compliance-reports.js +4 -3
- package/dist/animations/animation-compliance-reports.js.map +1 -1
- package/dist/animations/animation-custom-rules.js +4 -3
- package/dist/animations/animation-custom-rules.js.map +1 -1
- package/dist/animations/animation-jira-ticket.js +3 -2
- package/dist/animations/animation-jira-ticket.js.map +1 -1
- package/dist/animations/animation-jurisdiction-detection.js +4 -3
- package/dist/animations/animation-jurisdiction-detection.js.map +1 -1
- package/dist/animations/animation-multi-protocol.js +2 -1
- package/dist/animations/animation-multi-protocol.js.map +1 -1
- package/dist/animations/animation-pricing-preview.js +4 -3
- package/dist/animations/animation-pricing-preview.js.map +1 -1
- package/dist/animations/animation-realtime-updates.js +5 -4
- package/dist/animations/animation-realtime-updates.js.map +1 -1
- package/dist/animations/animation-rest-api.js +2 -1
- package/dist/animations/animation-rest-api.js.map +1 -1
- package/dist/animations/animation-risk-scoring.js +5 -4
- package/dist/animations/animation-risk-scoring.js.map +1 -1
- package/dist/animations/animation-sandbox.js +2 -1
- package/dist/animations/animation-sandbox.js.map +1 -1
- package/dist/animations/animation-scheduled-reports.js +4 -3
- package/dist/animations/animation-scheduled-reports.js.map +1 -1
- package/dist/animations/animation-secure-messaging.js +3 -2
- package/dist/animations/animation-secure-messaging.js.map +1 -1
- package/dist/animations/animation-slack-notification.js +3 -2
- package/dist/animations/animation-slack-notification.js.map +1 -1
- package/dist/animations/animation-sop-mapping.js +2 -1
- package/dist/animations/animation-sop-mapping.js.map +1 -1
- package/dist/animations/animation-team-routing.js +4 -3
- package/dist/animations/animation-team-routing.js.map +1 -1
- package/dist/animations/animation-teams-notification.js +3 -2
- package/dist/animations/animation-teams-notification.js.map +1 -1
- package/dist/animations/animation-vasp-identification.js +4 -3
- package/dist/animations/animation-vasp-identification.js.map +1 -1
- package/dist/animations/animation-webhooks.js +3 -2
- package/dist/animations/animation-webhooks.js.map +1 -1
- package/dist/blocks/auth-form.d.ts +1 -1
- package/dist/blocks/auth-form.js +7 -4
- package/dist/blocks/feature-section.js +3 -2
- package/dist/blocks/hero-section.js +3 -2
- package/dist/blocks/pricing-table.js +6 -3
- package/dist/blocks/stat-card.d.ts +1 -1
- package/dist/blocks/stat-card.js +4 -3
- package/dist/charts.d.ts +1 -1
- package/dist/charts.js +3 -2
- package/dist/charts.js.map +1 -1
- package/dist/chatbot.js +2 -1
- package/dist/chatbot.js.map +1 -1
- package/dist/chunk-2BIKWTWM.js +53 -0
- package/dist/chunk-2BIKWTWM.js.map +1 -0
- package/dist/{chunk-GZNLQE3I.js → chunk-2NMEKWO5.js} +3 -22
- package/dist/chunk-2NMEKWO5.js.map +1 -0
- package/dist/chunk-2TRJUH3V.js +104 -0
- package/dist/chunk-2TRJUH3V.js.map +1 -0
- package/dist/chunk-2X37XLH2.js +143 -0
- package/dist/chunk-2X37XLH2.js.map +1 -0
- package/dist/chunk-37V55OP6.js +191 -0
- package/dist/chunk-37V55OP6.js.map +1 -0
- package/dist/{chunk-GJAWCIGE.js → chunk-3IXL43BU.js} +4 -3
- package/dist/chunk-3IXL43BU.js.map +1 -0
- package/dist/chunk-3T2NATO3.js +50 -0
- package/dist/chunk-3T2NATO3.js.map +1 -0
- package/dist/chunk-455KJGDL.js +185 -0
- package/dist/chunk-455KJGDL.js.map +1 -0
- package/dist/chunk-466GQKGZ.js +311 -0
- package/dist/chunk-466GQKGZ.js.map +1 -0
- package/dist/chunk-46UBZI4D.js +119 -0
- package/dist/chunk-46UBZI4D.js.map +1 -0
- package/dist/chunk-4BLD6BKF.js +53 -0
- package/dist/chunk-4BLD6BKF.js.map +1 -0
- package/dist/chunk-4FJIJXG4.js +45 -0
- package/dist/chunk-4FJIJXG4.js.map +1 -0
- package/dist/chunk-4FVHSHHI.js +89 -0
- package/dist/chunk-4FVHSHHI.js.map +1 -0
- package/dist/chunk-4J2PVZ33.js +43 -0
- package/dist/chunk-4J2PVZ33.js.map +1 -0
- package/dist/chunk-4VREYXB4.js +136 -0
- package/dist/chunk-4VREYXB4.js.map +1 -0
- package/dist/chunk-5KYZ5PI5.js +12 -0
- package/dist/chunk-5KYZ5PI5.js.map +1 -0
- package/dist/{chunk-VWSX75RB.js → chunk-5OVGEXTO.js} +9 -65
- package/dist/chunk-5OVGEXTO.js.map +1 -0
- package/dist/chunk-5OYIXT3N.js +141 -0
- package/dist/chunk-5OYIXT3N.js.map +1 -0
- package/dist/chunk-5Q4NJ7WO.js +119 -0
- package/dist/chunk-5Q4NJ7WO.js.map +1 -0
- package/dist/chunk-5U5NBPQE.js +33 -0
- package/dist/chunk-5U5NBPQE.js.map +1 -0
- package/dist/chunk-667PB7XR.js +200 -0
- package/dist/chunk-667PB7XR.js.map +1 -0
- package/dist/chunk-6G52CCDH.js +76 -0
- package/dist/chunk-6G52CCDH.js.map +1 -0
- package/dist/chunk-6HL4ZHBG.js +16 -0
- package/dist/chunk-6HL4ZHBG.js.map +1 -0
- package/dist/chunk-6NGFSBVR.js +19 -0
- package/dist/chunk-6NGFSBVR.js.map +1 -0
- package/dist/chunk-7HOGEYHD.js +99 -0
- package/dist/chunk-7HOGEYHD.js.map +1 -0
- package/dist/chunk-7IUV2ARF.js +29 -0
- package/dist/chunk-7IUV2ARF.js.map +1 -0
- package/dist/chunk-7KDR2RWZ.js +121 -0
- package/dist/chunk-7KDR2RWZ.js.map +1 -0
- package/dist/chunk-7Q7O5LKS.js +155 -0
- package/dist/chunk-7Q7O5LKS.js.map +1 -0
- package/dist/chunk-7U72AXXX.js +172 -0
- package/dist/chunk-7U72AXXX.js.map +1 -0
- package/dist/{chunk-LW6GAWZM.js → chunk-AX7QXZKM.js} +10 -35
- package/dist/chunk-AX7QXZKM.js.map +1 -0
- package/dist/{chunk-XQYFQ6PU.js → chunk-B62UTODY.js} +4 -3
- package/dist/chunk-B62UTODY.js.map +1 -0
- package/dist/chunk-BB7XG36P.js +98 -0
- package/dist/chunk-BB7XG36P.js.map +1 -0
- package/dist/chunk-BEU3AQZQ.js +78 -0
- package/dist/chunk-BEU3AQZQ.js.map +1 -0
- package/dist/chunk-BSKXC3ZQ.js +504 -0
- package/dist/chunk-BSKXC3ZQ.js.map +1 -0
- package/dist/chunk-BU3PTFMI.js +99 -0
- package/dist/chunk-BU3PTFMI.js.map +1 -0
- package/dist/chunk-BWCIJWG4.js +20 -0
- package/dist/chunk-BWCIJWG4.js.map +1 -0
- package/dist/chunk-BYBN4NTY.js +284 -0
- package/dist/chunk-BYBN4NTY.js.map +1 -0
- package/dist/chunk-CIGS6SLR.js +261 -0
- package/dist/chunk-CIGS6SLR.js.map +1 -0
- package/dist/{chunk-TAPJEVUA.js → chunk-D3KGHRRC.js} +2 -2
- package/dist/{chunk-TAPJEVUA.js.map → chunk-D3KGHRRC.js.map} +1 -1
- package/dist/chunk-D75EQCUR.js +81 -0
- package/dist/chunk-D75EQCUR.js.map +1 -0
- package/dist/chunk-DF7TNBDD.js +84 -0
- package/dist/chunk-DF7TNBDD.js.map +1 -0
- package/dist/chunk-DO5JNX44.js +123 -0
- package/dist/chunk-DO5JNX44.js.map +1 -0
- package/dist/chunk-EALF3HQS.js +64 -0
- package/dist/chunk-EALF3HQS.js.map +1 -0
- package/dist/chunk-EDESQ6HE.js +24 -0
- package/dist/chunk-EDESQ6HE.js.map +1 -0
- package/dist/{chunk-BNFSXNP2.js → chunk-EN6GS7O4.js} +4 -3
- package/dist/chunk-EN6GS7O4.js.map +1 -0
- package/dist/chunk-EUAZ42RE.js +32 -0
- package/dist/chunk-EUAZ42RE.js.map +1 -0
- package/dist/chunk-FDLCCVWI.js +56 -0
- package/dist/chunk-FDLCCVWI.js.map +1 -0
- package/dist/chunk-FGSFWKIJ.js +60 -0
- package/dist/chunk-FGSFWKIJ.js.map +1 -0
- package/dist/chunk-FOCJAO6Y.js +167 -0
- package/dist/chunk-FOCJAO6Y.js.map +1 -0
- package/dist/chunk-FRAFAAPK.js +3 -0
- package/dist/chunk-FRAFAAPK.js.map +1 -0
- package/dist/chunk-GF3A7RZS.js +118 -0
- package/dist/chunk-GF3A7RZS.js.map +1 -0
- package/dist/chunk-GHZL6VY5.js +216 -0
- package/dist/chunk-GHZL6VY5.js.map +1 -0
- package/dist/chunk-GQTDZUUX.js +38 -0
- package/dist/chunk-GQTDZUUX.js.map +1 -0
- package/dist/chunk-GR6J7HQK.js +24 -0
- package/dist/chunk-GR6J7HQK.js.map +1 -0
- package/dist/chunk-GV7JJHY5.js +21 -0
- package/dist/chunk-GV7JJHY5.js.map +1 -0
- package/dist/chunk-H4PJG7O3.js +193 -0
- package/dist/chunk-H4PJG7O3.js.map +1 -0
- package/dist/chunk-H4T5OTVO.js +83 -0
- package/dist/chunk-H4T5OTVO.js.map +1 -0
- package/dist/chunk-H5JU3APN.js +36 -0
- package/dist/chunk-H5JU3APN.js.map +1 -0
- package/dist/chunk-H6BQJNUX.js +39 -0
- package/dist/chunk-H6BQJNUX.js.map +1 -0
- package/dist/chunk-HK73AOFX.js +646 -0
- package/dist/chunk-HK73AOFX.js.map +1 -0
- package/dist/chunk-IKY6E2H6.js +38 -0
- package/dist/chunk-IKY6E2H6.js.map +1 -0
- package/dist/chunk-IVPZ37VC.js +95 -0
- package/dist/chunk-IVPZ37VC.js.map +1 -0
- package/dist/chunk-J7CT7LH6.js +22 -0
- package/dist/chunk-J7CT7LH6.js.map +1 -0
- package/dist/chunk-JCJCCQLD.js +182 -0
- package/dist/chunk-JCJCCQLD.js.map +1 -0
- package/dist/chunk-K4H74FZT.js +43 -0
- package/dist/chunk-K4H74FZT.js.map +1 -0
- package/dist/chunk-KB665WXG.js +62 -0
- package/dist/chunk-KB665WXG.js.map +1 -0
- package/dist/chunk-KCPMWAQJ.js +71 -0
- package/dist/chunk-KCPMWAQJ.js.map +1 -0
- package/dist/chunk-KI4SRSCR.js +83 -0
- package/dist/chunk-KI4SRSCR.js.map +1 -0
- package/dist/chunk-KKKVOC6T.js +68 -0
- package/dist/chunk-KKKVOC6T.js.map +1 -0
- package/dist/chunk-KLOBSEH3.js +32 -0
- package/dist/chunk-KLOBSEH3.js.map +1 -0
- package/dist/{chunk-4NEQV6H2.js → chunk-KX3W7BKP.js} +4 -3
- package/dist/chunk-KX3W7BKP.js.map +1 -0
- package/dist/chunk-L52PKRST.js +15 -0
- package/dist/chunk-L52PKRST.js.map +1 -0
- package/dist/chunk-LZ7QCH6T.js +151 -0
- package/dist/chunk-LZ7QCH6T.js.map +1 -0
- package/dist/chunk-MEQYYN4D.js +22 -0
- package/dist/chunk-MEQYYN4D.js.map +1 -0
- package/dist/chunk-MHRCB42B.js +24 -0
- package/dist/chunk-MHRCB42B.js.map +1 -0
- package/dist/chunk-N4YLACF7.js +95 -0
- package/dist/chunk-N4YLACF7.js.map +1 -0
- package/dist/chunk-NDC2EAYA.js +28 -0
- package/dist/chunk-NDC2EAYA.js.map +1 -0
- package/dist/chunk-NN2YBLVZ.js +38 -0
- package/dist/chunk-NN2YBLVZ.js.map +1 -0
- package/dist/chunk-NPIDODOZ.js +100 -0
- package/dist/chunk-NPIDODOZ.js.map +1 -0
- package/dist/chunk-NSRUYLBC.js +65 -0
- package/dist/chunk-NSRUYLBC.js.map +1 -0
- package/dist/chunk-NUZM7GDQ.js +49 -0
- package/dist/chunk-NUZM7GDQ.js.map +1 -0
- package/dist/chunk-O6QB2KVL.js +86 -0
- package/dist/chunk-O6QB2KVL.js.map +1 -0
- package/dist/chunk-OAVWHBUD.js +250 -0
- package/dist/chunk-OAVWHBUD.js.map +1 -0
- package/dist/chunk-OG7CCUKC.js +45 -0
- package/dist/chunk-OG7CCUKC.js.map +1 -0
- package/dist/chunk-PKGKB7JG.js +20 -0
- package/dist/chunk-PKGKB7JG.js.map +1 -0
- package/dist/chunk-QCY3TBJU.js +130 -0
- package/dist/chunk-QCY3TBJU.js.map +1 -0
- package/dist/chunk-QTHRRLHF.js +89 -0
- package/dist/chunk-QTHRRLHF.js.map +1 -0
- package/dist/chunk-REBDYEZX.js +67 -0
- package/dist/chunk-REBDYEZX.js.map +1 -0
- package/dist/chunk-RI7KG3TF.js +87 -0
- package/dist/chunk-RI7KG3TF.js.map +1 -0
- package/dist/{chunk-RXV2XUDZ.js → chunk-SLSJ6OOL.js} +2 -2
- package/dist/{chunk-RXV2XUDZ.js.map → chunk-SLSJ6OOL.js.map} +1 -1
- package/dist/chunk-ST22RZYN.js +122 -0
- package/dist/chunk-ST22RZYN.js.map +1 -0
- package/dist/chunk-SZFIXV43.js +3 -0
- package/dist/chunk-SZFIXV43.js.map +1 -0
- package/dist/chunk-TJVE6LDU.js +205 -0
- package/dist/chunk-TJVE6LDU.js.map +1 -0
- package/dist/chunk-TVGQEQOW.js +83 -0
- package/dist/chunk-TVGQEQOW.js.map +1 -0
- package/dist/chunk-U37L3S2U.js +22 -0
- package/dist/chunk-U37L3S2U.js.map +1 -0
- package/dist/chunk-UAFRUBYX.js +42 -0
- package/dist/chunk-UAFRUBYX.js.map +1 -0
- package/dist/chunk-UAXOFYFR.js +37 -0
- package/dist/chunk-UAXOFYFR.js.map +1 -0
- package/dist/{chunk-7HRPF2N2.js → chunk-UIDMLHT7.js} +5 -4
- package/dist/chunk-UIDMLHT7.js.map +1 -0
- package/dist/chunk-V43Q47PK.js +28 -0
- package/dist/chunk-V43Q47PK.js.map +1 -0
- package/dist/chunk-VUKVUFHU.js +237 -0
- package/dist/chunk-VUKVUFHU.js.map +1 -0
- package/dist/{chunk-CG5JA7FM.js → chunk-VWZTLFXK.js} +4 -3
- package/dist/chunk-VWZTLFXK.js.map +1 -0
- package/dist/chunk-VY2ZHEY2.js +170 -0
- package/dist/chunk-VY2ZHEY2.js.map +1 -0
- package/dist/chunk-WGFU2D4A.js +63 -0
- package/dist/chunk-WGFU2D4A.js.map +1 -0
- package/dist/chunk-WJRJBMFN.js +22 -0
- package/dist/chunk-WJRJBMFN.js.map +1 -0
- package/dist/chunk-X5R5H4TO.js +36 -0
- package/dist/chunk-X5R5H4TO.js.map +1 -0
- package/dist/{chunk-6RWCZUAD.js → chunk-XAIRLU4F.js} +3 -3
- package/dist/{chunk-6RWCZUAD.js.map → chunk-XAIRLU4F.js.map} +1 -1
- package/dist/chunk-XCZNB4NP.js +86 -0
- package/dist/chunk-XCZNB4NP.js.map +1 -0
- package/dist/chunk-XWCSV3E4.js +263 -0
- package/dist/chunk-XWCSV3E4.js.map +1 -0
- package/dist/chunk-XX6UWWUW.js +197 -0
- package/dist/chunk-XX6UWWUW.js.map +1 -0
- package/dist/chunk-YCBEMVM7.js +145 -0
- package/dist/chunk-YCBEMVM7.js.map +1 -0
- package/dist/chunk-YEV262XN.js +172 -0
- package/dist/chunk-YEV262XN.js.map +1 -0
- package/dist/chunk-YJHTT2YB.js +178 -0
- package/dist/chunk-YJHTT2YB.js.map +1 -0
- package/dist/chunk-YS7M4GKW.js +117 -0
- package/dist/chunk-YS7M4GKW.js.map +1 -0
- package/dist/chunk-Z2IWEIXF.js +43 -0
- package/dist/chunk-Z2IWEIXF.js.map +1 -0
- package/dist/chunk-Z3FYDYSM.js +32 -0
- package/dist/chunk-Z3FYDYSM.js.map +1 -0
- package/dist/chunk-Z3XX65K6.js +84 -0
- package/dist/chunk-Z3XX65K6.js.map +1 -0
- package/dist/chunk-Z5EHDRCT.js +39 -0
- package/dist/chunk-Z5EHDRCT.js.map +1 -0
- package/dist/chunk-ZJ7UBKLA.js +21 -0
- package/dist/chunk-ZJ7UBKLA.js.map +1 -0
- package/dist/components/accordion.d.ts +9 -0
- package/dist/components/accordion.js +5 -0
- package/dist/components/accordion.js.map +1 -0
- package/dist/components/alert-dialog.d.ts +24 -0
- package/dist/components/alert-dialog.js +6 -0
- package/dist/components/alert-dialog.js.map +1 -0
- package/dist/components/alert.d.ts +14 -0
- package/dist/components/alert.js +5 -0
- package/dist/components/alert.js.map +1 -0
- package/dist/components/animated-counter.d.ts +18 -0
- package/dist/components/animated-counter.js +4 -0
- package/dist/components/animated-counter.js.map +1 -0
- package/dist/components/approval-actions.d.ts +30 -0
- package/dist/components/approval-actions.js +8 -0
- package/dist/components/approval-actions.js.map +1 -0
- package/dist/components/ascii-shader.d.ts +8 -0
- package/dist/components/ascii-shader.js +5 -0
- package/dist/components/ascii-shader.js.map +1 -0
- package/dist/components/aspect-ratio.d.ts +7 -0
- package/dist/components/aspect-ratio.js +5 -0
- package/dist/components/aspect-ratio.js.map +1 -0
- package/dist/components/audit-log.d.ts +17 -0
- package/dist/components/audit-log.js +5 -0
- package/dist/components/audit-log.js.map +1 -0
- package/dist/components/avatar.d.ts +14 -0
- package/dist/components/avatar.js +5 -0
- package/dist/components/avatar.js.map +1 -0
- package/dist/components/badge.d.ts +13 -0
- package/dist/components/badge.js +5 -0
- package/dist/components/badge.js.map +1 -0
- package/dist/components/bg-shader.d.ts +18 -0
- package/dist/components/bg-shader.js +5 -0
- package/dist/components/bg-shader.js.map +1 -0
- package/dist/components/blocky-shader.d.ts +8 -0
- package/dist/components/blocky-shader.js +5 -0
- package/dist/components/blocky-shader.js.map +1 -0
- package/dist/components/breadcrumb.d.ts +13 -0
- package/dist/components/breadcrumb.js +5 -0
- package/dist/components/breadcrumb.js.map +1 -0
- package/dist/components/button-group.d.ts +16 -0
- package/dist/components/button-group.js +6 -0
- package/dist/components/button-group.js.map +1 -0
- package/dist/components/button.d.ts +13 -0
- package/dist/components/button.js +5 -0
- package/dist/components/button.js.map +1 -0
- package/dist/components/calendar.d.ts +16 -0
- package/dist/components/calendar.js +6 -0
- package/dist/components/calendar.js.map +1 -0
- package/dist/components/callout.d.ts +12 -0
- package/dist/components/callout.js +5 -0
- package/dist/components/callout.js.map +1 -0
- package/dist/{card-Cumdyf_G.d.ts → components/card.d.ts} +1 -1
- package/dist/components/card.js +5 -0
- package/dist/components/card.js.map +1 -0
- package/dist/components/carousel.d.ts +34 -0
- package/dist/components/carousel.js +6 -0
- package/dist/components/carousel.js.map +1 -0
- package/dist/components/case-card.d.ts +36 -0
- package/dist/components/case-card.js +10 -0
- package/dist/components/case-card.js.map +1 -0
- package/dist/{chart-DkwdRX-i.d.ts → components/chart.d.ts} +1 -1
- package/dist/components/chart.js +5 -0
- package/dist/components/chart.js.map +1 -0
- package/dist/components/checkbox.d.ts +6 -0
- package/dist/components/checkbox.js +5 -0
- package/dist/components/checkbox.js.map +1 -0
- package/dist/components/code-block.d.ts +16 -0
- package/dist/components/code-block.js +5 -0
- package/dist/components/code-block.js.map +1 -0
- package/dist/components/collapsible.d.ts +8 -0
- package/dist/components/collapsible.js +4 -0
- package/dist/components/collapsible.js.map +1 -0
- package/dist/components/combobox.d.ts +27 -0
- package/dist/components/combobox.js +9 -0
- package/dist/components/combobox.js.map +1 -0
- package/dist/components/command.d.ts +23 -0
- package/dist/components/command.js +10 -0
- package/dist/components/command.js.map +1 -0
- package/dist/components/comment-thread.d.ts +18 -0
- package/dist/components/comment-thread.js +5 -0
- package/dist/components/comment-thread.js.map +1 -0
- package/dist/components/compliance-score.d.ts +20 -0
- package/dist/components/compliance-score.js +5 -0
- package/dist/components/compliance-score.js.map +1 -0
- package/dist/components/context-menu.d.ts +32 -0
- package/dist/components/context-menu.js +5 -0
- package/dist/components/context-menu.js.map +1 -0
- package/dist/components/copy-button.d.ts +16 -0
- package/dist/components/copy-button.js +6 -0
- package/dist/components/copy-button.js.map +1 -0
- package/dist/components/data-table.d.ts +84 -0
- package/dist/components/data-table.js +18 -0
- package/dist/components/data-table.js.map +1 -0
- package/dist/components/date-picker.d.ts +58 -0
- package/dist/components/date-picker.js +9 -0
- package/dist/components/date-picker.js.map +1 -0
- package/dist/components/deadline-countdown.d.ts +26 -0
- package/dist/components/deadline-countdown.js +5 -0
- package/dist/components/deadline-countdown.js.map +1 -0
- package/dist/components/description-list.d.ts +9 -0
- package/dist/components/description-list.js +5 -0
- package/dist/components/description-list.js.map +1 -0
- package/dist/components/dialog.d.ts +20 -0
- package/dist/components/dialog.js +6 -0
- package/dist/components/dialog.js.map +1 -0
- package/dist/components/direction.d.ts +2 -0
- package/dist/components/direction.js +4 -0
- package/dist/components/direction.js.map +1 -0
- package/dist/components/drawer.d.ts +16 -0
- package/dist/components/drawer.js +5 -0
- package/dist/components/drawer.js.map +1 -0
- package/dist/components/dropdown-menu.d.ts +32 -0
- package/dist/components/dropdown-menu.js +5 -0
- package/dist/components/dropdown-menu.js.map +1 -0
- package/dist/components/empty.d.ts +15 -0
- package/dist/components/empty.js +5 -0
- package/dist/components/empty.js.map +1 -0
- package/dist/components/entity-header.d.ts +26 -0
- package/dist/components/entity-header.js +5 -0
- package/dist/components/entity-header.js.map +1 -0
- package/dist/components/fade-in.d.ts +11 -0
- package/dist/components/fade-in.js +5 -0
- package/dist/components/fade-in.js.map +1 -0
- package/dist/components/field.d.ts +30 -0
- package/dist/components/field.js +7 -0
- package/dist/components/field.js.map +1 -0
- package/dist/components/file-upload.d.ts +18 -0
- package/dist/components/file-upload.js +5 -0
- package/dist/components/file-upload.js.map +1 -0
- package/dist/components/filter-bar.d.ts +11 -0
- package/dist/components/filter-bar.js +5 -0
- package/dist/components/filter-bar.js.map +1 -0
- package/dist/components/form.d.ts +1 -0
- package/dist/components/form.js +4 -0
- package/dist/components/form.js.map +1 -0
- package/dist/components/grid.d.ts +58 -0
- package/dist/components/grid.js +5 -0
- package/dist/components/grid.js.map +1 -0
- package/dist/components/hover-card.d.ts +8 -0
- package/dist/components/hover-card.js +5 -0
- package/dist/components/hover-card.js.map +1 -0
- package/dist/components/inline-edit.d.ts +16 -0
- package/dist/components/inline-edit.js +5 -0
- package/dist/components/inline-edit.js.map +1 -0
- package/dist/components/input-group.d.ts +23 -0
- package/dist/components/input-group.js +8 -0
- package/dist/components/input-group.js.map +1 -0
- package/dist/components/input-otp.d.ts +14 -0
- package/dist/components/input-otp.js +5 -0
- package/dist/components/input-otp.js.map +1 -0
- package/dist/components/input.d.ts +6 -0
- package/dist/components/input.js +5 -0
- package/dist/components/input.js.map +1 -0
- package/dist/components/item.d.ts +27 -0
- package/dist/components/item.js +6 -0
- package/dist/components/item.js.map +1 -0
- package/dist/components/kbd.d.ts +6 -0
- package/dist/components/kbd.js +5 -0
- package/dist/components/kbd.js.map +1 -0
- package/dist/components/label.d.ts +6 -0
- package/dist/components/label.js +5 -0
- package/dist/components/label.js.map +1 -0
- package/dist/components/loading-overlay.d.ts +12 -0
- package/dist/components/loading-overlay.js +6 -0
- package/dist/components/loading-overlay.js.map +1 -0
- package/dist/components/logo-vasp.d.ts +11 -0
- package/dist/components/logo-vasp.js +5 -0
- package/dist/components/logo-vasp.js.map +1 -0
- package/dist/components/marquee.d.ts +17 -0
- package/dist/components/marquee.js +5 -0
- package/dist/components/marquee.js.map +1 -0
- package/dist/components/menubar.d.ts +32 -0
- package/dist/components/menubar.js +6 -0
- package/dist/components/menubar.js.map +1 -0
- package/dist/components/native-select.d.ts +11 -0
- package/dist/components/native-select.js +5 -0
- package/dist/components/native-select.js.map +1 -0
- package/dist/components/navigation-menu.d.ts +15 -0
- package/dist/components/navigation-menu.js +5 -0
- package/dist/components/navigation-menu.js.map +1 -0
- package/dist/components/number-input.d.ts +14 -0
- package/dist/components/number-input.js +7 -0
- package/dist/components/number-input.js.map +1 -0
- package/dist/components/pagination.d.ts +23 -0
- package/dist/components/pagination.js +6 -0
- package/dist/components/pagination.js.map +1 -0
- package/dist/components/policy-banner.d.ts +21 -0
- package/dist/components/policy-banner.js +5 -0
- package/dist/components/policy-banner.js.map +1 -0
- package/dist/components/popover.d.ts +12 -0
- package/dist/components/popover.js +5 -0
- package/dist/components/popover.js.map +1 -0
- package/dist/components/progress.d.ts +17 -0
- package/dist/components/progress.js +5 -0
- package/dist/components/progress.js.map +1 -0
- package/dist/components/radio-group.d.ts +8 -0
- package/dist/components/radio-group.js +5 -0
- package/dist/components/radio-group.js.map +1 -0
- package/dist/components/resizable.d.ts +10 -0
- package/dist/components/resizable.js +5 -0
- package/dist/components/resizable.js.map +1 -0
- package/dist/components/risk-gauge.d.ts +20 -0
- package/dist/components/risk-gauge.js +5 -0
- package/dist/components/risk-gauge.js.map +1 -0
- package/dist/components/scroll-area.d.ts +7 -0
- package/dist/components/scroll-area.js +5 -0
- package/dist/components/scroll-area.js.map +1 -0
- package/dist/components/search-input.d.ts +17 -0
- package/dist/components/search-input.js +7 -0
- package/dist/components/search-input.js.map +1 -0
- package/dist/components/segmented-control.d.ts +15 -0
- package/dist/components/segmented-control.js +5 -0
- package/dist/components/segmented-control.js.map +1 -0
- package/dist/components/select.d.ts +18 -0
- package/dist/components/select.js +5 -0
- package/dist/components/select.js.map +1 -0
- package/dist/components/separator.d.ts +6 -0
- package/dist/components/separator.js +5 -0
- package/dist/components/separator.js.map +1 -0
- package/dist/components/shadow-root-host.d.ts +16 -0
- package/dist/components/shadow-root-host.js +51 -0
- package/dist/components/shadow-root-host.js.map +1 -0
- package/dist/components/sheet.d.ts +17 -0
- package/dist/components/sheet.js +6 -0
- package/dist/components/sheet.js.map +1 -0
- package/dist/components/sidebar.d.ts +70 -0
- package/dist/components/sidebar.js +12 -0
- package/dist/components/sidebar.js.map +1 -0
- package/dist/components/skeleton.d.ts +5 -0
- package/dist/components/skeleton.js +5 -0
- package/dist/components/skeleton.js.map +1 -0
- package/dist/components/slider.d.ts +6 -0
- package/dist/components/slider.js +5 -0
- package/dist/components/slider.js.map +1 -0
- package/dist/components/sonner.d.ts +6 -0
- package/dist/components/sonner.js +4 -0
- package/dist/components/sonner.js.map +1 -0
- package/dist/components/spinner.d.ts +9 -0
- package/dist/components/spinner.js +5 -0
- package/dist/components/spinner.js.map +1 -0
- package/dist/components/split-pane.d.ts +21 -0
- package/dist/components/split-pane.js +6 -0
- package/dist/components/split-pane.js.map +1 -0
- package/dist/components/stat.d.ts +15 -0
- package/dist/components/stat.js +5 -0
- package/dist/components/stat.js.map +1 -0
- package/dist/components/status-indicator.d.ts +16 -0
- package/dist/components/status-indicator.js +5 -0
- package/dist/components/status-indicator.js.map +1 -0
- package/dist/components/step-progress.d.ts +26 -0
- package/dist/components/step-progress.js +5 -0
- package/dist/components/step-progress.js.map +1 -0
- package/dist/components/streaming-cards.d.ts +16 -0
- package/dist/components/streaming-cards.js +66 -0
- package/dist/components/streaming-cards.js.map +1 -0
- package/dist/components/striped-bar.d.ts +20 -0
- package/dist/components/striped-bar.js +6 -0
- package/dist/components/striped-bar.js.map +1 -0
- package/dist/components/subtle-shader.d.ts +10 -0
- package/dist/components/subtle-shader.js +5 -0
- package/dist/components/subtle-shader.js.map +1 -0
- package/dist/components/switch.d.ts +8 -0
- package/dist/components/switch.js +5 -0
- package/dist/components/switch.js.map +1 -0
- package/dist/components/table.d.ts +13 -0
- package/dist/components/table.js +5 -0
- package/dist/components/table.js.map +1 -0
- package/dist/components/tabs.d.ts +14 -0
- package/dist/components/tabs.js +5 -0
- package/dist/components/tabs.js.map +1 -0
- package/dist/components/tag.d.ts +15 -0
- package/dist/components/tag.js +5 -0
- package/dist/components/tag.js.map +1 -0
- package/dist/components/textarea.d.ts +6 -0
- package/dist/components/textarea.js +5 -0
- package/dist/components/textarea.js.map +1 -0
- package/dist/components/theme-script.d.ts +26 -0
- package/dist/components/theme-script.js +4 -0
- package/dist/components/theme-script.js.map +1 -0
- package/dist/components/timeline.d.ts +13 -0
- package/dist/components/timeline.js +5 -0
- package/dist/components/timeline.js.map +1 -0
- package/dist/components/toggle-group.d.ts +14 -0
- package/dist/components/toggle-group.js +6 -0
- package/dist/components/toggle-group.js.map +1 -0
- package/dist/components/toggle.d.ts +12 -0
- package/dist/components/toggle.js +5 -0
- package/dist/components/toggle.js.map +1 -0
- package/dist/components/tooltip.d.ts +9 -0
- package/dist/components/tooltip.js +5 -0
- package/dist/components/tooltip.js.map +1 -0
- package/dist/components/typewriter.d.ts +25 -0
- package/dist/components/typewriter.js +5 -0
- package/dist/components/typewriter.js.map +1 -0
- package/dist/components/typography.d.ts +26 -0
- package/dist/components/typography.js +5 -0
- package/dist/components/typography.js.map +1 -0
- package/dist/components/visually-hidden.d.ts +6 -0
- package/dist/components/visually-hidden.js +5 -0
- package/dist/components/visually-hidden.js.map +1 -0
- package/dist/components/waffle-chart.d.ts +46 -0
- package/dist/components/waffle-chart.js +5 -0
- package/dist/components/waffle-chart.js.map +1 -0
- package/dist/hooks/use-animation-timer.d.ts +11 -0
- package/dist/hooks/use-animation-timer.js +4 -0
- package/dist/hooks/use-animation-timer.js.map +1 -0
- package/dist/hooks/use-carousel.d.ts +22 -0
- package/dist/hooks/use-carousel.js +4 -0
- package/dist/hooks/use-carousel.js.map +1 -0
- package/dist/hooks/use-clipboard.d.ts +10 -0
- package/dist/hooks/use-clipboard.js +4 -0
- package/dist/hooks/use-clipboard.js.map +1 -0
- package/dist/hooks/use-cycle-index.d.ts +13 -0
- package/dist/hooks/use-cycle-index.js +5 -0
- package/dist/hooks/use-cycle-index.js.map +1 -0
- package/dist/hooks/use-debounce.d.ts +3 -0
- package/dist/hooks/use-debounce.js +4 -0
- package/dist/hooks/use-debounce.js.map +1 -0
- package/dist/hooks/use-disclosure.d.ts +9 -0
- package/dist/hooks/use-disclosure.js +4 -0
- package/dist/hooks/use-disclosure.js.map +1 -0
- package/dist/hooks/use-intersection-observer.d.ts +15 -0
- package/dist/hooks/use-intersection-observer.js +4 -0
- package/dist/hooks/use-intersection-observer.js.map +1 -0
- package/dist/hooks/use-local-storage.d.ts +3 -0
- package/dist/hooks/use-local-storage.js +4 -0
- package/dist/hooks/use-local-storage.js.map +1 -0
- package/dist/hooks/use-media-query.d.ts +3 -0
- package/dist/hooks/use-media-query.js +4 -0
- package/dist/hooks/use-media-query.js.map +1 -0
- package/dist/hooks/use-mobile.d.ts +3 -0
- package/dist/hooks/use-mobile.js +4 -0
- package/dist/hooks/use-mobile.js.map +1 -0
- package/dist/index.d.ts +150 -1499
- package/dist/index.js +125 -9475
- package/dist/index.js.map +1 -1
- package/dist/lib/animation.d.ts +63 -0
- package/dist/lib/animation.js +4 -0
- package/dist/lib/animation.js.map +1 -0
- package/dist/lib/utils.d.ts +6 -0
- package/dist/lib/utils.js +4 -0
- package/dist/lib/utils.js.map +1 -0
- package/dist/shells/app-shell.d.ts +60 -0
- package/dist/shells/app-shell.js +18 -0
- package/dist/shells/app-shell.js.map +1 -0
- package/dist/workflow.js +2 -1
- package/dist/workflow.js.map +1 -1
- package/package.json +685 -1
- package/dist/chunk-4NEQV6H2.js.map +0 -1
- package/dist/chunk-7HRPF2N2.js.map +0 -1
- package/dist/chunk-BNFSXNP2.js.map +0 -1
- package/dist/chunk-CG5JA7FM.js.map +0 -1
- package/dist/chunk-GJAWCIGE.js.map +0 -1
- package/dist/chunk-GZNLQE3I.js.map +0 -1
- package/dist/chunk-LW6GAWZM.js.map +0 -1
- package/dist/chunk-VWSX75RB.js.map +0 -1
- package/dist/chunk-XQYFQ6PU.js.map +0 -1
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { EASE_OUT } from '../chunk-
|
|
3
|
-
import { useAnimationTimer } from '../chunk-
|
|
4
|
-
import { cn } from '../chunk-
|
|
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 { Sparkles } from 'lucide-react';
|
|
6
7
|
import { LazyMotion, domAnimation, AnimatePresence, m } from 'motion/react';
|
|
7
8
|
import { useRef, useEffect } from 'react';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/animations/animation-ai-analysis.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../src/animations/animation-ai-analysis.tsx"],"names":[],"mappings":"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","file":"animation-ai-analysis.js","sourcesContent":["\"use client\"\n\nimport { Sparkles } from \"lucide-react\"\nimport { AnimatePresence, domAnimation, LazyMotion, m } from \"motion/react\"\nimport { useEffect, useRef } from \"react\"\n\nimport { useAnimationTimer } from \"../hooks/use-animation-timer\"\n\nimport { EASE_OUT } from \"../lib/animation\"\nimport { cn } from \"../lib/utils\"\n\ntype Insight = {\n category: string\n text: string\n}\n\nconst INSIGHTS: Insight[] = [\n {\n category: \"Risk Assessment\",\n text: \"Counterparty risk assessed as {low} based on VASP registration status and historical transaction patterns.\",\n },\n {\n category: \"Threshold Analysis\",\n text: \"Transfer {exceeds SGD 20,000} reporting threshold — enhanced due diligence triggered under MAS Notice PSN01.\",\n },\n {\n category: \"Travel Rule\",\n text: \"Beneficiary VASP {verified} against IVMS101 directory — originator and beneficiary data complete.\",\n },\n {\n category: \"Jurisdiction Mapping\",\n text: \"Corridor {SG → US} mapped — both counterparties subject to Travel Rule data requirements.\",\n },\n {\n category: \"Sanctions Screening\",\n text: \"Screening {cleared} — no matches found across OFAC SDN, EU consolidated, and UN sanctions lists.\",\n },\n]\n\nfunction renderHighlightedText(text: string) {\n const parts = text.split(/\\{([^}]+)\\}/g)\n return parts.map((part, i) =>\n i % 2 === 1 ? (\n <span key={i} className=\"rounded-sm bg-[#00D4FF]/10 px-1 font-medium text-[#0099BB]\">\n {part}\n </span>\n ) : (\n <span key={i}>{part}</span>\n ),\n )\n}\n\nexport default function AnimationAIAnalysis({ className }: { className?: string }) {\n const [timerRef, tick] = useAnimationTimer(2800)\n const count = Math.min(tick + 1, 3)\n const startIdx = Math.max(0, tick + 1 - count)\n const visibleCards = Array.from({ length: count }, (_, i) => (startIdx + i) % INSIGHTS.length)\n const scrollRef = useRef<HTMLDivElement>(null)\n\n // Auto-scroll to bottom when new card appears\n useEffect(() => {\n if (scrollRef.current) {\n scrollRef.current.scrollTo({\n top: scrollRef.current.scrollHeight,\n behavior: \"smooth\",\n })\n }\n }, [])\n\n return (\n <LazyMotion features={domAnimation}>\n <div ref={timerRef} className={cn(\"flex flex-col overflow-hidden\", className)}>\n <div\n ref={scrollRef}\n className=\"scrollbar-none flex flex-1 flex-col gap-2.5 overflow-y-auto px-4 py-4\"\n >\n <AnimatePresence initial={false}>\n {visibleCards.map((insightIdx, i) => {\n const insight = INSIGHTS[insightIdx]\n const isLatest = i === visibleCards.length - 1\n return (\n <m.div\n key={`${i}-${insightIdx}`}\n initial={{ opacity: 0, y: 16 }}\n animate={{ opacity: isLatest ? 1 : 0.5, y: 0 }}\n exit={{ opacity: 0, y: -8 }}\n transition={{ duration: 0.4, ease: EASE_OUT }}\n className={cn(\n \"shrink-0 rounded-xl border bg-white p-3.5 transition-shadow duration-300\",\n isLatest ? \"border-gray-200 shadow-sm\" : \"border-gray-100\",\n )}\n >\n <div className=\"flex items-center gap-2 font-medium text-[11px] text-gray-400\">\n <Sparkles\n className={cn(\"h-3 w-3\", isLatest ? \"text-[#00D4FF]\" : \"text-gray-300\")}\n />\n {insight.category}\n </div>\n <p\n className={cn(\n \"mt-1.5 text-[12px] leading-relaxed sm:text-[13px]\",\n isLatest ? \"text-gray-700\" : \"text-gray-400\",\n )}\n >\n {renderHighlightedText(insight.text)}\n </p>\n </m.div>\n )\n })}\n </AnimatePresence>\n </div>\n </div>\n </LazyMotion>\n )\n}\n"]}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { cn } from '../chunk-
|
|
2
|
+
import { cn } from '../chunk-MHRCB42B.js';
|
|
3
|
+
import '../chunk-2NMEKWO5.js';
|
|
3
4
|
import { FileText, AlertTriangle, CheckCircle2, ChevronRight } from 'lucide-react';
|
|
4
5
|
import { LazyMotion, domAnimation, m } from 'motion/react';
|
|
5
6
|
import { memo, useRef, useEffect, useState } from 'react';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/animations/animation-audit-trail.tsx"],"names":["TypeWriter"],"mappings":"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","file":"animation-audit-trail.js","sourcesContent":["\"use client\"\n\nimport { AlertTriangle, CheckCircle2, ChevronRight, FileText } from \"lucide-react\"\nimport { domAnimation, LazyMotion, m } from \"motion/react\"\nimport { memo, useEffect, useRef, useState } from \"react\"\n\nimport { cn } from \"../lib/utils\"\n\ntype EntryType = \"log\" | \"success\" | \"warning\" | \"report\"\n\ninterface AuditEntry {\n timestamp: string\n text: string\n type: EntryType\n}\n\nconst AUDIT_SEQUENCES: AuditEntry[][] = [\n [\n {\n timestamp: \"14:32:01\",\n text: \"Transfer TXN-0847 received — compliance check initiated\",\n type: \"log\",\n },\n { timestamp: \"14:32:02\", text: \"SOP AML/CFT Policy v3.2 applied\", type: \"log\" },\n {\n timestamp: \"14:32:03\",\n text: \"Travel Rule verification — VASP identity confirmed\",\n type: \"success\",\n },\n { timestamp: \"14:32:04\", text: \"Sanctions screening — 12,847 entries checked\", type: \"log\" },\n {\n timestamp: \"14:32:05\",\n text: \"No sanctions matches found — OFAC, EU, UN clear\",\n type: \"success\",\n },\n { timestamp: \"14:32:06\", text: \"PEP screening — 2 beneficial owners cleared\", type: \"success\" },\n { timestamp: \"14:32:07\", text: \"Risk score calculated: 18/100 — Low\", type: \"success\" },\n { timestamp: \"14:32:08\", text: \"Decision: APPROVED — all checks passed\", type: \"success\" },\n {\n timestamp: \"14:32:08\",\n text: \"Compliance report generated — ref CR-2024-0847\",\n type: \"report\",\n },\n ],\n [\n {\n timestamp: \"14:33:12\",\n text: \"Transfer TXN-0846 received — compliance check initiated\",\n type: \"log\",\n },\n { timestamp: \"14:33:13\", text: \"SOP Enhanced Due Diligence v2.1 applied\", type: \"log\" },\n {\n timestamp: \"14:33:14\",\n text: \"Travel Rule verification — counterparty VASP verified\",\n type: \"success\",\n },\n { timestamp: \"14:33:15\", text: \"High-risk corridor detected (HK → GB)\", type: \"warning\" },\n {\n timestamp: \"14:33:16\",\n text: \"Enhanced due diligence triggered — FATF grey list\",\n type: \"warning\",\n },\n { timestamp: \"14:33:17\", text: \"Amount exceeds USD 100K threshold\", type: \"warning\" },\n { timestamp: \"14:33:18\", text: \"Risk score calculated: 72/100 — High\", type: \"warning\" },\n { timestamp: \"14:33:19\", text: \"Decision: FLAGGED — manual review required\", type: \"warning\" },\n {\n timestamp: \"14:33:19\",\n text: \"Escalation report generated — ref ESC-2024-0846\",\n type: \"report\",\n },\n ],\n [\n {\n timestamp: \"14:34:05\",\n text: \"Transfer TXN-0845 received — compliance check initiated\",\n type: \"log\",\n },\n { timestamp: \"14:34:06\", text: \"SOP MiCA Compliance v1.4 applied\", type: \"log\" },\n {\n timestamp: \"14:34:07\",\n text: \"Travel Rule verification — both VASPs registered\",\n type: \"success\",\n },\n { timestamp: \"14:34:08\", text: \"AE→NL corridor approved — MiCA compliant\", type: \"success\" },\n { timestamp: \"14:34:09\", text: \"Sanctions screening — 9,234 entries checked\", type: \"log\" },\n { timestamp: \"14:34:10\", text: \"All sanctions lists clear\", type: \"success\" },\n { timestamp: \"14:34:11\", text: \"Below EUR 10K threshold — no STR required\", type: \"success\" },\n { timestamp: \"14:34:12\", text: \"Risk score calculated: 12/100 — Low\", type: \"success\" },\n {\n timestamp: \"14:34:12\",\n text: \"Compliance report generated — ref CR-2024-0845\",\n type: \"report\",\n },\n ],\n]\n\nconst ENTRY_DELAY = 450\n\nconst iconMap: Record<EntryType, typeof CheckCircle2> = {\n log: ChevronRight,\n success: CheckCircle2,\n warning: AlertTriangle,\n report: FileText,\n}\n\nconst colorMap: Record<EntryType, string> = {\n log: \"text-foreground/80\",\n success: \"text-emerald-600\",\n warning: \"text-amber-600\",\n report: \"text-violet-600\",\n}\n\nconst TypeWriter = memo(function TypeWriter({ text }: { text: string }) {\n const spanRef = useRef<HTMLSpanElement>(null)\n\n useEffect(() => {\n const el = spanRef.current\n if (!el) return\n let count = 0\n let raf: number\n\n function tick() {\n count = Math.min(count + 3, text.length)\n el!.textContent = count < text.length ? `${text.slice(0, count)}▌` : text\n if (count < text.length) raf = requestAnimationFrame(tick)\n }\n\n raf = requestAnimationFrame(tick)\n return () => cancelAnimationFrame(raf)\n }, [text])\n\n return <span ref={spanRef} />\n})\n\nexport default function AnimationAuditTrail({ className }: { className?: string }) {\n const [seqIndex, setSeqIndex] = useState(0)\n const [visibleEntries, setVisibleEntries] = useState<AuditEntry[]>([])\n const [entryCount, setEntryCount] = useState(0)\n const scrollRef = useRef<HTMLDivElement>(null)\n const timeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null)\n\n const sequence = AUDIT_SEQUENCES[seqIndex]\n\n // Auto-scroll (deferred to avoid layout thrashing)\n useEffect(() => {\n const el = scrollRef.current\n if (!el) return\n requestAnimationFrame(() => {\n el.scrollTop = el.scrollHeight\n })\n }, [])\n\n useEffect(() => {\n if (timeoutRef.current) clearTimeout(timeoutRef.current)\n\n // Clear immediately so stale entries don't flash with new keys\n setVisibleEntries([])\n setEntryCount(0)\n\n const seq = AUDIT_SEQUENCES[seqIndex]\n\n function streamEntry(idx: number) {\n if (idx >= seq.length) {\n timeoutRef.current = setTimeout(() => {\n setSeqIndex((prev) => (prev + 1) % AUDIT_SEQUENCES.length)\n }, 2000)\n return\n }\n\n timeoutRef.current = setTimeout(() => {\n setVisibleEntries((prev) => [...prev, seq[idx]])\n setEntryCount((c) => c + 1)\n streamEntry(idx + 1)\n }, ENTRY_DELAY)\n }\n\n const start = setTimeout(() => streamEntry(0), 300)\n return () => {\n clearTimeout(start)\n if (timeoutRef.current) clearTimeout(timeoutRef.current)\n }\n }, [seqIndex])\n\n return (\n <LazyMotion features={domAnimation}>\n <div className={cn(\"flex flex-col\", className)}>\n {/* Mini header */}\n <div className=\"flex items-center gap-2 border-gray-100 border-b bg-gray-50/80 px-3 py-1.5\">\n <span className=\"relative flex size-1.5\">\n <span className=\"absolute inline-flex size-full animate-ping rounded-full bg-emerald-400 opacity-75\" />\n <span className=\"relative inline-flex size-1.5 rounded-full bg-emerald-500\" />\n </span>\n <span className=\"font-semibold text-[10px] text-gray-700\">Audit Log</span>\n <span className=\"ml-auto font-mono text-[10px] text-gray-400\">{entryCount} entries</span>\n </div>\n\n {/* Log entries */}\n <div ref={scrollRef} className=\"scrollbar-none flex-1 overflow-y-auto px-3 py-2\">\n <div className=\"space-y-0.5\">\n {visibleEntries.map((entry, i) => {\n const Icon = iconMap[entry.type]\n return (\n <m.div\n key={`${seqIndex}-${i}`}\n initial={{ opacity: 0, y: 4 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ duration: 0.25, ease: \"easeOut\" }}\n className=\"flex items-start gap-1.5 font-mono text-[10px] leading-relaxed\"\n >\n <span className=\"shrink-0 text-foreground\">{entry.timestamp}</span>\n <Icon className={cn(\"mt-0.5 size-2.5 shrink-0\", colorMap[entry.type])} />\n <span className={cn(colorMap[entry.type])}>\n <TypeWriter text={entry.text} />\n </span>\n </m.div>\n )\n })}\n {visibleEntries.length < sequence.length && (\n <div className=\"flex items-center gap-1.5 font-mono text-[10px] text-gray-300\">\n <span className=\"shrink-0 text-transparent\">00:00:00</span>\n <ChevronRight className=\"size-2.5 shrink-0\" />\n <span className=\"animate-pulse\">▌</span>\n </div>\n )}\n </div>\n </div>\n </div>\n </LazyMotion>\n )\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/animations/animation-audit-trail.tsx"],"names":["TypeWriter"],"mappings":"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","file":"animation-audit-trail.js","sourcesContent":["\"use client\"\n\nimport { AlertTriangle, CheckCircle2, ChevronRight, FileText } from \"lucide-react\"\nimport { domAnimation, LazyMotion, m } from \"motion/react\"\nimport { memo, useEffect, useRef, useState } from \"react\"\n\nimport { cn } from \"../lib/utils\"\n\ntype EntryType = \"log\" | \"success\" | \"warning\" | \"report\"\n\ninterface AuditEntry {\n timestamp: string\n text: string\n type: EntryType\n}\n\nconst AUDIT_SEQUENCES: AuditEntry[][] = [\n [\n {\n timestamp: \"14:32:01\",\n text: \"Transfer TXN-0847 received — compliance check initiated\",\n type: \"log\",\n },\n { timestamp: \"14:32:02\", text: \"SOP AML/CFT Policy v3.2 applied\", type: \"log\" },\n {\n timestamp: \"14:32:03\",\n text: \"Travel Rule verification — VASP identity confirmed\",\n type: \"success\",\n },\n { timestamp: \"14:32:04\", text: \"Sanctions screening — 12,847 entries checked\", type: \"log\" },\n {\n timestamp: \"14:32:05\",\n text: \"No sanctions matches found — OFAC, EU, UN clear\",\n type: \"success\",\n },\n { timestamp: \"14:32:06\", text: \"PEP screening — 2 beneficial owners cleared\", type: \"success\" },\n { timestamp: \"14:32:07\", text: \"Risk score calculated: 18/100 — Low\", type: \"success\" },\n { timestamp: \"14:32:08\", text: \"Decision: APPROVED — all checks passed\", type: \"success\" },\n {\n timestamp: \"14:32:08\",\n text: \"Compliance report generated — ref CR-2024-0847\",\n type: \"report\",\n },\n ],\n [\n {\n timestamp: \"14:33:12\",\n text: \"Transfer TXN-0846 received — compliance check initiated\",\n type: \"log\",\n },\n { timestamp: \"14:33:13\", text: \"SOP Enhanced Due Diligence v2.1 applied\", type: \"log\" },\n {\n timestamp: \"14:33:14\",\n text: \"Travel Rule verification — counterparty VASP verified\",\n type: \"success\",\n },\n { timestamp: \"14:33:15\", text: \"High-risk corridor detected (HK → GB)\", type: \"warning\" },\n {\n timestamp: \"14:33:16\",\n text: \"Enhanced due diligence triggered — FATF grey list\",\n type: \"warning\",\n },\n { timestamp: \"14:33:17\", text: \"Amount exceeds USD 100K threshold\", type: \"warning\" },\n { timestamp: \"14:33:18\", text: \"Risk score calculated: 72/100 — High\", type: \"warning\" },\n { timestamp: \"14:33:19\", text: \"Decision: FLAGGED — manual review required\", type: \"warning\" },\n {\n timestamp: \"14:33:19\",\n text: \"Escalation report generated — ref ESC-2024-0846\",\n type: \"report\",\n },\n ],\n [\n {\n timestamp: \"14:34:05\",\n text: \"Transfer TXN-0845 received — compliance check initiated\",\n type: \"log\",\n },\n { timestamp: \"14:34:06\", text: \"SOP MiCA Compliance v1.4 applied\", type: \"log\" },\n {\n timestamp: \"14:34:07\",\n text: \"Travel Rule verification — both VASPs registered\",\n type: \"success\",\n },\n { timestamp: \"14:34:08\", text: \"AE→NL corridor approved — MiCA compliant\", type: \"success\" },\n { timestamp: \"14:34:09\", text: \"Sanctions screening — 9,234 entries checked\", type: \"log\" },\n { timestamp: \"14:34:10\", text: \"All sanctions lists clear\", type: \"success\" },\n { timestamp: \"14:34:11\", text: \"Below EUR 10K threshold — no STR required\", type: \"success\" },\n { timestamp: \"14:34:12\", text: \"Risk score calculated: 12/100 — Low\", type: \"success\" },\n {\n timestamp: \"14:34:12\",\n text: \"Compliance report generated — ref CR-2024-0845\",\n type: \"report\",\n },\n ],\n]\n\nconst ENTRY_DELAY = 450\n\nconst iconMap: Record<EntryType, typeof CheckCircle2> = {\n log: ChevronRight,\n success: CheckCircle2,\n warning: AlertTriangle,\n report: FileText,\n}\n\nconst colorMap: Record<EntryType, string> = {\n log: \"text-foreground/80\",\n success: \"text-emerald-600\",\n warning: \"text-amber-600\",\n report: \"text-violet-600\",\n}\n\nconst TypeWriter = memo(function TypeWriter({ text }: { text: string }) {\n const spanRef = useRef<HTMLSpanElement>(null)\n\n useEffect(() => {\n const el = spanRef.current\n if (!el) return\n let count = 0\n let raf: number\n\n function tick() {\n count = Math.min(count + 3, text.length)\n el!.textContent = count < text.length ? `${text.slice(0, count)}▌` : text\n if (count < text.length) raf = requestAnimationFrame(tick)\n }\n\n raf = requestAnimationFrame(tick)\n return () => cancelAnimationFrame(raf)\n }, [text])\n\n return <span ref={spanRef} />\n})\n\nexport default function AnimationAuditTrail({ className }: { className?: string }) {\n const [seqIndex, setSeqIndex] = useState(0)\n const [visibleEntries, setVisibleEntries] = useState<AuditEntry[]>([])\n const [entryCount, setEntryCount] = useState(0)\n const scrollRef = useRef<HTMLDivElement>(null)\n const timeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null)\n\n const sequence = AUDIT_SEQUENCES[seqIndex]\n\n // Auto-scroll (deferred to avoid layout thrashing)\n useEffect(() => {\n const el = scrollRef.current\n if (!el) return\n requestAnimationFrame(() => {\n el.scrollTop = el.scrollHeight\n })\n }, [])\n\n useEffect(() => {\n if (timeoutRef.current) clearTimeout(timeoutRef.current)\n\n // Clear immediately so stale entries don't flash with new keys\n setVisibleEntries([])\n setEntryCount(0)\n\n const seq = AUDIT_SEQUENCES[seqIndex]\n\n function streamEntry(idx: number) {\n if (idx >= seq.length) {\n timeoutRef.current = setTimeout(() => {\n setSeqIndex((prev) => (prev + 1) % AUDIT_SEQUENCES.length)\n }, 2000)\n return\n }\n\n timeoutRef.current = setTimeout(() => {\n setVisibleEntries((prev) => [...prev, seq[idx]])\n setEntryCount((c) => c + 1)\n streamEntry(idx + 1)\n }, ENTRY_DELAY)\n }\n\n const start = setTimeout(() => streamEntry(0), 300)\n return () => {\n clearTimeout(start)\n if (timeoutRef.current) clearTimeout(timeoutRef.current)\n }\n }, [seqIndex])\n\n return (\n <LazyMotion features={domAnimation}>\n <div className={cn(\"flex flex-col\", className)}>\n {/* Mini header */}\n <div className=\"flex items-center gap-2 border-gray-100 border-b bg-gray-50/80 px-3 py-1.5\">\n <span className=\"relative flex size-1.5\">\n <span className=\"absolute inline-flex size-full animate-ping rounded-full bg-emerald-400 opacity-75\" />\n <span className=\"relative inline-flex size-1.5 rounded-full bg-emerald-500\" />\n </span>\n <span className=\"font-semibold text-[10px] text-gray-700\">Audit Log</span>\n <span className=\"ml-auto font-mono text-[10px] text-gray-400\">{entryCount} entries</span>\n </div>\n\n {/* Log entries */}\n <div ref={scrollRef} className=\"scrollbar-none flex-1 overflow-y-auto px-3 py-2\">\n <div className=\"space-y-0.5\">\n {visibleEntries.map((entry, i) => {\n const Icon = iconMap[entry.type]\n return (\n <m.div\n key={`${seqIndex}-${i}`}\n initial={{ opacity: 0, y: 4 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ duration: 0.25, ease: \"easeOut\" }}\n className=\"flex items-start gap-1.5 font-mono text-[10px] leading-relaxed\"\n >\n <span className=\"shrink-0 text-foreground\">{entry.timestamp}</span>\n <Icon className={cn(\"mt-0.5 size-2.5 shrink-0\", colorMap[entry.type])} />\n <span className={cn(colorMap[entry.type])}>\n <TypeWriter text={entry.text} />\n </span>\n </m.div>\n )\n })}\n {visibleEntries.length < sequence.length && (\n <div className=\"flex items-center gap-1.5 font-mono text-[10px] text-gray-300\">\n <span className=\"shrink-0 text-transparent\">00:00:00</span>\n <ChevronRight className=\"size-2.5 shrink-0\" />\n <span className=\"animate-pulse\">▌</span>\n </div>\n )}\n </div>\n </div>\n </div>\n </LazyMotion>\n )\n}\n"]}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { useCycleIndex } from '../chunk-
|
|
3
|
-
import '../chunk-
|
|
4
|
-
import { cn } from '../chunk-
|
|
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 { FileText, CheckCircle2, Download } 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-compliance-reports.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../src/animations/animation-compliance-reports.tsx"],"names":[],"mappings":"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","file":"animation-compliance-reports.js","sourcesContent":["\"use client\"\n\nimport { CheckCircle2, Download, FileText } 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 Report = {\n ref: string\n title: string\n jurisdiction: string\n flag: string\n period: string\n status: \"Generated\" | \"Pending\"\n sections: { name: string; items: number }[]\n}\n\nconst REPORTS: Report[] = [\n {\n ref: \"CR-2024-Q4\",\n title: \"AUSTRAC Compliance Report\",\n jurisdiction: \"Australia\",\n flag: \"\\u{1F1E6}\\u{1F1FA}\",\n period: \"Q4 2024\",\n status: \"Generated\",\n sections: [\n { name: \"Transfers screened\", items: 4821 },\n { name: \"STRs filed\", items: 3 },\n { name: \"Sanctions hits\", items: 0 },\n { name: \"Travel Rule compliance\", items: 99 },\n ],\n },\n {\n ref: \"CR-2024-MAS\",\n title: \"MAS Regulatory Filing\",\n jurisdiction: \"Singapore\",\n flag: \"\\u{1F1F8}\\u{1F1EC}\",\n period: \"H2 2024\",\n status: \"Generated\",\n sections: [\n { name: \"Transfers screened\", items: 2340 },\n { name: \"High-risk flagged\", items: 18 },\n { name: \"EDD completed\", items: 18 },\n { name: \"Travel Rule compliance\", items: 100 },\n ],\n },\n]\n\nexport default function AnimationComplianceReports({ className }: { className?: string }) {\n const [containerRef, index] = useCycleIndex(REPORTS.length, 4500)\n\n const r = REPORTS[index]\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\">Compliance Reports</p>\n <p className=\"text-[12px] text-gray-400\">One-click generation</p>\n </div>\n <FileText className=\"size-4 text-gray-400\" />\n </div>\n\n {/* Report card */}\n <m.div\n key={`report-${index}`}\n initial={{ opacity: 0, y: 6 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ duration: 0.3 }}\n className=\"mt-4 rounded-lg border border-gray-100 bg-gray-50\"\n >\n <div className=\"flex items-center gap-3 border-gray-100 border-b px-4 py-3\">\n <span className=\"text-lg\">{r.flag}</span>\n <div className=\"flex-1\">\n <p className=\"font-semibold text-[13px] text-gray-900\">{r.title}</p>\n <p className=\"text-[10px] text-gray-400\">\n {r.ref} {\"\\u2022\"} {r.period}\n </p>\n </div>\n <div className=\"flex items-center gap-1.5 rounded-full bg-emerald-50 px-2 py-0.5\">\n <CheckCircle2 className=\"size-3 text-emerald-500\" />\n <span className=\"font-semibold text-[10px] text-emerald-700\">{r.status}</span>\n </div>\n </div>\n\n {/* Report sections */}\n <div className=\"grid grid-cols-2 gap-2 p-3\">\n {r.sections.map((s, i) => (\n <m.div\n key={s.name}\n initial={{ opacity: 0, y: 4 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ delay: 0.1 + i * 0.08 }}\n className=\"rounded-md bg-white px-3 py-2\"\n >\n <p className=\"text-[10px] text-gray-400\">{s.name}</p>\n <p className=\"mt-0.5 font-bold font-mono text-[14px] text-gray-900\">\n {typeof s.items === \"number\" && s.items > 100\n ? s.items.toLocaleString()\n : s.name.includes(\"compliance\")\n ? `${s.items}%`\n : s.items}\n </p>\n </m.div>\n ))}\n </div>\n </m.div>\n\n {/* Download button mock */}\n <m.div\n key={`dl-${index}`}\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n transition={{ delay: 0.4 }}\n className=\"mt-3 flex items-center justify-center gap-2 rounded-lg border border-gray-200 bg-white py-2 font-medium text-[12px] text-gray-600\"\n >\n <Download className=\"size-3.5\" />\n Download PDF\n </m.div>\n </div>\n </LazyMotion>\n )\n}\n"]}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { useCycleIndex } from '../chunk-
|
|
3
|
-
import '../chunk-
|
|
4
|
-
import { cn } from '../chunk-
|
|
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 { ShieldCheck, AlertTriangle } 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-custom-rules.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../src/animations/animation-custom-rules.tsx"],"names":[],"mappings":"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","file":"animation-custom-rules.js","sourcesContent":["\"use client\"\n\nimport { AlertTriangle, ShieldCheck } 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 Rule = {\n id: string\n name: string\n condition: string\n action: string\n status: \"active\" | \"triggered\" | \"paused\"\n triggers: string\n}\n\nconst RULES: Rule[] = [\n {\n id: \"CR-001\",\n name: \"High-value transfer flag\",\n condition: \"IF amount > USD 50,000\",\n action: \"THEN escalate to senior analyst\",\n status: \"active\",\n triggers: \"142 this month\",\n },\n {\n id: \"CR-007\",\n name: \"Grey-list jurisdiction\",\n condition: \"IF jurisdiction IN fatf_grey_list\",\n action: \"THEN apply enhanced due diligence\",\n status: \"triggered\",\n triggers: \"28 this month\",\n },\n {\n id: \"CR-012\",\n name: \"Repeat counterparty check\",\n condition: \"IF counterparty_txns > 5 in 24h\",\n action: \"THEN flag for velocity review\",\n status: \"active\",\n triggers: \"9 this month\",\n },\n {\n id: \"CR-019\",\n name: \"New VASP verification\",\n condition: \"IF counterparty.first_seen < 30d\",\n action: \"THEN require manual VASP check\",\n status: \"active\",\n triggers: \"67 this month\",\n },\n]\n\nconst statusStyle: Record<Rule[\"status\"], { bg: string; label: string }> = {\n active: { bg: \"bg-emerald-50 text-emerald-700\", label: \"Active\" },\n triggered: { bg: \"bg-amber-50 text-amber-700\", label: \"Triggered\" },\n paused: { bg: \"bg-gray-100 text-gray-500\", label: \"Paused\" },\n}\n\nexport default function AnimationCustomRules({ className }: { className?: string }) {\n const [containerRef, activeIdx] = useCycleIndex(RULES.length, 3200)\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\">Custom Rules</p>\n <p className=\"text-[12px] text-gray-400\">{RULES.length} rules configured</p>\n </div>\n <div className=\"flex items-center gap-1.5 rounded-full bg-emerald-50 px-2.5 py-1\">\n <ShieldCheck className=\"size-3 text-emerald-600\" />\n <span className=\"font-semibold text-[11px] text-emerald-700\">All active</span>\n </div>\n </div>\n\n {/* Rule list */}\n <div className=\"mt-4 space-y-2\">\n {RULES.map((rule, i) => {\n const st = statusStyle[rule.status]\n const isActive = i === activeIdx\n return (\n <m.div\n key={rule.id}\n animate={{\n borderColor: isActive ? \"#00D4FF\" : \"#f3f4f6\",\n boxShadow: isActive ? \"0 0 0 1px rgba(0,212,255,0.15)\" : \"none\",\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 justify-between\">\n <div className=\"flex items-center gap-2\">\n <span className=\"font-bold font-mono text-[10px] text-gray-400\">{rule.id}</span>\n <span className=\"font-semibold text-[12px] text-gray-800\">{rule.name}</span>\n </div>\n <span className={cn(\"rounded-full px-2 py-0.5 font-semibold text-[10px]\", st.bg)}>\n {st.label}\n </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 space-y-1 border-gray-100 border-t pt-2\"\n >\n <p className=\"font-mono text-[#0099BB] text-[10px]\">{rule.condition}</p>\n <p className=\"font-mono text-[10px] text-gray-600\">{rule.action}</p>\n <div className=\"flex items-center gap-1 pt-1\">\n <AlertTriangle className=\"size-2.5 text-gray-400\" />\n <span className=\"text-[10px] text-gray-400\">{rule.triggers}</span>\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 { EASE_OUT } from '../chunk-
|
|
3
|
-
import { cn } from '../chunk-
|
|
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-jira-ticket.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../src/animations/animation-jira-ticket.tsx"],"names":[],"mappings":"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","file":"animation-jira-ticket.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 AnimationJiraTicket({ className }: { className?: string }) {\n return (\n <div className={cn(\"flex flex-col bg-white p-4\", className)}>\n {/* Breadcrumb */}\n <div className=\"flex items-center gap-1.5 text-[10px] text-gray-400\">\n <span>COGENTIC</span>\n <span>/</span>\n <span>Compliance Reviews</span>\n <span>/</span>\n <span className=\"text-gray-600\">COG-847</span>\n </div>\n\n {/* Issue header */}\n <motion.div\n initial={{ opacity: 0, y: 8 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ duration: 0.5, ease: EASE_OUT, delay: 0.2 }}\n >\n <h4 className=\"mt-2 font-semibold text-[14px] text-gray-900 leading-snug\">\n Review: TXN-0847 — High risk corridor\n </h4>\n\n {/* Status & meta row */}\n <motion.div\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n transition={{ duration: 0.3, delay: 0.5 }}\n className=\"mt-2.5 flex flex-wrap items-center gap-2\"\n >\n <span className=\"rounded bg-blue-100 px-2 py-0.5 font-bold text-[10px] text-blue-700\">\n IN REVIEW\n </span>\n <span className=\"flex items-center gap-1 text-[10px] text-gray-500\">\n <svg width=\"10\" height=\"10\" viewBox=\"0 0 10 10\" fill=\"none\">\n <path d=\"M5 2V5L7 6.5\" stroke=\"currentColor\" strokeWidth=\"1\" strokeLinecap=\"round\" />\n <circle cx=\"5\" cy=\"5\" r=\"4\" stroke=\"currentColor\" strokeWidth=\"1\" />\n </svg>\n Created 2 min ago\n </span>\n <span className=\"flex items-center gap-1 text-[10px] text-gray-500\">\n <span className=\"inline-flex size-4 items-center justify-center rounded-full bg-emerald-100 font-bold text-[7px] text-emerald-700\">\n JC\n </span>\n J. Chen\n </span>\n <span className=\"flex items-center gap-1 rounded bg-red-50 px-1.5 py-0.5 font-semibold text-[10px] text-red-600\">\n <svg width=\"8\" height=\"8\" viewBox=\"0 0 8 8\" fill=\"none\">\n <path\n d=\"M4 1V5M4 6.5V7\"\n stroke=\"currentColor\"\n strokeWidth=\"1.2\"\n strokeLinecap=\"round\"\n />\n </svg>\n High\n </span>\n </motion.div>\n </motion.div>\n\n {/* Description — Cogentic compliance brief */}\n <motion.div\n initial={{ opacity: 0, y: 6 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ duration: 0.4, ease: EASE_OUT, delay: 0.7 }}\n className=\"mt-3 rounded border border-gray-100 bg-gray-50 p-3\"\n >\n <p className=\"font-semibold text-[10px] text-gray-400 uppercase tracking-wider\">\n Cogentic compliance brief\n </p>\n <div className=\"mt-2 space-y-1.5\">\n {[\n { label: \"Corridor\", value: \"AU \\u2192 SG\" },\n { label: \"Risk score\", value: \"72 / 100\" },\n { label: \"Trigger\", value: \"PEP screening match, threshold exceeded\" },\n { label: \"Recommendation\", value: \"Verify beneficiary identity before clearing\" },\n ].map((row, i) => (\n <motion.div\n key={row.label}\n initial={{ opacity: 0, x: -4 }}\n animate={{ opacity: 1, x: 0 }}\n transition={{ duration: 0.25, delay: 0.9 + i * 0.1 }}\n className=\"flex gap-2\"\n >\n <span className=\"w-[80px] shrink-0 font-medium text-[10px] text-gray-400\">\n {row.label}\n </span>\n <span className=\"font-medium text-[10px] text-gray-700\">{row.value}</span>\n </motion.div>\n ))}\n </div>\n </motion.div>\n\n {/* Activity section */}\n <motion.div\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n transition={{ duration: 0.3, delay: 1.4 }}\n className=\"mt-3\"\n >\n <p className=\"font-semibold text-[10px] text-gray-400 uppercase tracking-wider\">Activity</p>\n <div className=\"mt-1.5 flex items-start gap-2\">\n <div className=\"mt-0.5 size-1.5 shrink-0 rounded-full bg-blue-400\" />\n <p className=\"text-[10px] text-gray-500\">\n <span className=\"font-medium text-gray-700\">Cogentic</span> created this issue from\n flagged transfer TXN-0847\n </p>\n </div>\n </motion.div>\n </div>\n )\n}\n"]}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { useCycleIndex } from '../chunk-
|
|
3
|
-
import '../chunk-
|
|
4
|
-
import { cn } from '../chunk-
|
|
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 { 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-jurisdiction-detection.tsx"],"names":[],"mappings":"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","file":"animation-jurisdiction-detection.js","sourcesContent":["\"use client\"\n\nimport { domAnimation, LazyMotion, m } from \"motion/react\"\n\nimport { useCycleIndex } from \"../hooks/use-cycle-index\"\n\nimport { cn } from \"../lib/utils\"\n\ntype Corridor = {\n from: { code: string; flag: string; jurisdiction: string }\n to: { code: string; flag: string; jurisdiction: string }\n requirement: string\n threshold: string\n status: \"Resolved\" | \"Pending\"\n}\n\nconst CORRIDORS: Corridor[] = [\n {\n from: { code: \"AU\", flag: \"\\u{1F1E6}\\u{1F1FA}\", jurisdiction: \"AUSTRAC\" },\n to: { code: \"SG\", flag: \"\\u{1F1F8}\\u{1F1EC}\", jurisdiction: \"MAS\" },\n requirement: \"Full Travel Rule — IVMS101\",\n threshold: \"AUD 10,000 / SGD 20,000\",\n status: \"Resolved\",\n },\n {\n from: { code: \"HK\", flag: \"\\u{1F1ED}\\u{1F1F0}\", jurisdiction: \"SFC\" },\n to: { code: \"GB\", flag: \"\\u{1F1EC}\\u{1F1E7}\", jurisdiction: \"FCA\" },\n requirement: \"Enhanced Due Diligence\",\n threshold: \"No de minimis\",\n status: \"Resolved\",\n },\n {\n from: { code: \"AE\", flag: \"\\u{1F1E6}\\u{1F1EA}\", jurisdiction: \"VARA\" },\n to: { code: \"NL\", flag: \"\\u{1F1F3}\\u{1F1F1}\", jurisdiction: \"DNB\" },\n requirement: \"MiCA — Travel Rule\",\n threshold: \"EUR 1,000\",\n status: \"Pending\",\n },\n]\n\nconst CYCLE_MS = 3500\n\nexport default function AnimationJurisdictionDetection({ className }: { className?: string }) {\n const [containerRef, index] = useCycleIndex(CORRIDORS.length, CYCLE_MS)\n const c = CORRIDORS[index]\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\">Jurisdiction Detection</p>\n <p className=\"text-[12px] text-gray-400\">Automatic corridor mapping</p>\n </div>\n <m.span\n key={index}\n initial={{ opacity: 0, scale: 0.9 }}\n animate={{ opacity: 1, scale: 1 }}\n className={cn(\n \"rounded-full px-2.5 py-1 font-semibold text-[11px]\",\n c.status === \"Resolved\"\n ? \"bg-emerald-50 text-emerald-700\"\n : \"bg-amber-50 text-amber-700\",\n )}\n >\n {c.status}\n </m.span>\n </div>\n\n {/* Corridor visualisation */}\n <m.div\n key={`corridor-${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 justify-between rounded-lg border border-gray-100 bg-gray-50 px-4 py-3\"\n >\n {/* From */}\n <div className=\"text-center\">\n <span className=\"text-2xl\">{c.from.flag}</span>\n <p className=\"mt-1 font-bold font-mono text-[12px] text-gray-900\">{c.from.code}</p>\n <p className=\"text-[10px] text-gray-400\">{c.from.jurisdiction}</p>\n </div>\n\n {/* Arrow */}\n <div className=\"mx-3 flex flex-1 flex-col items-center gap-1\">\n <div className=\"h-px w-full bg-gradient-to-r from-transparent via-[#00D4FF] to-transparent\" />\n <span className=\"font-medium text-[#0099BB] text-[10px]\">Travel Rule</span>\n <div className=\"h-px w-full bg-gradient-to-r from-transparent via-[#00D4FF] to-transparent\" />\n </div>\n\n {/* To */}\n <div className=\"text-center\">\n <span className=\"text-2xl\">{c.to.flag}</span>\n <p className=\"mt-1 font-bold font-mono text-[12px] text-gray-900\">{c.to.code}</p>\n <p className=\"text-[10px] text-gray-400\">{c.to.jurisdiction}</p>\n </div>\n </m.div>\n\n {/* Details */}\n <m.div\n key={`detail-${index}`}\n initial={{ opacity: 0, y: 4 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ duration: 0.25, delay: 0.15 }}\n className=\"mt-3 grid grid-cols-2 gap-2\"\n >\n <div className=\"rounded-lg border border-gray-100 bg-white px-3 py-2.5\">\n <span className=\"font-medium text-[10px] text-gray-400\">Requirement</span>\n <p className=\"mt-0.5 font-semibold text-[12px] text-gray-800\">{c.requirement}</p>\n </div>\n <div className=\"rounded-lg border border-gray-100 bg-white px-3 py-2.5\">\n <span className=\"font-medium text-[10px] text-gray-400\">Threshold</span>\n <p className=\"mt-0.5 font-semibold text-[12px] text-gray-800\">{c.threshold}</p>\n </div>\n </m.div>\n\n {/* Mini log */}\n <m.div\n key={`log-${index}`}\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n transition={{ delay: 0.3 }}\n className=\"mt-3 space-y-1 rounded-lg border border-gray-100 bg-white px-3 py-2\"\n >\n {[\n `Originator jurisdiction: ${c.from.jurisdiction}`,\n `Beneficiary jurisdiction: ${c.to.jurisdiction}`,\n `Applicable requirement: ${c.requirement}`,\n ].map((line, i) => (\n <p key={i} className=\"font-mono text-[10px] text-gray-500\">\n <span className=\"text-emerald-500\">{\"\\u2713\"}</span> {line}\n </p>\n ))}\n </m.div>\n </div>\n </LazyMotion>\n )\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/animations/animation-jurisdiction-detection.tsx"],"names":[],"mappings":"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","file":"animation-jurisdiction-detection.js","sourcesContent":["\"use client\"\n\nimport { domAnimation, LazyMotion, m } from \"motion/react\"\n\nimport { useCycleIndex } from \"../hooks/use-cycle-index\"\n\nimport { cn } from \"../lib/utils\"\n\ntype Corridor = {\n from: { code: string; flag: string; jurisdiction: string }\n to: { code: string; flag: string; jurisdiction: string }\n requirement: string\n threshold: string\n status: \"Resolved\" | \"Pending\"\n}\n\nconst CORRIDORS: Corridor[] = [\n {\n from: { code: \"AU\", flag: \"\\u{1F1E6}\\u{1F1FA}\", jurisdiction: \"AUSTRAC\" },\n to: { code: \"SG\", flag: \"\\u{1F1F8}\\u{1F1EC}\", jurisdiction: \"MAS\" },\n requirement: \"Full Travel Rule — IVMS101\",\n threshold: \"AUD 10,000 / SGD 20,000\",\n status: \"Resolved\",\n },\n {\n from: { code: \"HK\", flag: \"\\u{1F1ED}\\u{1F1F0}\", jurisdiction: \"SFC\" },\n to: { code: \"GB\", flag: \"\\u{1F1EC}\\u{1F1E7}\", jurisdiction: \"FCA\" },\n requirement: \"Enhanced Due Diligence\",\n threshold: \"No de minimis\",\n status: \"Resolved\",\n },\n {\n from: { code: \"AE\", flag: \"\\u{1F1E6}\\u{1F1EA}\", jurisdiction: \"VARA\" },\n to: { code: \"NL\", flag: \"\\u{1F1F3}\\u{1F1F1}\", jurisdiction: \"DNB\" },\n requirement: \"MiCA — Travel Rule\",\n threshold: \"EUR 1,000\",\n status: \"Pending\",\n },\n]\n\nconst CYCLE_MS = 3500\n\nexport default function AnimationJurisdictionDetection({ className }: { className?: string }) {\n const [containerRef, index] = useCycleIndex(CORRIDORS.length, CYCLE_MS)\n const c = CORRIDORS[index]\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\">Jurisdiction Detection</p>\n <p className=\"text-[12px] text-gray-400\">Automatic corridor mapping</p>\n </div>\n <m.span\n key={index}\n initial={{ opacity: 0, scale: 0.9 }}\n animate={{ opacity: 1, scale: 1 }}\n className={cn(\n \"rounded-full px-2.5 py-1 font-semibold text-[11px]\",\n c.status === \"Resolved\"\n ? \"bg-emerald-50 text-emerald-700\"\n : \"bg-amber-50 text-amber-700\",\n )}\n >\n {c.status}\n </m.span>\n </div>\n\n {/* Corridor visualisation */}\n <m.div\n key={`corridor-${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 justify-between rounded-lg border border-gray-100 bg-gray-50 px-4 py-3\"\n >\n {/* From */}\n <div className=\"text-center\">\n <span className=\"text-2xl\">{c.from.flag}</span>\n <p className=\"mt-1 font-bold font-mono text-[12px] text-gray-900\">{c.from.code}</p>\n <p className=\"text-[10px] text-gray-400\">{c.from.jurisdiction}</p>\n </div>\n\n {/* Arrow */}\n <div className=\"mx-3 flex flex-1 flex-col items-center gap-1\">\n <div className=\"h-px w-full bg-gradient-to-r from-transparent via-[#00D4FF] to-transparent\" />\n <span className=\"font-medium text-[#0099BB] text-[10px]\">Travel Rule</span>\n <div className=\"h-px w-full bg-gradient-to-r from-transparent via-[#00D4FF] to-transparent\" />\n </div>\n\n {/* To */}\n <div className=\"text-center\">\n <span className=\"text-2xl\">{c.to.flag}</span>\n <p className=\"mt-1 font-bold font-mono text-[12px] text-gray-900\">{c.to.code}</p>\n <p className=\"text-[10px] text-gray-400\">{c.to.jurisdiction}</p>\n </div>\n </m.div>\n\n {/* Details */}\n <m.div\n key={`detail-${index}`}\n initial={{ opacity: 0, y: 4 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ duration: 0.25, delay: 0.15 }}\n className=\"mt-3 grid grid-cols-2 gap-2\"\n >\n <div className=\"rounded-lg border border-gray-100 bg-white px-3 py-2.5\">\n <span className=\"font-medium text-[10px] text-gray-400\">Requirement</span>\n <p className=\"mt-0.5 font-semibold text-[12px] text-gray-800\">{c.requirement}</p>\n </div>\n <div className=\"rounded-lg border border-gray-100 bg-white px-3 py-2.5\">\n <span className=\"font-medium text-[10px] text-gray-400\">Threshold</span>\n <p className=\"mt-0.5 font-semibold text-[12px] text-gray-800\">{c.threshold}</p>\n </div>\n </m.div>\n\n {/* Mini log */}\n <m.div\n key={`log-${index}`}\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n transition={{ delay: 0.3 }}\n className=\"mt-3 space-y-1 rounded-lg border border-gray-100 bg-white px-3 py-2\"\n >\n {[\n `Originator jurisdiction: ${c.from.jurisdiction}`,\n `Beneficiary jurisdiction: ${c.to.jurisdiction}`,\n `Applicable requirement: ${c.requirement}`,\n ].map((line, i) => (\n <p key={i} className=\"font-mono text-[10px] text-gray-500\">\n <span className=\"text-emerald-500\">{\"\\u2713\"}</span> {line}\n </p>\n ))}\n </m.div>\n </div>\n </LazyMotion>\n )\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/animations/animation-multi-protocol.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../src/animations/animation-multi-protocol.tsx"],"names":[],"mappings":"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","file":"animation-multi-protocol.js","sourcesContent":["\"use client\"\n\nimport { cn } from \"../lib/utils\"\n\ntype ProtocolItem = {\n name: string\n icon: string\n}\n\nconst ROW_1: ProtocolItem[] = [\n { name: \"TRP\", icon: \"T\" },\n { name: \"TRISA\", icon: \"R\" },\n { name: \"OpenVASP\", icon: \"O\" },\n { name: \"Sygna\", icon: \"S\" },\n { name: \"Notabene\", icon: \"N\" },\n { name: \"Sumsub\", icon: \"Su\" },\n { name: \"Chainalysis\", icon: \"C\" },\n { name: \"Elliptic\", icon: \"E\" },\n]\n\nconst ROW_2: ProtocolItem[] = [\n { name: \"Shyft\", icon: \"Sh\" },\n { name: \"Coinfirm\", icon: \"Co\" },\n { name: \"CipherTrace\", icon: \"Ci\" },\n { name: \"VerifyVASP\", icon: \"V\" },\n { name: \"Crystal\", icon: \"Cr\" },\n { name: \"TRM Labs\", icon: \"TL\" },\n { name: \"Merkle\", icon: \"M\" },\n { name: \"Scorechain\", icon: \"Sc\" },\n]\n\nfunction MarqueeRow({\n items,\n direction = \"left\",\n duration = 25,\n}: {\n items: ProtocolItem[]\n direction?: \"left\" | \"right\"\n duration?: number\n}) {\n const doubled = [...items, ...items]\n\n return (\n <div className=\"relative overflow-hidden\">\n <div className=\"pointer-events-none absolute inset-y-0 left-0 z-10 w-10 bg-gradient-to-r from-card/40 to-transparent\" />\n <div className=\"pointer-events-none absolute inset-y-0 right-0 z-10 w-10 bg-gradient-to-l from-card/40 to-transparent\" />\n\n <div\n className={cn(\n \"flex w-max gap-3\",\n direction === \"left\" ? \"animate-marquee-left\" : \"animate-marquee-right\",\n )}\n style={{ animationDuration: `${duration}s` }}\n >\n {doubled.map((item, i) => (\n <div\n key={`${item.name}-${i}`}\n className=\"flex shrink-0 items-center gap-2 rounded-full border border-gray-200 bg-white px-3.5 py-2 shadow-sm\"\n >\n <div className=\"flex size-6 items-center justify-center rounded-full bg-gray-100 font-bold text-[10px] text-gray-500\">\n {item.icon}\n </div>\n <span className=\"font-medium text-[12px] text-gray-700\">{item.name}</span>\n </div>\n ))}\n </div>\n </div>\n )\n}\n\nexport default function AnimationMultiProtocol({ className }: { className?: string }) {\n return (\n <div className={cn(\"flex flex-col justify-center gap-3\", className)}>\n <MarqueeRow items={ROW_1} direction=\"left\" duration={30} />\n <MarqueeRow items={ROW_2} direction=\"right\" duration={28} />\n </div>\n )\n}\n"]}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { useCycleIndex } from '../chunk-
|
|
3
|
-
import '../chunk-
|
|
4
|
-
import {
|
|
2
|
+
import { useCycleIndex } from '../chunk-XAIRLU4F.js';
|
|
3
|
+
import '../chunk-SLSJ6OOL.js';
|
|
4
|
+
import { cn } from '../chunk-MHRCB42B.js';
|
|
5
|
+
import { __spreadProps, __spreadValues } from '../chunk-2NMEKWO5.js';
|
|
5
6
|
import { CheckCircle2 } from 'lucide-react';
|
|
6
7
|
import { LazyMotion, domAnimation, m, AnimatePresence } from 'motion/react';
|
|
7
8
|
import { useMemo } from 'react';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/animations/animation-pricing-preview.tsx"],"names":[],"mappings":"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","file":"animation-pricing-preview.js","sourcesContent":["\"use client\"\n\nimport { CheckCircle2 } from \"lucide-react\"\nimport { AnimatePresence, domAnimation, LazyMotion, m } from \"motion/react\"\nimport { useMemo } from \"react\"\n\nimport { useCycleIndex } from \"../hooks/use-cycle-index\"\n\nimport { cn } from \"../lib/utils\"\n\ninterface Plan {\n name: string\n features: string[]\n ctaLabel: string\n highlight?: boolean\n monthlyPrice?: string\n annualPrice?: string\n}\n\nconst DEFAULT_PLANS: Plan[] = [\n {\n name: \"Starter\",\n features: [\"50 transfers/mo\", \"5 jurisdictions\", \"Audit trail\"],\n ctaLabel: \"Get started\",\n highlight: false,\n },\n {\n name: \"Growth\",\n monthlyPrice: \"$499\",\n annualPrice: \"$399\",\n features: [\"1,000 transfers/mo\", \"25 jurisdictions\", \"AI investigation\"],\n ctaLabel: \"Start trial\",\n highlight: true,\n },\n {\n name: \"Enterprise\",\n features: [\"Unlimited transfers\", \"45+ jurisdictions\", \"Custom workflows\"],\n ctaLabel: \"Talk to sales\",\n highlight: false,\n },\n]\n\nconst MAX_FEATURES = 3\nconst CYCLE_MS = 4000\n\nexport default function AnimationPricingPreview({\n className,\n plans,\n}: {\n className?: string\n plans?: Plan[]\n}) {\n const [containerRef, cycleIndex] = useCycleIndex(2, CYCLE_MS)\n const yearly = cycleIndex === 0\n\n // Use CMS plans if provided (pick first 3), otherwise defaults\n const items = useMemo(() => {\n if (!plans?.length) return DEFAULT_PLANS\n return plans.slice(0, 3).map((p) => ({\n ...p,\n features: p.features.slice(0, MAX_FEATURES),\n }))\n }, [plans])\n\n return (\n <LazyMotion features={domAnimation}>\n <div\n ref={containerRef}\n className={cn(\"flex flex-col items-center justify-center p-5\", className)}\n >\n {/* Toggle */}\n <div className=\"flex items-center gap-3\">\n <span\n className={cn(\n \"font-semibold text-[11px] transition-colors\",\n !yearly ? \"text-gray-900\" : \"text-gray-400\",\n )}\n >\n Monthly\n </span>\n <span\n className=\"relative h-5 w-9 rounded-full bg-gray-900 transition-colors\"\n aria-label=\"Toggle billing\"\n >\n <m.div\n className=\"absolute top-0.5 size-4 rounded-full bg-white\"\n animate={{ left: yearly ? 18 : 2 }}\n transition={{ type: \"spring\", stiffness: 500, damping: 30 }}\n />\n </span>\n <span\n className={cn(\n \"font-semibold text-[11px] transition-colors\",\n yearly ? \"text-gray-900\" : \"text-gray-400\",\n )}\n >\n Yearly\n </span>\n </div>\n\n {/* Cards */}\n <div className=\"-mx-[70px] mt-4 flex w-[calc(100%+140px)] gap-2.5 sm:mx-0 sm:w-full\">\n {items.map((plan, i) => {\n const rawPrice = yearly ? plan.annualPrice : plan.monthlyPrice\n const price = rawPrice || (i === 0 ? \"Free\" : \"Let\\u2019s talk\")\n const hasPrice = yearly ? !!plan.annualPrice : !!plan.monthlyPrice\n return (\n <m.div\n key={plan.name}\n initial={{ opacity: 0, y: 12 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ duration: 0.4, delay: 0.1 + i * 0.08 }}\n className={cn(\n \"flex flex-1 flex-col rounded-xl border p-3\",\n plan.highlight\n ? \"border-gray-900 bg-gray-50 shadow-sm\"\n : \"border-gray-200 bg-white\",\n )}\n >\n <div className=\"flex items-center gap-1.5\">\n <span className=\"font-bold text-[11px] text-gray-900\">{plan.name}</span>\n {plan.highlight && (\n <span className=\"rounded bg-gray-900 px-1.5 py-0.5 font-bold text-[8px] text-white\">\n Popular\n </span>\n )}\n </div>\n\n <div className=\"mt-2 flex items-baseline gap-0.5\">\n <AnimatePresence mode=\"wait\">\n <m.span\n key={price}\n initial={{ opacity: 0, y: -6 }}\n animate={{ opacity: 1, y: 0 }}\n exit={{ opacity: 0, y: 6 }}\n transition={{ duration: 0.2 }}\n className=\"font-bold text-gray-900 text-lg\"\n >\n {price}\n </m.span>\n </AnimatePresence>\n {hasPrice && <span className=\"text-[9px] text-gray-400\">/mo</span>}\n </div>\n\n <div className=\"mt-2.5 flex flex-col gap-1.5\">\n {plan.features.map((f) => (\n <div key={f} className=\"flex items-center gap-1\">\n <CheckCircle2\n className=\"size-3 shrink-0 text-emerald-500\"\n strokeWidth={2.5}\n />\n <span className=\"font-medium text-[9px] text-gray-600 leading-tight\">\n {f}\n </span>\n </div>\n ))}\n </div>\n\n <div\n className={cn(\n \"mt-3 rounded-md py-1.5 text-center font-semibold text-[9px]\",\n plan.highlight\n ? \"bg-gray-900 text-white\"\n : \"border border-gray-200 text-gray-700\",\n )}\n >\n {plan.ctaLabel}\n </div>\n </m.div>\n )\n })}\n </div>\n\n {/* Bottom metric row */}\n <div className=\"mt-3 flex w-full gap-2.5\">\n {[\n { label: \"Avg. savings\", value: \"42%\", sub: \"vs manual compliance\" },\n { label: \"Setup time\", value: \"<1hr\", sub: \"fully operational\" },\n { label: \"Uptime SLA\", value: \"99.9%\", sub: \"guaranteed\" },\n ].map((metric, i) => (\n <m.div\n key={metric.label}\n initial={{ opacity: 0, y: 6 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ duration: 0.3, delay: 0.4 + i * 0.08 }}\n className=\"flex flex-1 flex-col items-center rounded-lg border border-gray-100 bg-white px-2 py-2\"\n >\n <span className=\"font-bold text-gray-900 text-sm\">{metric.value}</span>\n <span className=\"text-[8px] text-gray-400\">{metric.sub}</span>\n </m.div>\n ))}\n </div>\n </div>\n </LazyMotion>\n )\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/animations/animation-pricing-preview.tsx"],"names":[],"mappings":"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","file":"animation-pricing-preview.js","sourcesContent":["\"use client\"\n\nimport { CheckCircle2 } from \"lucide-react\"\nimport { AnimatePresence, domAnimation, LazyMotion, m } from \"motion/react\"\nimport { useMemo } from \"react\"\n\nimport { useCycleIndex } from \"../hooks/use-cycle-index\"\n\nimport { cn } from \"../lib/utils\"\n\ninterface Plan {\n name: string\n features: string[]\n ctaLabel: string\n highlight?: boolean\n monthlyPrice?: string\n annualPrice?: string\n}\n\nconst DEFAULT_PLANS: Plan[] = [\n {\n name: \"Starter\",\n features: [\"50 transfers/mo\", \"5 jurisdictions\", \"Audit trail\"],\n ctaLabel: \"Get started\",\n highlight: false,\n },\n {\n name: \"Growth\",\n monthlyPrice: \"$499\",\n annualPrice: \"$399\",\n features: [\"1,000 transfers/mo\", \"25 jurisdictions\", \"AI investigation\"],\n ctaLabel: \"Start trial\",\n highlight: true,\n },\n {\n name: \"Enterprise\",\n features: [\"Unlimited transfers\", \"45+ jurisdictions\", \"Custom workflows\"],\n ctaLabel: \"Talk to sales\",\n highlight: false,\n },\n]\n\nconst MAX_FEATURES = 3\nconst CYCLE_MS = 4000\n\nexport default function AnimationPricingPreview({\n className,\n plans,\n}: {\n className?: string\n plans?: Plan[]\n}) {\n const [containerRef, cycleIndex] = useCycleIndex(2, CYCLE_MS)\n const yearly = cycleIndex === 0\n\n // Use CMS plans if provided (pick first 3), otherwise defaults\n const items = useMemo(() => {\n if (!plans?.length) return DEFAULT_PLANS\n return plans.slice(0, 3).map((p) => ({\n ...p,\n features: p.features.slice(0, MAX_FEATURES),\n }))\n }, [plans])\n\n return (\n <LazyMotion features={domAnimation}>\n <div\n ref={containerRef}\n className={cn(\"flex flex-col items-center justify-center p-5\", className)}\n >\n {/* Toggle */}\n <div className=\"flex items-center gap-3\">\n <span\n className={cn(\n \"font-semibold text-[11px] transition-colors\",\n !yearly ? \"text-gray-900\" : \"text-gray-400\",\n )}\n >\n Monthly\n </span>\n <span\n className=\"relative h-5 w-9 rounded-full bg-gray-900 transition-colors\"\n aria-label=\"Toggle billing\"\n >\n <m.div\n className=\"absolute top-0.5 size-4 rounded-full bg-white\"\n animate={{ left: yearly ? 18 : 2 }}\n transition={{ type: \"spring\", stiffness: 500, damping: 30 }}\n />\n </span>\n <span\n className={cn(\n \"font-semibold text-[11px] transition-colors\",\n yearly ? \"text-gray-900\" : \"text-gray-400\",\n )}\n >\n Yearly\n </span>\n </div>\n\n {/* Cards */}\n <div className=\"-mx-[70px] mt-4 flex w-[calc(100%+140px)] gap-2.5 sm:mx-0 sm:w-full\">\n {items.map((plan, i) => {\n const rawPrice = yearly ? plan.annualPrice : plan.monthlyPrice\n const price = rawPrice || (i === 0 ? \"Free\" : \"Let\\u2019s talk\")\n const hasPrice = yearly ? !!plan.annualPrice : !!plan.monthlyPrice\n return (\n <m.div\n key={plan.name}\n initial={{ opacity: 0, y: 12 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ duration: 0.4, delay: 0.1 + i * 0.08 }}\n className={cn(\n \"flex flex-1 flex-col rounded-xl border p-3\",\n plan.highlight\n ? \"border-gray-900 bg-gray-50 shadow-sm\"\n : \"border-gray-200 bg-white\",\n )}\n >\n <div className=\"flex items-center gap-1.5\">\n <span className=\"font-bold text-[11px] text-gray-900\">{plan.name}</span>\n {plan.highlight && (\n <span className=\"rounded bg-gray-900 px-1.5 py-0.5 font-bold text-[8px] text-white\">\n Popular\n </span>\n )}\n </div>\n\n <div className=\"mt-2 flex items-baseline gap-0.5\">\n <AnimatePresence mode=\"wait\">\n <m.span\n key={price}\n initial={{ opacity: 0, y: -6 }}\n animate={{ opacity: 1, y: 0 }}\n exit={{ opacity: 0, y: 6 }}\n transition={{ duration: 0.2 }}\n className=\"font-bold text-gray-900 text-lg\"\n >\n {price}\n </m.span>\n </AnimatePresence>\n {hasPrice && <span className=\"text-[9px] text-gray-400\">/mo</span>}\n </div>\n\n <div className=\"mt-2.5 flex flex-col gap-1.5\">\n {plan.features.map((f) => (\n <div key={f} className=\"flex items-center gap-1\">\n <CheckCircle2\n className=\"size-3 shrink-0 text-emerald-500\"\n strokeWidth={2.5}\n />\n <span className=\"font-medium text-[9px] text-gray-600 leading-tight\">\n {f}\n </span>\n </div>\n ))}\n </div>\n\n <div\n className={cn(\n \"mt-3 rounded-md py-1.5 text-center font-semibold text-[9px]\",\n plan.highlight\n ? \"bg-gray-900 text-white\"\n : \"border border-gray-200 text-gray-700\",\n )}\n >\n {plan.ctaLabel}\n </div>\n </m.div>\n )\n })}\n </div>\n\n {/* Bottom metric row */}\n <div className=\"mt-3 flex w-full gap-2.5\">\n {[\n { label: \"Avg. savings\", value: \"42%\", sub: \"vs manual compliance\" },\n { label: \"Setup time\", value: \"<1hr\", sub: \"fully operational\" },\n { label: \"Uptime SLA\", value: \"99.9%\", sub: \"guaranteed\" },\n ].map((metric, i) => (\n <m.div\n key={metric.label}\n initial={{ opacity: 0, y: 6 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ duration: 0.3, delay: 0.4 + i * 0.08 }}\n className=\"flex flex-1 flex-col items-center rounded-lg border border-gray-100 bg-white px-2 py-2\"\n >\n <span className=\"font-bold text-gray-900 text-sm\">{metric.value}</span>\n <span className=\"text-[8px] text-gray-400\">{metric.sub}</span>\n </m.div>\n ))}\n </div>\n </div>\n </LazyMotion>\n )\n}\n"]}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { EASE_OUT } from '../chunk-
|
|
3
|
-
import { useCycleIndex } from '../chunk-
|
|
4
|
-
import '../chunk-
|
|
5
|
-
import {
|
|
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 { __spreadValues } from '../chunk-2NMEKWO5.js';
|
|
6
7
|
import { Activity, ShieldCheck, AlertTriangle } from 'lucide-react';
|
|
7
8
|
import { LazyMotion, domAnimation, m } from 'motion/react';
|
|
8
9
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/animations/animation-realtime-updates.tsx"],"names":[],"mappings":"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","file":"animation-realtime-updates.js","sourcesContent":["\"use client\"\n\nimport { Activity, AlertTriangle, ShieldCheck } from \"lucide-react\"\nimport { domAnimation, LazyMotion, m } from \"motion/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 transfers: { value: string; change: string; up: boolean }\n compliant: { value: string; change: string; up: boolean }\n flagged: { value: string; change: string; up: boolean }\n bars: number[]\n activeBar: number\n}\n\nconst SCENARIOS: Scenario[] = [\n {\n transfers: { value: \"1,247\", change: \"12.3%\", up: true },\n compliant: { value: \"1,238\", change: \"14.1%\", up: true },\n flagged: { value: \"9\", change: \"8.2%\", up: false },\n bars: [30, 55, 70, 100, 45, 25, 60],\n activeBar: 3,\n },\n {\n transfers: { value: \"892\", change: \"6.7%\", up: true },\n compliant: { value: \"874\", change: \"5.2%\", up: true },\n flagged: { value: \"18\", change: \"22.4%\", up: true },\n bars: [45, 35, 60, 50, 80, 100, 40],\n activeBar: 5,\n },\n {\n transfers: { value: \"2,103\", change: \"18.9%\", up: true },\n compliant: { value: \"2,091\", change: \"19.3%\", up: true },\n flagged: { value: \"12\", change: \"4.1%\", up: false },\n bars: [60, 75, 50, 85, 65, 90, 100],\n activeBar: 6,\n },\n]\n\nconst DAYS = [\"MO\", \"TU\", \"WE\", \"TH\", \"FR\", \"SA\", \"SU\"]\n\nconst CYCLE_MS = 4000\n\nfunction AnimatedValue({ value }: { value: string }) {\n return (\n <m.span\n key={value}\n initial={{ opacity: 0, y: 6 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ duration: 0.35, ease: EASE_OUT }}\n >\n {value}\n </m.span>\n )\n}\n\nexport default function AnimationRealtimeUpdates({ className }: { className?: string }) {\n const [containerRef, index] = useCycleIndex(SCENARIOS.length, CYCLE_MS)\n const scenario = SCENARIOS[index]\n\n const metrics = [\n {\n icon: Activity,\n label: \"Transfers screened\",\n sub: \"All protocols\",\n ...scenario.transfers,\n },\n {\n icon: ShieldCheck,\n label: \"Compliant\",\n sub: \"Auto-approved\",\n ...scenario.compliant,\n },\n {\n icon: AlertTriangle,\n label: \"Flagged\",\n sub: \"Manual review\",\n ...scenario.flagged,\n },\n ]\n\n return (\n <LazyMotion features={domAnimation}>\n <div ref={containerRef} className={cn(\"flex flex-col p-5\", className)}>\n {/* Dashboard header */}\n <div className=\"flex items-start justify-between\">\n <div>\n <p className=\"font-semibold text-[15px] text-foreground\">Compliance Overview</p>\n <p className=\"text-[12px] text-gray-400\">Weekly screening summary</p>\n </div>\n <div className=\"flex gap-0.5\">\n <span className=\"size-1 rounded-full bg-gray-300\" />\n <span className=\"size-1 rounded-full bg-gray-300\" />\n <span className=\"size-1 rounded-full bg-gray-300\" />\n </div>\n </div>\n\n {/* Metric rows */}\n <div className=\"mt-4 flex flex-col gap-3\">\n {metrics.map((metric) => (\n <div key={metric.label} className=\"flex items-center gap-3\">\n <div className=\"flex size-9 items-center justify-center rounded-lg bg-gray-100\">\n <metric.icon className=\"size-4 text-foreground\" strokeWidth={1.5} />\n </div>\n <div className=\"flex-1\">\n <p className=\"font-medium text-[13px] text-foreground\">{metric.label}</p>\n <p className=\"text-[10px] text-gray-400\">{metric.sub}</p>\n </div>\n <div className=\"text-right\">\n <p className=\"font-mono font-semibold text-[14px] text-foreground\">\n <AnimatedValue value={metric.value} />\n </p>\n </div>\n <div\n className={cn(\n \"flex items-center gap-0.5 font-medium text-[11px]\",\n metric.up ? \"text-foreground\" : \"text-emerald-600\",\n )}\n >\n <svg\n width=\"10\"\n height=\"10\"\n viewBox=\"0 0 10 10\"\n className={cn(!metric.up && \"rotate-180\")}\n >\n <path d=\"M5 2L8.5 7H1.5L5 2Z\" fill=\"currentColor\" />\n </svg>\n <AnimatedValue value={metric.change} />\n </div>\n </div>\n ))}\n </div>\n\n {/* Bar chart */}\n <div className=\"mt-4 flex flex-1 items-end gap-2\">\n {scenario.bars.map((height, i) => (\n <div key={i} className=\"flex flex-1 flex-col items-center gap-1.5\">\n <div className=\"relative w-full\" style={{ height: 80 }}>\n <m.div\n className={cn(\n \"absolute inset-x-0 bottom-0 rounded-t-md\",\n i === scenario.activeBar ? \"bg-tagline\" : \"bg-foreground\",\n )}\n style={{ transformOrigin: \"bottom\", height: \"100%\" }}\n initial={{ scaleY: 0 }}\n animate={{ scaleY: height / 100 }}\n transition={{\n duration: 0.6,\n delay: i * 0.05,\n ease: EASE_OUT,\n }}\n key={`${index}-${i}`}\n />\n </div>\n <span\n className={cn(\n \"font-medium text-[10px]\",\n i === scenario.activeBar ? \"text-gray-900\" : \"text-gray-400\",\n )}\n >\n {DAYS[i]}\n </span>\n </div>\n ))}\n </div>\n </div>\n </LazyMotion>\n )\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/animations/animation-realtime-updates.tsx"],"names":[],"mappings":"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","file":"animation-realtime-updates.js","sourcesContent":["\"use client\"\n\nimport { Activity, AlertTriangle, ShieldCheck } from \"lucide-react\"\nimport { domAnimation, LazyMotion, m } from \"motion/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 transfers: { value: string; change: string; up: boolean }\n compliant: { value: string; change: string; up: boolean }\n flagged: { value: string; change: string; up: boolean }\n bars: number[]\n activeBar: number\n}\n\nconst SCENARIOS: Scenario[] = [\n {\n transfers: { value: \"1,247\", change: \"12.3%\", up: true },\n compliant: { value: \"1,238\", change: \"14.1%\", up: true },\n flagged: { value: \"9\", change: \"8.2%\", up: false },\n bars: [30, 55, 70, 100, 45, 25, 60],\n activeBar: 3,\n },\n {\n transfers: { value: \"892\", change: \"6.7%\", up: true },\n compliant: { value: \"874\", change: \"5.2%\", up: true },\n flagged: { value: \"18\", change: \"22.4%\", up: true },\n bars: [45, 35, 60, 50, 80, 100, 40],\n activeBar: 5,\n },\n {\n transfers: { value: \"2,103\", change: \"18.9%\", up: true },\n compliant: { value: \"2,091\", change: \"19.3%\", up: true },\n flagged: { value: \"12\", change: \"4.1%\", up: false },\n bars: [60, 75, 50, 85, 65, 90, 100],\n activeBar: 6,\n },\n]\n\nconst DAYS = [\"MO\", \"TU\", \"WE\", \"TH\", \"FR\", \"SA\", \"SU\"]\n\nconst CYCLE_MS = 4000\n\nfunction AnimatedValue({ value }: { value: string }) {\n return (\n <m.span\n key={value}\n initial={{ opacity: 0, y: 6 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ duration: 0.35, ease: EASE_OUT }}\n >\n {value}\n </m.span>\n )\n}\n\nexport default function AnimationRealtimeUpdates({ className }: { className?: string }) {\n const [containerRef, index] = useCycleIndex(SCENARIOS.length, CYCLE_MS)\n const scenario = SCENARIOS[index]\n\n const metrics = [\n {\n icon: Activity,\n label: \"Transfers screened\",\n sub: \"All protocols\",\n ...scenario.transfers,\n },\n {\n icon: ShieldCheck,\n label: \"Compliant\",\n sub: \"Auto-approved\",\n ...scenario.compliant,\n },\n {\n icon: AlertTriangle,\n label: \"Flagged\",\n sub: \"Manual review\",\n ...scenario.flagged,\n },\n ]\n\n return (\n <LazyMotion features={domAnimation}>\n <div ref={containerRef} className={cn(\"flex flex-col p-5\", className)}>\n {/* Dashboard header */}\n <div className=\"flex items-start justify-between\">\n <div>\n <p className=\"font-semibold text-[15px] text-foreground\">Compliance Overview</p>\n <p className=\"text-[12px] text-gray-400\">Weekly screening summary</p>\n </div>\n <div className=\"flex gap-0.5\">\n <span className=\"size-1 rounded-full bg-gray-300\" />\n <span className=\"size-1 rounded-full bg-gray-300\" />\n <span className=\"size-1 rounded-full bg-gray-300\" />\n </div>\n </div>\n\n {/* Metric rows */}\n <div className=\"mt-4 flex flex-col gap-3\">\n {metrics.map((metric) => (\n <div key={metric.label} className=\"flex items-center gap-3\">\n <div className=\"flex size-9 items-center justify-center rounded-lg bg-gray-100\">\n <metric.icon className=\"size-4 text-foreground\" strokeWidth={1.5} />\n </div>\n <div className=\"flex-1\">\n <p className=\"font-medium text-[13px] text-foreground\">{metric.label}</p>\n <p className=\"text-[10px] text-gray-400\">{metric.sub}</p>\n </div>\n <div className=\"text-right\">\n <p className=\"font-mono font-semibold text-[14px] text-foreground\">\n <AnimatedValue value={metric.value} />\n </p>\n </div>\n <div\n className={cn(\n \"flex items-center gap-0.5 font-medium text-[11px]\",\n metric.up ? \"text-foreground\" : \"text-emerald-600\",\n )}\n >\n <svg\n width=\"10\"\n height=\"10\"\n viewBox=\"0 0 10 10\"\n className={cn(!metric.up && \"rotate-180\")}\n >\n <path d=\"M5 2L8.5 7H1.5L5 2Z\" fill=\"currentColor\" />\n </svg>\n <AnimatedValue value={metric.change} />\n </div>\n </div>\n ))}\n </div>\n\n {/* Bar chart */}\n <div className=\"mt-4 flex flex-1 items-end gap-2\">\n {scenario.bars.map((height, i) => (\n <div key={i} className=\"flex flex-1 flex-col items-center gap-1.5\">\n <div className=\"relative w-full\" style={{ height: 80 }}>\n <m.div\n className={cn(\n \"absolute inset-x-0 bottom-0 rounded-t-md\",\n i === scenario.activeBar ? \"bg-tagline\" : \"bg-foreground\",\n )}\n style={{ transformOrigin: \"bottom\", height: \"100%\" }}\n initial={{ scaleY: 0 }}\n animate={{ scaleY: height / 100 }}\n transition={{\n duration: 0.6,\n delay: i * 0.05,\n ease: EASE_OUT,\n }}\n key={`${index}-${i}`}\n />\n </div>\n <span\n className={cn(\n \"font-medium text-[10px]\",\n i === scenario.activeBar ? \"text-gray-900\" : \"text-gray-400\",\n )}\n >\n {DAYS[i]}\n </span>\n </div>\n ))}\n </div>\n </div>\n </LazyMotion>\n )\n}\n"]}
|