@epic-web/workshop-app 5.22.4 → 5.23.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/build/client/assets/{_-CHaVBRQw.js → _-BaHOmd8F.js} +2 -2
- package/build/client/assets/{_-CHaVBRQw.js.map → _-BaHOmd8F.js.map} +1 -1
- package/build/client/assets/_basePickBy-B3Ji82Lk.js +2 -0
- package/build/client/assets/_basePickBy-B3Ji82Lk.js.map +1 -0
- package/build/client/assets/_baseUniq-BoGoqSUm.js +2 -0
- package/build/client/assets/_baseUniq-BoGoqSUm.js.map +1 -0
- package/build/client/assets/{_exerciseNumber-3uq8PYSd.js → _exerciseNumber-DtILU6SM.js} +2 -2
- package/build/client/assets/{_exerciseNumber-3uq8PYSd.js.map → _exerciseNumber-DtILU6SM.js.map} +1 -1
- package/build/client/assets/{_exerciseNumber_._stepNumber-D5VDI7vZ.js → _exerciseNumber_._stepNumber-DoOFEk-P.js} +2 -2
- package/build/client/assets/{_exerciseNumber_._stepNumber-D5VDI7vZ.js.map → _exerciseNumber_._stepNumber-DoOFEk-P.js.map} +1 -1
- package/build/client/assets/{_exerciseNumber_.finished-3Iv9ikNq.js → _exerciseNumber_.finished-CEK9anWX.js} +2 -2
- package/build/client/assets/{_exerciseNumber_.finished-3Iv9ikNq.js.map → _exerciseNumber_.finished-CEK9anWX.js.map} +1 -1
- package/build/client/assets/{_layout-DV29dlKr.js → _layout-B_BIIcpM.js} +2 -2
- package/build/client/assets/{_layout-DV29dlKr.js.map → _layout-B_BIIcpM.js.map} +1 -1
- package/build/client/assets/_layout-D1r_62oj.js +6 -0
- package/build/client/assets/_layout-D1r_62oj.js.map +1 -0
- package/build/client/assets/{_layout-CwTidn3v.js → _layout-D7_F6t3x.js} +2 -2
- package/build/client/assets/{_layout-CwTidn3v.js.map → _layout-D7_F6t3x.js.map} +1 -1
- package/build/client/assets/_layout-DzlTTMQ0.js +2 -0
- package/build/client/assets/_layout-DzlTTMQ0.js.map +1 -0
- package/build/client/assets/accordion-CpiLc1m2.js +2 -0
- package/build/client/assets/accordion-CpiLc1m2.js.map +1 -0
- package/build/client/assets/{account-CN4B8rm4.js → account-CbFDiVNd.js} +2 -2
- package/build/client/assets/{account-CN4B8rm4.js.map → account-CbFDiVNd.js.map} +1 -1
- package/build/client/assets/app-CQvK51s0.js +2 -0
- package/build/client/assets/{app-lUkT_xku.js.map → app-CQvK51s0.js.map} +1 -1
- package/build/client/assets/{app-DGPT3Jy6.css → app-DSmkkXO5.css} +1 -1
- package/build/client/assets/arc-rF8TbXNV.js +2 -0
- package/build/client/assets/arc-rF8TbXNV.js.map +1 -0
- package/build/client/assets/architectureDiagram-IEHRJDOE-D7gCCmY9.js +37 -0
- package/build/client/assets/architectureDiagram-IEHRJDOE-D7gCCmY9.js.map +1 -0
- package/build/client/assets/blockDiagram-JOT3LUYC-yGQOzhkw.js +122 -0
- package/build/client/assets/blockDiagram-JOT3LUYC-yGQOzhkw.js.map +1 -0
- package/build/client/assets/{button-ChOzbirS.js → button-Dt4EcDfR.js} +2 -2
- package/build/client/assets/{button-ChOzbirS.js.map → button-Dt4EcDfR.js.map} +1 -1
- package/build/client/assets/c4Diagram-VJAJSXHY-CTFjYF37.js +11 -0
- package/build/client/assets/c4Diagram-VJAJSXHY-CTFjYF37.js.map +1 -0
- package/build/client/assets/channel-5s71-OE9.js +2 -0
- package/build/client/assets/channel-5s71-OE9.js.map +1 -0
- package/build/client/assets/chunk-4BMEZGHF-BIe0IUDz.js +2 -0
- package/build/client/assets/chunk-4BMEZGHF-BIe0IUDz.js.map +1 -0
- package/build/client/assets/chunk-A2AXSNBT-B-nCbUBj.js +165 -0
- package/build/client/assets/chunk-A2AXSNBT-B-nCbUBj.js.map +1 -0
- package/build/client/assets/chunk-AEK57VVT-B-cCHPs2.js +221 -0
- package/build/client/assets/chunk-AEK57VVT-B-cCHPs2.js.map +1 -0
- package/build/client/assets/chunk-D6G4REZN-EQ3R8OZx.js +2 -0
- package/build/client/assets/chunk-D6G4REZN-EQ3R8OZx.js.map +1 -0
- package/build/client/assets/chunk-RZ5BOZE2-h6svq8Xk.js +2 -0
- package/build/client/assets/chunk-RZ5BOZE2-h6svq8Xk.js.map +1 -0
- package/build/client/assets/chunk-XZIHB7SX-74-HFRcU.js +2 -0
- package/build/client/assets/chunk-XZIHB7SX-74-HFRcU.js.map +1 -0
- package/build/client/assets/classDiagram-GIVACNV2-CWogZCzR.js +2 -0
- package/build/client/assets/classDiagram-GIVACNV2-CWogZCzR.js.map +1 -0
- package/build/client/assets/classDiagram-v2-COTLJTTW-CWogZCzR.js +2 -0
- package/build/client/assets/classDiagram-v2-COTLJTTW-CWogZCzR.js.map +1 -0
- package/build/client/assets/clone-nHZ14b_E.js +2 -0
- package/build/client/assets/clone-nHZ14b_E.js.map +1 -0
- package/build/client/assets/{components-DrvY4pal.js → components-5arJTWsS.js} +5 -5
- package/build/client/assets/{components-DrvY4pal.js.map → components-5arJTWsS.js.map} +1 -1
- package/build/client/assets/cytoscape.esm-BY7v1xhs.js +332 -0
- package/build/client/assets/cytoscape.esm-BY7v1xhs.js.map +1 -0
- package/build/client/assets/dagre-OKDRZEBW-Bq-HgVN8.js +5 -0
- package/build/client/assets/dagre-OKDRZEBW-Bq-HgVN8.js.map +1 -0
- package/build/client/assets/diagram-SSKATNLV-Cls675Lh.js +44 -0
- package/build/client/assets/diagram-SSKATNLV-Cls675Lh.js.map +1 -0
- package/build/client/assets/diagram-VNBRO52H-CJDqBhLa.js +25 -0
- package/build/client/assets/diagram-VNBRO52H-CJDqBhLa.js.map +1 -0
- package/build/client/assets/diff-8N5KyD7o.js +2 -0
- package/build/client/assets/{diff-CVrsnWqw.js.map → diff-8N5KyD7o.js.map} +1 -1
- package/build/client/assets/{diff-CTHVtVGQ.js → diff-Bu4t2NGL.js} +2 -2
- package/build/client/assets/{diff-CTHVtVGQ.js.map → diff-Bu4t2NGL.js.map} +1 -1
- package/build/client/assets/{discord-gROK6Zn6.js → discord-BU7RzE6-.js} +2 -2
- package/build/client/assets/{discord-gROK6Zn6.js.map → discord-BU7RzE6-.js.map} +1 -1
- package/build/client/assets/discord-ut4t-aMQ.js +2 -0
- package/build/client/assets/discord-ut4t-aMQ.js.map +1 -0
- package/build/client/assets/entry.client-BLUlgPHE.js +44 -0
- package/build/client/assets/{entry.client-CQusg5Iz.js.map → entry.client-BLUlgPHE.js.map} +1 -1
- package/build/client/assets/epic-video-DN9DRRHf.js +3206 -0
- package/build/client/assets/epic-video-DN9DRRHf.js.map +1 -0
- package/build/client/assets/erDiagram-Q7BY3M3F-DdKn4jVQ.js +61 -0
- package/build/client/assets/erDiagram-Q7BY3M3F-DdKn4jVQ.js.map +1 -0
- package/build/client/assets/{error-boundary-CAu3AmhN.js → error-boundary-B07cWiEy.js} +2 -2
- package/build/client/assets/{error-boundary-CAu3AmhN.js.map → error-boundary-B07cWiEy.js.map} +1 -1
- package/build/client/assets/{finished-9PhQncNF.js → finished-B3G1RUDO.js} +2 -2
- package/build/client/assets/{finished-9PhQncNF.js.map → finished-B3G1RUDO.js.map} +1 -1
- package/build/client/assets/flowDiagram-4HSFHLVR-5Mg796nh.js +162 -0
- package/build/client/assets/flowDiagram-4HSFHLVR-5Mg796nh.js.map +1 -0
- package/build/client/assets/ganttDiagram-APWFNJXF-YO2fxWzG.js +258 -0
- package/build/client/assets/ganttDiagram-APWFNJXF-YO2fxWzG.js.map +1 -0
- package/build/client/assets/gitGraphDiagram-7IBYFJ6S-DQCZvhP_.js +66 -0
- package/build/client/assets/gitGraphDiagram-7IBYFJ6S-DQCZvhP_.js.map +1 -0
- package/build/client/assets/graph-BFAO9Sgp.js +2 -0
- package/build/client/assets/graph-BFAO9Sgp.js.map +1 -0
- package/build/client/assets/{index-egcHQOpF.js → index-B8yUFowV.js} +2 -2
- package/build/client/assets/{index-egcHQOpF.js.map → index-B8yUFowV.js.map} +1 -1
- package/build/client/assets/{index-qo6WmPUa.js → index-BfCSiT_X.js} +2 -2
- package/build/client/assets/{index-qo6WmPUa.js.map → index-BfCSiT_X.js.map} +1 -1
- package/build/client/assets/index-BmMpCvYx.js +2 -0
- package/build/client/assets/index-BmMpCvYx.js.map +1 -0
- package/build/client/assets/index-CEP3Xxa0.js +36 -0
- package/build/client/assets/index-CEP3Xxa0.js.map +1 -0
- package/build/client/assets/index-Dkt2MSig.js +2 -0
- package/build/client/assets/index-Dkt2MSig.js.map +1 -0
- package/build/client/assets/index-Do-KWT0a.js +42 -0
- package/build/client/assets/index-Do-KWT0a.js.map +1 -0
- package/build/client/assets/index-Dsusf_Av.js +38 -0
- package/build/client/assets/{index-CGzylDPY.js.map → index-Dsusf_Av.js.map} +1 -1
- package/build/client/assets/index-DvQyydjU.js +3 -0
- package/build/client/assets/index-DvQyydjU.js.map +1 -0
- package/build/client/assets/{index-CYZfnGWa.js → index-Fw2eA3AF.js} +2 -2
- package/build/client/assets/{index-CYZfnGWa.js.map → index-Fw2eA3AF.js.map} +1 -1
- package/build/client/assets/infoDiagram-PH2N3AL5-x87RxSs8.js +3 -0
- package/build/client/assets/infoDiagram-PH2N3AL5-x87RxSs8.js.map +1 -0
- package/build/client/assets/init-Gi6I4Gst.js +2 -0
- package/build/client/assets/init-Gi6I4Gst.js.map +1 -0
- package/build/client/assets/journeyDiagram-U35MCT3I-D5yGbOLJ.js +139 -0
- package/build/client/assets/journeyDiagram-U35MCT3I-D5yGbOLJ.js.map +1 -0
- package/build/client/assets/kanban-definition-NDS4AKOZ-BM6KyRww.js +89 -0
- package/build/client/assets/kanban-definition-NDS4AKOZ-BM6KyRww.js.map +1 -0
- package/build/client/assets/katex-ChWnQ-fc.js +262 -0
- package/build/client/assets/katex-ChWnQ-fc.js.map +1 -0
- package/build/client/assets/layout-qCiM2Jgn.js +2 -0
- package/build/client/assets/layout-qCiM2Jgn.js.map +1 -0
- package/build/client/assets/linear-B3zp51yW.js +2 -0
- package/build/client/assets/linear-B3zp51yW.js.map +1 -0
- package/build/client/assets/{loading-CPEkK5hO.js → loading-BPTYJOXN.js} +2 -2
- package/build/client/assets/{loading-CPEkK5hO.js.map → loading-BPTYJOXN.js.map} +1 -1
- package/build/client/assets/login-CfyUfm-m.js +2 -0
- package/build/client/assets/{login-C9JmYc0v.js.map → login-CfyUfm-m.js.map} +1 -1
- package/build/client/assets/{manifest-4acdd3e2.js → manifest-fe4b7228.js} +1 -1
- package/build/client/assets/mdx-Dfsh6Vjk.js +3 -0
- package/build/client/assets/mdx-Dfsh6Vjk.js.map +1 -0
- package/build/client/assets/mermaid.core-ZaxoMXOj.js +214 -0
- package/build/client/assets/mermaid.core-ZaxoMXOj.js.map +1 -0
- package/build/client/assets/mindmap-definition-ALO5MXBD-CF3siXp6.js +96 -0
- package/build/client/assets/mindmap-definition-ALO5MXBD-CF3siXp6.js.map +1 -0
- package/build/client/assets/misc-2sBiisF5.js +2 -0
- package/build/client/assets/misc-2sBiisF5.js.map +1 -0
- package/build/client/assets/{nav-chevrons-DCuva9-Q.js → nav-chevrons-CV-dpXNR.js} +2 -2
- package/build/client/assets/{nav-chevrons-DCuva9-Q.js.map → nav-chevrons-CV-dpXNR.js.map} +1 -1
- package/build/client/assets/{onboarding-DzfDHJg_.js → onboarding-5LC4kIVW.js} +2 -2
- package/build/client/assets/{onboarding-DzfDHJg_.js.map → onboarding-5LC4kIVW.js.map} +1 -1
- package/build/client/assets/{online-BsTX44az.js → online-IWqRB9zP.js} +2 -2
- package/build/client/assets/{online-BsTX44az.js.map → online-IWqRB9zP.js.map} +1 -1
- package/build/client/assets/ordinal-Cboi1Yqb.js +2 -0
- package/build/client/assets/ordinal-Cboi1Yqb.js.map +1 -0
- package/build/client/assets/{pe-DXT2FOp1.js → pe-BShc2dvc.js} +2 -2
- package/build/client/assets/{pe-DXT2FOp1.js.map → pe-BShc2dvc.js.map} +1 -1
- package/build/client/assets/pieDiagram-IB7DONF6-B-gWQIHI.js +31 -0
- package/build/client/assets/pieDiagram-IB7DONF6-B-gWQIHI.js.map +1 -0
- package/build/client/assets/{preferences-BYBJKp8k.js → preferences-BkWQyRCq.js} +2 -2
- package/build/client/assets/{preferences-BYBJKp8k.js.map → preferences-BkWQyRCq.js.map} +1 -1
- package/build/client/assets/presence-BAL3jDku.js +28 -0
- package/build/client/assets/presence-BAL3jDku.js.map +1 -0
- package/build/client/assets/preview-D4amucCL.js +2 -0
- package/build/client/assets/{preview-DaTpH6lj.js.map → preview-D4amucCL.js.map} +1 -1
- package/build/client/assets/{product-BKhLQKd7.js → product-Cyum2biy.js} +2 -2
- package/build/client/assets/{product-BKhLQKd7.js.map → product-Cyum2biy.js.map} +1 -1
- package/build/client/assets/progress-BJ4ADF-s.js +2 -0
- package/build/client/assets/progress-BJ4ADF-s.js.map +1 -0
- package/build/client/assets/{progress-bar-ZCHf2Y4W.js → progress-bar-DgnkQxQw.js} +2 -2
- package/build/client/assets/{progress-bar-ZCHf2Y4W.js.map → progress-bar-DgnkQxQw.js.map} +1 -1
- package/build/client/assets/quadrantDiagram-7GDLP6J5-BQzo7p61.js +8 -0
- package/build/client/assets/quadrantDiagram-7GDLP6J5-BQzo7p61.js.map +1 -0
- package/build/client/assets/radar-MK3ICKWK-CM-Iz9PA.js +129 -0
- package/build/client/assets/radar-MK3ICKWK-CM-Iz9PA.js.map +1 -0
- package/build/client/assets/requirementDiagram-KVF5MWMF-DzaHc66R.js +65 -0
- package/build/client/assets/requirementDiagram-KVF5MWMF-DzaHc66R.js.map +1 -0
- package/build/client/assets/revalidation-ws-ho-umDqd.js +2 -0
- package/build/client/assets/{revalidation-ws-BoJZTvOQ.js.map → revalidation-ws-ho-umDqd.js.map} +1 -1
- package/build/client/assets/{root-4MvCzrFd.js → root-tJmOmO9T.js} +3 -3
- package/build/client/assets/{root-4MvCzrFd.js.map → root-tJmOmO9T.js.map} +1 -1
- package/build/client/assets/sankeyDiagram-QLVOVGJD-DfAVeZCk.js +11 -0
- package/build/client/assets/sankeyDiagram-QLVOVGJD-DfAVeZCk.js.map +1 -0
- package/build/client/assets/sequenceDiagram-X6HHIX6F-CljZRLoS.js +123 -0
- package/build/client/assets/sequenceDiagram-X6HHIX6F-CljZRLoS.js.map +1 -0
- package/build/client/assets/{set-playground-IUJCGVu2.js → set-playground-DW2Ys-rV.js} +2 -2
- package/build/client/assets/{set-playground-IUJCGVu2.js.map → set-playground-DW2Ys-rV.js.map} +1 -1
- package/build/client/assets/stateDiagram-DGXRK772-BzVfGv3W.js +2 -0
- package/build/client/assets/stateDiagram-DGXRK772-BzVfGv3W.js.map +1 -0
- package/build/client/assets/stateDiagram-v2-YXO3MK2T-8oX001yq.js +2 -0
- package/build/client/assets/stateDiagram-v2-YXO3MK2T-8oX001yq.js.map +1 -0
- package/build/client/assets/{support-CW3-Iilk.js → support-Bg0iSyle.js} +2 -2
- package/build/client/assets/{support-CW3-Iilk.js.map → support-Bg0iSyle.js.map} +1 -1
- package/build/client/assets/tailwind-DtnE_2an.css +1 -0
- package/build/client/assets/test-C14D-N72.js +2 -0
- package/build/client/assets/{test-B8jDo0X4.js.map → test-C14D-N72.js.map} +1 -1
- package/build/client/assets/tests-6__AtHpI.js +4 -0
- package/build/client/assets/{tests-y-atkhWB.js.map → tests-6__AtHpI.js.map} +1 -1
- package/build/client/assets/timeline-definition-BDJGKUSR-2TO9MtLY.js +62 -0
- package/build/client/assets/timeline-definition-BDJGKUSR-2TO9MtLY.js.map +1 -0
- package/build/client/assets/tooltip-Bzd6O8vq.js +2 -0
- package/build/client/assets/tooltip-Bzd6O8vq.js.map +1 -0
- package/build/client/assets/{use-event-source-AZJtQsFX.js → use-event-source-Dar8h_B8.js} +2 -2
- package/build/client/assets/{use-event-source-AZJtQsFX.js.map → use-event-source-Dar8h_B8.js.map} +1 -1
- package/build/client/assets/{user-C0j04V55.js → user-DNSnhqGn.js} +2 -2
- package/build/client/assets/{user-C0j04V55.js.map → user-DNSnhqGn.js.map} +1 -1
- package/build/client/assets/{version-D61Qvt0X.js → version-DriSvNMy.js} +2 -2
- package/build/client/assets/{version-D61Qvt0X.js.map → version-DriSvNMy.js.map} +1 -1
- package/build/client/assets/{workshop-config-oL_FWDKq.js → workshop-config-DchzGYJM.js} +2 -2
- package/build/client/assets/{workshop-config-oL_FWDKq.js.map → workshop-config-DchzGYJM.js.map} +1 -1
- package/build/client/assets/xychartDiagram-VJFVF3MP-Dh4nsbBT.js +8 -0
- package/build/client/assets/xychartDiagram-VJFVF3MP-Dh4nsbBT.js.map +1 -0
- package/build/server/index.js +50 -58
- package/build/server/index.js.map +1 -1
- package/dist/server/index.js +6 -0
- package/package.json +6 -5
- package/build/client/assets/_layout-Brb3LPqZ.js +0 -5
- package/build/client/assets/_layout-Brb3LPqZ.js.map +0 -1
- package/build/client/assets/_layout-CkabS-6c.js +0 -9
- package/build/client/assets/_layout-CkabS-6c.js.map +0 -1
- package/build/client/assets/accordion-BjQ-5Z44.js +0 -2
- package/build/client/assets/accordion-BjQ-5Z44.js.map +0 -1
- package/build/client/assets/app-lUkT_xku.js +0 -2
- package/build/client/assets/diff-CVrsnWqw.js +0 -2
- package/build/client/assets/discord-Cl4hiMqz.js +0 -2
- package/build/client/assets/discord-Cl4hiMqz.js.map +0 -1
- package/build/client/assets/entry.client-CQusg5Iz.js +0 -44
- package/build/client/assets/epic-video-BQtjG_Y0.js +0 -3053
- package/build/client/assets/epic-video-BQtjG_Y0.js.map +0 -1
- package/build/client/assets/index-BncqUVfr.js +0 -39
- package/build/client/assets/index-BncqUVfr.js.map +0 -1
- package/build/client/assets/index-CB8bjE90.js +0 -3
- package/build/client/assets/index-CB8bjE90.js.map +0 -1
- package/build/client/assets/index-CGzylDPY.js +0 -38
- package/build/client/assets/index-CMYl882D.js +0 -36
- package/build/client/assets/index-CMYl882D.js.map +0 -1
- package/build/client/assets/index-CSGHuBiw.js +0 -5
- package/build/client/assets/index-CSGHuBiw.js.map +0 -1
- package/build/client/assets/index-mZJ8sz9i.js +0 -2
- package/build/client/assets/index-mZJ8sz9i.js.map +0 -1
- package/build/client/assets/login-C9JmYc0v.js +0 -2
- package/build/client/assets/mdx-CnaWQCDw.js +0 -2
- package/build/client/assets/mdx-CnaWQCDw.js.map +0 -1
- package/build/client/assets/misc-CQmANiHr.js +0 -2
- package/build/client/assets/misc-CQmANiHr.js.map +0 -1
- package/build/client/assets/presence-D5UF-NOM.js +0 -28
- package/build/client/assets/presence-D5UF-NOM.js.map +0 -1
- package/build/client/assets/preview-DaTpH6lj.js +0 -2
- package/build/client/assets/progress-DwE8EkAa.js +0 -2
- package/build/client/assets/progress-DwE8EkAa.js.map +0 -1
- package/build/client/assets/revalidation-ws-BoJZTvOQ.js +0 -2
- package/build/client/assets/tailwind-O9k3JIDs.css +0 -1
- package/build/client/assets/test-B8jDo0X4.js +0 -2
- package/build/client/assets/tests-y-atkhWB.js +0 -4
- package/build/client/assets/tooltip-Cd0yJoQb.js +0 -2
- package/build/client/assets/tooltip-Cd0yJoQb.js.map +0 -1
- /package/build/client/assets/{epic-video-DUnRvy1A.css → epic-video-D2Xftn6t.css} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"_layout-CkabS-6c.js","sources":["../../../../../node_modules/framer-motion/dist/es/animation/hooks/animation-controls.mjs","../../../../../node_modules/framer-motion/dist/es/animation/hooks/use-animation.mjs","../../../app/components/media-query.ts","../../../../../node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/primitive/dist/index.mjs","../../../../../node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-compose-refs/dist/index.mjs","../../../../../node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-context/dist/index.mjs","../../../../../node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-use-layout-effect/dist/index.mjs","../../../../../node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-id/dist/index.mjs","../../../../../node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-use-controllable-state/dist/index.mjs","../../../../../node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-slot/dist/index.mjs","../../../../../node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-primitive/dist/index.mjs","../../../../../node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-use-callback-ref/dist/index.mjs","../../../../../node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-use-escape-keydown/dist/index.mjs","../../../../../node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-dismissable-layer/dist/index.mjs","../../../../../node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-focus-scope/dist/index.mjs","../../../../../node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-portal/dist/index.mjs","../../../../../node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-presence/dist/index.mjs","../../../../../node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-focus-guards/dist/index.mjs","../../../../../node_modules/@radix-ui/react-dialog/node_modules/react-remove-scroll/dist/es2015/medium.js","../../../../../node_modules/@radix-ui/react-dialog/node_modules/react-remove-scroll/dist/es2015/UI.js","../../../../../node_modules/@radix-ui/react-dialog/node_modules/react-remove-scroll/dist/es2015/aggresiveCapture.js","../../../../../node_modules/@radix-ui/react-dialog/node_modules/react-remove-scroll/dist/es2015/handleScroll.js","../../../../../node_modules/@radix-ui/react-dialog/node_modules/react-remove-scroll/dist/es2015/SideEffect.js","../../../../../node_modules/@radix-ui/react-dialog/node_modules/react-remove-scroll/dist/es2015/sidecar.js","../../../../../node_modules/@radix-ui/react-dialog/node_modules/react-remove-scroll/dist/es2015/Combination.js","../../../../../node_modules/@radix-ui/react-dialog/dist/index.mjs","../../../app/components/ui/dialog.tsx","../../../app/routes/_app+/_layout.tsx"],"sourcesContent":["import { invariant } from '../../utils/errors.mjs';\nimport { setTarget } from '../../render/utils/setters.mjs';\nimport { animateVisualElement } from '../interfaces/visual-element.mjs';\n\nfunction stopAnimation(visualElement) {\n visualElement.values.forEach((value) => value.stop());\n}\nfunction setVariants(visualElement, variantLabels) {\n const reversedLabels = [...variantLabels].reverse();\n reversedLabels.forEach((key) => {\n const variant = visualElement.getVariant(key);\n variant && setTarget(visualElement, variant);\n if (visualElement.variantChildren) {\n visualElement.variantChildren.forEach((child) => {\n setVariants(child, variantLabels);\n });\n }\n });\n}\nfunction setValues(visualElement, definition) {\n if (Array.isArray(definition)) {\n return setVariants(visualElement, definition);\n }\n else if (typeof definition === \"string\") {\n return setVariants(visualElement, [definition]);\n }\n else {\n setTarget(visualElement, definition);\n }\n}\n/**\n * @public\n */\nfunction animationControls() {\n /**\n * Track whether the host component has mounted.\n */\n let hasMounted = false;\n /**\n * A collection of linked component animation controls.\n */\n const subscribers = new Set();\n const controls = {\n subscribe(visualElement) {\n subscribers.add(visualElement);\n return () => void subscribers.delete(visualElement);\n },\n start(definition, transitionOverride) {\n invariant(hasMounted, \"controls.start() should only be called after a component has mounted. Consider calling within a useEffect hook.\");\n const animations = [];\n subscribers.forEach((visualElement) => {\n animations.push(animateVisualElement(visualElement, definition, {\n transitionOverride,\n }));\n });\n return Promise.all(animations);\n },\n set(definition) {\n invariant(hasMounted, \"controls.set() should only be called after a component has mounted. Consider calling within a useEffect hook.\");\n return subscribers.forEach((visualElement) => {\n setValues(visualElement, definition);\n });\n },\n stop() {\n subscribers.forEach((visualElement) => {\n stopAnimation(visualElement);\n });\n },\n mount() {\n hasMounted = true;\n return () => {\n hasMounted = false;\n controls.stop();\n };\n },\n };\n return controls;\n}\n\nexport { animationControls, setValues };\n","import { animationControls } from './animation-controls.mjs';\nimport { useConstant } from '../../utils/use-constant.mjs';\nimport { useIsomorphicLayoutEffect } from '../../utils/use-isomorphic-effect.mjs';\n\n/**\n * Creates `AnimationControls`, which can be used to manually start, stop\n * and sequence animations on one or more components.\n *\n * The returned `AnimationControls` should be passed to the `animate` property\n * of the components you want to animate.\n *\n * These components can then be animated with the `start` method.\n *\n * ```jsx\n * import * as React from 'react'\n * import { motion, useAnimation } from 'framer-motion'\n *\n * export function MyComponent(props) {\n * const controls = useAnimation()\n *\n * controls.start({\n * x: 100,\n * transition: { duration: 0.5 },\n * })\n *\n * return <motion.div animate={controls} />\n * }\n * ```\n *\n * @returns Animation controller with `start` and `stop` methods\n *\n * @public\n */\nfunction useAnimationControls() {\n const controls = useConstant(animationControls);\n useIsomorphicLayoutEffect(controls.mount, []);\n return controls;\n}\nconst useAnimation = useAnimationControls;\n\nexport { useAnimation, useAnimationControls };\n","import { useSyncExternalStore } from 'react'\n\nexport function makeMediaQueryStore(\n\tmediaQuery: string,\n\tserverSnapshot: boolean,\n) {\n\tfunction getSnapshot() {\n\t\treturn window.matchMedia(mediaQuery).matches\n\t}\n\n\tfunction subscribe(callback: () => void) {\n\t\tconst mediaQueryList = window.matchMedia(mediaQuery)\n\t\tmediaQueryList.addEventListener('change', callback)\n\t\treturn () => {\n\t\t\tmediaQueryList.removeEventListener('change', callback)\n\t\t}\n\t}\n\n\treturn function useMediaQuery() {\n\t\treturn useSyncExternalStore(subscribe, getSnapshot, () => serverSnapshot)\n\t}\n}\n","// packages/core/primitive/src/primitive.tsx\nfunction composeEventHandlers(originalEventHandler, ourEventHandler, { checkForDefaultPrevented = true } = {}) {\n return function handleEvent(event) {\n originalEventHandler?.(event);\n if (checkForDefaultPrevented === false || !event.defaultPrevented) {\n return ourEventHandler?.(event);\n }\n };\n}\nexport {\n composeEventHandlers\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/compose-refs/src/compose-refs.tsx\nimport * as React from \"react\";\nfunction setRef(ref, value) {\n if (typeof ref === \"function\") {\n return ref(value);\n } else if (ref !== null && ref !== void 0) {\n ref.current = value;\n }\n}\nfunction composeRefs(...refs) {\n return (node) => {\n let hasCleanup = false;\n const cleanups = refs.map((ref) => {\n const cleanup = setRef(ref, node);\n if (!hasCleanup && typeof cleanup == \"function\") {\n hasCleanup = true;\n }\n return cleanup;\n });\n if (hasCleanup) {\n return () => {\n for (let i = 0; i < cleanups.length; i++) {\n const cleanup = cleanups[i];\n if (typeof cleanup == \"function\") {\n cleanup();\n } else {\n setRef(refs[i], null);\n }\n }\n };\n }\n };\n}\nfunction useComposedRefs(...refs) {\n return React.useCallback(composeRefs(...refs), refs);\n}\nexport {\n composeRefs,\n useComposedRefs\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/context/src/create-context.tsx\nimport * as React from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nfunction createContext2(rootComponentName, defaultContext) {\n const Context = React.createContext(defaultContext);\n const Provider = (props) => {\n const { children, ...context } = props;\n const value = React.useMemo(() => context, Object.values(context));\n return /* @__PURE__ */ jsx(Context.Provider, { value, children });\n };\n Provider.displayName = rootComponentName + \"Provider\";\n function useContext2(consumerName) {\n const context = React.useContext(Context);\n if (context) return context;\n if (defaultContext !== void 0) return defaultContext;\n throw new Error(`\\`${consumerName}\\` must be used within \\`${rootComponentName}\\``);\n }\n return [Provider, useContext2];\n}\nfunction createContextScope(scopeName, createContextScopeDeps = []) {\n let defaultContexts = [];\n function createContext3(rootComponentName, defaultContext) {\n const BaseContext = React.createContext(defaultContext);\n const index = defaultContexts.length;\n defaultContexts = [...defaultContexts, defaultContext];\n const Provider = (props) => {\n const { scope, children, ...context } = props;\n const Context = scope?.[scopeName]?.[index] || BaseContext;\n const value = React.useMemo(() => context, Object.values(context));\n return /* @__PURE__ */ jsx(Context.Provider, { value, children });\n };\n Provider.displayName = rootComponentName + \"Provider\";\n function useContext2(consumerName, scope) {\n const Context = scope?.[scopeName]?.[index] || BaseContext;\n const context = React.useContext(Context);\n if (context) return context;\n if (defaultContext !== void 0) return defaultContext;\n throw new Error(`\\`${consumerName}\\` must be used within \\`${rootComponentName}\\``);\n }\n return [Provider, useContext2];\n }\n const createScope = () => {\n const scopeContexts = defaultContexts.map((defaultContext) => {\n return React.createContext(defaultContext);\n });\n return function useScope(scope) {\n const contexts = scope?.[scopeName] || scopeContexts;\n return React.useMemo(\n () => ({ [`__scope${scopeName}`]: { ...scope, [scopeName]: contexts } }),\n [scope, contexts]\n );\n };\n };\n createScope.scopeName = scopeName;\n return [createContext3, composeContextScopes(createScope, ...createContextScopeDeps)];\n}\nfunction composeContextScopes(...scopes) {\n const baseScope = scopes[0];\n if (scopes.length === 1) return baseScope;\n const createScope = () => {\n const scopeHooks = scopes.map((createScope2) => ({\n useScope: createScope2(),\n scopeName: createScope2.scopeName\n }));\n return function useComposedScopes(overrideScopes) {\n const nextScopes = scopeHooks.reduce((nextScopes2, { useScope, scopeName }) => {\n const scopeProps = useScope(overrideScopes);\n const currentScope = scopeProps[`__scope${scopeName}`];\n return { ...nextScopes2, ...currentScope };\n }, {});\n return React.useMemo(() => ({ [`__scope${baseScope.scopeName}`]: nextScopes }), [nextScopes]);\n };\n };\n createScope.scopeName = baseScope.scopeName;\n return createScope;\n}\nexport {\n createContext2 as createContext,\n createContextScope\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/use-layout-effect/src/use-layout-effect.tsx\nimport * as React from \"react\";\nvar useLayoutEffect2 = globalThis?.document ? React.useLayoutEffect : () => {\n};\nexport {\n useLayoutEffect2 as useLayoutEffect\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/id/src/id.tsx\nimport * as React from \"react\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nvar useReactId = React[\" useId \".trim().toString()] || (() => void 0);\nvar count = 0;\nfunction useId(deterministicId) {\n const [id, setId] = React.useState(useReactId());\n useLayoutEffect(() => {\n if (!deterministicId) setId((reactId) => reactId ?? String(count++));\n }, [deterministicId]);\n return deterministicId || (id ? `radix-${id}` : \"\");\n}\nexport {\n useId\n};\n//# sourceMappingURL=index.mjs.map\n","// src/use-controllable-state.tsx\nimport * as React from \"react\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nvar useInsertionEffect = React[\" useInsertionEffect \".trim().toString()] || useLayoutEffect;\nfunction useControllableState({\n prop,\n defaultProp,\n onChange = () => {\n },\n caller\n}) {\n const [uncontrolledProp, setUncontrolledProp, onChangeRef] = useUncontrolledState({\n defaultProp,\n onChange\n });\n const isControlled = prop !== void 0;\n const value = isControlled ? prop : uncontrolledProp;\n if (true) {\n const isControlledRef = React.useRef(prop !== void 0);\n React.useEffect(() => {\n const wasControlled = isControlledRef.current;\n if (wasControlled !== isControlled) {\n const from = wasControlled ? \"controlled\" : \"uncontrolled\";\n const to = isControlled ? \"controlled\" : \"uncontrolled\";\n console.warn(\n `${caller} is changing from ${from} to ${to}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`\n );\n }\n isControlledRef.current = isControlled;\n }, [isControlled, caller]);\n }\n const setValue = React.useCallback(\n (nextValue) => {\n if (isControlled) {\n const value2 = isFunction(nextValue) ? nextValue(prop) : nextValue;\n if (value2 !== prop) {\n onChangeRef.current?.(value2);\n }\n } else {\n setUncontrolledProp(nextValue);\n }\n },\n [isControlled, prop, setUncontrolledProp, onChangeRef]\n );\n return [value, setValue];\n}\nfunction useUncontrolledState({\n defaultProp,\n onChange\n}) {\n const [value, setValue] = React.useState(defaultProp);\n const prevValueRef = React.useRef(value);\n const onChangeRef = React.useRef(onChange);\n useInsertionEffect(() => {\n onChangeRef.current = onChange;\n }, [onChange]);\n React.useEffect(() => {\n if (prevValueRef.current !== value) {\n onChangeRef.current?.(value);\n prevValueRef.current = value;\n }\n }, [value, prevValueRef]);\n return [value, setValue, onChangeRef];\n}\nfunction isFunction(value) {\n return typeof value === \"function\";\n}\n\n// src/use-controllable-state-reducer.tsx\nimport * as React2 from \"react\";\nimport { useEffectEvent } from \"@radix-ui/react-use-effect-event\";\nvar SYNC_STATE = Symbol(\"RADIX:SYNC_STATE\");\nfunction useControllableStateReducer(reducer, userArgs, initialArg, init) {\n const { prop: controlledState, defaultProp, onChange: onChangeProp, caller } = userArgs;\n const isControlled = controlledState !== void 0;\n const onChange = useEffectEvent(onChangeProp);\n if (true) {\n const isControlledRef = React2.useRef(controlledState !== void 0);\n React2.useEffect(() => {\n const wasControlled = isControlledRef.current;\n if (wasControlled !== isControlled) {\n const from = wasControlled ? \"controlled\" : \"uncontrolled\";\n const to = isControlled ? \"controlled\" : \"uncontrolled\";\n console.warn(\n `${caller} is changing from ${from} to ${to}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`\n );\n }\n isControlledRef.current = isControlled;\n }, [isControlled, caller]);\n }\n const args = [{ ...initialArg, state: defaultProp }];\n if (init) {\n args.push(init);\n }\n const [internalState, dispatch] = React2.useReducer(\n (state2, action) => {\n if (action.type === SYNC_STATE) {\n return { ...state2, state: action.state };\n }\n const next = reducer(state2, action);\n if (isControlled && !Object.is(next.state, state2.state)) {\n onChange(next.state);\n }\n return next;\n },\n ...args\n );\n const uncontrolledState = internalState.state;\n const prevValueRef = React2.useRef(uncontrolledState);\n React2.useEffect(() => {\n if (prevValueRef.current !== uncontrolledState) {\n prevValueRef.current = uncontrolledState;\n if (!isControlled) {\n onChange(uncontrolledState);\n }\n }\n }, [onChange, uncontrolledState, prevValueRef, isControlled]);\n const state = React2.useMemo(() => {\n const isControlled2 = controlledState !== void 0;\n if (isControlled2) {\n return { ...internalState, state: controlledState };\n }\n return internalState;\n }, [internalState, controlledState]);\n React2.useEffect(() => {\n if (isControlled && !Object.is(controlledState, internalState.state)) {\n dispatch({ type: SYNC_STATE, state: controlledState });\n }\n }, [controlledState, internalState.state, isControlled]);\n return [state, dispatch];\n}\nexport {\n useControllableState,\n useControllableStateReducer\n};\n//# sourceMappingURL=index.mjs.map\n","// src/slot.tsx\nimport * as React from \"react\";\nimport { composeRefs } from \"@radix-ui/react-compose-refs\";\nimport { Fragment as Fragment2, jsx } from \"react/jsx-runtime\";\n// @__NO_SIDE_EFFECTS__\nfunction createSlot(ownerName) {\n const SlotClone = /* @__PURE__ */ createSlotClone(ownerName);\n const Slot2 = React.forwardRef((props, forwardedRef) => {\n const { children, ...slotProps } = props;\n const childrenArray = React.Children.toArray(children);\n const slottable = childrenArray.find(isSlottable);\n if (slottable) {\n const newElement = slottable.props.children;\n const newChildren = childrenArray.map((child) => {\n if (child === slottable) {\n if (React.Children.count(newElement) > 1) return React.Children.only(null);\n return React.isValidElement(newElement) ? newElement.props.children : null;\n } else {\n return child;\n }\n });\n return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children: React.isValidElement(newElement) ? React.cloneElement(newElement, void 0, newChildren) : null });\n }\n return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children });\n });\n Slot2.displayName = `${ownerName}.Slot`;\n return Slot2;\n}\nvar Slot = /* @__PURE__ */ createSlot(\"Slot\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlotClone(ownerName) {\n const SlotClone = React.forwardRef((props, forwardedRef) => {\n const { children, ...slotProps } = props;\n if (React.isValidElement(children)) {\n const childrenRef = getElementRef(children);\n const props2 = mergeProps(slotProps, children.props);\n if (children.type !== React.Fragment) {\n props2.ref = forwardedRef ? composeRefs(forwardedRef, childrenRef) : childrenRef;\n }\n return React.cloneElement(children, props2);\n }\n return React.Children.count(children) > 1 ? React.Children.only(null) : null;\n });\n SlotClone.displayName = `${ownerName}.SlotClone`;\n return SlotClone;\n}\nvar SLOTTABLE_IDENTIFIER = Symbol(\"radix.slottable\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlottable(ownerName) {\n const Slottable2 = ({ children }) => {\n return /* @__PURE__ */ jsx(Fragment2, { children });\n };\n Slottable2.displayName = `${ownerName}.Slottable`;\n Slottable2.__radixId = SLOTTABLE_IDENTIFIER;\n return Slottable2;\n}\nvar Slottable = /* @__PURE__ */ createSlottable(\"Slottable\");\nfunction isSlottable(child) {\n return React.isValidElement(child) && typeof child.type === \"function\" && \"__radixId\" in child.type && child.type.__radixId === SLOTTABLE_IDENTIFIER;\n}\nfunction mergeProps(slotProps, childProps) {\n const overrideProps = { ...childProps };\n for (const propName in childProps) {\n const slotPropValue = slotProps[propName];\n const childPropValue = childProps[propName];\n const isHandler = /^on[A-Z]/.test(propName);\n if (isHandler) {\n if (slotPropValue && childPropValue) {\n overrideProps[propName] = (...args) => {\n const result = childPropValue(...args);\n slotPropValue(...args);\n return result;\n };\n } else if (slotPropValue) {\n overrideProps[propName] = slotPropValue;\n }\n } else if (propName === \"style\") {\n overrideProps[propName] = { ...slotPropValue, ...childPropValue };\n } else if (propName === \"className\") {\n overrideProps[propName] = [slotPropValue, childPropValue].filter(Boolean).join(\" \");\n }\n }\n return { ...slotProps, ...overrideProps };\n}\nfunction getElementRef(element) {\n let getter = Object.getOwnPropertyDescriptor(element.props, \"ref\")?.get;\n let mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.ref;\n }\n getter = Object.getOwnPropertyDescriptor(element, \"ref\")?.get;\n mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.props.ref;\n }\n return element.props.ref || element.ref;\n}\nexport {\n Slot as Root,\n Slot,\n Slottable,\n createSlot,\n createSlottable\n};\n//# sourceMappingURL=index.mjs.map\n","// src/primitive.tsx\nimport * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NODES = [\n \"a\",\n \"button\",\n \"div\",\n \"form\",\n \"h2\",\n \"h3\",\n \"img\",\n \"input\",\n \"label\",\n \"li\",\n \"nav\",\n \"ol\",\n \"p\",\n \"select\",\n \"span\",\n \"svg\",\n \"ul\"\n];\nvar Primitive = NODES.reduce((primitive, node) => {\n const Slot = createSlot(`Primitive.${node}`);\n const Node = React.forwardRef((props, forwardedRef) => {\n const { asChild, ...primitiveProps } = props;\n const Comp = asChild ? Slot : node;\n if (typeof window !== \"undefined\") {\n window[Symbol.for(\"radix-ui\")] = true;\n }\n return /* @__PURE__ */ jsx(Comp, { ...primitiveProps, ref: forwardedRef });\n });\n Node.displayName = `Primitive.${node}`;\n return { ...primitive, [node]: Node };\n}, {});\nfunction dispatchDiscreteCustomEvent(target, event) {\n if (target) ReactDOM.flushSync(() => target.dispatchEvent(event));\n}\nvar Root = Primitive;\nexport {\n Primitive,\n Root,\n dispatchDiscreteCustomEvent\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/use-callback-ref/src/use-callback-ref.tsx\nimport * as React from \"react\";\nfunction useCallbackRef(callback) {\n const callbackRef = React.useRef(callback);\n React.useEffect(() => {\n callbackRef.current = callback;\n });\n return React.useMemo(() => (...args) => callbackRef.current?.(...args), []);\n}\nexport {\n useCallbackRef\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/use-escape-keydown/src/use-escape-keydown.tsx\nimport * as React from \"react\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nfunction useEscapeKeydown(onEscapeKeyDownProp, ownerDocument = globalThis?.document) {\n const onEscapeKeyDown = useCallbackRef(onEscapeKeyDownProp);\n React.useEffect(() => {\n const handleKeyDown = (event) => {\n if (event.key === \"Escape\") {\n onEscapeKeyDown(event);\n }\n };\n ownerDocument.addEventListener(\"keydown\", handleKeyDown, { capture: true });\n return () => ownerDocument.removeEventListener(\"keydown\", handleKeyDown, { capture: true });\n }, [onEscapeKeyDown, ownerDocument]);\n}\nexport {\n useEscapeKeydown\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/dismissable-layer.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { Primitive, dispatchDiscreteCustomEvent } from \"@radix-ui/react-primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useEscapeKeydown } from \"@radix-ui/react-use-escape-keydown\";\nimport { jsx } from \"react/jsx-runtime\";\nvar DISMISSABLE_LAYER_NAME = \"DismissableLayer\";\nvar CONTEXT_UPDATE = \"dismissableLayer.update\";\nvar POINTER_DOWN_OUTSIDE = \"dismissableLayer.pointerDownOutside\";\nvar FOCUS_OUTSIDE = \"dismissableLayer.focusOutside\";\nvar originalBodyPointerEvents;\nvar DismissableLayerContext = React.createContext({\n layers: /* @__PURE__ */ new Set(),\n layersWithOutsidePointerEventsDisabled: /* @__PURE__ */ new Set(),\n branches: /* @__PURE__ */ new Set()\n});\nvar DismissableLayer = React.forwardRef(\n (props, forwardedRef) => {\n const {\n disableOutsidePointerEvents = false,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside,\n onInteractOutside,\n onDismiss,\n ...layerProps\n } = props;\n const context = React.useContext(DismissableLayerContext);\n const [node, setNode] = React.useState(null);\n const ownerDocument = node?.ownerDocument ?? globalThis?.document;\n const [, force] = React.useState({});\n const composedRefs = useComposedRefs(forwardedRef, (node2) => setNode(node2));\n const layers = Array.from(context.layers);\n const [highestLayerWithOutsidePointerEventsDisabled] = [...context.layersWithOutsidePointerEventsDisabled].slice(-1);\n const highestLayerWithOutsidePointerEventsDisabledIndex = layers.indexOf(highestLayerWithOutsidePointerEventsDisabled);\n const index = node ? layers.indexOf(node) : -1;\n const isBodyPointerEventsDisabled = context.layersWithOutsidePointerEventsDisabled.size > 0;\n const isPointerEventsEnabled = index >= highestLayerWithOutsidePointerEventsDisabledIndex;\n const pointerDownOutside = usePointerDownOutside((event) => {\n const target = event.target;\n const isPointerDownOnBranch = [...context.branches].some((branch) => branch.contains(target));\n if (!isPointerEventsEnabled || isPointerDownOnBranch) return;\n onPointerDownOutside?.(event);\n onInteractOutside?.(event);\n if (!event.defaultPrevented) onDismiss?.();\n }, ownerDocument);\n const focusOutside = useFocusOutside((event) => {\n const target = event.target;\n const isFocusInBranch = [...context.branches].some((branch) => branch.contains(target));\n if (isFocusInBranch) return;\n onFocusOutside?.(event);\n onInteractOutside?.(event);\n if (!event.defaultPrevented) onDismiss?.();\n }, ownerDocument);\n useEscapeKeydown((event) => {\n const isHighestLayer = index === context.layers.size - 1;\n if (!isHighestLayer) return;\n onEscapeKeyDown?.(event);\n if (!event.defaultPrevented && onDismiss) {\n event.preventDefault();\n onDismiss();\n }\n }, ownerDocument);\n React.useEffect(() => {\n if (!node) return;\n if (disableOutsidePointerEvents) {\n if (context.layersWithOutsidePointerEventsDisabled.size === 0) {\n originalBodyPointerEvents = ownerDocument.body.style.pointerEvents;\n ownerDocument.body.style.pointerEvents = \"none\";\n }\n context.layersWithOutsidePointerEventsDisabled.add(node);\n }\n context.layers.add(node);\n dispatchUpdate();\n return () => {\n if (disableOutsidePointerEvents && context.layersWithOutsidePointerEventsDisabled.size === 1) {\n ownerDocument.body.style.pointerEvents = originalBodyPointerEvents;\n }\n };\n }, [node, ownerDocument, disableOutsidePointerEvents, context]);\n React.useEffect(() => {\n return () => {\n if (!node) return;\n context.layers.delete(node);\n context.layersWithOutsidePointerEventsDisabled.delete(node);\n dispatchUpdate();\n };\n }, [node, context]);\n React.useEffect(() => {\n const handleUpdate = () => force({});\n document.addEventListener(CONTEXT_UPDATE, handleUpdate);\n return () => document.removeEventListener(CONTEXT_UPDATE, handleUpdate);\n }, []);\n return /* @__PURE__ */ jsx(\n Primitive.div,\n {\n ...layerProps,\n ref: composedRefs,\n style: {\n pointerEvents: isBodyPointerEventsDisabled ? isPointerEventsEnabled ? \"auto\" : \"none\" : void 0,\n ...props.style\n },\n onFocusCapture: composeEventHandlers(props.onFocusCapture, focusOutside.onFocusCapture),\n onBlurCapture: composeEventHandlers(props.onBlurCapture, focusOutside.onBlurCapture),\n onPointerDownCapture: composeEventHandlers(\n props.onPointerDownCapture,\n pointerDownOutside.onPointerDownCapture\n )\n }\n );\n }\n);\nDismissableLayer.displayName = DISMISSABLE_LAYER_NAME;\nvar BRANCH_NAME = \"DismissableLayerBranch\";\nvar DismissableLayerBranch = React.forwardRef((props, forwardedRef) => {\n const context = React.useContext(DismissableLayerContext);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n React.useEffect(() => {\n const node = ref.current;\n if (node) {\n context.branches.add(node);\n return () => {\n context.branches.delete(node);\n };\n }\n }, [context.branches]);\n return /* @__PURE__ */ jsx(Primitive.div, { ...props, ref: composedRefs });\n});\nDismissableLayerBranch.displayName = BRANCH_NAME;\nfunction usePointerDownOutside(onPointerDownOutside, ownerDocument = globalThis?.document) {\n const handlePointerDownOutside = useCallbackRef(onPointerDownOutside);\n const isPointerInsideReactTreeRef = React.useRef(false);\n const handleClickRef = React.useRef(() => {\n });\n React.useEffect(() => {\n const handlePointerDown = (event) => {\n if (event.target && !isPointerInsideReactTreeRef.current) {\n let handleAndDispatchPointerDownOutsideEvent2 = function() {\n handleAndDispatchCustomEvent(\n POINTER_DOWN_OUTSIDE,\n handlePointerDownOutside,\n eventDetail,\n { discrete: true }\n );\n };\n var handleAndDispatchPointerDownOutsideEvent = handleAndDispatchPointerDownOutsideEvent2;\n const eventDetail = { originalEvent: event };\n if (event.pointerType === \"touch\") {\n ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n handleClickRef.current = handleAndDispatchPointerDownOutsideEvent2;\n ownerDocument.addEventListener(\"click\", handleClickRef.current, { once: true });\n } else {\n handleAndDispatchPointerDownOutsideEvent2();\n }\n } else {\n ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n }\n isPointerInsideReactTreeRef.current = false;\n };\n const timerId = window.setTimeout(() => {\n ownerDocument.addEventListener(\"pointerdown\", handlePointerDown);\n }, 0);\n return () => {\n window.clearTimeout(timerId);\n ownerDocument.removeEventListener(\"pointerdown\", handlePointerDown);\n ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n };\n }, [ownerDocument, handlePointerDownOutside]);\n return {\n // ensures we check React component tree (not just DOM tree)\n onPointerDownCapture: () => isPointerInsideReactTreeRef.current = true\n };\n}\nfunction useFocusOutside(onFocusOutside, ownerDocument = globalThis?.document) {\n const handleFocusOutside = useCallbackRef(onFocusOutside);\n const isFocusInsideReactTreeRef = React.useRef(false);\n React.useEffect(() => {\n const handleFocus = (event) => {\n if (event.target && !isFocusInsideReactTreeRef.current) {\n const eventDetail = { originalEvent: event };\n handleAndDispatchCustomEvent(FOCUS_OUTSIDE, handleFocusOutside, eventDetail, {\n discrete: false\n });\n }\n };\n ownerDocument.addEventListener(\"focusin\", handleFocus);\n return () => ownerDocument.removeEventListener(\"focusin\", handleFocus);\n }, [ownerDocument, handleFocusOutside]);\n return {\n onFocusCapture: () => isFocusInsideReactTreeRef.current = true,\n onBlurCapture: () => isFocusInsideReactTreeRef.current = false\n };\n}\nfunction dispatchUpdate() {\n const event = new CustomEvent(CONTEXT_UPDATE);\n document.dispatchEvent(event);\n}\nfunction handleAndDispatchCustomEvent(name, handler, detail, { discrete }) {\n const target = detail.originalEvent.target;\n const event = new CustomEvent(name, { bubbles: false, cancelable: true, detail });\n if (handler) target.addEventListener(name, handler, { once: true });\n if (discrete) {\n dispatchDiscreteCustomEvent(target, event);\n } else {\n target.dispatchEvent(event);\n }\n}\nvar Root = DismissableLayer;\nvar Branch = DismissableLayerBranch;\nexport {\n Branch,\n DismissableLayer,\n DismissableLayerBranch,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/focus-scope.tsx\nimport * as React from \"react\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { jsx } from \"react/jsx-runtime\";\nvar AUTOFOCUS_ON_MOUNT = \"focusScope.autoFocusOnMount\";\nvar AUTOFOCUS_ON_UNMOUNT = \"focusScope.autoFocusOnUnmount\";\nvar EVENT_OPTIONS = { bubbles: false, cancelable: true };\nvar FOCUS_SCOPE_NAME = \"FocusScope\";\nvar FocusScope = React.forwardRef((props, forwardedRef) => {\n const {\n loop = false,\n trapped = false,\n onMountAutoFocus: onMountAutoFocusProp,\n onUnmountAutoFocus: onUnmountAutoFocusProp,\n ...scopeProps\n } = props;\n const [container, setContainer] = React.useState(null);\n const onMountAutoFocus = useCallbackRef(onMountAutoFocusProp);\n const onUnmountAutoFocus = useCallbackRef(onUnmountAutoFocusProp);\n const lastFocusedElementRef = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, (node) => setContainer(node));\n const focusScope = React.useRef({\n paused: false,\n pause() {\n this.paused = true;\n },\n resume() {\n this.paused = false;\n }\n }).current;\n React.useEffect(() => {\n if (trapped) {\n let handleFocusIn2 = function(event) {\n if (focusScope.paused || !container) return;\n const target = event.target;\n if (container.contains(target)) {\n lastFocusedElementRef.current = target;\n } else {\n focus(lastFocusedElementRef.current, { select: true });\n }\n }, handleFocusOut2 = function(event) {\n if (focusScope.paused || !container) return;\n const relatedTarget = event.relatedTarget;\n if (relatedTarget === null) return;\n if (!container.contains(relatedTarget)) {\n focus(lastFocusedElementRef.current, { select: true });\n }\n }, handleMutations2 = function(mutations) {\n const focusedElement = document.activeElement;\n if (focusedElement !== document.body) return;\n for (const mutation of mutations) {\n if (mutation.removedNodes.length > 0) focus(container);\n }\n };\n var handleFocusIn = handleFocusIn2, handleFocusOut = handleFocusOut2, handleMutations = handleMutations2;\n document.addEventListener(\"focusin\", handleFocusIn2);\n document.addEventListener(\"focusout\", handleFocusOut2);\n const mutationObserver = new MutationObserver(handleMutations2);\n if (container) mutationObserver.observe(container, { childList: true, subtree: true });\n return () => {\n document.removeEventListener(\"focusin\", handleFocusIn2);\n document.removeEventListener(\"focusout\", handleFocusOut2);\n mutationObserver.disconnect();\n };\n }\n }, [trapped, container, focusScope.paused]);\n React.useEffect(() => {\n if (container) {\n focusScopesStack.add(focusScope);\n const previouslyFocusedElement = document.activeElement;\n const hasFocusedCandidate = container.contains(previouslyFocusedElement);\n if (!hasFocusedCandidate) {\n const mountEvent = new CustomEvent(AUTOFOCUS_ON_MOUNT, EVENT_OPTIONS);\n container.addEventListener(AUTOFOCUS_ON_MOUNT, onMountAutoFocus);\n container.dispatchEvent(mountEvent);\n if (!mountEvent.defaultPrevented) {\n focusFirst(removeLinks(getTabbableCandidates(container)), { select: true });\n if (document.activeElement === previouslyFocusedElement) {\n focus(container);\n }\n }\n }\n return () => {\n container.removeEventListener(AUTOFOCUS_ON_MOUNT, onMountAutoFocus);\n setTimeout(() => {\n const unmountEvent = new CustomEvent(AUTOFOCUS_ON_UNMOUNT, EVENT_OPTIONS);\n container.addEventListener(AUTOFOCUS_ON_UNMOUNT, onUnmountAutoFocus);\n container.dispatchEvent(unmountEvent);\n if (!unmountEvent.defaultPrevented) {\n focus(previouslyFocusedElement ?? document.body, { select: true });\n }\n container.removeEventListener(AUTOFOCUS_ON_UNMOUNT, onUnmountAutoFocus);\n focusScopesStack.remove(focusScope);\n }, 0);\n };\n }\n }, [container, onMountAutoFocus, onUnmountAutoFocus, focusScope]);\n const handleKeyDown = React.useCallback(\n (event) => {\n if (!loop && !trapped) return;\n if (focusScope.paused) return;\n const isTabKey = event.key === \"Tab\" && !event.altKey && !event.ctrlKey && !event.metaKey;\n const focusedElement = document.activeElement;\n if (isTabKey && focusedElement) {\n const container2 = event.currentTarget;\n const [first, last] = getTabbableEdges(container2);\n const hasTabbableElementsInside = first && last;\n if (!hasTabbableElementsInside) {\n if (focusedElement === container2) event.preventDefault();\n } else {\n if (!event.shiftKey && focusedElement === last) {\n event.preventDefault();\n if (loop) focus(first, { select: true });\n } else if (event.shiftKey && focusedElement === first) {\n event.preventDefault();\n if (loop) focus(last, { select: true });\n }\n }\n }\n },\n [loop, trapped, focusScope.paused]\n );\n return /* @__PURE__ */ jsx(Primitive.div, { tabIndex: -1, ...scopeProps, ref: composedRefs, onKeyDown: handleKeyDown });\n});\nFocusScope.displayName = FOCUS_SCOPE_NAME;\nfunction focusFirst(candidates, { select = false } = {}) {\n const previouslyFocusedElement = document.activeElement;\n for (const candidate of candidates) {\n focus(candidate, { select });\n if (document.activeElement !== previouslyFocusedElement) return;\n }\n}\nfunction getTabbableEdges(container) {\n const candidates = getTabbableCandidates(container);\n const first = findVisible(candidates, container);\n const last = findVisible(candidates.reverse(), container);\n return [first, last];\n}\nfunction getTabbableCandidates(container) {\n const nodes = [];\n const walker = document.createTreeWalker(container, NodeFilter.SHOW_ELEMENT, {\n acceptNode: (node) => {\n const isHiddenInput = node.tagName === \"INPUT\" && node.type === \"hidden\";\n if (node.disabled || node.hidden || isHiddenInput) return NodeFilter.FILTER_SKIP;\n return node.tabIndex >= 0 ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP;\n }\n });\n while (walker.nextNode()) nodes.push(walker.currentNode);\n return nodes;\n}\nfunction findVisible(elements, container) {\n for (const element of elements) {\n if (!isHidden(element, { upTo: container })) return element;\n }\n}\nfunction isHidden(node, { upTo }) {\n if (getComputedStyle(node).visibility === \"hidden\") return true;\n while (node) {\n if (upTo !== void 0 && node === upTo) return false;\n if (getComputedStyle(node).display === \"none\") return true;\n node = node.parentElement;\n }\n return false;\n}\nfunction isSelectableInput(element) {\n return element instanceof HTMLInputElement && \"select\" in element;\n}\nfunction focus(element, { select = false } = {}) {\n if (element && element.focus) {\n const previouslyFocusedElement = document.activeElement;\n element.focus({ preventScroll: true });\n if (element !== previouslyFocusedElement && isSelectableInput(element) && select)\n element.select();\n }\n}\nvar focusScopesStack = createFocusScopesStack();\nfunction createFocusScopesStack() {\n let stack = [];\n return {\n add(focusScope) {\n const activeFocusScope = stack[0];\n if (focusScope !== activeFocusScope) {\n activeFocusScope?.pause();\n }\n stack = arrayRemove(stack, focusScope);\n stack.unshift(focusScope);\n },\n remove(focusScope) {\n stack = arrayRemove(stack, focusScope);\n stack[0]?.resume();\n }\n };\n}\nfunction arrayRemove(array, item) {\n const updatedArray = [...array];\n const index = updatedArray.indexOf(item);\n if (index !== -1) {\n updatedArray.splice(index, 1);\n }\n return updatedArray;\n}\nfunction removeLinks(items) {\n return items.filter((item) => item.tagName !== \"A\");\n}\nvar Root = FocusScope;\nexport {\n FocusScope,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/portal.tsx\nimport * as React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nimport { jsx } from \"react/jsx-runtime\";\nvar PORTAL_NAME = \"Portal\";\nvar Portal = React.forwardRef((props, forwardedRef) => {\n const { container: containerProp, ...portalProps } = props;\n const [mounted, setMounted] = React.useState(false);\n useLayoutEffect(() => setMounted(true), []);\n const container = containerProp || mounted && globalThis?.document?.body;\n return container ? ReactDOM.createPortal(/* @__PURE__ */ jsx(Primitive.div, { ...portalProps, ref: forwardedRef }), container) : null;\n});\nPortal.displayName = PORTAL_NAME;\nvar Root = Portal;\nexport {\n Portal,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/presence.tsx\nimport * as React2 from \"react\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\n\n// src/use-state-machine.tsx\nimport * as React from \"react\";\nfunction useStateMachine(initialState, machine) {\n return React.useReducer((state, event) => {\n const nextState = machine[state][event];\n return nextState ?? state;\n }, initialState);\n}\n\n// src/presence.tsx\nvar Presence = (props) => {\n const { present, children } = props;\n const presence = usePresence(present);\n const child = typeof children === \"function\" ? children({ present: presence.isPresent }) : React2.Children.only(children);\n const ref = useComposedRefs(presence.ref, getElementRef(child));\n const forceMount = typeof children === \"function\";\n return forceMount || presence.isPresent ? React2.cloneElement(child, { ref }) : null;\n};\nPresence.displayName = \"Presence\";\nfunction usePresence(present) {\n const [node, setNode] = React2.useState();\n const stylesRef = React2.useRef(null);\n const prevPresentRef = React2.useRef(present);\n const prevAnimationNameRef = React2.useRef(\"none\");\n const initialState = present ? \"mounted\" : \"unmounted\";\n const [state, send] = useStateMachine(initialState, {\n mounted: {\n UNMOUNT: \"unmounted\",\n ANIMATION_OUT: \"unmountSuspended\"\n },\n unmountSuspended: {\n MOUNT: \"mounted\",\n ANIMATION_END: \"unmounted\"\n },\n unmounted: {\n MOUNT: \"mounted\"\n }\n });\n React2.useEffect(() => {\n const currentAnimationName = getAnimationName(stylesRef.current);\n prevAnimationNameRef.current = state === \"mounted\" ? currentAnimationName : \"none\";\n }, [state]);\n useLayoutEffect(() => {\n const styles = stylesRef.current;\n const wasPresent = prevPresentRef.current;\n const hasPresentChanged = wasPresent !== present;\n if (hasPresentChanged) {\n const prevAnimationName = prevAnimationNameRef.current;\n const currentAnimationName = getAnimationName(styles);\n if (present) {\n send(\"MOUNT\");\n } else if (currentAnimationName === \"none\" || styles?.display === \"none\") {\n send(\"UNMOUNT\");\n } else {\n const isAnimating = prevAnimationName !== currentAnimationName;\n if (wasPresent && isAnimating) {\n send(\"ANIMATION_OUT\");\n } else {\n send(\"UNMOUNT\");\n }\n }\n prevPresentRef.current = present;\n }\n }, [present, send]);\n useLayoutEffect(() => {\n if (node) {\n let timeoutId;\n const ownerWindow = node.ownerDocument.defaultView ?? window;\n const handleAnimationEnd = (event) => {\n const currentAnimationName = getAnimationName(stylesRef.current);\n const isCurrentAnimation = currentAnimationName.includes(event.animationName);\n if (event.target === node && isCurrentAnimation) {\n send(\"ANIMATION_END\");\n if (!prevPresentRef.current) {\n const currentFillMode = node.style.animationFillMode;\n node.style.animationFillMode = \"forwards\";\n timeoutId = ownerWindow.setTimeout(() => {\n if (node.style.animationFillMode === \"forwards\") {\n node.style.animationFillMode = currentFillMode;\n }\n });\n }\n }\n };\n const handleAnimationStart = (event) => {\n if (event.target === node) {\n prevAnimationNameRef.current = getAnimationName(stylesRef.current);\n }\n };\n node.addEventListener(\"animationstart\", handleAnimationStart);\n node.addEventListener(\"animationcancel\", handleAnimationEnd);\n node.addEventListener(\"animationend\", handleAnimationEnd);\n return () => {\n ownerWindow.clearTimeout(timeoutId);\n node.removeEventListener(\"animationstart\", handleAnimationStart);\n node.removeEventListener(\"animationcancel\", handleAnimationEnd);\n node.removeEventListener(\"animationend\", handleAnimationEnd);\n };\n } else {\n send(\"ANIMATION_END\");\n }\n }, [node, send]);\n return {\n isPresent: [\"mounted\", \"unmountSuspended\"].includes(state),\n ref: React2.useCallback((node2) => {\n stylesRef.current = node2 ? getComputedStyle(node2) : null;\n setNode(node2);\n }, [])\n };\n}\nfunction getAnimationName(styles) {\n return styles?.animationName || \"none\";\n}\nfunction getElementRef(element) {\n let getter = Object.getOwnPropertyDescriptor(element.props, \"ref\")?.get;\n let mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.ref;\n }\n getter = Object.getOwnPropertyDescriptor(element, \"ref\")?.get;\n mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.props.ref;\n }\n return element.props.ref || element.ref;\n}\nvar Root = Presence;\nexport {\n Presence,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// packages/react/focus-guards/src/focus-guards.tsx\nimport * as React from \"react\";\nvar count = 0;\nfunction FocusGuards(props) {\n useFocusGuards();\n return props.children;\n}\nfunction useFocusGuards() {\n React.useEffect(() => {\n const edgeGuards = document.querySelectorAll(\"[data-radix-focus-guard]\");\n document.body.insertAdjacentElement(\"afterbegin\", edgeGuards[0] ?? createFocusGuard());\n document.body.insertAdjacentElement(\"beforeend\", edgeGuards[1] ?? createFocusGuard());\n count++;\n return () => {\n if (count === 1) {\n document.querySelectorAll(\"[data-radix-focus-guard]\").forEach((node) => node.remove());\n }\n count--;\n };\n }, []);\n}\nfunction createFocusGuard() {\n const element = document.createElement(\"span\");\n element.setAttribute(\"data-radix-focus-guard\", \"\");\n element.tabIndex = 0;\n element.style.outline = \"none\";\n element.style.opacity = \"0\";\n element.style.position = \"fixed\";\n element.style.pointerEvents = \"none\";\n return element;\n}\nvar Root = FocusGuards;\nexport {\n FocusGuards,\n Root,\n useFocusGuards\n};\n//# sourceMappingURL=index.mjs.map\n","import { createSidecarMedium } from 'use-sidecar';\nexport var effectCar = createSidecarMedium();\n","import { __assign, __rest } from \"tslib\";\nimport * as React from 'react';\nimport { fullWidthClassName, zeroRightClassName } from 'react-remove-scroll-bar/constants';\nimport { useMergeRefs } from 'use-callback-ref';\nimport { effectCar } from './medium';\nvar nothing = function () {\n return;\n};\n/**\n * Removes scrollbar from the page and contain the scroll within the Lock\n */\nvar RemoveScroll = React.forwardRef(function (props, parentRef) {\n var ref = React.useRef(null);\n var _a = React.useState({\n onScrollCapture: nothing,\n onWheelCapture: nothing,\n onTouchMoveCapture: nothing,\n }), callbacks = _a[0], setCallbacks = _a[1];\n var forwardProps = props.forwardProps, children = props.children, className = props.className, removeScrollBar = props.removeScrollBar, enabled = props.enabled, shards = props.shards, sideCar = props.sideCar, noRelative = props.noRelative, noIsolation = props.noIsolation, inert = props.inert, allowPinchZoom = props.allowPinchZoom, _b = props.as, Container = _b === void 0 ? 'div' : _b, gapMode = props.gapMode, rest = __rest(props, [\"forwardProps\", \"children\", \"className\", \"removeScrollBar\", \"enabled\", \"shards\", \"sideCar\", \"noRelative\", \"noIsolation\", \"inert\", \"allowPinchZoom\", \"as\", \"gapMode\"]);\n var SideCar = sideCar;\n var containerRef = useMergeRefs([ref, parentRef]);\n var containerProps = __assign(__assign({}, rest), callbacks);\n return (React.createElement(React.Fragment, null,\n enabled && (React.createElement(SideCar, { sideCar: effectCar, removeScrollBar: removeScrollBar, shards: shards, noRelative: noRelative, noIsolation: noIsolation, inert: inert, setCallbacks: setCallbacks, allowPinchZoom: !!allowPinchZoom, lockRef: ref, gapMode: gapMode })),\n forwardProps ? (React.cloneElement(React.Children.only(children), __assign(__assign({}, containerProps), { ref: containerRef }))) : (React.createElement(Container, __assign({}, containerProps, { className: className, ref: containerRef }), children))));\n});\nRemoveScroll.defaultProps = {\n enabled: true,\n removeScrollBar: true,\n inert: false,\n};\nRemoveScroll.classNames = {\n fullWidth: fullWidthClassName,\n zeroRight: zeroRightClassName,\n};\nexport { RemoveScroll };\n","var passiveSupported = false;\nif (typeof window !== 'undefined') {\n try {\n var options = Object.defineProperty({}, 'passive', {\n get: function () {\n passiveSupported = true;\n return true;\n },\n });\n // @ts-ignore\n window.addEventListener('test', options, options);\n // @ts-ignore\n window.removeEventListener('test', options, options);\n }\n catch (err) {\n passiveSupported = false;\n }\n}\nexport var nonPassive = passiveSupported ? { passive: false } : false;\n","var alwaysContainsScroll = function (node) {\n // textarea will always _contain_ scroll inside self. It only can be hidden\n return node.tagName === 'TEXTAREA';\n};\nvar elementCanBeScrolled = function (node, overflow) {\n if (!(node instanceof Element)) {\n return false;\n }\n var styles = window.getComputedStyle(node);\n return (\n // not-not-scrollable\n styles[overflow] !== 'hidden' &&\n // contains scroll inside self\n !(styles.overflowY === styles.overflowX && !alwaysContainsScroll(node) && styles[overflow] === 'visible'));\n};\nvar elementCouldBeVScrolled = function (node) { return elementCanBeScrolled(node, 'overflowY'); };\nvar elementCouldBeHScrolled = function (node) { return elementCanBeScrolled(node, 'overflowX'); };\nexport var locationCouldBeScrolled = function (axis, node) {\n var ownerDocument = node.ownerDocument;\n var current = node;\n do {\n // Skip over shadow root\n if (typeof ShadowRoot !== 'undefined' && current instanceof ShadowRoot) {\n current = current.host;\n }\n var isScrollable = elementCouldBeScrolled(axis, current);\n if (isScrollable) {\n var _a = getScrollVariables(axis, current), scrollHeight = _a[1], clientHeight = _a[2];\n if (scrollHeight > clientHeight) {\n return true;\n }\n }\n current = current.parentNode;\n } while (current && current !== ownerDocument.body);\n return false;\n};\nvar getVScrollVariables = function (_a) {\n var scrollTop = _a.scrollTop, scrollHeight = _a.scrollHeight, clientHeight = _a.clientHeight;\n return [\n scrollTop,\n scrollHeight,\n clientHeight,\n ];\n};\nvar getHScrollVariables = function (_a) {\n var scrollLeft = _a.scrollLeft, scrollWidth = _a.scrollWidth, clientWidth = _a.clientWidth;\n return [\n scrollLeft,\n scrollWidth,\n clientWidth,\n ];\n};\nvar elementCouldBeScrolled = function (axis, node) {\n return axis === 'v' ? elementCouldBeVScrolled(node) : elementCouldBeHScrolled(node);\n};\nvar getScrollVariables = function (axis, node) {\n return axis === 'v' ? getVScrollVariables(node) : getHScrollVariables(node);\n};\nvar getDirectionFactor = function (axis, direction) {\n /**\n * If the element's direction is rtl (right-to-left), then scrollLeft is 0 when the scrollbar is at its rightmost position,\n * and then increasingly negative as you scroll towards the end of the content.\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollLeft\n */\n return axis === 'h' && direction === 'rtl' ? -1 : 1;\n};\nexport var handleScroll = function (axis, endTarget, event, sourceDelta, noOverscroll) {\n var directionFactor = getDirectionFactor(axis, window.getComputedStyle(endTarget).direction);\n var delta = directionFactor * sourceDelta;\n // find scrollable target\n var target = event.target;\n var targetInLock = endTarget.contains(target);\n var shouldCancelScroll = false;\n var isDeltaPositive = delta > 0;\n var availableScroll = 0;\n var availableScrollTop = 0;\n do {\n if (!target) {\n break;\n }\n var _a = getScrollVariables(axis, target), position = _a[0], scroll_1 = _a[1], capacity = _a[2];\n var elementScroll = scroll_1 - capacity - directionFactor * position;\n if (position || elementScroll) {\n if (elementCouldBeScrolled(axis, target)) {\n availableScroll += elementScroll;\n availableScrollTop += position;\n }\n }\n var parent_1 = target.parentNode;\n // we will \"bubble\" from ShadowDom in case we are, or just to the parent in normal case\n // this is the same logic used in focus-lock\n target = (parent_1 && parent_1.nodeType === Node.DOCUMENT_FRAGMENT_NODE ? parent_1.host : parent_1);\n } while (\n // portaled content\n (!targetInLock && target !== document.body) ||\n // self content\n (targetInLock && (endTarget.contains(target) || endTarget === target)));\n // handle epsilon around 0 (non standard zoom levels)\n if (isDeltaPositive &&\n ((noOverscroll && Math.abs(availableScroll) < 1) || (!noOverscroll && delta > availableScroll))) {\n shouldCancelScroll = true;\n }\n else if (!isDeltaPositive &&\n ((noOverscroll && Math.abs(availableScrollTop) < 1) || (!noOverscroll && -delta > availableScrollTop))) {\n shouldCancelScroll = true;\n }\n return shouldCancelScroll;\n};\n","import { __spreadArray } from \"tslib\";\nimport * as React from 'react';\nimport { RemoveScrollBar } from 'react-remove-scroll-bar';\nimport { styleSingleton } from 'react-style-singleton';\nimport { nonPassive } from './aggresiveCapture';\nimport { handleScroll, locationCouldBeScrolled } from './handleScroll';\nexport var getTouchXY = function (event) {\n return 'changedTouches' in event ? [event.changedTouches[0].clientX, event.changedTouches[0].clientY] : [0, 0];\n};\nexport var getDeltaXY = function (event) { return [event.deltaX, event.deltaY]; };\nvar extractRef = function (ref) {\n return ref && 'current' in ref ? ref.current : ref;\n};\nvar deltaCompare = function (x, y) { return x[0] === y[0] && x[1] === y[1]; };\nvar generateStyle = function (id) { return \"\\n .block-interactivity-\".concat(id, \" {pointer-events: none;}\\n .allow-interactivity-\").concat(id, \" {pointer-events: all;}\\n\"); };\nvar idCounter = 0;\nvar lockStack = [];\nexport function RemoveScrollSideCar(props) {\n var shouldPreventQueue = React.useRef([]);\n var touchStartRef = React.useRef([0, 0]);\n var activeAxis = React.useRef();\n var id = React.useState(idCounter++)[0];\n var Style = React.useState(styleSingleton)[0];\n var lastProps = React.useRef(props);\n React.useEffect(function () {\n lastProps.current = props;\n }, [props]);\n React.useEffect(function () {\n if (props.inert) {\n document.body.classList.add(\"block-interactivity-\".concat(id));\n var allow_1 = __spreadArray([props.lockRef.current], (props.shards || []).map(extractRef), true).filter(Boolean);\n allow_1.forEach(function (el) { return el.classList.add(\"allow-interactivity-\".concat(id)); });\n return function () {\n document.body.classList.remove(\"block-interactivity-\".concat(id));\n allow_1.forEach(function (el) { return el.classList.remove(\"allow-interactivity-\".concat(id)); });\n };\n }\n return;\n }, [props.inert, props.lockRef.current, props.shards]);\n var shouldCancelEvent = React.useCallback(function (event, parent) {\n if (('touches' in event && event.touches.length === 2) || (event.type === 'wheel' && event.ctrlKey)) {\n return !lastProps.current.allowPinchZoom;\n }\n var touch = getTouchXY(event);\n var touchStart = touchStartRef.current;\n var deltaX = 'deltaX' in event ? event.deltaX : touchStart[0] - touch[0];\n var deltaY = 'deltaY' in event ? event.deltaY : touchStart[1] - touch[1];\n var currentAxis;\n var target = event.target;\n var moveDirection = Math.abs(deltaX) > Math.abs(deltaY) ? 'h' : 'v';\n // allow horizontal touch move on Range inputs. They will not cause any scroll\n if ('touches' in event && moveDirection === 'h' && target.type === 'range') {\n return false;\n }\n var canBeScrolledInMainDirection = locationCouldBeScrolled(moveDirection, target);\n if (!canBeScrolledInMainDirection) {\n return true;\n }\n if (canBeScrolledInMainDirection) {\n currentAxis = moveDirection;\n }\n else {\n currentAxis = moveDirection === 'v' ? 'h' : 'v';\n canBeScrolledInMainDirection = locationCouldBeScrolled(moveDirection, target);\n // other axis might be not scrollable\n }\n if (!canBeScrolledInMainDirection) {\n return false;\n }\n if (!activeAxis.current && 'changedTouches' in event && (deltaX || deltaY)) {\n activeAxis.current = currentAxis;\n }\n if (!currentAxis) {\n return true;\n }\n var cancelingAxis = activeAxis.current || currentAxis;\n return handleScroll(cancelingAxis, parent, event, cancelingAxis === 'h' ? deltaX : deltaY, true);\n }, []);\n var shouldPrevent = React.useCallback(function (_event) {\n var event = _event;\n if (!lockStack.length || lockStack[lockStack.length - 1] !== Style) {\n // not the last active\n return;\n }\n var delta = 'deltaY' in event ? getDeltaXY(event) : getTouchXY(event);\n var sourceEvent = shouldPreventQueue.current.filter(function (e) { return e.name === event.type && (e.target === event.target || event.target === e.shadowParent) && deltaCompare(e.delta, delta); })[0];\n // self event, and should be canceled\n if (sourceEvent && sourceEvent.should) {\n if (event.cancelable) {\n event.preventDefault();\n }\n return;\n }\n // outside or shard event\n if (!sourceEvent) {\n var shardNodes = (lastProps.current.shards || [])\n .map(extractRef)\n .filter(Boolean)\n .filter(function (node) { return node.contains(event.target); });\n var shouldStop = shardNodes.length > 0 ? shouldCancelEvent(event, shardNodes[0]) : !lastProps.current.noIsolation;\n if (shouldStop) {\n if (event.cancelable) {\n event.preventDefault();\n }\n }\n }\n }, []);\n var shouldCancel = React.useCallback(function (name, delta, target, should) {\n var event = { name: name, delta: delta, target: target, should: should, shadowParent: getOutermostShadowParent(target) };\n shouldPreventQueue.current.push(event);\n setTimeout(function () {\n shouldPreventQueue.current = shouldPreventQueue.current.filter(function (e) { return e !== event; });\n }, 1);\n }, []);\n var scrollTouchStart = React.useCallback(function (event) {\n touchStartRef.current = getTouchXY(event);\n activeAxis.current = undefined;\n }, []);\n var scrollWheel = React.useCallback(function (event) {\n shouldCancel(event.type, getDeltaXY(event), event.target, shouldCancelEvent(event, props.lockRef.current));\n }, []);\n var scrollTouchMove = React.useCallback(function (event) {\n shouldCancel(event.type, getTouchXY(event), event.target, shouldCancelEvent(event, props.lockRef.current));\n }, []);\n React.useEffect(function () {\n lockStack.push(Style);\n props.setCallbacks({\n onScrollCapture: scrollWheel,\n onWheelCapture: scrollWheel,\n onTouchMoveCapture: scrollTouchMove,\n });\n document.addEventListener('wheel', shouldPrevent, nonPassive);\n document.addEventListener('touchmove', shouldPrevent, nonPassive);\n document.addEventListener('touchstart', scrollTouchStart, nonPassive);\n return function () {\n lockStack = lockStack.filter(function (inst) { return inst !== Style; });\n document.removeEventListener('wheel', shouldPrevent, nonPassive);\n document.removeEventListener('touchmove', shouldPrevent, nonPassive);\n document.removeEventListener('touchstart', scrollTouchStart, nonPassive);\n };\n }, []);\n var removeScrollBar = props.removeScrollBar, inert = props.inert;\n return (React.createElement(React.Fragment, null,\n inert ? React.createElement(Style, { styles: generateStyle(id) }) : null,\n removeScrollBar ? React.createElement(RemoveScrollBar, { noRelative: props.noRelative, gapMode: props.gapMode }) : null));\n}\nfunction getOutermostShadowParent(node) {\n var shadowParent = null;\n while (node !== null) {\n if (node instanceof ShadowRoot) {\n shadowParent = node.host;\n node = node.host;\n }\n node = node.parentNode;\n }\n return shadowParent;\n}\n","import { exportSidecar } from 'use-sidecar';\nimport { RemoveScrollSideCar } from './SideEffect';\nimport { effectCar } from './medium';\nexport default exportSidecar(effectCar, RemoveScrollSideCar);\n","import { __assign } from \"tslib\";\nimport * as React from 'react';\nimport { RemoveScroll } from './UI';\nimport SideCar from './sidecar';\nvar ReactRemoveScroll = React.forwardRef(function (props, ref) { return (React.createElement(RemoveScroll, __assign({}, props, { ref: ref, sideCar: SideCar }))); });\nReactRemoveScroll.classNames = RemoveScroll.classNames;\nexport default ReactRemoveScroll;\n","\"use client\";\n\n// src/dialog.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContext, createContextScope } from \"@radix-ui/react-context\";\nimport { useId } from \"@radix-ui/react-id\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { DismissableLayer } from \"@radix-ui/react-dismissable-layer\";\nimport { FocusScope } from \"@radix-ui/react-focus-scope\";\nimport { Portal as PortalPrimitive } from \"@radix-ui/react-portal\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useFocusGuards } from \"@radix-ui/react-focus-guards\";\nimport { RemoveScroll } from \"react-remove-scroll\";\nimport { hideOthers } from \"aria-hidden\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { Fragment, jsx, jsxs } from \"react/jsx-runtime\";\nvar DIALOG_NAME = \"Dialog\";\nvar [createDialogContext, createDialogScope] = createContextScope(DIALOG_NAME);\nvar [DialogProvider, useDialogContext] = createDialogContext(DIALOG_NAME);\nvar Dialog = (props) => {\n const {\n __scopeDialog,\n children,\n open: openProp,\n defaultOpen,\n onOpenChange,\n modal = true\n } = props;\n const triggerRef = React.useRef(null);\n const contentRef = React.useRef(null);\n const [open, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen ?? false,\n onChange: onOpenChange,\n caller: DIALOG_NAME\n });\n return /* @__PURE__ */ jsx(\n DialogProvider,\n {\n scope: __scopeDialog,\n triggerRef,\n contentRef,\n contentId: useId(),\n titleId: useId(),\n descriptionId: useId(),\n open,\n onOpenChange: setOpen,\n onOpenToggle: React.useCallback(() => setOpen((prevOpen) => !prevOpen), [setOpen]),\n modal,\n children\n }\n );\n};\nDialog.displayName = DIALOG_NAME;\nvar TRIGGER_NAME = \"DialogTrigger\";\nvar DialogTrigger = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeDialog, ...triggerProps } = props;\n const context = useDialogContext(TRIGGER_NAME, __scopeDialog);\n const composedTriggerRef = useComposedRefs(forwardedRef, context.triggerRef);\n return /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n \"aria-haspopup\": \"dialog\",\n \"aria-expanded\": context.open,\n \"aria-controls\": context.contentId,\n \"data-state\": getState(context.open),\n ...triggerProps,\n ref: composedTriggerRef,\n onClick: composeEventHandlers(props.onClick, context.onOpenToggle)\n }\n );\n }\n);\nDialogTrigger.displayName = TRIGGER_NAME;\nvar PORTAL_NAME = \"DialogPortal\";\nvar [PortalProvider, usePortalContext] = createDialogContext(PORTAL_NAME, {\n forceMount: void 0\n});\nvar DialogPortal = (props) => {\n const { __scopeDialog, forceMount, children, container } = props;\n const context = useDialogContext(PORTAL_NAME, __scopeDialog);\n return /* @__PURE__ */ jsx(PortalProvider, { scope: __scopeDialog, forceMount, children: React.Children.map(children, (child) => /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(PortalPrimitive, { asChild: true, container, children: child }) })) });\n};\nDialogPortal.displayName = PORTAL_NAME;\nvar OVERLAY_NAME = \"DialogOverlay\";\nvar DialogOverlay = React.forwardRef(\n (props, forwardedRef) => {\n const portalContext = usePortalContext(OVERLAY_NAME, props.__scopeDialog);\n const { forceMount = portalContext.forceMount, ...overlayProps } = props;\n const context = useDialogContext(OVERLAY_NAME, props.__scopeDialog);\n return context.modal ? /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(DialogOverlayImpl, { ...overlayProps, ref: forwardedRef }) }) : null;\n }\n);\nDialogOverlay.displayName = OVERLAY_NAME;\nvar Slot = createSlot(\"DialogOverlay.RemoveScroll\");\nvar DialogOverlayImpl = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeDialog, ...overlayProps } = props;\n const context = useDialogContext(OVERLAY_NAME, __scopeDialog);\n return (\n // Make sure `Content` is scrollable even when it doesn't live inside `RemoveScroll`\n // ie. when `Overlay` and `Content` are siblings\n /* @__PURE__ */ jsx(RemoveScroll, { as: Slot, allowPinchZoom: true, shards: [context.contentRef], children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"data-state\": getState(context.open),\n ...overlayProps,\n ref: forwardedRef,\n style: { pointerEvents: \"auto\", ...overlayProps.style }\n }\n ) })\n );\n }\n);\nvar CONTENT_NAME = \"DialogContent\";\nvar DialogContent = React.forwardRef(\n (props, forwardedRef) => {\n const portalContext = usePortalContext(CONTENT_NAME, props.__scopeDialog);\n const { forceMount = portalContext.forceMount, ...contentProps } = props;\n const context = useDialogContext(CONTENT_NAME, props.__scopeDialog);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: context.modal ? /* @__PURE__ */ jsx(DialogContentModal, { ...contentProps, ref: forwardedRef }) : /* @__PURE__ */ jsx(DialogContentNonModal, { ...contentProps, ref: forwardedRef }) });\n }\n);\nDialogContent.displayName = CONTENT_NAME;\nvar DialogContentModal = React.forwardRef(\n (props, forwardedRef) => {\n const context = useDialogContext(CONTENT_NAME, props.__scopeDialog);\n const contentRef = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, context.contentRef, contentRef);\n React.useEffect(() => {\n const content = contentRef.current;\n if (content) return hideOthers(content);\n }, []);\n return /* @__PURE__ */ jsx(\n DialogContentImpl,\n {\n ...props,\n ref: composedRefs,\n trapFocus: context.open,\n disableOutsidePointerEvents: true,\n onCloseAutoFocus: composeEventHandlers(props.onCloseAutoFocus, (event) => {\n event.preventDefault();\n context.triggerRef.current?.focus();\n }),\n onPointerDownOutside: composeEventHandlers(props.onPointerDownOutside, (event) => {\n const originalEvent = event.detail.originalEvent;\n const ctrlLeftClick = originalEvent.button === 0 && originalEvent.ctrlKey === true;\n const isRightClick = originalEvent.button === 2 || ctrlLeftClick;\n if (isRightClick) event.preventDefault();\n }),\n onFocusOutside: composeEventHandlers(\n props.onFocusOutside,\n (event) => event.preventDefault()\n )\n }\n );\n }\n);\nvar DialogContentNonModal = React.forwardRef(\n (props, forwardedRef) => {\n const context = useDialogContext(CONTENT_NAME, props.__scopeDialog);\n const hasInteractedOutsideRef = React.useRef(false);\n const hasPointerDownOutsideRef = React.useRef(false);\n return /* @__PURE__ */ jsx(\n DialogContentImpl,\n {\n ...props,\n ref: forwardedRef,\n trapFocus: false,\n disableOutsidePointerEvents: false,\n onCloseAutoFocus: (event) => {\n props.onCloseAutoFocus?.(event);\n if (!event.defaultPrevented) {\n if (!hasInteractedOutsideRef.current) context.triggerRef.current?.focus();\n event.preventDefault();\n }\n hasInteractedOutsideRef.current = false;\n hasPointerDownOutsideRef.current = false;\n },\n onInteractOutside: (event) => {\n props.onInteractOutside?.(event);\n if (!event.defaultPrevented) {\n hasInteractedOutsideRef.current = true;\n if (event.detail.originalEvent.type === \"pointerdown\") {\n hasPointerDownOutsideRef.current = true;\n }\n }\n const target = event.target;\n const targetIsTrigger = context.triggerRef.current?.contains(target);\n if (targetIsTrigger) event.preventDefault();\n if (event.detail.originalEvent.type === \"focusin\" && hasPointerDownOutsideRef.current) {\n event.preventDefault();\n }\n }\n }\n );\n }\n);\nvar DialogContentImpl = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeDialog, trapFocus, onOpenAutoFocus, onCloseAutoFocus, ...contentProps } = props;\n const context = useDialogContext(CONTENT_NAME, __scopeDialog);\n const contentRef = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, contentRef);\n useFocusGuards();\n return /* @__PURE__ */ jsxs(Fragment, { children: [\n /* @__PURE__ */ jsx(\n FocusScope,\n {\n asChild: true,\n loop: true,\n trapped: trapFocus,\n onMountAutoFocus: onOpenAutoFocus,\n onUnmountAutoFocus: onCloseAutoFocus,\n children: /* @__PURE__ */ jsx(\n DismissableLayer,\n {\n role: \"dialog\",\n id: context.contentId,\n \"aria-describedby\": context.descriptionId,\n \"aria-labelledby\": context.titleId,\n \"data-state\": getState(context.open),\n ...contentProps,\n ref: composedRefs,\n onDismiss: () => context.onOpenChange(false)\n }\n )\n }\n ),\n /* @__PURE__ */ jsxs(Fragment, { children: [\n /* @__PURE__ */ jsx(TitleWarning, { titleId: context.titleId }),\n /* @__PURE__ */ jsx(DescriptionWarning, { contentRef, descriptionId: context.descriptionId })\n ] })\n ] });\n }\n);\nvar TITLE_NAME = \"DialogTitle\";\nvar DialogTitle = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeDialog, ...titleProps } = props;\n const context = useDialogContext(TITLE_NAME, __scopeDialog);\n return /* @__PURE__ */ jsx(Primitive.h2, { id: context.titleId, ...titleProps, ref: forwardedRef });\n }\n);\nDialogTitle.displayName = TITLE_NAME;\nvar DESCRIPTION_NAME = \"DialogDescription\";\nvar DialogDescription = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeDialog, ...descriptionProps } = props;\n const context = useDialogContext(DESCRIPTION_NAME, __scopeDialog);\n return /* @__PURE__ */ jsx(Primitive.p, { id: context.descriptionId, ...descriptionProps, ref: forwardedRef });\n }\n);\nDialogDescription.displayName = DESCRIPTION_NAME;\nvar CLOSE_NAME = \"DialogClose\";\nvar DialogClose = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeDialog, ...closeProps } = props;\n const context = useDialogContext(CLOSE_NAME, __scopeDialog);\n return /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n ...closeProps,\n ref: forwardedRef,\n onClick: composeEventHandlers(props.onClick, () => context.onOpenChange(false))\n }\n );\n }\n);\nDialogClose.displayName = CLOSE_NAME;\nfunction getState(open) {\n return open ? \"open\" : \"closed\";\n}\nvar TITLE_WARNING_NAME = \"DialogTitleWarning\";\nvar [WarningProvider, useWarningContext] = createContext(TITLE_WARNING_NAME, {\n contentName: CONTENT_NAME,\n titleName: TITLE_NAME,\n docsSlug: \"dialog\"\n});\nvar TitleWarning = ({ titleId }) => {\n const titleWarningContext = useWarningContext(TITLE_WARNING_NAME);\n const MESSAGE = `\\`${titleWarningContext.contentName}\\` requires a \\`${titleWarningContext.titleName}\\` for the component to be accessible for screen reader users.\n\nIf you want to hide the \\`${titleWarningContext.titleName}\\`, you can wrap it with our VisuallyHidden component.\n\nFor more information, see https://radix-ui.com/primitives/docs/components/${titleWarningContext.docsSlug}`;\n React.useEffect(() => {\n if (titleId) {\n const hasTitle = document.getElementById(titleId);\n if (!hasTitle) console.error(MESSAGE);\n }\n }, [MESSAGE, titleId]);\n return null;\n};\nvar DESCRIPTION_WARNING_NAME = \"DialogDescriptionWarning\";\nvar DescriptionWarning = ({ contentRef, descriptionId }) => {\n const descriptionWarningContext = useWarningContext(DESCRIPTION_WARNING_NAME);\n const MESSAGE = `Warning: Missing \\`Description\\` or \\`aria-describedby={undefined}\\` for {${descriptionWarningContext.contentName}}.`;\n React.useEffect(() => {\n const describedById = contentRef.current?.getAttribute(\"aria-describedby\");\n if (descriptionId && describedById) {\n const hasDescription = document.getElementById(descriptionId);\n if (!hasDescription) console.warn(MESSAGE);\n }\n }, [MESSAGE, contentRef, descriptionId]);\n return null;\n};\nvar Root = Dialog;\nvar Trigger = DialogTrigger;\nvar Portal = DialogPortal;\nvar Overlay = DialogOverlay;\nvar Content = DialogContent;\nvar Title = DialogTitle;\nvar Description = DialogDescription;\nvar Close = DialogClose;\nexport {\n Close,\n Content,\n Description,\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogOverlay,\n DialogPortal,\n DialogTitle,\n DialogTrigger,\n Overlay,\n Portal,\n Root,\n Title,\n Trigger,\n WarningProvider,\n createDialogScope\n};\n//# sourceMappingURL=index.mjs.map\n","import * as DialogPrimitive from '@radix-ui/react-dialog'\nimport * as React from 'react'\nimport { cn } from '#app/utils/misc.tsx'\nimport { Icon } from '../icons'\n\nconst Dialog = DialogPrimitive.Root\n\nconst DialogTrigger = DialogPrimitive.Trigger\n\nconst DialogPortal = DialogPrimitive.Portal\n\nconst DialogClose = DialogPrimitive.Close\n\nfunction DialogOverlay({\n\tclassName,\n\tref,\n\t...props\n}: React.ComponentProps<typeof DialogPrimitive.Overlay>) {\n\treturn (\n\t\t<DialogPrimitive.Overlay\n\t\t\tref={ref}\n\t\t\tclassName={cn(\n\t\t\t\t'fixed inset-0 z-50 bg-background/80 backdrop-blur-sm data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t)\n}\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName\n\nfunction DialogContent({\n\tclassName,\n\tchildren,\n\tref,\n\t...props\n}: React.ComponentProps<typeof DialogPrimitive.Content>) {\n\treturn (\n\t\t<DialogPortal>\n\t\t\t<DialogOverlay />\n\t\t\t<DialogPrimitive.Content\n\t\t\t\tref={ref}\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg md:w-full',\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t\t<DialogPrimitive.Close className=\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity data-[state=open]:bg-accent data-[state=open]:text-muted-foreground hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none\">\n\t\t\t\t\t<Icon name=\"Close\" />\n\t\t\t\t\t<span className=\"sr-only\">Close</span>\n\t\t\t\t</DialogPrimitive.Close>\n\t\t\t</DialogPrimitive.Content>\n\t\t</DialogPortal>\n\t)\n}\nDialogContent.displayName = DialogPrimitive.Content.displayName\n\nfunction DialogHeader({\n\tclassName,\n\t...props\n}: React.HTMLAttributes<HTMLDivElement>) {\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t'flex flex-col space-y-1.5 text-center sm:text-left',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t)\n}\nDialogHeader.displayName = 'DialogHeader'\n\nfunction DialogFooter({\n\tclassName,\n\t...props\n}: React.HTMLAttributes<HTMLDivElement>) {\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t'flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t)\n}\nDialogFooter.displayName = 'DialogFooter'\n\nfunction DialogTitle({\n\tclassName,\n\tref,\n\t...props\n}: React.ComponentProps<typeof DialogPrimitive.Title>) {\n\treturn (\n\t\t<DialogPrimitive.Title\n\t\t\tref={ref}\n\t\t\tclassName={cn(\n\t\t\t\t'text-lg font-semibold leading-none tracking-tight',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t)\n}\nDialogTitle.displayName = DialogPrimitive.Title.displayName\n\nfunction DialogDescription({\n\tclassName,\n\tref,\n\t...props\n}: React.ComponentProps<typeof DialogPrimitive.Description>) {\n\treturn (\n\t\t<DialogPrimitive.Description\n\t\t\tref={ref}\n\t\t\tclassName={cn('text-sm text-muted-foreground', className)}\n\t\t\t{...props}\n\t\t/>\n\t)\n}\nDialogDescription.displayName = DialogPrimitive.Description.displayName\n\nexport {\n\tDialog,\n\tDialogClose,\n\tDialogContent,\n\tDialogDescription,\n\tDialogFooter,\n\tDialogHeader,\n\tDialogOverlay,\n\tDialogPortal,\n\tDialogTitle,\n\tDialogTrigger,\n}\n","import {\n\textractNumbersAndTypeFromAppNameOrPath,\n\tgetExercises,\n\tgetPlaygroundAppName,\n} from '@epic-web/workshop-utils/apps.server'\nimport { getWorkshopConfig } from '@epic-web/workshop-utils/config.server'\nimport {\n\tcombineServerTimings,\n\tgetServerTimeHeader,\n\tmakeTimings,\n} from '@epic-web/workshop-utils/timing.server'\nimport {\n\tunstable_data as data,\n\ttype HeadersFunction,\n\ttype LoaderFunctionArgs,\n} from '@remix-run/node'\nimport {\n\tLink,\n\tNavLink,\n\tOutlet,\n\tuseLoaderData,\n\tuseParams,\n} from '@remix-run/react'\nimport { clsx } from 'clsx'\nimport {\n\tmotion,\n\tuseAnimationControls,\n\ttype AnimationControls,\n} from 'framer-motion'\nimport * as React from 'react'\nimport { useHydrated } from 'remix-utils/use-hydrated'\nimport { Icon } from '#app/components/icons.tsx'\nimport { makeMediaQueryStore } from '#app/components/media-query.ts'\nimport { Logo } from '#app/components/product.tsx'\nimport { useRevalidationWS } from '#app/components/revalidation-ws.js'\nimport {\n\tDialog,\n\tDialogContent,\n\tDialogDescription,\n\tDialogHeader,\n\tDialogTrigger,\n} from '#app/components/ui/dialog.js'\nimport {\n\tSimpleTooltip,\n\tTooltip,\n\tTooltipContent,\n\tTooltipProvider,\n\tTooltipTrigger,\n} from '#app/components/ui/tooltip.tsx'\nimport { useOptionalUser, useUserHasAccess } from '#app/components/user.tsx'\nimport { useWorkshopConfig } from '#app/components/workshop-config.js'\nimport { cn, getExercisePath, getExerciseStepPath } from '#app/utils/misc.tsx'\nimport { useIsOnline } from '#app/utils/online.ts'\nimport { usePresence, type User } from '#app/utils/presence.tsx'\nimport {\n\tuseExerciseProgressClassName,\n\tuseNextExerciseRoute,\n\tuseProgressItemClassName,\n\ttype ProgressItemSearch,\n} from '../progress.tsx'\nimport { ThemeSwitch } from '../theme/index.tsx'\n\nexport async function loader({ request }: LoaderFunctionArgs) {\n\tconst timings = makeTimings('appLayoutLoader')\n\tconst { title: workshopTitle } = getWorkshopConfig()\n\tconst [exercises, playgroundAppName] = await Promise.all([\n\t\tgetExercises({ request, timings }),\n\t\tgetPlaygroundAppName(),\n\t])\n\n\tconst playgroundNumbersAndType = extractNumbersAndTypeFromAppNameOrPath(\n\t\tplaygroundAppName ?? '',\n\t)\n\tconst playground = {\n\t\tappName: playgroundAppName,\n\t\texerciseNumber: Number(playgroundNumbersAndType?.exerciseNumber),\n\t\tstepNumber: Number(playgroundNumbersAndType?.stepNumber),\n\t\ttype: playgroundNumbersAndType?.type,\n\t}\n\n\tconst result = data(\n\t\t{\n\t\t\tworkshopTitle,\n\t\t\texercises: exercises.map((e) => ({\n\t\t\t\texerciseNumber: e.exerciseNumber,\n\t\t\t\ttitle: e.title,\n\t\t\t\tsolutions: e.solutions.map(({ stepNumber, title, name }) => ({\n\t\t\t\t\tstepNumber,\n\t\t\t\t\ttitle,\n\t\t\t\t\tname,\n\t\t\t\t})),\n\t\t\t\tproblems: e.problems.map(({ stepNumber, title, name }) => ({\n\t\t\t\t\tstepNumber,\n\t\t\t\t\ttitle,\n\t\t\t\t\tname,\n\t\t\t\t})),\n\t\t\t\tsteps: e.steps.map(({ stepNumber, problem, solution }) => ({\n\t\t\t\t\tstepNumber,\n\t\t\t\t\ttitle: problem?.title ?? solution?.title ?? 'Unknown',\n\t\t\t\t\tname: problem?.name ?? solution?.name ?? 'Unknown',\n\t\t\t\t\tproblem: problem\n\t\t\t\t\t\t? { name: problem.name, title: problem.title }\n\t\t\t\t\t\t: null,\n\t\t\t\t\tsolution: solution\n\t\t\t\t\t\t? { name: solution.name, title: solution.title }\n\t\t\t\t\t\t: null,\n\t\t\t\t})),\n\t\t\t})),\n\t\t\tplayground,\n\t\t\tisMenuOpened:\n\t\t\t\trequest.headers.get('cookie')?.includes('es_menu_open=true') ?? false,\n\t\t},\n\t\t{\n\t\t\theaders: {\n\t\t\t\tVary: 'Cookie',\n\t\t\t\t'Server-Timing': getServerTimeHeader(timings),\n\t\t\t},\n\t\t},\n\t)\n\treturn result\n}\n\nexport const headers: HeadersFunction = ({ loaderHeaders, parentHeaders }) => {\n\tconst headers = {\n\t\t'Cache-Control': loaderHeaders.get('Cache-Control') ?? '',\n\t\tVary: 'Cookie',\n\t\t'Server-Timing': combineServerTimings(loaderHeaders, parentHeaders),\n\t}\n\treturn headers\n}\n\nconst opacities = ['opacity-70', 'opacity-80', 'opacity-90', 'opacity-100']\nconst shadows = [\n\t'shadow-[0_0_2px_0_rgba(0,0,0,0.3)]',\n\t'shadow-[0_0_4px_0_rgba(0,0,0,0.3)]',\n\t'shadow-[0_0_7px_0_rgba(0,0,0,0.3)]',\n\t'shadow-[0_0_10px_0_rgba(0,0,0,0.3)]',\n]\nfunction getScoreClassNames(score: number) {\n\tconst opacityNumber = Math.round(score * opacities.length - 1)\n\tconst shadowNumber = Math.round(score * shadows.length - 1)\n\treturn cn(\n\t\t'shadow-purple-700 hover:opacity-100 focus:opacity-100 dark:shadow-purple-200',\n\t\topacities[opacityNumber] ?? 'opacity-60',\n\t\tshadows[shadowNumber] ?? 'shadow-none',\n\t\tscore === 1 ? 'animate-pulse hover:animate-none focus:animate-none' : null,\n\t)\n}\n\nfunction FacePile({ isMenuOpened }: { isMenuOpened: boolean }) {\n\tconst loggedInUser = useOptionalUser()\n\tconst { users } = usePresence()\n\tconst {\n\t\tproduct: { displayNameShort },\n\t} = useWorkshopConfig()\n\tconst limit = isMenuOpened ? 17 : 0\n\tconst numberOverLimit = users.length - limit\n\tconst shouldShowNumberOverLimit = numberOverLimit > (isMenuOpened ? 1 : 0)\n\n\tif (!users.length) return null\n\n\tconst tiffany =\n\t\tisMenuOpened && users.length === 1 ? (\n\t\t\t<Link\n\t\t\t\ttarget=\"_blank\"\n\t\t\t\trel=\"noopener noreferrer\"\n\t\t\t\tto=\"https://www.youtube.com/watch?v=w6Q3mHyzn78\"\n\t\t\t>\n\t\t\t\t<img\n\t\t\t\t\talt=\"Tiffany Tunes\"\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t'h-8 w-8 rounded-full border object-cover',\n\t\t\t\t\t\tgetScoreClassNames(1),\n\t\t\t\t\t)}\n\t\t\t\t\tsrc=\"/img/tiffany.png\"\n\t\t\t\t/>\n\t\t\t</Link>\n\t\t) : null\n\tconst overLimitLabel = `${numberOverLimit}${\n\t\tisMenuOpened ? ' more ' : ' '\n\t}${displayNameShort} Dev${numberOverLimit === 1 ? '' : 's'} working now`\n\treturn (\n\t\t<div className=\"flex flex-wrap items-center gap-2\">\n\t\t\t<TooltipProvider>\n\t\t\t\t{(shouldShowNumberOverLimit ? users.slice(0, limit) : users).map(\n\t\t\t\t\t({ user, score }) => {\n\t\t\t\t\t\tconst scoreClassNames = getScoreClassNames(score)\n\t\t\t\t\t\tconst locationLabel = getLocationLabel(user.location)\n\t\t\t\t\t\tconst imageUrl = user.imageUrlSmall || user.avatarUrl\n\t\t\t\t\t\tconst hasAccess = user.hasAccess\n\t\t\t\t\t\tconst local = user.location?.origin?.includes('localhost')\n\n\t\t\t\t\t\tlet doingLabel: string\n\t\t\t\t\t\tif (hasAccess) {\n\t\t\t\t\t\t\tdoingLabel = local ? 'working' : 'referencing'\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tdoingLabel = local ? 'previewing' : 'reviewing'\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<Tooltip key={user.id}>\n\t\t\t\t\t\t\t\t<TooltipTrigger asChild>\n\t\t\t\t\t\t\t\t\t{imageUrl ? (\n\t\t\t\t\t\t\t\t\t\t<img\n\t\t\t\t\t\t\t\t\t\t\ttabIndex={0}\n\t\t\t\t\t\t\t\t\t\t\talt={user.name || displayNameShort}\n\t\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t\t'h-8 w-8 rounded-full border object-cover',\n\t\t\t\t\t\t\t\t\t\t\t\tscoreClassNames,\n\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\tsrc={imageUrl}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\t\ttabIndex={0}\n\t\t\t\t\t\t\t\t\t\t\taria-label={user.name || `${displayNameShort} Dev`}\n\t\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t\t'flex h-8 w-8 items-center justify-center rounded-full border',\n\t\t\t\t\t\t\t\t\t\t\t\tscoreClassNames,\n\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t<Icon name=\"User\" />\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t</TooltipTrigger>\n\t\t\t\t\t\t\t\t<TooltipContent>\n\t\t\t\t\t\t\t\t\t<span className=\"flex flex-col items-center justify-center gap-1\">\n\t\t\t\t\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t\t\t\t\t{user.name || `${displayNameShort} Dev`}{' '}\n\t\t\t\t\t\t\t\t\t\t\t{locationLabel\n\t\t\t\t\t\t\t\t\t\t\t\t? ` is ${doingLabel} ${\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tscore === 1 && loggedInUser?.id !== user.id\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? 'with you'\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: ''\n\t\t\t\t\t\t\t\t\t\t\t\t\t} on`\n\t\t\t\t\t\t\t\t\t\t\t\t: null}\n\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t{locationLabel?.line1 ? (\n\t\t\t\t\t\t\t\t\t\t\t<span>{locationLabel.line1}</span>\n\t\t\t\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t\t\t\t{locationLabel?.line2 ? (\n\t\t\t\t\t\t\t\t\t\t\t<span>{locationLabel.line2}</span>\n\t\t\t\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t</TooltipContent>\n\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t)\n\t\t\t\t\t},\n\t\t\t\t)}\n\t\t\t\t{tiffany}\n\t\t\t\t{shouldShowNumberOverLimit ? (\n\t\t\t\t\t<Tooltip>\n\t\t\t\t\t\t<TooltipTrigger asChild>\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\ttabIndex={0}\n\t\t\t\t\t\t\t\taria-label={overLimitLabel}\n\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t'flex items-center justify-center rounded-full border bg-accent text-xs text-accent-foreground',\n\t\t\t\t\t\t\t\t\tisMenuOpened ? 'h-8 w-8' : 'h-6 w-6',\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t'pointer-events-none overflow-hidden text-ellipsis whitespace-nowrap text-center',\n\t\t\t\t\t\t\t\t\t\tisMenuOpened ? 'w-8' : 'w-6',\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{isMenuOpened ? `+${numberOverLimit}` : numberOverLimit}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</TooltipTrigger>\n\t\t\t\t\t\t<TooltipContent>{overLimitLabel}</TooltipContent>\n\t\t\t\t\t</Tooltip>\n\t\t\t\t) : null}\n\t\t\t</TooltipProvider>\n\t\t</div>\n\t)\n}\n\nconst useIsWide = makeMediaQueryStore('(min-width: 640px)', true)\n\nexport default function App() {\n\tconst data = useLoaderData<typeof loader>()\n\tconst user = useOptionalUser()\n\tconst isWide = useIsWide()\n\tconst isHydrated = useHydrated()\n\n\tconst [isMenuOpened, setMenuOpenedState] = React.useState(data.isMenuOpened)\n\tuseRevalidationWS({ watchPaths: ['./exercises/README.mdx'] })\n\n\tfunction setMenuOpened(value: boolean) {\n\t\tsetMenuOpenedState(value)\n\t\tdocument.cookie = `es_menu_open=${value.toString()}; path=/; SameSite=Lax;`\n\t}\n\n\treturn (\n\t\t<div className=\"flex flex-col\">\n\t\t\t{user ? null : <NoUserBanner />}\n\t\t\t{/*\n\t\t\t\tthis isn't placed in a conditional with isWide because the server render\n\t\t\t\tdoesn't know whether it should be around or not so we just use CSS to hide it\n\t\t\t\tif it's not supposed to show up.\n\n\t\t\t\tWe don't just use media queries for the wider screen nav because we want\n\t\t\t\tto avoid running all the logic in there unnecessarily.\n\t\t\t*/}\n\t\t\t{isHydrated && isWide ? null : (\n\t\t\t\t<MobileNavigation\n\t\t\t\t\tisMenuOpened={isMenuOpened}\n\t\t\t\t\tonMenuOpenChange={setMenuOpened}\n\t\t\t\t/>\n\t\t\t)}\n\t\t\t<div\n\t\t\t\t// this nonsense is here because we want the panels to be scrollable rather\n\t\t\t\t// than having the entire page be scrollable (at least on wider screens)\n\t\t\t\tclassName={cn('flex flex-grow flex-col sm:flex-row', {\n\t\t\t\t\t'h-[calc(100vh-128px-env(safe-area-inset-top)-env(safe-area-inset-bottom))] sm:h-[calc(100vh-64px-env(safe-area-inset-top)-env(safe-area-inset-bottom))]':\n\t\t\t\t\t\t!user,\n\t\t\t\t\t'h-[calc(100vh-64px-env(safe-area-inset-top)-env(safe-area-inset-bottom))] sm:h-[calc(100vh-env(safe-area-inset-top)-env(safe-area-inset-bottom))]':\n\t\t\t\t\t\tuser,\n\t\t\t\t\t'h-[unset]': !isWide && isMenuOpened,\n\t\t\t\t})}\n\t\t\t>\n\t\t\t\t{isWide ? (\n\t\t\t\t\t<Navigation\n\t\t\t\t\t\tisMenuOpened={isMenuOpened}\n\t\t\t\t\t\tonMenuOpenChange={setMenuOpened}\n\t\t\t\t\t/>\n\t\t\t\t) : null}\n\t\t\t\t<div\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t'h-full w-full max-w-full sm:max-w-[calc(100%-56px)]',\n\t\t\t\t\t\tisMenuOpened ? 'hidden md:block' : '',\n\t\t\t\t\t)}\n\t\t\t\t>\n\t\t\t\t\t<Outlet />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t)\n}\n\nfunction getLocationLabel(location: User['location']) {\n\tif (!location) return null\n\n\tconst { exercise } = location\n\n\tconst exercisePortion = [\n\t\texercise\n\t\t\t? [exercise.exerciseNumber, exercise.stepNumber]\n\t\t\t\t\t.filter(Boolean)\n\t\t\t\t\t.map((s) => s.toString().padStart(2, '0'))\n\t\t\t\t\t.join('/')\n\t\t\t: null,\n\t\texercise?.type,\n\t]\n\t\t.filter(Boolean)\n\t\t.join(' - ')\n\treturn { line1: location.workshopTitle, line2: exercisePortion }\n}\n\nfunction NoUserBanner() {\n\tconst isWide = useIsWide()\n\tconst {\n\t\tproduct: { host, displayName },\n\t} = useWorkshopConfig()\n\tconst userHasAccess = useUserHasAccess()\n\tconst details = (\n\t\t<div>\n\t\t\t{ENV.EPICSHOP_DEPLOYED ? (\n\t\t\t\t<div>\n\t\t\t\t\t{`This is the deployed version. `}\n\t\t\t\t\t<>\n\t\t\t\t\t\t<Link\n\t\t\t\t\t\t\tclassName=\"underline\"\n\t\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t\t\trel=\"noopener noreferrer\"\n\t\t\t\t\t\t\tto={ENV.EPICSHOP_GITHUB_REPO}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tRun locally\n\t\t\t\t\t\t</Link>\n\t\t\t\t\t\t{` for full experience.`}\n\t\t\t\t\t</>{' '}\n\t\t\t\t</div>\n\t\t\t) : userHasAccess ? (\n\t\t\t\t<div>\n\t\t\t\t\t<Link to=\"/login\" className=\"underline\">\n\t\t\t\t\t\tLogin\n\t\t\t\t\t</Link>{' '}\n\t\t\t\t\tor{' '}\n\t\t\t\t\t<a href={`https://${host}/login`} className=\"underline\">\n\t\t\t\t\t\tjoin for free\n\t\t\t\t\t</a>{' '}\n\t\t\t\t\tfor the full experience.\n\t\t\t\t</div>\n\t\t\t) : null}\n\t\t</div>\n\t)\n\treturn (\n\t\t<div className=\"z-10 flex h-16 items-center justify-between border-b bg-gradient-to-tr from-blue-500 to-indigo-500 pl-4 text-white\">\n\t\t\t{isWide ? (\n\t\t\t\t<>\n\t\t\t\t\t<div className=\"hidden flex-1 flex-wrap items-center gap-4 sm:flex\">\n\t\t\t\t\t\t<Logo size=\"lg\" style=\"monochrome\" />\n\t\t\t\t\t\t<div className=\"flex flex-1 flex-wrap items-center\">\n\t\t\t\t\t\t\t<p className=\"mr-2\">\n\t\t\t\t\t\t\t\tWelcome to the{' '}\n\t\t\t\t\t\t\t\t<Link\n\t\t\t\t\t\t\t\t\tto={`https://${host}`}\n\t\t\t\t\t\t\t\t\tclassName=\"underline\"\n\t\t\t\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{displayName}\n\t\t\t\t\t\t\t\t</Link>{' '}\n\t\t\t\t\t\t\t\tWorkshop app!\n\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t{details}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t{userHasAccess ? null : (\n\t\t\t\t\t\t<div className=\"hidden h-full flex-col items-center sm:flex md:flex-row\">\n\t\t\t\t\t\t\t<Link\n\t\t\t\t\t\t\t\tto={`https://${host}`}\n\t\t\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t\t\t\tclassName=\"flex h-full items-center justify-center space-x-1.5 px-5 text-sm font-semibold\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<span className=\"drop-shadow-sm\">Join {displayName}</span>\n\t\t\t\t\t\t\t\t<span>↗︎</span>\n\t\t\t\t\t\t\t</Link>\n\t\t\t\t\t\t\t<Link\n\t\t\t\t\t\t\t\tto={ENV.EPICSHOP_DEPLOYED ? `https://${host}/login` : '/login'}\n\t\t\t\t\t\t\t\tclassName=\"flex h-full items-center justify-center space-x-1.5 bg-white/20 px-5 text-sm font-semibold shadow-md transition hover:bg-white/30\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<Icon name=\"User\" size=\"lg\" />\n\t\t\t\t\t\t\t\t<span className=\"drop-shadow-sm\">Login</span>\n\t\t\t\t\t\t\t</Link>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t</>\n\t\t\t) : (\n\t\t\t\t<>\n\t\t\t\t\t<div className=\"flex flex-1 flex-wrap items-center gap-4 sm:hidden\">\n\t\t\t\t\t\t<a href={`https://${host}`}>\n\t\t\t\t\t\t\t<Logo size=\"lg\" style=\"monochrome\" />\n\t\t\t\t\t\t</a>\n\t\t\t\t\t\t<Dialog>\n\t\t\t\t\t\t\t<DialogTrigger>\n\t\t\t\t\t\t\t\t<Icon name=\"Question\" size=\"lg\" className=\"animate-pulse\" />\n\t\t\t\t\t\t\t</DialogTrigger>\n\t\t\t\t\t\t\t<DialogContent>\n\t\t\t\t\t\t\t\t<DialogHeader>\n\t\t\t\t\t\t\t\t\t<Logo size=\"lg\" style=\"monochrome\" />\n\t\t\t\t\t\t\t\t\t<span className=\"text-lg font-semibold\">{displayName}</span>\n\t\t\t\t\t\t\t\t</DialogHeader>\n\t\t\t\t\t\t\t\t<DialogDescription>\n\t\t\t\t\t\t\t\t\tWelcome to the{' '}\n\t\t\t\t\t\t\t\t\t<Link to={`https://${host}`} className=\"underline\">\n\t\t\t\t\t\t\t\t\t\t{displayName}\n\t\t\t\t\t\t\t\t\t</Link>{' '}\n\t\t\t\t\t\t\t\t\tWorkshop app!\n\t\t\t\t\t\t\t\t</DialogDescription>\n\t\t\t\t\t\t\t\t{details}\n\t\t\t\t\t\t\t</DialogContent>\n\t\t\t\t\t\t</Dialog>\n\t\t\t\t\t</div>\n\t\t\t\t\t{userHasAccess ? null : (\n\t\t\t\t\t\t<div className=\"flex h-full items-center\">\n\t\t\t\t\t\t\t<Link\n\t\t\t\t\t\t\t\tto={`https://${host}`}\n\t\t\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t\t\t\tclassName=\"flex h-full items-center justify-center space-x-1.5 px-5 text-sm font-semibold\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<span className=\"drop-shadow-sm\">Join</span>\n\t\t\t\t\t\t\t\t<span>↗︎</span>\n\t\t\t\t\t\t\t</Link>\n\t\t\t\t\t\t\t<Link\n\t\t\t\t\t\t\t\tto={ENV.EPICSHOP_DEPLOYED ? `https://${host}/login` : '/login'}\n\t\t\t\t\t\t\t\tclassName=\"flex h-full items-center justify-center space-x-1.5 bg-white/20 px-5 text-sm font-semibold shadow-md transition hover:bg-white/30\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<Icon name=\"User\" size=\"lg\" />\n\t\t\t\t\t\t\t\t<span className=\"drop-shadow-sm\">Login</span>\n\t\t\t\t\t\t\t</Link>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t</>\n\t\t\t)}\n\t\t</div>\n\t)\n}\n\nconst itemVariants = {\n\thidden: { opacity: 0, x: -20 },\n\tvisible: { opacity: 1, x: 0 },\n}\nfunction NavigationExerciseListItem({\n\texerciseNumber,\n\tchildren,\n}: {\n\texerciseNumber: number\n\tchildren: React.ReactNode\n}) {\n\tconst progressClassName = useExerciseProgressClassName(exerciseNumber)\n\treturn (\n\t\t<motion.li\n\t\t\tvariants={itemVariants}\n\t\t\t// @ts-expect-error framer-motion + latest typescript types has issues\n\t\t\tclassName={cn(\n\t\t\t\t// add gap of 3 to children, but using padding so the progress extends through the whole height\n\t\t\t\t'py-[6px] first:pt-3 last:pb-3',\n\t\t\t\tprogressClassName ? `${progressClassName} before:border-t` : null,\n\t\t\t)}\n\t\t>\n\t\t\t<span className=\"inline-block pl-2\">{children}</span>\n\t\t</motion.li>\n\t)\n}\n\nfunction NavigationExerciseStepListItem({\n\tchildren,\n\t...progressItemSearch\n}: {\n\tchildren: React.ReactNode\n} & ProgressItemSearch) {\n\tconst progressClassName = useProgressItemClassName(progressItemSearch)\n\treturn (\n\t\t<motion.li\n\t\t\tvariants={itemVariants}\n\t\t\t// @ts-expect-error framer-motion + latest typescript types has issues\n\t\t\tclassName={cn(\n\t\t\t\t// add gap of 3 to children, but using padding so the progress extends through the whole height\n\t\t\t\t'py-[6px] first:pt-3 last:pb-3',\n\t\t\t\tprogressClassName ? `${progressClassName} before:border-t` : null,\n\t\t\t)}\n\t\t>\n\t\t\t<span className=\"inline-block pl-2\">{children}</span>\n\t\t</motion.li>\n\t)\n}\n\nfunction MobileNavigation({\n\tisMenuOpened,\n\tonMenuOpenChange: setMenuOpened,\n}: {\n\tisMenuOpened: boolean\n\tonMenuOpenChange: (change: boolean) => void\n}) {\n\tconst data = useLoaderData<typeof loader>()\n\tconst user = useOptionalUser()\n\tconst nextExerciseRoute = useNextExerciseRoute()\n\tconst params = useParams()\n\tconst isOnline = useIsOnline()\n\tconst { users } = usePresence()\n\n\t// items\n\tconst listVariants = {\n\t\tvisible: {\n\t\t\topacity: 1,\n\t\t\ttransition: {\n\t\t\t\tduration: 0.05,\n\t\t\t\twhen: 'beforeChildren',\n\t\t\t\tstaggerChildren: 0.03,\n\t\t\t},\n\t\t},\n\t\thidden: {\n\t\t\topacity: 0,\n\t\t},\n\t}\n\n\treturn (\n\t\t<nav className=\"flex w-full border-b sm:hidden\">\n\t\t\t<div className=\"w-full\">\n\t\t\t\t<div\n\t\t\t\t\tclassName={cn('flex items-center', {\n\t\t\t\t\t\t'flex-col': isMenuOpened,\n\t\t\t\t\t\t'h-14': !isMenuOpened,\n\t\t\t\t\t})}\n\t\t\t\t>\n\t\t\t\t\t<NavToggle\n\t\t\t\t\t\ttitle={data.workshopTitle}\n\t\t\t\t\t\tisMenuOpened={isMenuOpened}\n\t\t\t\t\t\tsetMenuOpened={setMenuOpened}\n\t\t\t\t\t/>\n\t\t\t\t\t{isMenuOpened && (\n\t\t\t\t\t\t<motion.div\n\t\t\t\t\t\t\t// @ts-expect-error framer-motion + latest typescript types has issues\n\t\t\t\t\t\t\tclassName=\"flex w-full flex-grow flex-col justify-between overflow-x-auto p-6 scrollbar-thin scrollbar-thumb-scrollbar\"\n\t\t\t\t\t\t\tinitial={{ opacity: 0 }}\n\t\t\t\t\t\t\tanimate={{ opacity: 1 }}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<motion.ul\n\t\t\t\t\t\t\t\tvariants={listVariants}\n\t\t\t\t\t\t\t\tinitial=\"hidden\"\n\t\t\t\t\t\t\t\tanimate=\"visible\"\n\t\t\t\t\t\t\t\t// @ts-expect-error framer-motion + latest typescript types has issues\n\t\t\t\t\t\t\t\tclassName=\"flex flex-col\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t\t\t<NavLink\n\t\t\t\t\t\t\t\t\t\tprefetch=\"intent\"\n\t\t\t\t\t\t\t\t\t\tto=\"/\"\n\t\t\t\t\t\t\t\t\t\tclassName={({ isActive }) =>\n\t\t\t\t\t\t\t\t\t\t\tclsx(\n\t\t\t\t\t\t\t\t\t\t\t\t'relative whitespace-nowrap px-2 py-0.5 pr-3 text-2xl font-bold outline-none hover:underline focus:underline',\n\t\t\t\t\t\t\t\t\t\t\t\t'after:absolute after:-bottom-2.5 after:-right-2.5 after:h-5 after:w-5 after:rotate-45 after:scale-75 after:bg-background after:content-[\"\"] hover:underline focus:underline',\n\t\t\t\t\t\t\t\t\t\t\t\t{ 'bg-foreground text-background': isActive },\n\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\tHome\n\t\t\t\t\t\t\t\t\t</NavLink>\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t{data.exercises.map(({ exerciseNumber, title, steps }) => {\n\t\t\t\t\t\t\t\t\tconst isActive =\n\t\t\t\t\t\t\t\t\t\tNumber(params.exerciseNumber) === exerciseNumber\n\t\t\t\t\t\t\t\t\tconst showPlayground =\n\t\t\t\t\t\t\t\t\t\t!isActive &&\n\t\t\t\t\t\t\t\t\t\tdata.playground.exerciseNumber === exerciseNumber\n\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t<NavigationExerciseListItem\n\t\t\t\t\t\t\t\t\t\t\tkey={exerciseNumber}\n\t\t\t\t\t\t\t\t\t\t\texerciseNumber={exerciseNumber}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t<span className=\"flex items-center gap-1 text-2xl font-bold\">\n\t\t\t\t\t\t\t\t\t\t\t\t<Link\n\t\t\t\t\t\t\t\t\t\t\t\t\tprefetch=\"intent\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tto={getExercisePath(exerciseNumber)}\n\t\t\t\t\t\t\t\t\t\t\t\t\tclassName={clsx(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t'relative whitespace-nowrap px-2 py-0.5 pr-3 outline-none hover:underline focus:underline',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t'after:absolute after:-bottom-2.5 after:-right-2.5 after:h-5 after:w-5 after:rotate-45 after:scale-75 after:bg-background after:content-[\"\"] hover:underline focus:underline',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{ 'bg-foreground text-background': isActive },\n\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{title}\n\t\t\t\t\t\t\t\t\t\t\t\t</Link>\n\t\t\t\t\t\t\t\t\t\t\t\t{showPlayground ? (\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Link\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tto={getExerciseStepPath(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdata.playground.exerciseNumber,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdata.playground.stepNumber,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdata.playground.type,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tprefetch=\"intent\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t🛝\n\t\t\t\t\t\t\t\t\t\t\t\t\t</Link>\n\t\t\t\t\t\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t{isActive ? (\n\t\t\t\t\t\t\t\t\t\t\t\t<motion.ul\n\t\t\t\t\t\t\t\t\t\t\t\t\tvariants={listVariants}\n\t\t\t\t\t\t\t\t\t\t\t\t\tinitial=\"hidden\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tanimate=\"visible\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t// @ts-expect-error framer-motion + latest typescript types has issues\n\t\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"ml-4 mt-2 flex flex-col\"\n\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<NavigationExerciseStepListItem\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tkey={exerciseNumber}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttype=\"instructions\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\texerciseNumber={exerciseNumber}\n\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Link\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tto={getExercisePath(exerciseNumber)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tprefetch=\"intent\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName={clsx(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'relative whitespace-nowrap px-2 py-0.5 pr-3 text-xl font-medium outline-none after:absolute after:-bottom-2.5 after:-right-2.5 after:h-5 after:w-5 after:rotate-45 after:scale-75 after:bg-background after:content-[\"\"] hover:underline focus:underline',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'bg-foreground text-background':\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t!params.stepNumber,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tIntro\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Link>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</NavigationExerciseStepListItem>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{steps\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t.filter(Boolean)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t.map(({ stepNumber, title, problem, solution }) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<NavigationExerciseStepListItem\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tkey={stepNumber}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttype=\"step\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tstepNumber={stepNumber}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\texerciseNumber={exerciseNumber}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div className=\"flex flex-col gap-0.5\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Link\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tto={getExerciseStepPath(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\texerciseNumber,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tstepNumber,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tprefetch=\"intent\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"font-semibold leading-tight\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{stepNumber.toString().padStart(2, '0')}.{' '}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{title}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Link>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div className=\"ml-3 mt-0.5 flex gap-1\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{problem && (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<NavLink\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tto={getExerciseStepPath(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\texerciseNumber,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tstepNumber,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'problem',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tprefetch=\"intent\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName={({ isActive }) =>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclsx(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'relative whitespace-nowrap px-2 py-0.5 pr-3 outline-none hover:underline focus:underline',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'after:absolute after:-bottom-2.5 after:-right-2.5 after:h-5 after:w-5 after:rotate-45 after:scale-75 after:bg-background after:content-[\"\"] hover:underline focus:underline',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'bg-foreground text-background':\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tisActive,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tProblem\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{problem.name ===\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdata.playground.appName\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? ' 🛝'\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: ''}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</NavLink>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{solution && (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<NavLink\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tto={getExerciseStepPath(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\texerciseNumber,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tstepNumber,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'solution',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tprefetch=\"intent\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName={({ isActive }) =>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclsx(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'relative whitespace-nowrap px-2 py-0.5 pr-3 outline-none hover:underline focus:underline',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'after:absolute after:-bottom-2.5 after:-right-2.5 after:h-5 after:w-5 after:rotate-45 after:scale-75 after:bg-background after:content-[\"\"] hover:underline focus:underline',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'bg-foreground text-background':\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tisActive,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tSolution\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{solution.name ===\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdata.playground.appName\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? ' 🛝'\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: ''}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</NavLink>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</NavigationExerciseStepListItem>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t\t\t\t\t\t<NavigationExerciseStepListItem\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttype=\"finished\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\texerciseNumber={exerciseNumber}\n\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<NavLink\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tto={getExercisePath(exerciseNumber, 'finished')}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tprefetch=\"intent\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName={({ isActive }) =>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclsx(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'relative whitespace-nowrap px-2 py-0.5 pr-3 text-base font-medium outline-none after:absolute after:-bottom-2.5 after:-right-2.5 after:h-5 after:w-5 after:rotate-45 after:scale-75 after:bg-background after:content-[\"\"] hover:underline focus:underline',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'bg-foreground text-background': isActive,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t📝 Elaboration\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</NavLink>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</NavigationExerciseStepListItem>\n\t\t\t\t\t\t\t\t\t\t\t\t</motion.ul>\n\t\t\t\t\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t\t\t\t</NavigationExerciseListItem>\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t</motion.ul>\n\t\t\t\t\t\t\t<div className=\"mt-6\">\n\t\t\t\t\t\t\t\t<NavLink\n\t\t\t\t\t\t\t\t\tto=\"/finished\"\n\t\t\t\t\t\t\t\t\tclassName={({ isActive }) =>\n\t\t\t\t\t\t\t\t\t\tclsx(\n\t\t\t\t\t\t\t\t\t\t\t'relative whitespace-nowrap text-lg font-bold outline-none hover:underline focus:underline',\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t'bg-black text-white after:absolute after:-bottom-2.5 after:-right-2.5 after:h-5 after:w-5 after:rotate-45 after:scale-75 after:bg-background after:content-[\"\"]':\n\t\t\t\t\t\t\t\t\t\t\t\t\tisActive,\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t📝 Workshop Feedback\n\t\t\t\t\t\t\t\t</NavLink>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</motion.div>\n\t\t\t\t\t)}\n\t\t\t\t\t<div className=\"flex-grow\" />\n\t\t\t\t\t{isOnline ? null : (\n\t\t\t\t\t\t<SimpleTooltip content={isMenuOpened ? null : 'You are offline'}>\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t'flex h-14 animate-pulse items-center justify-start p-4',\n\t\t\t\t\t\t\t\t\tisMenuOpened ? 'w-full border-t' : 'border-l',\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\t\tname=\"WifiNoConnection\"\n\t\t\t\t\t\t\t\t\tclassName=\"text-foreground-destructive\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{isMenuOpened ? 'You are offline' : null}\n\t\t\t\t\t\t\t\t</Icon>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</SimpleTooltip>\n\t\t\t\t\t)}\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t'flex items-center justify-start p-4',\n\t\t\t\t\t\t\tisMenuOpened && users.length > 4 ? 'min-h-14' : 'h-14',\n\t\t\t\t\t\t\tisMenuOpened ? 'w-full border-t' : 'border-l',\n\t\t\t\t\t\t)}\n\t\t\t\t\t>\n\t\t\t\t\t\t<FacePile isMenuOpened={isMenuOpened} />\n\t\t\t\t\t</div>\n\t\t\t\t\t{ENV.EPICSHOP_DEPLOYED ? null : user ? (\n\t\t\t\t\t\t<SimpleTooltip content={isMenuOpened ? null : 'Your account'}>\n\t\t\t\t\t\t\t<Link\n\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t'flex h-14 flex-shrink-0 items-center justify-start space-x-3 px-4 py-4 text-center no-underline hover:underline',\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t'border-l': !isMenuOpened,\n\t\t\t\t\t\t\t\t\t\t'w-full border-t': isMenuOpened,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\tto=\"/account\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{user.imageUrlSmall ? (\n\t\t\t\t\t\t\t\t\t<img\n\t\t\t\t\t\t\t\t\t\talt={user.name ?? user.email}\n\t\t\t\t\t\t\t\t\t\tsrc={user.imageUrlSmall}\n\t\t\t\t\t\t\t\t\t\tclassName=\"h-full rounded-full\"\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t<Icon name=\"User\" className=\"flex-shrink-0\" size=\"lg\" />\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t{isMenuOpened ? (\n\t\t\t\t\t\t\t\t\t<motion.div\n\t\t\t\t\t\t\t\t\t\t// @ts-expect-error framer-motion + latest typescript types has issues\n\t\t\t\t\t\t\t\t\t\tclassName=\"flex items-center whitespace-nowrap\"\n\t\t\t\t\t\t\t\t\t\tinitial={{ opacity: 0 }}\n\t\t\t\t\t\t\t\t\t\tanimate={{ opacity: 1 }}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\tYour Account\n\t\t\t\t\t\t\t\t\t</motion.div>\n\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t<span className=\"sr-only\">Your account</span>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</Link>\n\t\t\t\t\t\t</SimpleTooltip>\n\t\t\t\t\t) : null}\n\t\t\t\t\t{ENV.EPICSHOP_DEPLOYED ? null : user && nextExerciseRoute ? (\n\t\t\t\t\t\t<SimpleTooltip\n\t\t\t\t\t\t\tcontent={isMenuOpened ? null : 'Continue to next lesson'}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Link\n\t\t\t\t\t\t\t\tto={nextExerciseRoute}\n\t\t\t\t\t\t\t\tprefetch=\"intent\"\n\t\t\t\t\t\t\t\tclassName={clsx(\n\t\t\t\t\t\t\t\t\t'flex h-14 w-full items-center space-x-3 border-l px-4 py-4 pl-[18px] no-underline hover:underline',\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\tstate={{ from: 'continue next lesson button' }}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<Icon name=\"FastForward\" className=\"flex-shrink-0\" size=\"md\" />\n\t\t\t\t\t\t\t\t{isMenuOpened ? (\n\t\t\t\t\t\t\t\t\t<motion.div\n\t\t\t\t\t\t\t\t\t\t// @ts-expect-error framer-motion + latest typescript types has issues\n\t\t\t\t\t\t\t\t\t\tclassName=\"flex items-center whitespace-nowrap\"\n\t\t\t\t\t\t\t\t\t\tinitial={{ opacity: 0 }}\n\t\t\t\t\t\t\t\t\t\tanimate={{ opacity: 1 }}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\tContinue to next lesson\n\t\t\t\t\t\t\t\t\t</motion.div>\n\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t<span className=\"sr-only\">Continue to next lesson</span>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</Link>\n\t\t\t\t\t\t</SimpleTooltip>\n\t\t\t\t\t) : null}\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t'flex h-14 w-14 items-center justify-center self-start p-4 sm:mb-4 sm:w-full',\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t'w-full border-t': isMenuOpened,\n\t\t\t\t\t\t\t\t'border-l': !isMenuOpened,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t)}\n\t\t\t\t\t>\n\t\t\t\t\t\t<ThemeSwitch />\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</nav>\n\t)\n}\n\nconst OPENED_MENU_WIDTH = 400\n\nfunction Navigation({\n\tisMenuOpened,\n\tonMenuOpenChange: setMenuOpened,\n}: {\n\tisMenuOpened: boolean\n\tonMenuOpenChange: (change: boolean) => void\n}) {\n\tconst data = useLoaderData<typeof loader>()\n\tconst user = useOptionalUser()\n\tconst nextExerciseRoute = useNextExerciseRoute()\n\tconst params = useParams()\n\tconst isOnline = useIsOnline()\n\tconst { users } = usePresence()\n\n\tconst exercise = data.exercises.find(\n\t\t(e) => e.exerciseNumber === Number(params.exerciseNumber),\n\t)\n\tconst app =\n\t\tparams.type === 'solution'\n\t\t\t? exercise?.solutions.find(\n\t\t\t\t\t(s) => s.stepNumber === Number(params.stepNumber),\n\t\t\t\t)\n\t\t\t: params.type === 'problem'\n\t\t\t\t? exercise?.problems.find(\n\t\t\t\t\t\t(p) => p.stepNumber === Number(params.stepNumber),\n\t\t\t\t\t)\n\t\t\t\t: null\n\n\t// container\n\tconst menuControls = useAnimationControls()\n\tconst menuVariants = {\n\t\tclose: { width: 56 },\n\t\topen: { width: OPENED_MENU_WIDTH },\n\t}\n\n\t// items\n\tconst listVariants = {\n\t\tvisible: {\n\t\t\topacity: 1,\n\t\t\ttransition: {\n\t\t\t\tduration: 0.05,\n\t\t\t\twhen: 'beforeChildren',\n\t\t\t\tstaggerChildren: 0.03,\n\t\t\t},\n\t\t},\n\t\thidden: {\n\t\t\topacity: 0,\n\t\t},\n\t}\n\n\treturn (\n\t\t<nav className=\"hidden border-r sm:flex\">\n\t\t\t<motion.div\n\t\t\t\tinitial={isMenuOpened ? 'open' : 'close'}\n\t\t\t\tvariants={menuVariants}\n\t\t\t\tanimate={menuControls}\n\t\t\t>\n\t\t\t\t<div className=\"flex h-full flex-col items-center justify-between\">\n\t\t\t\t\t<NavToggle\n\t\t\t\t\t\ttitle={data.workshopTitle}\n\t\t\t\t\t\tmenuControls={menuControls}\n\t\t\t\t\t\tisMenuOpened={isMenuOpened}\n\t\t\t\t\t\tsetMenuOpened={setMenuOpened}\n\t\t\t\t\t/>\n\t\t\t\t\t{isMenuOpened && (\n\t\t\t\t\t\t<motion.div\n\t\t\t\t\t\t\tstyle={{ width: OPENED_MENU_WIDTH }}\n\t\t\t\t\t\t\t// @ts-expect-error framer-motion + latest typescript types has issues\n\t\t\t\t\t\t\tclassName=\"flex flex-grow flex-col justify-between overflow-y-auto p-6 scrollbar-thin scrollbar-thumb-scrollbar\"\n\t\t\t\t\t\t\tinitial={{ opacity: 0 }}\n\t\t\t\t\t\t\tanimate={{ opacity: 1 }}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<motion.ul\n\t\t\t\t\t\t\t\tvariants={listVariants}\n\t\t\t\t\t\t\t\tinitial=\"hidden\"\n\t\t\t\t\t\t\t\tanimate=\"visible\"\n\t\t\t\t\t\t\t\t// @ts-expect-error framer-motion + latest typescript types has issues\n\t\t\t\t\t\t\t\tclassName=\"flex flex-col\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t\t\t<NavLink\n\t\t\t\t\t\t\t\t\t\tprefetch=\"intent\"\n\t\t\t\t\t\t\t\t\t\tto=\"/\"\n\t\t\t\t\t\t\t\t\t\tclassName={({ isActive }) =>\n\t\t\t\t\t\t\t\t\t\t\tclsx(\n\t\t\t\t\t\t\t\t\t\t\t\t'relative whitespace-nowrap px-2 py-0.5 pr-3 text-2xl font-bold outline-none hover:underline focus:underline',\n\t\t\t\t\t\t\t\t\t\t\t\t'after:absolute after:-bottom-2.5 after:-right-2.5 after:h-5 after:w-5 after:rotate-45 after:scale-75 after:bg-background after:content-[\"\"] hover:underline focus:underline',\n\t\t\t\t\t\t\t\t\t\t\t\t{ 'bg-foreground text-background': isActive },\n\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\tHome\n\t\t\t\t\t\t\t\t\t</NavLink>\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t{data.exercises.map(({ exerciseNumber, title, steps }) => {\n\t\t\t\t\t\t\t\t\tconst isActive =\n\t\t\t\t\t\t\t\t\t\tNumber(params.exerciseNumber) === exerciseNumber\n\t\t\t\t\t\t\t\t\tconst showPlayground =\n\t\t\t\t\t\t\t\t\t\t!isActive &&\n\t\t\t\t\t\t\t\t\t\tdata.playground.exerciseNumber === exerciseNumber\n\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t<NavigationExerciseListItem\n\t\t\t\t\t\t\t\t\t\t\tkey={exerciseNumber}\n\t\t\t\t\t\t\t\t\t\t\texerciseNumber={exerciseNumber}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t<span className=\"flex items-center gap-1 text-2xl font-bold\">\n\t\t\t\t\t\t\t\t\t\t\t\t<Link\n\t\t\t\t\t\t\t\t\t\t\t\t\tprefetch=\"intent\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tto={getExercisePath(exerciseNumber)}\n\t\t\t\t\t\t\t\t\t\t\t\t\tclassName={clsx(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t'relative whitespace-nowrap px-2 py-0.5 pr-3 outline-none hover:underline focus:underline',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t'after:absolute after:-bottom-2.5 after:-right-2.5 after:h-5 after:w-5 after:rotate-45 after:scale-75 after:bg-background after:content-[\"\"] hover:underline focus:underline',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{ 'bg-foreground text-background': isActive },\n\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{title}\n\t\t\t\t\t\t\t\t\t\t\t\t</Link>\n\t\t\t\t\t\t\t\t\t\t\t\t{showPlayground ? (\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Link\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tto={getExerciseStepPath(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdata.playground.exerciseNumber,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdata.playground.stepNumber,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdata.playground.type,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tprefetch=\"intent\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t🛝\n\t\t\t\t\t\t\t\t\t\t\t\t\t</Link>\n\t\t\t\t\t\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t{isActive ? (\n\t\t\t\t\t\t\t\t\t\t\t\t<motion.ul\n\t\t\t\t\t\t\t\t\t\t\t\t\tvariants={listVariants}\n\t\t\t\t\t\t\t\t\t\t\t\t\tinitial=\"hidden\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tanimate=\"visible\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t// @ts-expect-error framer-motion + latest typescript types has issues\n\t\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"ml-4 mt-2 flex flex-col\"\n\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<NavigationExerciseStepListItem\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tkey={exerciseNumber}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttype=\"instructions\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\texerciseNumber={exerciseNumber}\n\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Link\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tto={getExercisePath(exerciseNumber)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tprefetch=\"intent\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName={clsx(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'relative whitespace-nowrap px-2 py-0.5 pr-3 text-xl font-medium outline-none after:absolute after:-bottom-2.5 after:-right-2.5 after:h-5 after:w-5 after:rotate-45 after:scale-75 after:bg-background after:content-[\"\"] hover:underline focus:underline',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'bg-foreground text-background':\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t!params.stepNumber,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tIntro\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Link>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</NavigationExerciseStepListItem>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{steps\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t.filter(Boolean)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t.map(({ stepNumber, title, problem, solution }) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<NavigationExerciseStepListItem\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tkey={stepNumber}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttype=\"step\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tstepNumber={stepNumber}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\texerciseNumber={exerciseNumber}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div className=\"flex flex-col gap-0.5\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Link\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tto={getExerciseStepPath(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\texerciseNumber,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tstepNumber,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tprefetch=\"intent\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"font-semibold leading-tight\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{stepNumber.toString().padStart(2, '0')}.{' '}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{title}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Link>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div className=\"ml-3 mt-0.5 flex gap-1\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{problem && (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<NavLink\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tto={getExerciseStepPath(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\texerciseNumber,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tstepNumber,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'problem',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tprefetch=\"intent\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName={({ isActive }) =>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclsx(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'relative whitespace-nowrap px-2 py-0.5 pr-3 outline-none hover:underline focus:underline',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'after:absolute after:-bottom-2.5 after:-right-2.5 after:h-5 after:w-5 after:rotate-45 after:scale-75 after:bg-background after:content-[\"\"] hover:underline focus:underline',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'bg-foreground text-background':\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tisActive,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tProblem\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{problem.name ===\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdata.playground.appName\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? ' 🛝'\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: ''}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</NavLink>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{solution && (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<NavLink\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tto={getExerciseStepPath(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\texerciseNumber,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tstepNumber,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'solution',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tprefetch=\"intent\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName={({ isActive }) =>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclsx(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'relative whitespace-nowrap px-2 py-0.5 pr-3 outline-none hover:underline focus:underline',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'after:absolute after:-bottom-2.5 after:-right-2.5 after:h-5 after:w-5 after:rotate-45 after:scale-75 after:bg-background after:content-[\"\"] hover:underline focus:underline',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'bg-foreground text-background':\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tisActive,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tSolution\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{solution.name ===\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdata.playground.appName\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? ' 🛝'\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: ''}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</NavLink>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</NavigationExerciseStepListItem>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t\t\t\t\t\t<NavigationExerciseStepListItem\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttype=\"finished\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\texerciseNumber={exerciseNumber}\n\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<NavLink\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tto={getExercisePath(exerciseNumber, 'finished')}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tprefetch=\"intent\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName={({ isActive }) =>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclsx(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'relative whitespace-nowrap px-2 py-0.5 pr-3 text-base font-medium outline-none after:absolute after:-bottom-2.5 after:-right-2.5 after:h-5 after:w-5 after:rotate-45 after:scale-75 after:bg-background after:content-[\"\"] hover:underline focus:underline',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'bg-foreground text-background': isActive,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t📝 Elaboration\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</NavLink>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</NavigationExerciseStepListItem>\n\t\t\t\t\t\t\t\t\t\t\t\t</motion.ul>\n\t\t\t\t\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t\t\t\t</NavigationExerciseListItem>\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t</motion.ul>\n\t\t\t\t\t\t\t<div className=\"mt-6\">\n\t\t\t\t\t\t\t\t<NavLink\n\t\t\t\t\t\t\t\t\tto=\"/finished\"\n\t\t\t\t\t\t\t\t\tclassName={({ isActive }) =>\n\t\t\t\t\t\t\t\t\t\tclsx(\n\t\t\t\t\t\t\t\t\t\t\t'relative whitespace-nowrap text-lg font-bold outline-none hover:underline focus:underline',\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t'bg-black text-white after:absolute after:-bottom-2.5 after:-right-2.5 after:h-5 after:w-5 after:rotate-45 after:scale-75 after:bg-background after:content-[\"\"]':\n\t\t\t\t\t\t\t\t\t\t\t\t\tisActive,\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t📝 Workshop Feedback\n\t\t\t\t\t\t\t\t</NavLink>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</motion.div>\n\t\t\t\t\t)}\n\t\t\t\t\t{!isMenuOpened && (\n\t\t\t\t\t\t<div className=\"flex flex-grow flex-col justify-center\">\n\t\t\t\t\t\t\t<div className=\"orientation-sideways w-full font-mono text-sm font-medium uppercase leading-none\">\n\t\t\t\t\t\t\t\t{exercise?.title ? (\n\t\t\t\t\t\t\t\t\t<Link to={getExercisePath(Number(params.exerciseNumber))}>\n\t\t\t\t\t\t\t\t\t\t{exercise.title}\n\t\t\t\t\t\t\t\t\t</Link>\n\t\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t\t{exercise?.title && app?.title ? ' — ' : null}\n\t\t\t\t\t\t\t\t{app?.title ? (\n\t\t\t\t\t\t\t\t\t<Link\n\t\t\t\t\t\t\t\t\t\tto={getExerciseStepPath(\n\t\t\t\t\t\t\t\t\t\t\tNumber(params.exerciseNumber),\n\t\t\t\t\t\t\t\t\t\t\tapp.stepNumber,\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{app.title}\n\t\t\t\t\t\t\t\t\t</Link>\n\t\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t\t{isOnline ? null : (\n\t\t\t\t\t\t<SimpleTooltip content={isMenuOpened ? null : 'You are offline'}>\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t'flex w-full animate-pulse items-center border-t p-4',\n\t\t\t\t\t\t\t\t\tisMenuOpened ? 'justify-start' : 'justify-center',\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\t\tname=\"WifiNoConnection\"\n\t\t\t\t\t\t\t\t\tclassName=\"text-foreground-destructive\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{isMenuOpened ? (\n\t\t\t\t\t\t\t\t\t\t<span className=\"whitespace-nowrap\">You are offline</span>\n\t\t\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t\t</Icon>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</SimpleTooltip>\n\t\t\t\t\t)}\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t'flex w-full items-center justify-start border-t p-4 transition-[height]',\n\t\t\t\t\t\t\tisMenuOpened && users.length > 4 ? 'h-28' : 'h-14',\n\t\t\t\t\t\t)}\n\t\t\t\t\t\tstyle={isMenuOpened ? { width: OPENED_MENU_WIDTH } : {}}\n\t\t\t\t\t>\n\t\t\t\t\t\t<FacePile isMenuOpened={isMenuOpened} />\n\t\t\t\t\t</div>\n\t\t\t\t\t{ENV.EPICSHOP_DEPLOYED ? null : user ? (\n\t\t\t\t\t\t<SimpleTooltip content={isMenuOpened ? null : 'Your account'}>\n\t\t\t\t\t\t\t<Link\n\t\t\t\t\t\t\t\tclassName=\"flex h-14 w-full flex-shrink-0 items-center justify-start space-x-3 border-t px-4 py-4 text-center no-underline hover:underline\"\n\t\t\t\t\t\t\t\tto=\"/account\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{user.imageUrlSmall ? (\n\t\t\t\t\t\t\t\t\t<img\n\t\t\t\t\t\t\t\t\t\talt={user.name ?? user.email}\n\t\t\t\t\t\t\t\t\t\tsrc={user.imageUrlSmall}\n\t\t\t\t\t\t\t\t\t\tclassName=\"h-full rounded-full\"\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t<Icon name=\"User\" className=\"flex-shrink-0\" size=\"lg\" />\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t{isMenuOpened ? (\n\t\t\t\t\t\t\t\t\t<motion.div\n\t\t\t\t\t\t\t\t\t\t// @ts-expect-error framer-motion + latest typescript types has issues\n\t\t\t\t\t\t\t\t\t\tclassName=\"flex items-center whitespace-nowrap\"\n\t\t\t\t\t\t\t\t\t\tinitial={{ opacity: 0 }}\n\t\t\t\t\t\t\t\t\t\tanimate={{ opacity: 1 }}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\tYour Account\n\t\t\t\t\t\t\t\t\t</motion.div>\n\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t<span className=\"sr-only\">Your account</span>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</Link>\n\t\t\t\t\t\t</SimpleTooltip>\n\t\t\t\t\t) : null}\n\t\t\t\t\t{ENV.EPICSHOP_DEPLOYED ? null : user && nextExerciseRoute ? (\n\t\t\t\t\t\t<SimpleTooltip\n\t\t\t\t\t\t\tcontent={isMenuOpened ? null : 'Continue to next lesson'}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Link\n\t\t\t\t\t\t\t\tto={nextExerciseRoute}\n\t\t\t\t\t\t\t\tprefetch=\"intent\"\n\t\t\t\t\t\t\t\tclassName={clsx(\n\t\t\t\t\t\t\t\t\t'flex h-14 w-full items-center space-x-3 border-t px-4 py-4 pl-[18px] no-underline hover:underline',\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\tstate={{ from: 'continue next lesson button' }}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<Icon name=\"FastForward\" className=\"flex-shrink-0\" size=\"md\" />\n\t\t\t\t\t\t\t\t{isMenuOpened ? (\n\t\t\t\t\t\t\t\t\t<motion.div\n\t\t\t\t\t\t\t\t\t\t// @ts-expect-error framer-motion + latest typescript types has issues\n\t\t\t\t\t\t\t\t\t\tclassName=\"flex items-center whitespace-nowrap\"\n\t\t\t\t\t\t\t\t\t\tinitial={{ opacity: 0 }}\n\t\t\t\t\t\t\t\t\t\tanimate={{ opacity: 1 }}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\tContinue to next lesson\n\t\t\t\t\t\t\t\t\t</motion.div>\n\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t<span className=\"sr-only\">Continue to next lesson</span>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</Link>\n\t\t\t\t\t\t</SimpleTooltip>\n\t\t\t\t\t) : null}\n\t\t\t\t\t<div className=\"mb-4 w-full self-start border-t pl-3 pt-[15px]\">\n\t\t\t\t\t\t<ThemeSwitch />\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</motion.div>\n\t\t</nav>\n\t)\n}\n\nfunction NavToggle({\n\ttitle,\n\tisMenuOpened,\n\tsetMenuOpened,\n\tmenuControls,\n}: {\n\ttitle: string\n\tisMenuOpened: boolean\n\tsetMenuOpened: (value: boolean) => void\n\tmenuControls?: AnimationControls\n}) {\n\tconst initialOpenRef = React.useRef(isMenuOpened)\n\tconst menuButtonRef = React.useRef<HTMLButtonElement>(null)\n\tconst path01Variants = {\n\t\topen: { d: 'M3.06061 2.99999L21.0606 21' },\n\t\tclosed: { d: 'M0 9.5L24 9.5' },\n\t}\n\tconst path02Variants = {\n\t\topen: { d: 'M3.00006 21.0607L21 3.06064' },\n\t\tmoving: { d: 'M0 14.5L24 14.5' },\n\t\tclosed: { d: 'M0 14.5L15 14.5' },\n\t}\n\tconst path01Controls = useAnimationControls()\n\tconst path02Controls = useAnimationControls()\n\n\tasync function toggleMenu() {\n\t\tvoid menuControls?.start(isMenuOpened ? 'close' : 'open')\n\t\tsetMenuOpened(!isMenuOpened)\n\t\tif (isMenuOpened) {\n\t\t\tvoid path01Controls.start(path01Variants.closed)\n\t\t\tawait path02Controls.start(path02Variants.moving)\n\t\t\tvoid path02Controls.start(path02Variants.closed)\n\t\t} else {\n\t\t\tawait path02Controls.start(path02Variants.moving)\n\t\t\tvoid path01Controls.start(path01Variants.open)\n\t\t\tvoid path02Controls.start(path02Variants.open)\n\t\t}\n\t}\n\n\tReact.useEffect(() => {\n\t\tif (!isMenuOpened) return\n\n\t\tfunction handleKeyUp(event: KeyboardEvent) {\n\t\t\tif (event.key === 'Escape') {\n\t\t\t\tmenuButtonRef.current?.click()\n\t\t\t}\n\t\t}\n\t\tdocument.addEventListener('keyup', handleKeyUp)\n\t\treturn () => document.removeEventListener('keyup', handleKeyUp)\n\t}, [isMenuOpened])\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t'relative inline-flex h-14 flex-shrink-0 items-center justify-between overflow-hidden border-r sm:w-full sm:border-b sm:border-r-0',\n\t\t\t\t{\n\t\t\t\t\t'w-full': isMenuOpened,\n\t\t\t\t},\n\t\t\t)}\n\t\t>\n\t\t\t<button\n\t\t\t\tref={menuButtonRef}\n\t\t\t\tclassName=\"flex h-14 w-14 items-center justify-center\"\n\t\t\t\taria-label=\"Open Navigation menu\"\n\t\t\t\tonClick={toggleMenu}\n\t\t\t>\n\t\t\t\t<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\">\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\t{...path01Variants[initialOpenRef.current ? 'open' : 'closed']}\n\t\t\t\t\t\tanimate={path01Controls}\n\t\t\t\t\t\ttransition={{ duration: 0.2 }}\n\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\tstrokeWidth={1.5}\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\t{...path02Variants[initialOpenRef.current ? 'open' : 'closed']}\n\t\t\t\t\t\tanimate={path02Controls}\n\t\t\t\t\t\ttransition={{ duration: 0.2 }}\n\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\tstrokeWidth={1.5}\n\t\t\t\t\t/>\n\t\t\t\t</svg>\n\t\t\t</button>\n\t\t\t{isMenuOpened && (\n\t\t\t\t<motion.p\n\t\t\t\t\ttransition={{ delay: 0.2 }}\n\t\t\t\t\tinitial={{ opacity: 0, y: 5 }}\n\t\t\t\t\tanimate={{ opacity: 1, y: 0 }}\n\t\t\t\t\t// @ts-expect-error framer-motion + latest typescript types has issues\n\t\t\t\t\tclassName=\"absolute right-5 whitespace-nowrap font-mono text-sm uppercase\"\n\t\t\t\t>\n\t\t\t\t\t<Link to=\"/\">{title}</Link>\n\t\t\t\t</motion.p>\n\t\t\t)}\n\t\t</div>\n\t)\n}\n"],"names":["stopAnimation","visualElement","value","setVariants","variantLabels","key","variant","setTarget","child","setValues","definition","animationControls","subscribers","controls","transitionOverride","animations","animateVisualElement","useAnimationControls","useConstant","useIsomorphicLayoutEffect","makeMediaQueryStore","mediaQuery","serverSnapshot","getSnapshot","subscribe","callback","mediaQueryList","useSyncExternalStore","composeEventHandlers","originalEventHandler","ourEventHandler","checkForDefaultPrevented","event","setRef","ref","composeRefs","refs","node","hasCleanup","cleanups","cleanup","i","useComposedRefs","React.useCallback","createContext2","rootComponentName","defaultContext","Context","React.createContext","Provider","props","children","context","React.useMemo","jsx","useContext2","consumerName","React.useContext","createContextScope","scopeName","createContextScopeDeps","defaultContexts","createContext3","BaseContext","index","scope","_a","createScope","scopeContexts","contexts","composeContextScopes","scopes","baseScope","scopeHooks","createScope2","overrideScopes","nextScopes","nextScopes2","useScope","currentScope","useLayoutEffect2","React.useLayoutEffect","useReactId","React","count","useId","deterministicId","id","setId","React.useState","useLayoutEffect","reactId","useInsertionEffect","useControllableState","prop","defaultProp","onChange","caller","uncontrolledProp","setUncontrolledProp","onChangeRef","useUncontrolledState","isControlled","isControlledRef","React.useRef","React.useEffect","wasControlled","setValue","nextValue","value2","isFunction","prevValueRef","createSlot","ownerName","SlotClone","createSlotClone","Slot2","React.forwardRef","forwardedRef","slotProps","childrenArray","React.Children","slottable","isSlottable","newElement","newChildren","React.isValidElement","React.cloneElement","childrenRef","getElementRef","props2","mergeProps","React.Fragment","SLOTTABLE_IDENTIFIER","childProps","overrideProps","propName","slotPropValue","childPropValue","args","result","element","getter","mayWarn","_b","NODES","Primitive","primitive","Slot","Node","asChild","primitiveProps","Comp","dispatchDiscreteCustomEvent","target","ReactDOM.flushSync","useCallbackRef","callbackRef","useEscapeKeydown","onEscapeKeyDownProp","ownerDocument","onEscapeKeyDown","handleKeyDown","DISMISSABLE_LAYER_NAME","CONTEXT_UPDATE","POINTER_DOWN_OUTSIDE","FOCUS_OUTSIDE","originalBodyPointerEvents","DismissableLayerContext","DismissableLayer","disableOutsidePointerEvents","onPointerDownOutside","onFocusOutside","onInteractOutside","onDismiss","layerProps","setNode","force","composedRefs","node2","layers","highestLayerWithOutsidePointerEventsDisabled","highestLayerWithOutsidePointerEventsDisabledIndex","isBodyPointerEventsDisabled","isPointerEventsEnabled","pointerDownOutside","usePointerDownOutside","isPointerDownOnBranch","branch","focusOutside","useFocusOutside","dispatchUpdate","handleUpdate","BRANCH_NAME","DismissableLayerBranch","handlePointerDownOutside","isPointerInsideReactTreeRef","handleClickRef","handlePointerDown","handleAndDispatchPointerDownOutsideEvent2","handleAndDispatchCustomEvent","eventDetail","timerId","handleFocusOutside","isFocusInsideReactTreeRef","handleFocus","name","handler","detail","discrete","AUTOFOCUS_ON_MOUNT","AUTOFOCUS_ON_UNMOUNT","EVENT_OPTIONS","FOCUS_SCOPE_NAME","FocusScope","loop","trapped","onMountAutoFocusProp","onUnmountAutoFocusProp","scopeProps","container","setContainer","onMountAutoFocus","onUnmountAutoFocus","lastFocusedElementRef","focusScope","handleFocusIn2","focus","handleFocusOut2","relatedTarget","handleMutations2","mutations","mutation","mutationObserver","focusScopesStack","previouslyFocusedElement","mountEvent","focusFirst","removeLinks","getTabbableCandidates","unmountEvent","isTabKey","focusedElement","container2","first","last","getTabbableEdges","candidates","select","candidate","findVisible","nodes","walker","isHiddenInput","elements","isHidden","upTo","isSelectableInput","createFocusScopesStack","stack","activeFocusScope","arrayRemove","array","item","updatedArray","items","PORTAL_NAME","Portal","containerProp","portalProps","mounted","setMounted","ReactDOM","useStateMachine","initialState","machine","React.useReducer","state","Presence","present","presence","usePresence","React2.Children","React2.cloneElement","React2.useState","stylesRef","React2.useRef","prevPresentRef","prevAnimationNameRef","send","React2.useEffect","currentAnimationName","getAnimationName","styles","wasPresent","prevAnimationName","timeoutId","ownerWindow","handleAnimationEnd","isCurrentAnimation","currentFillMode","handleAnimationStart","React2.useCallback","useFocusGuards","edgeGuards","createFocusGuard","effectCar","createSidecarMedium","nothing","RemoveScroll","parentRef","callbacks","setCallbacks","forwardProps","className","removeScrollBar","enabled","shards","sideCar","noRelative","noIsolation","inert","allowPinchZoom","Container","gapMode","rest","__rest","SideCar","containerRef","useMergeRefs","containerProps","__assign","React.createElement","fullWidthClassName","zeroRightClassName","passiveSupported","options","nonPassive","alwaysContainsScroll","elementCanBeScrolled","overflow","elementCouldBeVScrolled","elementCouldBeHScrolled","locationCouldBeScrolled","axis","current","isScrollable","elementCouldBeScrolled","getScrollVariables","scrollHeight","clientHeight","getVScrollVariables","scrollTop","getHScrollVariables","scrollLeft","scrollWidth","clientWidth","getDirectionFactor","direction","handleScroll","endTarget","sourceDelta","noOverscroll","directionFactor","delta","targetInLock","shouldCancelScroll","isDeltaPositive","availableScroll","availableScrollTop","position","scroll_1","capacity","elementScroll","parent_1","getTouchXY","getDeltaXY","extractRef","deltaCompare","x","y","generateStyle","idCounter","lockStack","RemoveScrollSideCar","shouldPreventQueue","touchStartRef","activeAxis","Style","styleSingleton","lastProps","allow_1","__spreadArray","el","shouldCancelEvent","parent","touch","touchStart","deltaX","deltaY","currentAxis","moveDirection","canBeScrolledInMainDirection","cancelingAxis","shouldPrevent","_event","sourceEvent","e","shardNodes","shouldStop","shouldCancel","should","getOutermostShadowParent","scrollTouchStart","scrollWheel","scrollTouchMove","inst","RemoveScrollBar","shadowParent","exportSidecar","ReactRemoveScroll","DIALOG_NAME","createDialogContext","createDialogScope","DialogProvider","useDialogContext","Dialog","__scopeDialog","openProp","defaultOpen","onOpenChange","modal","triggerRef","contentRef","open","setOpen","prevOpen","TRIGGER_NAME","DialogTrigger","triggerProps","composedTriggerRef","getState","PortalProvider","usePortalContext","DialogPortal","forceMount","PortalPrimitive","OVERLAY_NAME","DialogOverlay","portalContext","overlayProps","DialogOverlayImpl","CONTENT_NAME","DialogContent","contentProps","DialogContentModal","DialogContentNonModal","content","hideOthers","DialogContentImpl","originalEvent","ctrlLeftClick","hasInteractedOutsideRef","hasPointerDownOutsideRef","trapFocus","onOpenAutoFocus","onCloseAutoFocus","jsxs","Fragment","TitleWarning","DescriptionWarning","TITLE_NAME","DialogTitle","titleProps","DESCRIPTION_NAME","DialogDescription","descriptionProps","CLOSE_NAME","DialogClose","closeProps","TITLE_WARNING_NAME","WarningProvider","useWarningContext","createContext","titleId","titleWarningContext","MESSAGE","DESCRIPTION_WARNING_NAME","descriptionId","describedById","Root","Trigger","Overlay","Content","Title","Description","Close","DialogPrimitive.Root","DialogPrimitive.Trigger","DialogPrimitive.Portal","DialogPrimitive.Overlay","cn","DialogPrimitive.Content","DialogPrimitive.Close","Icon","DialogHeader","DialogPrimitive.Title","DialogPrimitive.Description","opacities","shadows","getScoreClassNames","score","opacityNumber","Math","round","length","shadowNumber","FacePile","isMenuOpened","loggedInUser","useOptionalUser","users","product","displayNameShort","useWorkshopConfig","limit","numberOverLimit","shouldShowNumberOverLimit","tiffany","Link","rel","to","alt","src","overLimitLabel","TooltipProvider","slice","map","user","scoreClassNames","locationLabel","getLocationLabel","location","imageUrl","imageUrlSmall","avatarUrl","hasAccess","local","origin","includes","doingLabel","Tooltip","TooltipTrigger","tabIndex","TooltipContent","line1","line2","useIsWide","App","data","useLoaderData","isWide","isHydrated","useHydrated","setMenuOpenedState","useRevalidationWS","watchPaths","setMenuOpened","document","cookie","toString","NoUserBanner","MobileNavigation","onMenuOpenChange","Navigation","Outlet","exercise","exercisePortion","exerciseNumber","stepNumber","filter","Boolean","s","padStart","join","type","workshopTitle","host","displayName","userHasAccess","useUserHasAccess","details","ENV","EPICSHOP_DEPLOYED","EPICSHOP_GITHUB_REPO","href","Logo","size","style","itemVariants","hidden","opacity","visible","NavigationExerciseListItem","progressClassName","useExerciseProgressClassName","motion","li","variants","NavigationExerciseStepListItem","progressItemSearch","useProgressItemClassName","nextExerciseRoute","useNextExerciseRoute","params","useParams","isOnline","useIsOnline","listVariants","transition","duration","when","staggerChildren","NavToggle","title","div","initial","animate","ul","NavLink","prefetch","isActive","clsx","exercises","steps","Number","showPlayground","playground","getExercisePath","getExerciseStepPath","problem","solution","appName","SimpleTooltip","email","from","ThemeSwitch","OPENED_MENU_WIDTH","find","app","solutions","problems","p","menuControls","menuVariants","close","width","initialOpenRef","menuButtonRef","path01Variants","d","closed","path02Variants","moving","path01Controls","path02Controls","toggleMenu","start","handleKeyUp","click","addEventListener","removeEventListener","onClick","height","viewBox","path","stroke","strokeWidth","delay"],"mappings":"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","x_google_ignoreList":[0,1,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25]}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{r as u,j as i,R as g}from"./index-CGzylDPY.js";import{u as k,f as S,g as q,h as L,i as Y,j as w,k as J,l as xe,m as ge}from"./index-CSGHuBiw.js";import{c as U,I}from"./misc-CQmANiHr.js";function ve(e,n){return u.useReducer((t,o)=>n[t][o]??t,e)}var Q=e=>{const{present:n,children:t}=e,o=Ae(n),r=typeof t=="function"?t({present:o.isPresent}):u.Children.only(t),a=k(o.ref,Ce(r));return typeof t=="function"||o.isPresent?u.cloneElement(r,{ref:a}):null};Q.displayName="Presence";function Ae(e){const[n,t]=u.useState(),o=u.useRef({}),r=u.useRef(e),a=u.useRef("none"),c=e?"mounted":"unmounted",[l,d]=ve(c,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return u.useEffect(()=>{const s=j(o.current);a.current=l==="mounted"?s:"none"},[l]),S(()=>{const s=o.current,f=r.current;if(f!==e){const v=a.current,x=j(s);e?d("MOUNT"):x==="none"||(s==null?void 0:s.display)==="none"?d("UNMOUNT"):d(f&&v!==x?"ANIMATION_OUT":"UNMOUNT"),r.current=e}},[e,d]),S(()=>{if(n){let s;const f=n.ownerDocument.defaultView??window,m=x=>{const A=j(o.current).includes(x.animationName);if(x.target===n&&A&&(d("ANIMATION_END"),!r.current)){const C=n.style.animationFillMode;n.style.animationFillMode="forwards",s=f.setTimeout(()=>{n.style.animationFillMode==="forwards"&&(n.style.animationFillMode=C)})}},v=x=>{x.target===n&&(a.current=j(o.current))};return n.addEventListener("animationstart",v),n.addEventListener("animationcancel",m),n.addEventListener("animationend",m),()=>{f.clearTimeout(s),n.removeEventListener("animationstart",v),n.removeEventListener("animationcancel",m),n.removeEventListener("animationend",m)}}else d("ANIMATION_END")},[n,d]),{isPresent:["mounted","unmountSuspended"].includes(l),ref:u.useCallback(s=>{s&&(o.current=getComputedStyle(s)),t(s)},[])}}function j(e){return(e==null?void 0:e.animationName)||"none"}function Ce(e){var o,r;let n=(o=Object.getOwnPropertyDescriptor(e.props,"ref"))==null?void 0:o.get,t=n&&"isReactWarning"in n&&n.isReactWarning;return t?e.ref:(n=(r=Object.getOwnPropertyDescriptor(e,"ref"))==null?void 0:r.get,t=n&&"isReactWarning"in n&&n.isReactWarning,t?e.props.ref:e.props.ref||e.ref)}var V="Collapsible",[be,X]=q(V),[he,F]=be(V),Z=u.forwardRef((e,n)=>{const{__scopeCollapsible:t,open:o,defaultOpen:r,disabled:a,onOpenChange:c,...l}=e,[d=!1,s]=L({prop:o,defaultProp:r,onChange:c});return i.jsx(he,{scope:t,disabled:a,contentId:Y(),open:d,onOpenToggle:u.useCallback(()=>s(f=>!f),[s]),children:i.jsx(w.div,{"data-state":$(d),"data-disabled":a?"":void 0,...l,ref:n})})});Z.displayName=V;var ee="CollapsibleTrigger",ne=u.forwardRef((e,n)=>{const{__scopeCollapsible:t,...o}=e,r=F(ee,t);return i.jsx(w.button,{type:"button","aria-controls":r.contentId,"aria-expanded":r.open||!1,"data-state":$(r.open),"data-disabled":r.disabled?"":void 0,disabled:r.disabled,...o,ref:n,onClick:J(e.onClick,r.onOpenToggle)})});ne.displayName=ee;var H="CollapsibleContent",te=u.forwardRef((e,n)=>{const{forceMount:t,...o}=e,r=F(H,e.__scopeCollapsible);return i.jsx(Q,{present:t||r.open,children:({present:a})=>i.jsx(Ne,{...o,ref:n,present:a})})});te.displayName=H;var Ne=u.forwardRef((e,n)=>{const{__scopeCollapsible:t,present:o,children:r,...a}=e,c=F(H,t),[l,d]=u.useState(o),s=u.useRef(null),f=k(n,s),m=u.useRef(0),v=m.current,x=u.useRef(0),N=x.current,A=c.open||l,C=u.useRef(A),h=u.useRef();return u.useEffect(()=>{const p=requestAnimationFrame(()=>C.current=!1);return()=>cancelAnimationFrame(p)},[]),S(()=>{const p=s.current;if(p){h.current=h.current||{transitionDuration:p.style.transitionDuration,animationName:p.style.animationName},p.style.transitionDuration="0s",p.style.animationName="none";const R=p.getBoundingClientRect();m.current=R.height,x.current=R.width,C.current||(p.style.transitionDuration=h.current.transitionDuration,p.style.animationName=h.current.animationName),d(o)}},[c.open,o]),i.jsx(w.div,{"data-state":$(c.open),"data-disabled":c.disabled?"":void 0,id:c.contentId,hidden:!A,...a,ref:f,style:{"--radix-collapsible-content-height":v?`${v}px`:void 0,"--radix-collapsible-content-width":N?`${N}px`:void 0,...e.style},children:A&&r})});function $(e){return e?"open":"closed"}var Re=Z,Ie=ne,we=te,b="Accordion",je=["Home","End","ArrowDown","ArrowUp","ArrowLeft","ArrowRight"],[W,Pe,_e]=xe(b),[_,Ge]=q(b,[_e,X]),G=X(),oe=g.forwardRef((e,n)=>{const{type:t,...o}=e,r=o,a=o;return i.jsx(W.Provider,{scope:e.__scopeAccordion,children:t==="multiple"?i.jsx(Oe,{...a,ref:n}):i.jsx(Me,{...r,ref:n})})});oe.displayName=b;var[re,ye]=_(b),[ae,Ee]=_(b,{collapsible:!1}),Me=g.forwardRef((e,n)=>{const{value:t,defaultValue:o,onValueChange:r=()=>{},collapsible:a=!1,...c}=e,[l,d]=L({prop:t,defaultProp:o,onChange:r});return i.jsx(re,{scope:e.__scopeAccordion,value:l?[l]:[],onItemOpen:d,onItemClose:g.useCallback(()=>a&&d(""),[a,d]),children:i.jsx(ae,{scope:e.__scopeAccordion,collapsible:a,children:i.jsx(ie,{...c,ref:n})})})}),Oe=g.forwardRef((e,n)=>{const{value:t,defaultValue:o,onValueChange:r=()=>{},...a}=e,[c=[],l]=L({prop:t,defaultProp:o,onChange:r}),d=g.useCallback(f=>l((m=[])=>[...m,f]),[l]),s=g.useCallback(f=>l((m=[])=>m.filter(v=>v!==f)),[l]);return i.jsx(re,{scope:e.__scopeAccordion,value:c,onItemOpen:d,onItemClose:s,children:i.jsx(ae,{scope:e.__scopeAccordion,collapsible:!0,children:i.jsx(ie,{...a,ref:n})})})}),[Te,y]=_(b),ie=g.forwardRef((e,n)=>{const{__scopeAccordion:t,disabled:o,dir:r,orientation:a="vertical",...c}=e,l=g.useRef(null),d=k(l,n),s=Pe(t),m=ge(r)==="ltr",v=J(e.onKeyDown,x=>{var z;if(!je.includes(x.key))return;const N=x.target,A=s().filter(T=>{var B;return!((B=T.ref.current)!=null&&B.disabled)}),C=A.findIndex(T=>T.ref.current===N),h=A.length;if(C===-1)return;x.preventDefault();let p=C;const R=0,E=h-1,M=()=>{p=C+1,p>E&&(p=R)},O=()=>{p=C-1,p<R&&(p=E)};switch(x.key){case"Home":p=R;break;case"End":p=E;break;case"ArrowRight":a==="horizontal"&&(m?M():O());break;case"ArrowDown":a==="vertical"&&M();break;case"ArrowLeft":a==="horizontal"&&(m?O():M());break;case"ArrowUp":a==="vertical"&&O();break}const me=p%h;(z=A[me].ref.current)==null||z.focus()});return i.jsx(Te,{scope:t,disabled:o,direction:r,orientation:a,children:i.jsx(W.Slot,{scope:t,children:i.jsx(w.div,{...c,"data-orientation":a,ref:d,onKeyDown:o?void 0:v})})})}),P="AccordionItem",[Se,K]=_(P),se=g.forwardRef((e,n)=>{const{__scopeAccordion:t,value:o,...r}=e,a=y(P,t),c=ye(P,t),l=G(t),d=Y(),s=o&&c.value.includes(o)||!1,f=a.disabled||e.disabled;return i.jsx(Se,{scope:t,open:s,disabled:f,triggerId:d,children:i.jsx(Re,{"data-orientation":a.orientation,"data-state":fe(s),...l,...r,ref:n,disabled:f,open:s,onOpenChange:m=>{m?c.onItemOpen(o):c.onItemClose(o)}})})});se.displayName=P;var ce="AccordionHeader",le=g.forwardRef((e,n)=>{const{__scopeAccordion:t,...o}=e,r=y(b,t),a=K(ce,t);return i.jsx(w.h3,{"data-orientation":r.orientation,"data-state":fe(a.open),"data-disabled":a.disabled?"":void 0,...o,ref:n})});le.displayName=ce;var D="AccordionTrigger",de=g.forwardRef((e,n)=>{const{__scopeAccordion:t,...o}=e,r=y(b,t),a=K(D,t),c=Ee(D,t),l=G(t);return i.jsx(W.ItemSlot,{scope:t,children:i.jsx(Ie,{"aria-disabled":a.open&&!c.collapsible||void 0,"data-orientation":r.orientation,id:a.triggerId,...l,...o,ref:n})})});de.displayName=D;var ue="AccordionContent",pe=g.forwardRef((e,n)=>{const{__scopeAccordion:t,...o}=e,r=y(b,t),a=K(ue,t),c=G(t);return i.jsx(we,{role:"region","aria-labelledby":a.triggerId,"data-orientation":r.orientation,...c,...o,ref:n,style:{"--radix-accordion-content-height":"var(--radix-collapsible-content-height)","--radix-accordion-content-width":"var(--radix-collapsible-content-width)",...e.style}})});pe.displayName=ue;function fe(e){return e?"open":"closed"}var Ke=oe,De=se,ke=le,Le=de,Ue=pe;const ze=({title:e,children:n,variant:t,icon:o,forceMount:r=!1})=>{const a=()=>{switch(t){case"changed":return i.jsx(I,{name:"Modified","aria-label":"Modified",className:"text-[#fb923c]"});case"renamed":return i.jsx(I,{name:"Renamed","aria-label":"Renamed",className:"text-[#fb923c]"});case"added":return i.jsx(I,{name:"Added","aria-label":"Added",className:"text-[#10b981]"});case"deleted":return i.jsx(I,{name:"Deleted","aria-label":"Deleted",className:"text-[#ef4444]"});default:return i.jsx(I,{name:"Modified","aria-label":"Modified",className:"text-[#fb923c]"})}},c=()=>{switch(t){case"changed":return"modified";default:return t}},l=e.replace(/\\\\/g,"\\");return i.jsxs(De,{value:e,children:[i.jsxs(Ve,{variant:c(),children:[o||a()," ",l]}),i.jsx(Fe,{forceMount:r,className:U("prose max-w-none whitespace-pre-wrap dark:prose-invert prose-pre:m-0 prose-pre:mb-1 prose-pre:rounded-none",{"radix-state-closed:hidden":r}),children:n})]})},Ve=u.forwardRef(({children:e,className:n,variant:t,...o},r)=>i.jsx(ke,{className:"flex",asChild:!0,children:i.jsxs(Le,{className:U("group flex w-full items-center justify-between border-b p-4 pr-3 font-mono text-sm font-medium leading-none hover:bg-foreground/20",n),...o,ref:r,children:[i.jsx("div",{className:"flex items-center gap-1.5",children:e}),i.jsxs("div",{className:"flex items-center gap-2",children:[i.jsx("span",{className:"font-mono text-xs font-normal uppercase text-muted-foreground",children:t}),i.jsx(I,{name:"TriangleDownSmall",className:"transition group-radix-state-open:rotate-180","aria-hidden":!0})]})]})})),Fe=u.forwardRef(({children:e,className:n,...t},o)=>i.jsx(Ue,{className:U("",n),...t,ref:o,children:i.jsx("div",{children:e})}));export{ze as A,Q as P,Ke as R};
|
|
2
|
-
//# sourceMappingURL=accordion-BjQ-5Z44.js.map
|