@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
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cn } from './chunk-MHRCB42B.js';
|
|
3
|
+
import { __objRest, __spreadProps, __spreadValues } from './chunk-2NMEKWO5.js';
|
|
4
|
+
import { Slider as Slider$1 } from '@base-ui/react/slider';
|
|
5
|
+
import * as React from 'react';
|
|
6
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
7
|
+
|
|
8
|
+
function Slider(_a) {
|
|
9
|
+
var _b = _a, {
|
|
10
|
+
className,
|
|
11
|
+
defaultValue,
|
|
12
|
+
value,
|
|
13
|
+
min = 0,
|
|
14
|
+
max = 100
|
|
15
|
+
} = _b, props = __objRest(_b, [
|
|
16
|
+
"className",
|
|
17
|
+
"defaultValue",
|
|
18
|
+
"value",
|
|
19
|
+
"min",
|
|
20
|
+
"max"
|
|
21
|
+
]);
|
|
22
|
+
const _values = React.useMemo(
|
|
23
|
+
() => Array.isArray(value) ? value : Array.isArray(defaultValue) ? defaultValue : [min, max],
|
|
24
|
+
[value, defaultValue, min, max]
|
|
25
|
+
);
|
|
26
|
+
return /* @__PURE__ */ jsx(
|
|
27
|
+
Slider$1.Root,
|
|
28
|
+
__spreadProps(__spreadValues({
|
|
29
|
+
className: cn("data-vertical:h-full data-horizontal:w-full", className),
|
|
30
|
+
"data-slot": "slider",
|
|
31
|
+
defaultValue,
|
|
32
|
+
value,
|
|
33
|
+
min,
|
|
34
|
+
max,
|
|
35
|
+
thumbAlignment: "edge"
|
|
36
|
+
}, props), {
|
|
37
|
+
children: /* @__PURE__ */ jsxs(Slider$1.Control, { className: "relative flex w-full touch-none select-none items-center data-vertical:h-full data-vertical:min-h-40 data-vertical:w-auto data-vertical:flex-col data-disabled:opacity-50", children: [
|
|
38
|
+
/* @__PURE__ */ jsx(
|
|
39
|
+
Slider$1.Track,
|
|
40
|
+
{
|
|
41
|
+
"data-slot": "slider-track",
|
|
42
|
+
className: "relative grow select-none overflow-hidden rounded-full bg-muted data-horizontal:h-1.5 data-vertical:h-full data-horizontal:w-full data-vertical:w-1.5",
|
|
43
|
+
children: /* @__PURE__ */ jsx(
|
|
44
|
+
Slider$1.Indicator,
|
|
45
|
+
{
|
|
46
|
+
"data-slot": "slider-range",
|
|
47
|
+
className: "select-none bg-primary data-horizontal:h-full data-vertical:w-full"
|
|
48
|
+
}
|
|
49
|
+
)
|
|
50
|
+
}
|
|
51
|
+
),
|
|
52
|
+
Array.from({ length: _values.length }, (_, index) => /* @__PURE__ */ jsx(
|
|
53
|
+
Slider$1.Thumb,
|
|
54
|
+
{
|
|
55
|
+
"data-slot": "slider-thumb",
|
|
56
|
+
className: "block size-4 shrink-0 select-none rounded-full border border-primary bg-white shadow-sm ring-ring/50 transition-[color,box-shadow] hover:ring-4 focus-visible:outline-hidden focus-visible:ring-4 disabled:pointer-events-none disabled:opacity-50"
|
|
57
|
+
},
|
|
58
|
+
index
|
|
59
|
+
))
|
|
60
|
+
] })
|
|
61
|
+
})
|
|
62
|
+
);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
export { Slider };
|
|
66
|
+
//# sourceMappingURL=chunk-REBDYEZX.js.map
|
|
67
|
+
//# sourceMappingURL=chunk-REBDYEZX.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/slider.tsx"],"names":["SliderPrimitive"],"mappings":";;;;;;AAOA,SAAS,OAAO,EAAA,EAOe;AAPf,EAAA,IAAA,EAAA,GAAA,EAAA,EACd;AAAA,IAAA,SAAA;AAAA,IACA,YAAA;AAAA,IACA,KAAA;AAAA,IACA,GAAA,GAAM,CAAA;AAAA,IACN,GAAA,GAAM;AAAA,GAZR,GAOgB,EAAA,EAMX,KAAA,GAAA,SAAA,CANW,EAAA,EAMX;AAAA,IALH,WAAA;AAAA,IACA,cAAA;AAAA,IACA,OAAA;AAAA,IACA,KAAA;AAAA,IACA;AAAA,GAAA,CAAA;AAGA,EAAA,MAAM,OAAA,GAAgB,KAAA,CAAA,OAAA;AAAA,IACpB,MAAO,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,GAAI,KAAA,GAAQ,KAAA,CAAM,OAAA,CAAQ,YAAY,CAAA,GAAI,YAAA,GAAe,CAAC,KAAK,GAAG,CAAA;AAAA,IAC5F,CAAC,KAAA,EAAO,YAAA,EAAc,GAAA,EAAK,GAAG;AAAA,GAChC;AAEA,EAAA,uBACE,GAAA;AAAA,IAACA,QAAA,CAAgB,IAAA;AAAA,IAAhB,aAAA,CAAA,cAAA,CAAA;AAAA,MACC,SAAA,EAAW,EAAA,CAAG,6CAAA,EAA+C,SAAS,CAAA;AAAA,MACtE,WAAA,EAAU,QAAA;AAAA,MACV,YAAA;AAAA,MACA,KAAA;AAAA,MACA,GAAA;AAAA,MACA,GAAA;AAAA,MACA,cAAA,EAAe;AAAA,KAAA,EACX,KAAA,CAAA,EARL;AAAA,MAUC,QAAA,kBAAA,IAAA,CAACA,QAAA,CAAgB,OAAA,EAAhB,EAAwB,WAAU,2KAAA,EACjC,QAAA,EAAA;AAAA,wBAAA,GAAA;AAAA,UAACA,QAAA,CAAgB,KAAA;AAAA,UAAhB;AAAA,YACC,WAAA,EAAU,cAAA;AAAA,YACV,SAAA,EAAU,uJAAA;AAAA,YAEV,QAAA,kBAAA,GAAA;AAAA,cAACA,QAAA,CAAgB,SAAA;AAAA,cAAhB;AAAA,gBACC,WAAA,EAAU,cAAA;AAAA,gBACV,SAAA,EAAU;AAAA;AAAA;AACZ;AAAA,SACF;AAAA,QACC,KAAA,CAAM,KAAK,EAAE,MAAA,EAAQ,QAAQ,MAAA,EAAO,EAAG,CAAC,CAAA,EAAG,KAAA,qBAC1C,GAAA;AAAA,UAACA,QAAA,CAAgB,KAAA;AAAA,UAAhB;AAAA,YACC,WAAA,EAAU,cAAA;AAAA,YAEV,SAAA,EAAU;AAAA,WAAA;AAAA,UADL;AAAA,SAGR;AAAA,OAAA,EACH;AAAA,KAAA;AAAA,GACF;AAEJ","file":"chunk-REBDYEZX.js","sourcesContent":["\"use client\"\n\nimport { Slider as SliderPrimitive } from \"@base-ui/react/slider\"\nimport * as React from \"react\"\n\nimport { cn } from \"../lib/utils\"\n\nfunction Slider({\n className,\n defaultValue,\n value,\n min = 0,\n max = 100,\n ...props\n}: SliderPrimitive.Root.Props) {\n const _values = React.useMemo(\n () => (Array.isArray(value) ? value : Array.isArray(defaultValue) ? defaultValue : [min, max]),\n [value, defaultValue, min, max],\n )\n\n return (\n <SliderPrimitive.Root\n className={cn(\"data-vertical:h-full data-horizontal:w-full\", className)}\n data-slot=\"slider\"\n defaultValue={defaultValue}\n value={value}\n min={min}\n max={max}\n thumbAlignment=\"edge\"\n {...props}\n >\n <SliderPrimitive.Control className=\"relative flex w-full touch-none select-none items-center data-vertical:h-full data-vertical:min-h-40 data-vertical:w-auto data-vertical:flex-col data-disabled:opacity-50\">\n <SliderPrimitive.Track\n data-slot=\"slider-track\"\n className=\"relative grow select-none overflow-hidden rounded-full bg-muted data-horizontal:h-1.5 data-vertical:h-full data-horizontal:w-full data-vertical:w-1.5\"\n >\n <SliderPrimitive.Indicator\n data-slot=\"slider-range\"\n className=\"select-none bg-primary data-horizontal:h-full data-vertical:w-full\"\n />\n </SliderPrimitive.Track>\n {Array.from({ length: _values.length }, (_, index) => (\n <SliderPrimitive.Thumb\n data-slot=\"slider-thumb\"\n key={index}\n className=\"block size-4 shrink-0 select-none rounded-full border border-primary bg-white shadow-sm ring-ring/50 transition-[color,box-shadow] hover:ring-4 focus-visible:outline-hidden focus-visible:ring-4 disabled:pointer-events-none disabled:opacity-50\"\n />\n ))}\n </SliderPrimitive.Control>\n </SliderPrimitive.Root>\n )\n}\n\nexport { Slider }\n"]}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cn } from './chunk-MHRCB42B.js';
|
|
3
|
+
import { __objRest, __spreadValues, __spreadProps } from './chunk-2NMEKWO5.js';
|
|
4
|
+
import { OTPInput, OTPInputContext } from 'input-otp';
|
|
5
|
+
import { MinusIcon } from 'lucide-react';
|
|
6
|
+
import * as React from 'react';
|
|
7
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
8
|
+
|
|
9
|
+
function InputOTP(_a) {
|
|
10
|
+
var _b = _a, {
|
|
11
|
+
className,
|
|
12
|
+
containerClassName
|
|
13
|
+
} = _b, props = __objRest(_b, [
|
|
14
|
+
"className",
|
|
15
|
+
"containerClassName"
|
|
16
|
+
]);
|
|
17
|
+
return /* @__PURE__ */ jsx(
|
|
18
|
+
OTPInput,
|
|
19
|
+
__spreadValues({
|
|
20
|
+
"data-slot": "input-otp",
|
|
21
|
+
containerClassName: cn(
|
|
22
|
+
"cn-input-otp flex items-center has-disabled:opacity-50",
|
|
23
|
+
containerClassName
|
|
24
|
+
),
|
|
25
|
+
spellCheck: false,
|
|
26
|
+
className: cn("disabled:cursor-not-allowed", className)
|
|
27
|
+
}, props)
|
|
28
|
+
);
|
|
29
|
+
}
|
|
30
|
+
function InputOTPGroup(_a) {
|
|
31
|
+
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
32
|
+
return /* @__PURE__ */ jsx(
|
|
33
|
+
"div",
|
|
34
|
+
__spreadValues({
|
|
35
|
+
"data-slot": "input-otp-group",
|
|
36
|
+
className: cn(
|
|
37
|
+
"flex items-center rounded-md has-aria-invalid:border-destructive has-aria-invalid:ring-3 has-aria-invalid:ring-destructive/20 dark:has-aria-invalid:ring-destructive/40",
|
|
38
|
+
className
|
|
39
|
+
)
|
|
40
|
+
}, props)
|
|
41
|
+
);
|
|
42
|
+
}
|
|
43
|
+
function InputOTPSlot(_a) {
|
|
44
|
+
var _b = _a, {
|
|
45
|
+
index,
|
|
46
|
+
className
|
|
47
|
+
} = _b, props = __objRest(_b, [
|
|
48
|
+
"index",
|
|
49
|
+
"className"
|
|
50
|
+
]);
|
|
51
|
+
var _a2;
|
|
52
|
+
const inputOTPContext = React.useContext(OTPInputContext);
|
|
53
|
+
const { char, hasFakeCaret, isActive } = (_a2 = inputOTPContext == null ? void 0 : inputOTPContext.slots[index]) != null ? _a2 : {};
|
|
54
|
+
return /* @__PURE__ */ jsxs(
|
|
55
|
+
"div",
|
|
56
|
+
__spreadProps(__spreadValues({
|
|
57
|
+
"data-slot": "input-otp-slot",
|
|
58
|
+
"data-active": isActive,
|
|
59
|
+
className: cn(
|
|
60
|
+
"relative flex size-9 items-center justify-center border-input border-y border-r text-sm shadow-xs outline-none transition-all first:rounded-l-md first:border-l last:rounded-r-md aria-invalid:border-destructive data-[active=true]:z-10 data-[active=true]:border-ring data-[active=true]:ring-3 data-[active=true]:ring-ring/50 data-[active=true]:aria-invalid:border-destructive data-[active=true]:aria-invalid:ring-destructive/20 dark:bg-input/30 dark:data-[active=true]:aria-invalid:ring-destructive/40",
|
|
61
|
+
className
|
|
62
|
+
)
|
|
63
|
+
}, props), {
|
|
64
|
+
children: [
|
|
65
|
+
char,
|
|
66
|
+
hasFakeCaret && /* @__PURE__ */ jsx("div", { className: "pointer-events-none absolute inset-0 flex items-center justify-center", children: /* @__PURE__ */ jsx("div", { className: "h-4 w-px animate-caret-blink bg-foreground duration-1000" }) })
|
|
67
|
+
]
|
|
68
|
+
})
|
|
69
|
+
);
|
|
70
|
+
}
|
|
71
|
+
function InputOTPSeparator(_a) {
|
|
72
|
+
var props = __objRest(_a, []);
|
|
73
|
+
return /* @__PURE__ */ jsx(
|
|
74
|
+
"div",
|
|
75
|
+
__spreadProps(__spreadValues({
|
|
76
|
+
"data-slot": "input-otp-separator",
|
|
77
|
+
className: "flex items-center [&_svg:not([class*='size-'])]:size-4",
|
|
78
|
+
role: "separator"
|
|
79
|
+
}, props), {
|
|
80
|
+
children: /* @__PURE__ */ jsx(MinusIcon, {})
|
|
81
|
+
})
|
|
82
|
+
);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
export { InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot };
|
|
86
|
+
//# sourceMappingURL=chunk-RI7KG3TF.js.map
|
|
87
|
+
//# sourceMappingURL=chunk-RI7KG3TF.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/input-otp.tsx"],"names":["_a"],"mappings":";;;;;;;AAQA,SAAS,SAAS,EAAA,EAMf;AANe,EAAA,IAAA,EAAA,GAAA,EAAA,EAChB;AAAA,IAAA,SAAA;AAAA,IACA;AAAA,GAVF,GAQkB,EAAA,EAGb,KAAA,GAAA,SAAA,CAHa,EAAA,EAGb;AAAA,IAFH,WAAA;AAAA,IACA;AAAA,GAAA,CAAA;AAKA,EAAA,uBACE,GAAA;AAAA,IAAC,QAAA;AAAA,IAAA,cAAA,CAAA;AAAA,MACC,WAAA,EAAU,WAAA;AAAA,MACV,kBAAA,EAAoB,EAAA;AAAA,QAClB,wDAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,UAAA,EAAY,KAAA;AAAA,MACZ,SAAA,EAAW,EAAA,CAAG,6BAAA,EAA+B,SAAS;AAAA,KAAA,EAClD,KAAA;AAAA,GACN;AAEJ;AAEA,SAAS,cAAc,EAAA,EAAsD;AAAtD,EAAA,IAAA,EAAA,GAAA,EAAA,EAAE,EAAA,SAAA,EA7BzB,GA6BuB,EAAA,EAAgB,KAAA,GAAA,SAAA,CAAhB,IAAgB,CAAd,WAAA,CAAA,CAAA;AACvB,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA,cAAA,CAAA;AAAA,MACC,WAAA,EAAU,iBAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,yKAAA;AAAA,QACA;AAAA;AACF,KAAA,EACI,KAAA;AAAA,GACN;AAEJ;AAEA,SAAS,aAAa,EAAA,EAMnB;AANmB,EAAA,IAAA,EAAA,GAAA,EAAA,EACpB;AAAA,IAAA,KAAA;AAAA,IACA;AAAA,GA5CF,GA0CsB,EAAA,EAGjB,KAAA,GAAA,SAAA,CAHiB,EAAA,EAGjB;AAAA,IAFH,OAAA;AAAA,IACA;AAAA,GAAA,CAAA;AA5CF,EAAA,IAAAA,GAAAA;AAiDE,EAAA,MAAM,eAAA,GAAwB,iBAAW,eAAe,CAAA;AACxD,EAAA,MAAM,EAAE,IAAA,EAAM,YAAA,EAAc,QAAA,EAAS,GAAA,CAAIA,GAAAA,GAAA,eAAA,IAAA,IAAA,GAAA,MAAA,GAAA,eAAA,CAAiB,KAAA,CAAM,KAAA,CAAA,KAAvB,IAAA,GAAAA,GAAAA,GAAiC,EAAC;AAE3E,EAAA,uBACE,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA,aAAA,CAAA,cAAA,CAAA;AAAA,MACC,WAAA,EAAU,gBAAA;AAAA,MACV,aAAA,EAAa,QAAA;AAAA,MACb,SAAA,EAAW,EAAA;AAAA,QACT,qfAAA;AAAA,QACA;AAAA;AACF,KAAA,EACI,KAAA,CAAA,EAPL;AAAA,MASE,QAAA,EAAA;AAAA,QAAA,IAAA;AAAA,QACA,YAAA,wBACE,KAAA,EAAA,EAAI,SAAA,EAAU,yEACb,QAAA,kBAAA,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,0DAAA,EAA2D,CAAA,EAC5E;AAAA;AAAA,KAAA;AAAA,GAEJ;AAEJ;AAEA,SAAS,kBAAkB,EAAA,EAA2C;AAA3C,EAAA,IAAK,kBAAL,EAAA,EAAK,EAAA,CAAA;AAC9B,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA,aAAA,CAAA,cAAA,CAAA;AAAA,MACC,WAAA,EAAU,qBAAA;AAAA,MACV,SAAA,EAAU,wDAAA;AAAA,MACV,IAAA,EAAK;AAAA,KAAA,EACD,KAAA,CAAA,EAJL;AAAA,MAMC,8BAAC,SAAA,EAAA,EAAU;AAAA,KAAA;AAAA,GACb;AAEJ","file":"chunk-RI7KG3TF.js","sourcesContent":["\"use client\"\n\nimport { OTPInput, OTPInputContext } from \"input-otp\"\nimport { MinusIcon } from \"lucide-react\"\nimport * as React from \"react\"\n\nimport { cn } from \"../lib/utils\"\n\nfunction InputOTP({\n className,\n containerClassName,\n ...props\n}: React.ComponentProps<typeof OTPInput> & {\n containerClassName?: string\n}) {\n return (\n <OTPInput\n data-slot=\"input-otp\"\n containerClassName={cn(\n \"cn-input-otp flex items-center has-disabled:opacity-50\",\n containerClassName,\n )}\n spellCheck={false}\n className={cn(\"disabled:cursor-not-allowed\", className)}\n {...props}\n />\n )\n}\n\nfunction InputOTPGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"input-otp-group\"\n className={cn(\n \"flex items-center rounded-md has-aria-invalid:border-destructive has-aria-invalid:ring-3 has-aria-invalid:ring-destructive/20 dark:has-aria-invalid:ring-destructive/40\",\n className,\n )}\n {...props}\n />\n )\n}\n\nfunction InputOTPSlot({\n index,\n className,\n ...props\n}: React.ComponentProps<\"div\"> & {\n index: number\n}) {\n const inputOTPContext = React.useContext(OTPInputContext)\n const { char, hasFakeCaret, isActive } = inputOTPContext?.slots[index] ?? {}\n\n return (\n <div\n data-slot=\"input-otp-slot\"\n data-active={isActive}\n className={cn(\n \"relative flex size-9 items-center justify-center border-input border-y border-r text-sm shadow-xs outline-none transition-all first:rounded-l-md first:border-l last:rounded-r-md aria-invalid:border-destructive data-[active=true]:z-10 data-[active=true]:border-ring data-[active=true]:ring-3 data-[active=true]:ring-ring/50 data-[active=true]:aria-invalid:border-destructive data-[active=true]:aria-invalid:ring-destructive/20 dark:bg-input/30 dark:data-[active=true]:aria-invalid:ring-destructive/40\",\n className,\n )}\n {...props}\n >\n {char}\n {hasFakeCaret && (\n <div className=\"pointer-events-none absolute inset-0 flex items-center justify-center\">\n <div className=\"h-4 w-px animate-caret-blink bg-foreground duration-1000\" />\n </div>\n )}\n </div>\n )\n}\n\nfunction InputOTPSeparator({ ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"input-otp-separator\"\n className=\"flex items-center [&_svg:not([class*='size-'])]:size-4\"\n role=\"separator\"\n {...props}\n >\n <MinusIcon />\n </div>\n )\n}\n\nexport { InputOTP, InputOTPGroup, InputOTPSlot, InputOTPSeparator }\n"]}
|
|
@@ -27,5 +27,5 @@ function useAnimationTimer(intervalMs) {
|
|
|
27
27
|
}
|
|
28
28
|
|
|
29
29
|
export { useAnimationTimer };
|
|
30
|
-
//# sourceMappingURL=chunk-
|
|
31
|
-
//# sourceMappingURL=chunk-
|
|
30
|
+
//# sourceMappingURL=chunk-SLSJ6OOL.js.map
|
|
31
|
+
//# sourceMappingURL=chunk-SLSJ6OOL.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/hooks/use-animation-timer.ts"],"names":[],"mappings":";;;AAUO,SAAS,kBAAkB,UAAA,EAAoB;AACpD,EAAA,MAAM,GAAA,GAAM,OAAuB,IAAI,CAAA;AACvC,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAI,SAAS,KAAK,CAAA;AAChD,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAI,SAAS,CAAC,CAAA;AAElC,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,MAAM,KAAK,GAAA,CAAI,OAAA;AACf,IAAA,IAAI,CAAC,EAAA,EAAI;AAET,IAAA,MAAM,QAAA,GAAW,IAAI,oBAAA,CAAqB,CAAC,CAAC,KAAK,CAAA,KAAM,YAAA,CAAa,KAAA,CAAM,cAAc,CAAA,EAAG;AAAA,MACzF,SAAA,EAAW;AAAA,KACZ,CAAA;AACD,IAAA,QAAA,CAAS,QAAQ,EAAE,CAAA;AACnB,IAAA,OAAO,MAAM,SAAS,UAAA,EAAW;AAAA,EACnC,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,OAAA,GAAU,YAAY,MAAM;AAChC,IAAA,OAAA,CAAQ,CAAC,CAAA,KAAM,CAAA,GAAI,CAAC,CAAA;AAAA,EACtB,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,CAAC,SAAA,EAAW;AAChB,IAAA,MAAM,EAAA,GAAK,WAAA,CAAY,OAAA,EAAS,UAAU,CAAA;AAC1C,IAAA,OAAO,MAAM,cAAc,EAAE,CAAA;AAAA,EAC/B,CAAA,EAAG,CAAC,SAAA,EAAW,UAAA,EAAY,OAAO,CAAC,CAAA;AAEnC,EAAA,OAAO,CAAC,KAAK,IAAI,CAAA;AACnB","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../src/hooks/use-animation-timer.ts"],"names":[],"mappings":";;;AAUO,SAAS,kBAAkB,UAAA,EAAoB;AACpD,EAAA,MAAM,GAAA,GAAM,OAAuB,IAAI,CAAA;AACvC,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAI,SAAS,KAAK,CAAA;AAChD,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAI,SAAS,CAAC,CAAA;AAElC,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,MAAM,KAAK,GAAA,CAAI,OAAA;AACf,IAAA,IAAI,CAAC,EAAA,EAAI;AAET,IAAA,MAAM,QAAA,GAAW,IAAI,oBAAA,CAAqB,CAAC,CAAC,KAAK,CAAA,KAAM,YAAA,CAAa,KAAA,CAAM,cAAc,CAAA,EAAG;AAAA,MACzF,SAAA,EAAW;AAAA,KACZ,CAAA;AACD,IAAA,QAAA,CAAS,QAAQ,EAAE,CAAA;AACnB,IAAA,OAAO,MAAM,SAAS,UAAA,EAAW;AAAA,EACnC,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,OAAA,GAAU,YAAY,MAAM;AAChC,IAAA,OAAA,CAAQ,CAAC,CAAA,KAAM,CAAA,GAAI,CAAC,CAAA;AAAA,EACtB,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,CAAC,SAAA,EAAW;AAChB,IAAA,MAAM,EAAA,GAAK,WAAA,CAAY,OAAA,EAAS,UAAU,CAAA;AAC1C,IAAA,OAAO,MAAM,cAAc,EAAE,CAAA;AAAA,EAC/B,CAAA,EAAG,CAAC,SAAA,EAAW,UAAA,EAAY,OAAO,CAAC,CAAA;AAEnC,EAAA,OAAO,CAAC,KAAK,IAAI,CAAA;AACnB","file":"chunk-SLSJ6OOL.js","sourcesContent":["\"use client\"\n\nimport { useCallback, useEffect, useRef, useState } from \"react\"\n\n/**\n * Combines an interval timer with IntersectionObserver visibility detection.\n * The timer only runs when the component is visible in the viewport.\n * Returns [ref, tick] where ref should be attached to the container element,\n * and tick is a counter that increments on each interval.\n */\nexport function useAnimationTimer(intervalMs: number) {\n const ref = useRef<HTMLDivElement>(null)\n const [isVisible, setIsVisible] = useState(false)\n const [tick, setTick] = useState(0)\n\n useEffect(() => {\n const el = ref.current\n if (!el) return\n\n const observer = new IntersectionObserver(([entry]) => setIsVisible(entry.isIntersecting), {\n threshold: 0.1,\n })\n observer.observe(el)\n return () => observer.disconnect()\n }, [])\n\n const advance = useCallback(() => {\n setTick((t) => t + 1)\n }, [])\n\n useEffect(() => {\n if (!isVisible) return\n const id = setInterval(advance, intervalMs)\n return () => clearInterval(id)\n }, [isVisible, intervalMs, advance])\n\n return [ref, tick] as const\n}\n"]}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cn } from './chunk-MHRCB42B.js';
|
|
3
|
+
import { __objRest, __spreadValues } from './chunk-2NMEKWO5.js';
|
|
4
|
+
import { useRef, useEffect } from 'react';
|
|
5
|
+
import { jsx } from 'react/jsx-runtime';
|
|
6
|
+
|
|
7
|
+
var CHARS = " .:-=+*#%@";
|
|
8
|
+
var IS_MOBILE = typeof window !== "undefined" && window.innerWidth < 768;
|
|
9
|
+
var CELL = IS_MOBILE ? 20 : 14;
|
|
10
|
+
var FONT_SIZE = IS_MOBILE ? 16 : 12;
|
|
11
|
+
function isDark() {
|
|
12
|
+
return document.documentElement.classList.contains("dark");
|
|
13
|
+
}
|
|
14
|
+
function AsciiShader(_a) {
|
|
15
|
+
var _b = _a, { paused = false, className } = _b, props = __objRest(_b, ["paused", "className"]);
|
|
16
|
+
const canvasRef = useRef(null);
|
|
17
|
+
const rafRef = useRef(0);
|
|
18
|
+
const pausedRef = useRef(paused);
|
|
19
|
+
const frameCount = useRef(0);
|
|
20
|
+
useEffect(() => {
|
|
21
|
+
pausedRef.current = paused;
|
|
22
|
+
}, [paused]);
|
|
23
|
+
useEffect(() => {
|
|
24
|
+
const canvas = canvasRef.current;
|
|
25
|
+
if (!canvas) return;
|
|
26
|
+
const ctx = canvas.getContext("2d");
|
|
27
|
+
if (!ctx) return;
|
|
28
|
+
const mq = window.matchMedia("(prefers-reduced-motion: reduce)");
|
|
29
|
+
if (mq.matches) return;
|
|
30
|
+
let baseOpacity = isDark() ? 0.15 : 0.08;
|
|
31
|
+
let fgBase = isDark() ? "255,255,255" : "0,0,0";
|
|
32
|
+
const updateColors = () => {
|
|
33
|
+
baseOpacity = isDark() ? 0.15 : 0.08;
|
|
34
|
+
fgBase = isDark() ? "255,255,255" : "0,0,0";
|
|
35
|
+
};
|
|
36
|
+
const darkMq = window.matchMedia("(prefers-color-scheme: dark)");
|
|
37
|
+
darkMq.addEventListener("change", updateColors);
|
|
38
|
+
const mutObs = new MutationObserver(updateColors);
|
|
39
|
+
mutObs.observe(document.documentElement, {
|
|
40
|
+
attributes: true,
|
|
41
|
+
attributeFilter: ["class"]
|
|
42
|
+
});
|
|
43
|
+
const startTime = performance.now();
|
|
44
|
+
let cols = 0;
|
|
45
|
+
let rows = 0;
|
|
46
|
+
const resize = () => {
|
|
47
|
+
const dpr = Math.min(window.devicePixelRatio, 2);
|
|
48
|
+
canvas.width = canvas.clientWidth * dpr;
|
|
49
|
+
canvas.height = canvas.clientHeight * dpr;
|
|
50
|
+
ctx.scale(dpr, dpr);
|
|
51
|
+
cols = Math.ceil(canvas.clientWidth / CELL);
|
|
52
|
+
rows = Math.ceil(canvas.clientHeight / CELL);
|
|
53
|
+
};
|
|
54
|
+
resize();
|
|
55
|
+
window.addEventListener("resize", resize);
|
|
56
|
+
const render = (now) => {
|
|
57
|
+
if (pausedRef.current) {
|
|
58
|
+
rafRef.current = requestAnimationFrame(render);
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
frameCount.current++;
|
|
62
|
+
if (frameCount.current % 3 !== 0) {
|
|
63
|
+
rafRef.current = requestAnimationFrame(render);
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
const w = canvas.clientWidth;
|
|
67
|
+
const h = canvas.clientHeight;
|
|
68
|
+
if (w === 0 || h === 0) {
|
|
69
|
+
rafRef.current = requestAnimationFrame(render);
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
ctx.clearRect(0, 0, w, h);
|
|
73
|
+
ctx.font = `${FONT_SIZE}px var(--font-mono), monospace`;
|
|
74
|
+
ctx.textAlign = "center";
|
|
75
|
+
ctx.textBaseline = "middle";
|
|
76
|
+
const t = (now - startTime) / 1e3 * 0.8;
|
|
77
|
+
const t3 = t / 3;
|
|
78
|
+
const aspect = w / h;
|
|
79
|
+
for (let row = 0; row < rows; row++) {
|
|
80
|
+
for (let col = 0; col < cols; col++) {
|
|
81
|
+
const u = col / cols * aspect * 4 + t3 * 0.2;
|
|
82
|
+
const v = row / rows * 4 + t3 * 0.15;
|
|
83
|
+
const k = Math.cos(v * 1.3 + Math.sin(t3 * 0.8 + u * 0.7)) * 2;
|
|
84
|
+
const w2 = Math.sin(u * 1.1 + Math.cos(t3 * 0.6 - v * 0.9)) * 2;
|
|
85
|
+
const d = Math.sqrt(u * u + v * v) * 0.3;
|
|
86
|
+
const field = Math.cos(d + k) * Math.sin(d + w2) * Math.cos(k * w2 * 0.3 + t3);
|
|
87
|
+
const val = field * 0.5 + 0.5;
|
|
88
|
+
const charIdx = Math.floor(val * (CHARS.length - 1));
|
|
89
|
+
const char = CHARS[Math.min(charIdx, CHARS.length - 1)];
|
|
90
|
+
if (char !== " ") {
|
|
91
|
+
const opacity = baseOpacity * (0.3 + 0.7 * (charIdx / (CHARS.length - 1)));
|
|
92
|
+
ctx.fillStyle = `rgba(${fgBase},${opacity})`;
|
|
93
|
+
const x = col * CELL + CELL / 2;
|
|
94
|
+
const y = row * CELL + CELL / 2;
|
|
95
|
+
ctx.fillText(char, x, y);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
rafRef.current = requestAnimationFrame(render);
|
|
100
|
+
};
|
|
101
|
+
rafRef.current = requestAnimationFrame(render);
|
|
102
|
+
return () => {
|
|
103
|
+
cancelAnimationFrame(rafRef.current);
|
|
104
|
+
window.removeEventListener("resize", resize);
|
|
105
|
+
darkMq.removeEventListener("change", updateColors);
|
|
106
|
+
mutObs.disconnect();
|
|
107
|
+
};
|
|
108
|
+
}, []);
|
|
109
|
+
return /* @__PURE__ */ jsx(
|
|
110
|
+
"canvas",
|
|
111
|
+
__spreadValues({
|
|
112
|
+
ref: canvasRef,
|
|
113
|
+
"aria-hidden": "true",
|
|
114
|
+
"data-slot": "ascii-shader",
|
|
115
|
+
className: cn("absolute inset-0 h-full w-full", className)
|
|
116
|
+
}, props)
|
|
117
|
+
);
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
export { AsciiShader };
|
|
121
|
+
//# sourceMappingURL=chunk-ST22RZYN.js.map
|
|
122
|
+
//# sourceMappingURL=chunk-ST22RZYN.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/ascii-shader.tsx"],"names":[],"mappings":"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","file":"chunk-ST22RZYN.js","sourcesContent":["\"use client\"\n\nimport { useEffect, useRef } from \"react\"\n\nimport { cn } from \"../lib/utils\"\n\nconst CHARS = \" .:-=+*#%@\"\nconst IS_MOBILE = typeof window !== \"undefined\" && window.innerWidth < 768\nconst CELL = IS_MOBILE ? 20 : 14\nconst FONT_SIZE = IS_MOBILE ? 16 : 12\n\ntype AsciiShaderProps = React.ComponentProps<\"canvas\"> & {\n paused?: boolean\n}\n\nfunction isDark() {\n return document.documentElement.classList.contains(\"dark\")\n}\n\nfunction AsciiShader({ paused = false, className, ...props }: AsciiShaderProps) {\n const canvasRef = useRef<HTMLCanvasElement>(null)\n const rafRef = useRef(0)\n const pausedRef = useRef(paused)\n const frameCount = useRef(0)\n\n useEffect(() => {\n pausedRef.current = paused\n }, [paused])\n\n useEffect(() => {\n const canvas = canvasRef.current\n if (!canvas) return\n\n const ctx = canvas.getContext(\"2d\")\n if (!ctx) return\n\n const mq = window.matchMedia(\"(prefers-reduced-motion: reduce)\")\n if (mq.matches) return\n\n let baseOpacity = isDark() ? 0.15 : 0.08\n let fgBase = isDark() ? \"255,255,255\" : \"0,0,0\"\n\n const updateColors = () => {\n baseOpacity = isDark() ? 0.15 : 0.08\n fgBase = isDark() ? \"255,255,255\" : \"0,0,0\"\n }\n\n const darkMq = window.matchMedia(\"(prefers-color-scheme: dark)\")\n darkMq.addEventListener(\"change\", updateColors)\n const mutObs = new MutationObserver(updateColors)\n mutObs.observe(document.documentElement, {\n attributes: true,\n attributeFilter: [\"class\"],\n })\n\n const startTime = performance.now()\n let cols = 0\n let rows = 0\n\n const resize = () => {\n const dpr = Math.min(window.devicePixelRatio, 2)\n canvas.width = canvas.clientWidth * dpr\n canvas.height = canvas.clientHeight * dpr\n ctx.scale(dpr, dpr)\n cols = Math.ceil(canvas.clientWidth / CELL)\n rows = Math.ceil(canvas.clientHeight / CELL)\n }\n\n resize()\n window.addEventListener(\"resize\", resize)\n\n const render = (now: number) => {\n if (pausedRef.current) {\n rafRef.current = requestAnimationFrame(render)\n return\n }\n\n frameCount.current++\n if (frameCount.current % 3 !== 0) {\n rafRef.current = requestAnimationFrame(render)\n return\n }\n\n const w = canvas.clientWidth\n const h = canvas.clientHeight\n if (w === 0 || h === 0) {\n rafRef.current = requestAnimationFrame(render)\n return\n }\n\n ctx.clearRect(0, 0, w, h)\n ctx.font = `${FONT_SIZE}px var(--font-mono), monospace`\n ctx.textAlign = \"center\"\n ctx.textBaseline = \"middle\"\n\n const t = ((now - startTime) / 1000) * 0.8\n const t3 = t / 3\n const aspect = w / h\n\n for (let row = 0; row < rows; row++) {\n for (let col = 0; col < cols; col++) {\n const u = (col / cols) * aspect * 4 + t3 * 0.2\n const v = (row / rows) * 4 + t3 * 0.15\n\n const k = Math.cos(v * 1.3 + Math.sin(t3 * 0.8 + u * 0.7)) * 2\n const w2 = Math.sin(u * 1.1 + Math.cos(t3 * 0.6 - v * 0.9)) * 2\n const d = Math.sqrt(u * u + v * v) * 0.3\n const field = Math.cos(d + k) * Math.sin(d + w2) * Math.cos(k * w2 * 0.3 + t3)\n\n const val = field * 0.5 + 0.5\n const charIdx = Math.floor(val * (CHARS.length - 1))\n const char = CHARS[Math.min(charIdx, CHARS.length - 1)]\n\n if (char !== \" \") {\n const opacity = baseOpacity * (0.3 + 0.7 * (charIdx / (CHARS.length - 1)))\n ctx.fillStyle = `rgba(${fgBase},${opacity})`\n const x = col * CELL + CELL / 2\n const y = row * CELL + CELL / 2\n ctx.fillText(char, x, y)\n }\n }\n }\n\n rafRef.current = requestAnimationFrame(render)\n }\n\n rafRef.current = requestAnimationFrame(render)\n\n return () => {\n cancelAnimationFrame(rafRef.current)\n window.removeEventListener(\"resize\", resize)\n darkMq.removeEventListener(\"change\", updateColors)\n mutObs.disconnect()\n }\n }, [])\n\n return (\n <canvas\n ref={canvasRef}\n aria-hidden=\"true\"\n data-slot=\"ascii-shader\"\n className={cn(\"absolute inset-0 h-full w-full\", className)}\n {...props}\n />\n )\n}\n\nexport { AsciiShader }\nexport type { AsciiShaderProps }\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"chunk-SZFIXV43.js","sourcesContent":[]}
|
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cn } from './chunk-MHRCB42B.js';
|
|
3
|
+
import { useRef, useEffect } from 'react';
|
|
4
|
+
import { jsx } from 'react/jsx-runtime';
|
|
5
|
+
|
|
6
|
+
var BAYER = [
|
|
7
|
+
0 / 16,
|
|
8
|
+
8 / 16,
|
|
9
|
+
2 / 16,
|
|
10
|
+
10 / 16,
|
|
11
|
+
12 / 16,
|
|
12
|
+
4 / 16,
|
|
13
|
+
14 / 16,
|
|
14
|
+
6 / 16,
|
|
15
|
+
3 / 16,
|
|
16
|
+
11 / 16,
|
|
17
|
+
1 / 16,
|
|
18
|
+
9 / 16,
|
|
19
|
+
15 / 16,
|
|
20
|
+
7 / 16,
|
|
21
|
+
13 / 16,
|
|
22
|
+
5 / 16
|
|
23
|
+
];
|
|
24
|
+
var BAYER_SCALE = 4;
|
|
25
|
+
var DOWNSAMPLE = 4;
|
|
26
|
+
var DEFAULT_COLORS = {
|
|
27
|
+
light: { fg: [220, 223, 227], bg: [250, 250, 250] },
|
|
28
|
+
dark: { fg: [26, 35, 52], bg: [58, 74, 92] }
|
|
29
|
+
};
|
|
30
|
+
function isDark() {
|
|
31
|
+
return document.documentElement.classList.contains("dark");
|
|
32
|
+
}
|
|
33
|
+
function BgShader({ className, colors = DEFAULT_COLORS }) {
|
|
34
|
+
const colorsRef = useRef(colors);
|
|
35
|
+
colorsRef.current = colors;
|
|
36
|
+
const canvasRef = useRef(null);
|
|
37
|
+
const rafRef = useRef(0);
|
|
38
|
+
const visibleRef = useRef(false);
|
|
39
|
+
const frameCount = useRef(0);
|
|
40
|
+
useEffect(() => {
|
|
41
|
+
const canvas = canvasRef.current;
|
|
42
|
+
if (!canvas) return;
|
|
43
|
+
const mq = window.matchMedia("(prefers-reduced-motion: reduce)");
|
|
44
|
+
let reducedMotion = mq.matches;
|
|
45
|
+
const onMotionChange = (e) => {
|
|
46
|
+
reducedMotion = e.matches;
|
|
47
|
+
};
|
|
48
|
+
mq.addEventListener("change", onMotionChange);
|
|
49
|
+
const ctx = canvas.getContext("2d");
|
|
50
|
+
if (!ctx) return;
|
|
51
|
+
const resolve = () => {
|
|
52
|
+
const c = colorsRef.current;
|
|
53
|
+
return isDark() ? c.dark : c.light;
|
|
54
|
+
};
|
|
55
|
+
let { fg, bg } = resolve();
|
|
56
|
+
const updateColors = () => {
|
|
57
|
+
const resolved = resolve();
|
|
58
|
+
fg = resolved.fg;
|
|
59
|
+
bg = resolved.bg;
|
|
60
|
+
};
|
|
61
|
+
const darkMq = window.matchMedia("(prefers-color-scheme: dark)");
|
|
62
|
+
darkMq.addEventListener("change", updateColors);
|
|
63
|
+
const mutObs = new MutationObserver(updateColors);
|
|
64
|
+
mutObs.observe(document.documentElement, {
|
|
65
|
+
attributes: true,
|
|
66
|
+
attributeFilter: ["class"]
|
|
67
|
+
});
|
|
68
|
+
const ioObs = new IntersectionObserver(
|
|
69
|
+
([entry]) => {
|
|
70
|
+
visibleRef.current = entry.isIntersecting;
|
|
71
|
+
if (entry.isIntersecting) {
|
|
72
|
+
rafRef.current = requestAnimationFrame(render);
|
|
73
|
+
}
|
|
74
|
+
},
|
|
75
|
+
{ rootMargin: "100px" }
|
|
76
|
+
);
|
|
77
|
+
ioObs.observe(canvas);
|
|
78
|
+
const startTime = performance.now();
|
|
79
|
+
let cachedImageData = null;
|
|
80
|
+
let cachedW = 0;
|
|
81
|
+
let cachedH = 0;
|
|
82
|
+
const render = (now) => {
|
|
83
|
+
if (!visibleRef.current || reducedMotion) return;
|
|
84
|
+
frameCount.current++;
|
|
85
|
+
if (frameCount.current % 2 !== 0) {
|
|
86
|
+
rafRef.current = requestAnimationFrame(render);
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
const w = canvas.clientWidth;
|
|
90
|
+
const h = canvas.clientHeight;
|
|
91
|
+
if (w === 0 || h === 0) {
|
|
92
|
+
rafRef.current = requestAnimationFrame(render);
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
const cw = Math.ceil(w / DOWNSAMPLE);
|
|
96
|
+
const ch = Math.ceil(h / DOWNSAMPLE);
|
|
97
|
+
if (canvas.width !== cw || canvas.height !== ch) {
|
|
98
|
+
canvas.width = cw;
|
|
99
|
+
canvas.height = ch;
|
|
100
|
+
}
|
|
101
|
+
if (!cachedImageData || cachedW !== cw || cachedH !== ch) {
|
|
102
|
+
cachedImageData = ctx.createImageData(cw, ch);
|
|
103
|
+
cachedW = cw;
|
|
104
|
+
cachedH = ch;
|
|
105
|
+
}
|
|
106
|
+
const data = cachedImageData.data;
|
|
107
|
+
const time = (now - startTime) / 1e3 * 0.5;
|
|
108
|
+
const t3 = time / 3;
|
|
109
|
+
const aspect = w / h;
|
|
110
|
+
for (let py = 0; py < ch; py++) {
|
|
111
|
+
for (let px = 0; px < cw; px++) {
|
|
112
|
+
const u = px / cw * aspect * 3.5 + t3 * 0.3;
|
|
113
|
+
const v = py / ch * 3.5 + t3 * 0.3;
|
|
114
|
+
const k = 0.1 + Math.cos(v + Math.sin(0.148 - t3)) + 2.4 * t3;
|
|
115
|
+
const w2 = 0.9 + Math.sin(u + Math.cos(0.628 + t3)) - 0.7 * t3;
|
|
116
|
+
const d = Math.sqrt(u * u + v * v);
|
|
117
|
+
const s = 7 * Math.cos(d + w2) * Math.sin(k + w2);
|
|
118
|
+
const r = 0.5 + 0.5 * Math.cos(s + 0.2);
|
|
119
|
+
const g = 0.5 + 0.5 * Math.cos(s + 0.5);
|
|
120
|
+
const b = 0.5 + 0.5 * Math.cos(s + 0.9);
|
|
121
|
+
const gray = 0.299 * r + 0.587 * g + 0.114 * b;
|
|
122
|
+
const ox = px * DOWNSAMPLE;
|
|
123
|
+
const oy = py * DOWNSAMPLE;
|
|
124
|
+
const bx = Math.floor(ox / BAYER_SCALE) & 3;
|
|
125
|
+
const by = Math.floor(oy / BAYER_SCALE) & 3;
|
|
126
|
+
const threshold = BAYER[bx + by * 4];
|
|
127
|
+
const idx = (py * cw + px) * 4;
|
|
128
|
+
const c = gray > threshold ? fg : bg;
|
|
129
|
+
data[idx] = c[0];
|
|
130
|
+
data[idx + 1] = c[1];
|
|
131
|
+
data[idx + 2] = c[2];
|
|
132
|
+
data[idx + 3] = 255;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
ctx.putImageData(cachedImageData, 0, 0);
|
|
136
|
+
rafRef.current = requestAnimationFrame(render);
|
|
137
|
+
};
|
|
138
|
+
if (reducedMotion) {
|
|
139
|
+
rafRef.current = requestAnimationFrame(() => {
|
|
140
|
+
visibleRef.current = true;
|
|
141
|
+
frameCount.current = 1;
|
|
142
|
+
const w = canvas.clientWidth;
|
|
143
|
+
const h = canvas.clientHeight;
|
|
144
|
+
if (w === 0 || h === 0) return;
|
|
145
|
+
const cw = Math.ceil(w / DOWNSAMPLE);
|
|
146
|
+
const ch = Math.ceil(h / DOWNSAMPLE);
|
|
147
|
+
canvas.width = cw;
|
|
148
|
+
canvas.height = ch;
|
|
149
|
+
const imageData = ctx.createImageData(cw, ch);
|
|
150
|
+
const data = imageData.data;
|
|
151
|
+
const aspect = w / h;
|
|
152
|
+
for (let py = 0; py < ch; py++) {
|
|
153
|
+
for (let px = 0; px < cw; px++) {
|
|
154
|
+
const u = px / cw * aspect * 3.5;
|
|
155
|
+
const v = py / ch * 3.5;
|
|
156
|
+
const k = 0.1 + Math.cos(v + Math.sin(0.148));
|
|
157
|
+
const w2 = 0.9 + Math.sin(u + Math.cos(0.628));
|
|
158
|
+
const d = Math.sqrt(u * u + v * v);
|
|
159
|
+
const s = 7 * Math.cos(d + w2) * Math.sin(k + w2);
|
|
160
|
+
const gray = 0.299 * (0.5 + 0.5 * Math.cos(s + 0.2)) + 0.587 * (0.5 + 0.5 * Math.cos(s + 0.5)) + 0.114 * (0.5 + 0.5 * Math.cos(s + 0.9));
|
|
161
|
+
const ox = px * DOWNSAMPLE;
|
|
162
|
+
const oy = py * DOWNSAMPLE;
|
|
163
|
+
const bx = Math.floor(ox / BAYER_SCALE) & 3;
|
|
164
|
+
const by = Math.floor(oy / BAYER_SCALE) & 3;
|
|
165
|
+
const threshold = BAYER[bx + by * 4];
|
|
166
|
+
const idx = (py * cw + px) * 4;
|
|
167
|
+
const c = gray > threshold ? fg : bg;
|
|
168
|
+
data[idx] = c[0];
|
|
169
|
+
data[idx + 1] = c[1];
|
|
170
|
+
data[idx + 2] = c[2];
|
|
171
|
+
data[idx + 3] = 255;
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
ctx.putImageData(imageData, 0, 0);
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
return () => {
|
|
178
|
+
cancelAnimationFrame(rafRef.current);
|
|
179
|
+
ioObs.disconnect();
|
|
180
|
+
mutObs.disconnect();
|
|
181
|
+
darkMq.removeEventListener("change", updateColors);
|
|
182
|
+
mq.removeEventListener("change", onMotionChange);
|
|
183
|
+
};
|
|
184
|
+
}, []);
|
|
185
|
+
return /* @__PURE__ */ jsx(
|
|
186
|
+
"div",
|
|
187
|
+
{
|
|
188
|
+
"aria-hidden": "true",
|
|
189
|
+
className: cn("absolute inset-0 opacity-50", className),
|
|
190
|
+
"data-slot": "bg-shader",
|
|
191
|
+
children: /* @__PURE__ */ jsx(
|
|
192
|
+
"canvas",
|
|
193
|
+
{
|
|
194
|
+
ref: canvasRef,
|
|
195
|
+
className: "block h-full w-full",
|
|
196
|
+
style: { imageRendering: "pixelated" }
|
|
197
|
+
}
|
|
198
|
+
)
|
|
199
|
+
}
|
|
200
|
+
);
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
export { BgShader };
|
|
204
|
+
//# sourceMappingURL=chunk-TJVE6LDU.js.map
|
|
205
|
+
//# sourceMappingURL=chunk-TJVE6LDU.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/bg-shader.tsx"],"names":[],"mappings":"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","file":"chunk-TJVE6LDU.js","sourcesContent":["\"use client\"\n\nimport { useEffect, useRef } from \"react\"\n\nimport { cn } from \"../lib/utils\"\n\n// 4×4 Bayer dithering matrix (normalised to 0–1)\nconst BAYER = [\n 0 / 16,\n 8 / 16,\n 2 / 16,\n 10 / 16,\n 12 / 16,\n 4 / 16,\n 14 / 16,\n 6 / 16,\n 3 / 16,\n 11 / 16,\n 1 / 16,\n 9 / 16,\n 15 / 16,\n 7 / 16,\n 13 / 16,\n 5 / 16,\n]\n\nconst BAYER_SCALE = 4\nconst DOWNSAMPLE = 4\n\ntype RGB = [number, number, number]\n\ntype ThemeColors = {\n fg: RGB\n bg: RGB\n}\n\nconst DEFAULT_COLORS = {\n light: { fg: [0xdc, 0xdf, 0xe3] as RGB, bg: [0xfa, 0xfa, 0xfa] as RGB },\n dark: { fg: [0x1a, 0x23, 0x34] as RGB, bg: [0x3a, 0x4a, 0x5c] as RGB },\n}\n\nfunction isDark() {\n return document.documentElement.classList.contains(\"dark\")\n}\n\ninterface BgShaderProps {\n className?: string\n /** Override foreground/background colors for light and dark modes. Accepts RGB tuples. */\n colors?: { light: ThemeColors; dark: ThemeColors }\n}\n\nfunction BgShader({ className, colors = DEFAULT_COLORS }: BgShaderProps) {\n const colorsRef = useRef(colors)\n colorsRef.current = colors\n\n const canvasRef = useRef<HTMLCanvasElement>(null)\n const rafRef = useRef<number>(0)\n const visibleRef = useRef(false)\n const frameCount = useRef(0)\n\n useEffect(() => {\n const canvas = canvasRef.current\n if (!canvas) return\n\n const mq = window.matchMedia(\"(prefers-reduced-motion: reduce)\")\n let reducedMotion = mq.matches\n const onMotionChange = (e: MediaQueryListEvent) => {\n reducedMotion = e.matches\n }\n mq.addEventListener(\"change\", onMotionChange)\n\n const ctx = canvas.getContext(\"2d\")\n if (!ctx) return\n\n const resolve = () => {\n const c = colorsRef.current\n return isDark() ? c.dark : c.light\n }\n\n let { fg, bg } = resolve()\n\n const updateColors = () => {\n const resolved = resolve()\n fg = resolved.fg\n bg = resolved.bg\n }\n\n const darkMq = window.matchMedia(\"(prefers-color-scheme: dark)\")\n darkMq.addEventListener(\"change\", updateColors)\n\n const mutObs = new MutationObserver(updateColors)\n mutObs.observe(document.documentElement, {\n attributes: true,\n attributeFilter: [\"class\"],\n })\n\n const ioObs = new IntersectionObserver(\n ([entry]) => {\n visibleRef.current = entry.isIntersecting\n if (entry.isIntersecting) {\n rafRef.current = requestAnimationFrame(render)\n }\n },\n { rootMargin: \"100px\" },\n )\n ioObs.observe(canvas)\n\n const startTime = performance.now()\n let cachedImageData: ImageData | null = null\n let cachedW = 0\n let cachedH = 0\n\n const render = (now: number) => {\n if (!visibleRef.current || reducedMotion) return\n\n frameCount.current++\n if (frameCount.current % 2 !== 0) {\n rafRef.current = requestAnimationFrame(render)\n return\n }\n\n const w = canvas.clientWidth\n const h = canvas.clientHeight\n if (w === 0 || h === 0) {\n rafRef.current = requestAnimationFrame(render)\n return\n }\n\n const cw = Math.ceil(w / DOWNSAMPLE)\n const ch = Math.ceil(h / DOWNSAMPLE)\n\n if (canvas.width !== cw || canvas.height !== ch) {\n canvas.width = cw\n canvas.height = ch\n }\n\n if (!cachedImageData || cachedW !== cw || cachedH !== ch) {\n cachedImageData = ctx.createImageData(cw, ch)\n cachedW = cw\n cachedH = ch\n }\n\n const data = cachedImageData.data\n const time = ((now - startTime) / 1000) * 0.5\n const t3 = time / 3\n const aspect = w / h\n\n for (let py = 0; py < ch; py++) {\n for (let px = 0; px < cw; px++) {\n const u = (px / cw) * aspect * 3.5 + t3 * 0.3\n const v = (py / ch) * 3.5 + t3 * 0.3\n\n const k = 0.1 + Math.cos(v + Math.sin(0.148 - t3)) + 2.4 * t3\n const w2 = 0.9 + Math.sin(u + Math.cos(0.628 + t3)) - 0.7 * t3\n const d = Math.sqrt(u * u + v * v)\n const s = 7.0 * Math.cos(d + w2) * Math.sin(k + w2)\n\n const r = 0.5 + 0.5 * Math.cos(s + 0.2)\n const g = 0.5 + 0.5 * Math.cos(s + 0.5)\n const b = 0.5 + 0.5 * Math.cos(s + 0.9)\n\n const gray = 0.299 * r + 0.587 * g + 0.114 * b\n\n const ox = px * DOWNSAMPLE\n const oy = py * DOWNSAMPLE\n const bx = Math.floor(ox / BAYER_SCALE) & 3\n const by = Math.floor(oy / BAYER_SCALE) & 3\n const threshold = BAYER[bx + by * 4]\n\n const idx = (py * cw + px) * 4\n const c = gray > threshold ? fg : bg\n data[idx] = c[0]\n data[idx + 1] = c[1]\n data[idx + 2] = c[2]\n data[idx + 3] = 255\n }\n }\n\n ctx.putImageData(cachedImageData, 0, 0)\n rafRef.current = requestAnimationFrame(render)\n }\n\n if (reducedMotion) {\n rafRef.current = requestAnimationFrame(() => {\n visibleRef.current = true\n frameCount.current = 1\n const w = canvas.clientWidth\n const h = canvas.clientHeight\n if (w === 0 || h === 0) return\n const cw = Math.ceil(w / DOWNSAMPLE)\n const ch = Math.ceil(h / DOWNSAMPLE)\n canvas.width = cw\n canvas.height = ch\n const imageData = ctx.createImageData(cw, ch)\n const data = imageData.data\n const aspect = w / h\n for (let py = 0; py < ch; py++) {\n for (let px = 0; px < cw; px++) {\n const u = (px / cw) * aspect * 3.5\n const v = (py / ch) * 3.5\n const k = 0.1 + Math.cos(v + Math.sin(0.148))\n const w2 = 0.9 + Math.sin(u + Math.cos(0.628))\n const d = Math.sqrt(u * u + v * v)\n const s = 7.0 * Math.cos(d + w2) * Math.sin(k + w2)\n const gray =\n 0.299 * (0.5 + 0.5 * Math.cos(s + 0.2)) +\n 0.587 * (0.5 + 0.5 * Math.cos(s + 0.5)) +\n 0.114 * (0.5 + 0.5 * Math.cos(s + 0.9))\n const ox = px * DOWNSAMPLE\n const oy = py * DOWNSAMPLE\n const bx = Math.floor(ox / BAYER_SCALE) & 3\n const by = Math.floor(oy / BAYER_SCALE) & 3\n const threshold = BAYER[bx + by * 4]\n const idx = (py * cw + px) * 4\n const c = gray > threshold ? fg : bg\n data[idx] = c[0]\n data[idx + 1] = c[1]\n data[idx + 2] = c[2]\n data[idx + 3] = 255\n }\n }\n ctx.putImageData(imageData, 0, 0)\n })\n }\n\n return () => {\n cancelAnimationFrame(rafRef.current)\n ioObs.disconnect()\n mutObs.disconnect()\n darkMq.removeEventListener(\"change\", updateColors)\n mq.removeEventListener(\"change\", onMotionChange)\n }\n }, [])\n\n return (\n <div\n aria-hidden=\"true\"\n className={cn(\"absolute inset-0 opacity-50\", className)}\n data-slot=\"bg-shader\"\n >\n <canvas\n ref={canvasRef}\n className=\"block h-full w-full\"\n style={{ imageRendering: \"pixelated\" }}\n />\n </div>\n )\n}\n\nexport { BgShader }\nexport type { BgShaderProps, ThemeColors, RGB }\n"]}
|