unspaghettit 0.2.0 → 0.4.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/README.md +56 -18
- package/build/client/_app/immutable/assets/0.DCOD5ne_.css +1 -0
- package/build/client/_app/immutable/assets/0.DCOD5ne_.css.br +0 -0
- package/build/client/_app/immutable/assets/0.DCOD5ne_.css.gz +0 -0
- package/build/client/_app/immutable/assets/12.nv0I59TU.css.gz +0 -0
- package/build/client/_app/immutable/assets/3.B3akUL9A.css.gz +0 -0
- package/build/client/_app/immutable/assets/BehaviorGraph.Bk0xQRZk.css +1 -0
- package/build/client/_app/immutable/assets/BehaviorGraph.Bk0xQRZk.css.br +0 -0
- package/build/client/_app/immutable/assets/BehaviorGraph.Bk0xQRZk.css.gz +0 -0
- package/build/client/_app/immutable/chunks/B3vnQs252.js +1 -0
- package/build/client/_app/immutable/chunks/B3vnQs252.js.br +0 -0
- package/build/client/_app/immutable/chunks/B3vnQs252.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{CxyLMlpt2.js → BANF9BhQ2.js} +1 -1
- package/build/client/_app/immutable/chunks/BANF9BhQ2.js.br +0 -0
- package/build/client/_app/immutable/chunks/BANF9BhQ2.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BJdTO_n6.js +1 -0
- package/build/client/_app/immutable/chunks/BJdTO_n6.js.br +0 -0
- package/build/client/_app/immutable/chunks/BJdTO_n6.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BPl9BITm.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BQ9GodWX2.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Bcyn5YUg.js +4 -0
- package/build/client/_app/immutable/chunks/Bcyn5YUg.js.br +0 -0
- package/build/client/_app/immutable/chunks/Bcyn5YUg.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Bfc9rQXP.js +1 -0
- package/build/client/_app/immutable/chunks/Bfc9rQXP.js.br +0 -0
- package/build/client/_app/immutable/chunks/Bfc9rQXP.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{BfMYiIUi.js → BjxqhpPG.js} +1 -1
- package/build/client/_app/immutable/chunks/BjxqhpPG.js.br +0 -0
- package/build/client/_app/immutable/chunks/BjxqhpPG.js.gz +0 -0
- package/build/client/_app/immutable/chunks/ByaoVvNB.js +1 -0
- package/build/client/_app/immutable/chunks/ByaoVvNB.js.br +0 -0
- package/build/client/_app/immutable/chunks/ByaoVvNB.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BzLd0mTH.js.gz +0 -0
- package/build/client/_app/immutable/chunks/C8b3IMj8.js +1 -0
- package/build/client/_app/immutable/chunks/C8b3IMj8.js.br +0 -0
- package/build/client/_app/immutable/chunks/C8b3IMj8.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CXvvf4uQ.js +1 -0
- package/build/client/_app/immutable/chunks/CXvvf4uQ.js.br +0 -0
- package/build/client/_app/immutable/chunks/CXvvf4uQ.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Cl7Z3e6-.js.gz +0 -0
- package/build/client/_app/immutable/chunks/ClC4qR7W2.js +2 -0
- package/build/client/_app/immutable/chunks/ClC4qR7W2.js.br +0 -0
- package/build/client/_app/immutable/chunks/ClC4qR7W2.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CuGlh1c2.js +1 -0
- package/build/client/_app/immutable/chunks/CuGlh1c2.js.br +0 -0
- package/build/client/_app/immutable/chunks/CuGlh1c2.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CwzIdrQR.js +1 -0
- package/build/client/_app/immutable/chunks/CwzIdrQR.js.br +0 -0
- package/build/client/_app/immutable/chunks/CwzIdrQR.js.gz +0 -0
- package/build/client/_app/immutable/chunks/D5speDV82.js +908 -0
- package/build/client/_app/immutable/chunks/D5speDV82.js.br +0 -0
- package/build/client/_app/immutable/chunks/D5speDV82.js.gz +0 -0
- package/build/client/_app/immutable/chunks/D64sGJRN.js +1 -0
- package/build/client/_app/immutable/chunks/D64sGJRN.js.br +0 -0
- package/build/client/_app/immutable/chunks/D64sGJRN.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DNaA4QRO2.js +1 -0
- package/build/client/_app/immutable/chunks/DNaA4QRO2.js.br +0 -0
- package/build/client/_app/immutable/chunks/DNaA4QRO2.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Da59TXPe.js +1 -0
- package/build/client/_app/immutable/chunks/Da59TXPe.js.br +2 -0
- package/build/client/_app/immutable/chunks/Da59TXPe.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DhTiE3j02.js +2 -0
- package/build/client/_app/immutable/chunks/DhTiE3j02.js.br +0 -0
- package/build/client/_app/immutable/chunks/DhTiE3j02.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Dhqg7r_2.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DmyaDy4d2.js +1 -0
- package/build/client/_app/immutable/chunks/DmyaDy4d2.js.br +0 -0
- package/build/client/_app/immutable/chunks/DmyaDy4d2.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DryaQyjN2.js +1 -0
- package/build/client/_app/immutable/chunks/DryaQyjN2.js.br +0 -0
- package/build/client/_app/immutable/chunks/DryaQyjN2.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DtK8qK5Q2.js +1 -0
- package/build/client/_app/immutable/chunks/DtK8qK5Q2.js.br +0 -0
- package/build/client/_app/immutable/chunks/DtK8qK5Q2.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DtblIi6X2.js +1 -0
- package/build/client/_app/immutable/chunks/DtblIi6X2.js.br +1 -0
- package/build/client/_app/immutable/chunks/DtblIi6X2.js.gz +0 -0
- package/build/client/_app/immutable/chunks/UkzDDeO42.js +1 -0
- package/build/client/_app/immutable/chunks/UkzDDeO42.js.br +0 -0
- package/build/client/_app/immutable/chunks/UkzDDeO42.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Vu8LzrwP2.js +1 -0
- package/build/client/_app/immutable/chunks/Vu8LzrwP2.js.br +0 -0
- package/build/client/_app/immutable/chunks/Vu8LzrwP2.js.gz +0 -0
- package/build/client/_app/immutable/chunks/_b612aVb.js +1 -0
- package/build/client/_app/immutable/chunks/_b612aVb.js.br +0 -0
- package/build/client/_app/immutable/chunks/_b612aVb.js.gz +0 -0
- package/build/client/_app/immutable/chunks/aNMRV4sP2.js.gz +0 -0
- package/build/client/_app/immutable/chunks/cMamJTsF.js.gz +0 -0
- package/build/client/_app/immutable/chunks/ib21i2T_.js.gz +0 -0
- package/build/client/_app/immutable/chunks/kNaey6uv.js.gz +0 -0
- package/build/client/_app/immutable/chunks/oVMDLirx.js +1 -0
- package/build/client/_app/immutable/chunks/oVMDLirx.js.br +0 -0
- package/build/client/_app/immutable/chunks/oVMDLirx.js.gz +0 -0
- package/build/client/_app/immutable/chunks/olAc024e.js +1 -0
- package/build/client/_app/immutable/chunks/olAc024e.js.br +0 -0
- package/build/client/_app/immutable/chunks/olAc024e.js.gz +0 -0
- package/build/client/_app/immutable/chunks/suTxxv1t.js.gz +0 -0
- package/build/client/_app/immutable/chunks/wXIHzLMQ2.js +1 -0
- package/build/client/_app/immutable/chunks/wXIHzLMQ2.js.br +0 -0
- package/build/client/_app/immutable/chunks/wXIHzLMQ2.js.gz +0 -0
- package/build/client/_app/immutable/chunks/wrqalH0a.js +1 -0
- package/build/client/_app/immutable/chunks/wrqalH0a.js.br +0 -0
- package/build/client/_app/immutable/chunks/wrqalH0a.js.gz +0 -0
- package/build/client/_app/immutable/chunks/x60Tn5kT.js +1 -0
- package/build/client/_app/immutable/chunks/x60Tn5kT.js.br +0 -0
- package/build/client/_app/immutable/chunks/x60Tn5kT.js.gz +0 -0
- package/build/client/_app/immutable/chunks/xihTtKlq.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{BOrLmFwJ.js → yShDxCNj.js} +1 -1
- package/build/client/_app/immutable/chunks/yShDxCNj.js.br +2 -0
- package/build/client/_app/immutable/chunks/yShDxCNj.js.gz +0 -0
- package/build/client/_app/immutable/entry/app.Etd-exTb.js +2 -0
- package/build/client/_app/immutable/entry/app.Etd-exTb.js.br +0 -0
- package/build/client/_app/immutable/entry/app.Etd-exTb.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.DY2B3u4g.js +1 -0
- package/build/client/_app/immutable/entry/start.DY2B3u4g.js.br +0 -0
- package/build/client/_app/immutable/entry/start.DY2B3u4g.js.gz +0 -0
- package/build/client/_app/immutable/nodes/0.tKfYV3__.js +8 -0
- package/build/client/_app/immutable/nodes/0.tKfYV3__.js.br +0 -0
- package/build/client/_app/immutable/nodes/0.tKfYV3__.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{1.KYdA6ppX.js → 1.CER5ICKt.js} +1 -1
- package/build/client/_app/immutable/nodes/1.CER5ICKt.js.br +1 -0
- package/build/client/_app/immutable/nodes/1.CER5ICKt.js.gz +0 -0
- package/build/client/_app/immutable/nodes/10.rT7cD8kX.js +1 -0
- package/build/client/_app/immutable/nodes/10.rT7cD8kX.js.br +0 -0
- package/build/client/_app/immutable/nodes/10.rT7cD8kX.js.gz +0 -0
- package/build/client/_app/immutable/nodes/11.BAnV_Y5Y.js +2 -0
- package/build/client/_app/immutable/nodes/11.BAnV_Y5Y.js.br +0 -0
- package/build/client/_app/immutable/nodes/11.BAnV_Y5Y.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{9.CMW6a2Lg.js → 12.DCTRFMqo.js} +4 -3
- package/build/client/_app/immutable/nodes/12.DCTRFMqo.js.br +0 -0
- package/build/client/_app/immutable/nodes/12.DCTRFMqo.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{2.DBz20KgG.js → 2.CF488WWF.js} +1 -1
- package/build/client/_app/immutable/nodes/2.CF488WWF.js.br +0 -0
- package/build/client/_app/immutable/nodes/2.CF488WWF.js.gz +0 -0
- package/build/client/_app/immutable/nodes/3.CP7CPPVH.js +1 -0
- package/build/client/_app/immutable/nodes/3.CP7CPPVH.js.br +0 -0
- package/build/client/_app/immutable/nodes/3.CP7CPPVH.js.gz +0 -0
- package/build/client/_app/immutable/nodes/4.D1bxCSiM.js +3 -0
- package/build/client/_app/immutable/nodes/4.D1bxCSiM.js.br +0 -0
- package/build/client/_app/immutable/nodes/4.D1bxCSiM.js.gz +0 -0
- package/build/client/_app/immutable/nodes/5.D6jZgh9y.js +48 -0
- package/build/client/_app/immutable/nodes/5.D6jZgh9y.js.br +0 -0
- package/build/client/_app/immutable/nodes/5.D6jZgh9y.js.gz +0 -0
- package/build/client/_app/immutable/nodes/6.BrBFUA0s.js +1 -0
- package/build/client/_app/immutable/nodes/6.BrBFUA0s.js.br +0 -0
- package/build/client/_app/immutable/nodes/6.BrBFUA0s.js.gz +0 -0
- package/build/client/_app/immutable/nodes/7.pajo8MfM.js +3 -0
- package/build/client/_app/immutable/nodes/7.pajo8MfM.js.br +0 -0
- package/build/client/_app/immutable/nodes/7.pajo8MfM.js.gz +0 -0
- package/build/client/_app/immutable/nodes/8.Cc80_Igi.js +5 -0
- package/build/client/_app/immutable/nodes/8.Cc80_Igi.js.br +0 -0
- package/build/client/_app/immutable/nodes/8.Cc80_Igi.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{7.CemgNJfw.js → 9.D72NaL3l.js} +1 -1
- package/build/client/_app/immutable/nodes/9.D72NaL3l.js.br +1 -0
- package/build/client/_app/immutable/nodes/9.D72NaL3l.js.gz +0 -0
- package/build/client/_app/version.json +1 -1
- package/build/client/_app/version.json.br +0 -0
- package/build/client/_app/version.json.gz +0 -0
- package/build/client/lyriks_logo.svg +148 -0
- package/build/client/lyriks_logo.svg.br +0 -0
- package/build/client/lyriks_logo.svg.gz +0 -0
- package/build/server/chunks/0-8YZc572z.js +15 -0
- package/build/server/chunks/0-8YZc572z.js.map +1 -0
- package/build/server/chunks/1-DxkfSJLu.js +9 -0
- package/build/server/chunks/{1-DPpKAKXV.js.map → 1-DxkfSJLu.js.map} +1 -1
- package/build/server/chunks/10-DkObdGtU.js +9 -0
- package/build/server/chunks/10-DkObdGtU.js.map +1 -0
- package/build/server/chunks/11-DL94HxpZ.js +9 -0
- package/build/server/chunks/11-DL94HxpZ.js.map +1 -0
- package/build/server/chunks/12-CI74sCkt.js +9 -0
- package/build/server/chunks/12-CI74sCkt.js.map +1 -0
- package/build/server/chunks/2-qhWwQ4eL.js +9 -0
- package/build/server/chunks/2-qhWwQ4eL.js.map +1 -0
- package/build/server/chunks/3-CzoZtSTp.js +16 -0
- package/build/server/chunks/3-CzoZtSTp.js.map +1 -0
- package/build/server/chunks/4-CDa9DBsh.js +16 -0
- package/build/server/chunks/4-CDa9DBsh.js.map +1 -0
- package/build/server/chunks/5-qD2xxOrq.js +9 -0
- package/build/server/chunks/5-qD2xxOrq.js.map +1 -0
- package/build/server/chunks/6-B4mWzvDn.js +9 -0
- package/build/server/chunks/6-B4mWzvDn.js.map +1 -0
- package/build/server/chunks/7-zExv-fTN.js +9 -0
- package/build/server/chunks/7-zExv-fTN.js.map +1 -0
- package/build/server/chunks/8-BVrGdQg4.js +9 -0
- package/build/server/chunks/{6-QQ7r8Rd5.js.map → 8-BVrGdQg4.js.map} +1 -1
- package/build/server/chunks/9-BnZLRMYA.js +9 -0
- package/build/server/chunks/9-BnZLRMYA.js.map +1 -0
- package/build/server/chunks/BehaviorGraph-C-9z37Sm.js +788 -0
- package/build/server/chunks/BehaviorGraph-C-9z37Sm.js.map +1 -0
- package/build/server/chunks/Clock-BfMWQpmJ.js +5 -0
- package/build/server/chunks/Clock-BfMWQpmJ.js.map +1 -0
- package/build/server/chunks/DeleteDomain-BvHEgAyp.js +24 -0
- package/build/server/chunks/DeleteDomain-BvHEgAyp.js.map +1 -0
- package/build/server/chunks/{FeatureValidator-B8qEjAUW.js → DeleteFeature-DnK8sBJI.js} +142 -77
- package/build/server/chunks/DeleteFeature-DnK8sBJI.js.map +1 -0
- package/build/server/chunks/DeleteProject-BXZcehHZ.js +41 -0
- package/build/server/chunks/DeleteProject-BXZcehHZ.js.map +1 -0
- package/build/server/chunks/Effect-BJtLR-6l.js +46 -0
- package/build/server/chunks/Effect-BJtLR-6l.js.map +1 -0
- package/build/server/chunks/{FeatureCard-BQOY6gJQ.js → FeatureCard-Bb50FEfp.js} +4 -4
- package/build/server/chunks/{FeatureCard-BQOY6gJQ.js.map → FeatureCard-Bb50FEfp.js.map} +1 -1
- package/build/server/chunks/{FeatureJson-Bv-qiOSf.js → FeatureJson-DYvMEAub.js} +2 -2
- package/build/server/chunks/{FeatureJson-Bv-qiOSf.js.map → FeatureJson-DYvMEAub.js.map} +1 -1
- package/build/server/chunks/{FeatureTransforms-UWDHmWEg.js → FeatureTransforms-B0aI_CJD.js} +10 -3
- package/build/server/chunks/FeatureTransforms-B0aI_CJD.js.map +1 -0
- package/build/server/chunks/{ManageTagsDialog-DBxA3tM2.js → ManageTagsDialog-D5xbAVNB.js} +5 -5
- package/build/server/chunks/ManageTagsDialog-D5xbAVNB.js.map +1 -0
- package/build/server/chunks/{ProgressBar-CfhccQ83.js → ProgressBar-CUC2EZqG.js} +3 -3
- package/build/server/chunks/ProgressBar-CUC2EZqG.js.map +1 -0
- package/build/server/chunks/{ProjectsIndex-CoDrvRya.js → ProjectsIndex-FgIu9dBp.js} +135 -14
- package/build/server/chunks/ProjectsIndex-FgIu9dBp.js.map +1 -0
- package/build/server/chunks/{RenameTag-BuWLMl1m.js → RenameTag-DWIIR4Bx.js} +3 -6
- package/build/server/chunks/RenameTag-DWIIR4Bx.js.map +1 -0
- package/build/server/chunks/ScenarioApplier-YPKECfZe.js +55 -0
- package/build/server/chunks/ScenarioApplier-YPKECfZe.js.map +1 -0
- package/build/server/chunks/SimulatorEngine-DM1F9nCO.js +1391 -0
- package/build/server/chunks/SimulatorEngine-DM1F9nCO.js.map +1 -0
- package/build/server/chunks/StateValue-BBjWox8f.js +105 -0
- package/build/server/chunks/StateValue-BBjWox8f.js.map +1 -0
- package/build/server/chunks/{TagDotStrip-B1XQ0m0Y.js → TagDotStrip-0rn-IJVE.js} +4 -4
- package/build/server/chunks/TagDotStrip-0rn-IJVE.js.map +1 -0
- package/build/server/chunks/{TagFilterSelect-DbO0Qduh.js → TagFilterSelect-Dbu-7Dg4.js} +5 -5
- package/build/server/chunks/{TagFilterSelect-DbO0Qduh.js.map → TagFilterSelect-Dbu-7Dg4.js.map} +1 -1
- package/build/server/chunks/{TagPalette-CtMNYCmu.js → TagPalette-CpdTiC_7.js} +101 -9
- package/build/server/chunks/TagPalette-CpdTiC_7.js.map +1 -0
- package/build/server/chunks/TransitionCatalog-CYXUANy6.js +271 -0
- package/build/server/chunks/TransitionCatalog-CYXUANy6.js.map +1 -0
- package/build/server/chunks/_layout.svelte-pSSG85WT.js +1342 -0
- package/build/server/chunks/_layout.svelte-pSSG85WT.js.map +1 -0
- package/build/server/chunks/{_page.svelte-BKTveFAj.js → _page.svelte-BNH3szkk.js} +22 -17
- package/build/server/chunks/{_page.svelte-BKTveFAj.js.map → _page.svelte-BNH3szkk.js.map} +1 -1
- package/build/server/chunks/_page.svelte-BcuGvUt1.js +37 -0
- package/build/server/chunks/{_page.svelte-B7hT3P8E.js.map → _page.svelte-BcuGvUt1.js.map} +1 -1
- package/build/server/chunks/_page.svelte-BoOMG5Y0.js +37 -0
- package/build/server/chunks/{_page.svelte-De508ek8.js.map → _page.svelte-BoOMG5Y0.js.map} +1 -1
- package/build/server/chunks/{_page.svelte-BqSC-1vK.js → _page.svelte-C4PRh_wP.js} +104 -54
- package/build/server/chunks/_page.svelte-C4PRh_wP.js.map +1 -0
- package/build/server/chunks/_page.svelte-Cqn34NXy.js +74 -0
- package/build/server/chunks/_page.svelte-Cqn34NXy.js.map +1 -0
- package/build/server/chunks/{_page.svelte-B1s7jxaQ.js → _page.svelte-DSCeOGv7.js} +15 -10
- package/build/server/chunks/_page.svelte-DSCeOGv7.js.map +1 -0
- package/build/server/chunks/_page.svelte-DqWdGt48.js +182 -0
- package/build/server/chunks/_page.svelte-DqWdGt48.js.map +1 -0
- package/build/server/chunks/_page.svelte-DsQHSEl4.js +49 -0
- package/build/server/chunks/_page.svelte-DsQHSEl4.js.map +1 -0
- package/build/server/chunks/{_page.svelte-BKKCa9H5.js → _page.svelte-Uioz8hsG.js} +18 -11
- package/build/server/chunks/{_page.svelte-BKKCa9H5.js.map → _page.svelte-Uioz8hsG.js.map} +1 -1
- package/build/server/chunks/{_page.svelte-Zf9H4KOP.js → _page.svelte-p38jot9e.js} +81 -478
- package/build/server/chunks/_page.svelte-p38jot9e.js.map +1 -0
- package/build/server/chunks/{_page.svelte-BtI2zZ_Z.js → _page.svelte-yN5kzgJ9.js} +251 -447
- package/build/server/chunks/_page.svelte-yN5kzgJ9.js.map +1 -0
- package/build/server/chunks/{_server.ts-DsbbVoOn.js → _server.ts-1CtrHhte.js} +4 -4
- package/build/server/chunks/{_server.ts-DsbbVoOn.js.map → _server.ts-1CtrHhte.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CWvU15tL.js → _server.ts-71Qx1lQb.js} +4 -4
- package/build/server/chunks/{_server.ts-CWvU15tL.js.map → _server.ts-71Qx1lQb.js.map} +1 -1
- package/build/server/chunks/_server.ts-BAyekGHB.js +961 -0
- package/build/server/chunks/_server.ts-BAyekGHB.js.map +1 -0
- package/build/server/chunks/{_server.ts-BihpbxOW.js → _server.ts-BLWhU22T.js} +4 -4
- package/build/server/chunks/{_server.ts-BihpbxOW.js.map → _server.ts-BLWhU22T.js.map} +1 -1
- package/build/server/chunks/{_server.ts-YnfXkeMJ.js → _server.ts-C7EVZVxv.js} +22 -13
- package/build/server/chunks/_server.ts-C7EVZVxv.js.map +1 -0
- package/build/server/chunks/{_server.ts-vcaqdwxS.js → _server.ts-CGjYuLmo.js} +12 -7
- package/build/server/chunks/_server.ts-CGjYuLmo.js.map +1 -0
- package/build/server/chunks/{_server.ts-Dy5zQHe2.js → _server.ts-CX6H8fSE.js} +8 -31
- package/build/server/chunks/_server.ts-CX6H8fSE.js.map +1 -0
- package/build/server/chunks/{_server.ts-BuoQ02BW.js → _server.ts-CyEdTCLr.js} +4 -4
- package/build/server/chunks/{_server.ts-BuoQ02BW.js.map → _server.ts-CyEdTCLr.js.map} +1 -1
- package/build/server/chunks/_server.ts-DKVTM9Pj.js +77 -0
- package/build/server/chunks/_server.ts-DKVTM9Pj.js.map +1 -0
- package/build/server/chunks/{_server.ts-0uNTZKwF.js → _server.ts-Dip65hLJ.js} +15 -9
- package/build/server/chunks/_server.ts-Dip65hLJ.js.map +1 -0
- package/build/server/chunks/{_server.ts-D4EO0VHu.js → _server.ts-Dm0tCs2i.js} +5 -5
- package/build/server/chunks/{_server.ts-D4EO0VHu.js.map → _server.ts-Dm0tCs2i.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BIBWjQI-.js → _server.ts-DsYwK_uW.js} +4 -4
- package/build/server/chunks/{_server.ts-BIBWjQI-.js.map → _server.ts-DsYwK_uW.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DDa0Nk_S.js → _server.ts-RCEgegYU.js} +4 -4
- package/build/server/chunks/{_server.ts-DDa0Nk_S.js.map → _server.ts-RCEgegYU.js.map} +1 -1
- package/build/server/chunks/_server.ts-XOLAT4dd.js +146 -0
- package/build/server/chunks/_server.ts-XOLAT4dd.js.map +1 -0
- package/build/server/chunks/_server.ts-afh_zLVi.js +69 -0
- package/build/server/chunks/_server.ts-afh_zLVi.js.map +1 -0
- package/build/server/chunks/{browserContainer-CNX7ANld.js → browserContainer-BdldtueJ.js} +71 -1378
- package/build/server/chunks/browserContainer-BdldtueJ.js.map +1 -0
- package/build/server/chunks/buildSearchDocs-Cyfrnw9G.js +337 -0
- package/build/server/chunks/buildSearchDocs-Cyfrnw9G.js.map +1 -0
- package/build/server/chunks/{builderModeStore.svelte-ihupr-3p.js → builderModeStore.svelte-BEZMQEqn.js} +223 -11
- package/build/server/chunks/builderModeStore.svelte-BEZMQEqn.js.map +1 -0
- package/build/server/chunks/client-C9Cat4DK.js +51 -0
- package/build/server/chunks/{client-DfpLcAZ9.js.map → client-C9Cat4DK.js.map} +1 -1
- package/build/server/chunks/{error.svelte-C35KOpru.js → error.svelte-CzVR_A6P.js} +5 -5
- package/build/server/chunks/{error.svelte-C35KOpru.js.map → error.svelte-CzVR_A6P.js.map} +1 -1
- package/build/server/chunks/featureQueueContext-DuXpyTdC.js +32 -0
- package/build/server/chunks/featureQueueContext-DuXpyTdC.js.map +1 -0
- package/build/server/chunks/featureStore.svelte-DHZf88gu.js +162 -0
- package/build/server/chunks/featureStore.svelte-DHZf88gu.js.map +1 -0
- package/build/server/chunks/{projectsStore.svelte-QDz5PchX.js → featuresStore.svelte-bUyQBg1-.js} +95 -3
- package/build/server/chunks/featuresStore.svelte-bUyQBg1-.js.map +1 -0
- package/build/server/chunks/{hooks.server-Rv301GTB.js → hooks.server-y3jdg_sB.js} +6 -2
- package/build/server/chunks/hooks.server-y3jdg_sB.js.map +1 -0
- package/build/server/chunks/humanize-CkCPfeWi.js +53 -0
- package/build/server/chunks/humanize-CkCPfeWi.js.map +1 -0
- package/build/server/chunks/{index-server-7H0jzj0M.js → index-server-DvBux_Gf.js} +47 -2
- package/build/server/chunks/{index-server-7H0jzj0M.js.map → index-server-DvBux_Gf.js.map} +1 -1
- package/build/server/chunks/{internal-BPKrFkK1.js → internal-BFt8yDlf.js} +5 -5
- package/build/server/chunks/{internal-BPKrFkK1.js.map → internal-BFt8yDlf.js.map} +1 -1
- package/build/server/chunks/projectBundleClient-BtvWPh87.js +168 -0
- package/build/server/chunks/projectBundleClient-BtvWPh87.js.map +1 -0
- package/build/server/chunks/projectContextStore.svelte-jRJGJZ42.js +141 -0
- package/build/server/chunks/projectContextStore.svelte-jRJGJZ42.js.map +1 -0
- package/build/server/chunks/projectFeaturesStore.svelte-BwNEtDIL.js +87 -0
- package/build/server/chunks/projectFeaturesStore.svelte-BwNEtDIL.js.map +1 -0
- package/build/server/chunks/projectStore.svelte-BNuLNxk_.js +230 -0
- package/build/server/chunks/projectStore.svelte-BNuLNxk_.js.map +1 -0
- package/build/server/chunks/{reconcile-Dv7jS3C8.js → reconcile-CVG2LSlW.js} +54 -267
- package/build/server/chunks/reconcile-CVG2LSlW.js.map +1 -0
- package/build/server/chunks/registry-DqAn_hVE.js +21 -0
- package/build/server/chunks/registry-DqAn_hVE.js.map +1 -0
- package/build/server/chunks/{snapshotRepository-BPXCjX92.js → snapshotRepository-8f-2wTrb.js} +30 -5
- package/build/server/chunks/snapshotRepository-8f-2wTrb.js.map +1 -0
- package/build/server/chunks/{state-CpLVNZq7.js → state-CZZtjXLE.js} +3 -3
- package/build/server/chunks/{state-CpLVNZq7.js.map → state-CZZtjXLE.js.map} +1 -1
- package/build/server/chunks/{sync-DZ3dn761.js → sync-Bn6eSUhC.js} +3 -3
- package/build/server/chunks/{sync-DZ3dn761.js.map → sync-Bn6eSUhC.js.map} +1 -1
- package/build/server/chunks/{syncBridge-BwXzPdjJ.js → syncAwareRepositories-DvUjq5Q6.js} +27 -3
- package/build/server/chunks/syncAwareRepositories-DvUjq5Q6.js.map +1 -0
- package/build/server/chunks/{tagPaletteStore.svelte-DfZOBvgY.js → tagPaletteStore.svelte-C71bdzDl.js} +4 -4
- package/build/server/chunks/{tagPaletteStore.svelte-DfZOBvgY.js.map → tagPaletteStore.svelte-C71bdzDl.js.map} +1 -1
- package/build/server/index.js +2 -2
- package/build/server/index.js.map +1 -1
- package/build/server/manifest.js +74 -29
- package/build/server/manifest.js.map +1 -1
- package/cli/README.md +70 -2
- package/cli/commands/check.ts +190 -0
- package/cli/commands/ci.ts +71 -0
- package/cli/commands/coverage-ingest.ts +112 -0
- package/cli/commands/dashboard.ts +14 -0
- package/cli/commands/init.ts +26 -0
- package/cli/commands/scenarios-adapter.ts +96 -0
- package/cli/commands/theme.ts +62 -0
- package/cli/scenarios/adapter-scaffold.ts +99 -0
- package/cli/scenarios/codegen.ts +7 -1
- package/cli/scenarios/results.ts +85 -0
- package/cli/skills/unspa-audit/SKILL.md +19 -0
- package/cli/skills/unspa-edit/SKILL.md +20 -3
- package/cli/skills/unspa-implement/SKILL.md +28 -0
- package/cli/unspa.ts +136 -2
- package/cli/util/context-files.ts +18 -2
- package/cli/util/theme.ts +34 -0
- package/mcp-server/bin.ts +104 -104
- package/mcp-server/migrate-defaults.ts +164 -164
- package/mcp-server/repo-link.ts +142 -134
- package/mcp-server/resources/guide.ts +24 -4
- package/mcp-server/resources/operations.ts +3 -0
- package/mcp-server/seed-snapshots.ts +22 -22
- package/mcp-server/server.ts +8 -4
- package/mcp-server/sync-aware-repos.ts +79 -79
- package/mcp-server/sync-notifier.ts +180 -127
- package/mcp-server/tools/_codegen.ts +115 -115
- package/mcp-server/tools/_entity_builders.ts +30 -0
- package/mcp-server/tools/_shared.ts +210 -210
- package/mcp-server/tools/action.ts +210 -210
- package/mcp-server/tools/batch.ts +29 -5
- package/mcp-server/tools/effect.ts +139 -135
- package/mcp-server/tools/entity.ts +132 -132
- package/mcp-server/tools/entityField.ts +132 -132
- package/mcp-server/tools/event.ts +116 -116
- package/mcp-server/tools/feature.ts +264 -264
- package/mcp-server/tools/invariant.ts +275 -275
- package/mcp-server/tools/persona.ts +141 -141
- package/mcp-server/tools/project.ts +500 -391
- package/mcp-server/tools/reachabilityGoal.ts +97 -0
- package/mcp-server/tools/read.ts +526 -483
- package/mcp-server/tools/reorder.ts +114 -114
- package/mcp-server/tools/resource.ts +194 -194
- package/mcp-server/tools/rule.ts +302 -302
- package/mcp-server/tools/scenario.ts +4 -1
- package/mcp-server/tools/specGaps.ts +221 -221
- package/mcp-server/tools/state.ts +10 -2
- package/mcp-server/tools/surface.ts +102 -102
- package/mcp-server/tools/transition.ts +96 -96
- package/mcp-server/tools/verification.ts +131 -0
- package/package.json +15 -2
- package/src/app.css +208 -9
- package/src/app.html +15 -1
- package/src/features/behavior-model/application/ports/FeatureRepository.ts +16 -16
- package/src/features/behavior-model/application/use-cases/CreateFeature.ts +24 -24
- package/src/features/behavior-model/application/use-cases/DeleteFeature.ts +8 -8
- package/src/features/behavior-model/application/use-cases/GetFeature.ts +9 -9
- package/src/features/behavior-model/application/use-cases/ListFeatures.ts +10 -10
- package/src/features/behavior-model/application/use-cases/MutateFeature.ts +90 -90
- package/src/features/behavior-model/application/use-cases/SaveFeature.ts +31 -31
- package/src/features/behavior-model/domain/entities/Entity.ts +45 -45
- package/src/features/behavior-model/domain/entities/EventDefinition.ts +35 -35
- package/src/features/behavior-model/domain/entities/Feature.ts +10 -0
- package/src/features/behavior-model/domain/entities/Persona.ts +33 -33
- package/src/features/behavior-model/domain/entities/ReachabilityGoal.ts +39 -0
- package/src/features/behavior-model/domain/entities/Resource.ts +54 -54
- package/src/features/behavior-model/domain/entities/Scenario.ts +15 -0
- package/src/features/behavior-model/domain/entities/StateDefinition.ts +13 -0
- package/src/features/behavior-model/domain/entities/Surface.ts +75 -75
- package/src/features/behavior-model/domain/entities/index.ts +9 -9
- package/src/features/behavior-model/domain/services/BehaviorGraphModel.ts +556 -0
- package/src/features/behavior-model/domain/services/DerivedState.ts +67 -0
- package/src/features/behavior-model/domain/services/EffectApplier.ts +112 -3
- package/src/features/behavior-model/domain/services/EffectiveEntities.ts +166 -166
- package/src/features/behavior-model/domain/services/EntityDeducer.ts +83 -83
- package/src/features/behavior-model/domain/services/EventCatalog.ts +141 -141
- package/src/features/behavior-model/domain/services/FeatureExpressionNormalizer.ts +43 -5
- package/src/features/behavior-model/domain/services/FeatureSharedStateNormalizer.ts +24 -3
- package/src/features/behavior-model/domain/services/FeatureTransforms.ts +33 -0
- package/src/features/behavior-model/domain/services/FeatureValidator.ts +124 -16
- package/src/features/behavior-model/domain/services/PersonaApplier.ts +39 -39
- package/src/features/behavior-model/domain/services/ResourceDeducer.ts +64 -64
- package/src/features/behavior-model/domain/services/ResourceUsage.ts +79 -79
- package/src/features/behavior-model/domain/services/ScenarioApplier.ts +40 -40
- package/src/features/behavior-model/domain/services/SharedStateDefinitions.ts +32 -32
- package/src/features/behavior-model/domain/services/StatePathReferences.ts +249 -217
- package/src/features/behavior-model/domain/services/TransitionCatalog.ts +173 -173
- package/src/features/behavior-model/domain/value-objects/Effect.ts +100 -3
- package/src/features/behavior-model/domain/value-objects/EntityFieldType.ts +57 -57
- package/src/features/behavior-model/domain/value-objects/Expression.ts +22 -2
- package/src/features/behavior-model/domain/value-objects/ParameterType.ts +57 -57
- package/src/features/behavior-model/domain/value-objects/Resource.ts +210 -210
- package/src/features/behavior-model/domain/value-objects/RuleCategory.ts +57 -57
- package/src/features/behavior-model/domain/value-objects/RuleCondition.ts +52 -1
- package/src/features/behavior-model/domain/value-objects/SimulationClock.ts +35 -0
- package/src/features/behavior-model/domain/value-objects/ids.ts +2 -0
- package/src/features/behavior-model/infrastructure/io/FeatureJson.ts +89 -89
- package/src/features/behavior-model/infrastructure/persistence/HttpFeatureRepository.ts +43 -43
- package/src/features/behavior-model/infrastructure/persistence/JsonFolderFeatureRepository.ts +10 -0
- package/src/features/behavior-model/infrastructure/persistence/snapshot-discovery.ts +76 -76
- package/src/features/behavior-model/infrastructure/seed/seedStorefront.ts +967 -967
- package/src/features/behavior-model/presentation/adapters/VisBehaviorGraphRenderer.ts +501 -0
- package/src/features/behavior-model/presentation/components/ActionEditor.svelte +683 -682
- package/src/features/behavior-model/presentation/components/ActionsEditor.svelte +232 -232
- package/src/features/behavior-model/presentation/components/BehaviorGraph.svelte +568 -0
- package/src/features/behavior-model/presentation/components/EffectEditor.svelte +168 -168
- package/src/features/behavior-model/presentation/components/EntityEditor.svelte +241 -248
- package/src/features/behavior-model/presentation/components/EntityFieldRow.svelte +180 -181
- package/src/features/behavior-model/presentation/components/EntityManager.svelte +252 -251
- package/src/features/behavior-model/presentation/components/EventsManager.svelte +373 -372
- package/src/features/behavior-model/presentation/components/FeatureEditor.svelte +396 -348
- package/src/features/behavior-model/presentation/components/FeatureHeader.svelte +165 -148
- package/src/features/behavior-model/presentation/components/FeatureHealthStrip.svelte +110 -110
- package/src/features/behavior-model/presentation/components/HistoryPanel.svelte +154 -154
- package/src/features/behavior-model/presentation/components/NewFeatureForm.svelte +66 -66
- package/src/features/behavior-model/presentation/components/ParameterNameSelect.svelte +84 -84
- package/src/features/behavior-model/presentation/components/ParametersEditor.svelte +411 -411
- package/src/features/behavior-model/presentation/components/PersonaEditor.svelte +244 -244
- package/src/features/behavior-model/presentation/components/PersonasManager.svelte +130 -130
- package/src/features/behavior-model/presentation/components/ReachabilityGoalEditor.svelte +230 -0
- package/src/features/behavior-model/presentation/components/ReachabilityGoalsEditor.svelte +86 -0
- package/src/features/behavior-model/presentation/components/ResourcesManager.svelte +291 -290
- package/src/features/behavior-model/presentation/components/ScenariosEditor.svelte +496 -496
- package/src/features/behavior-model/presentation/components/StateDefinitionsEditor.svelte +356 -356
- package/src/features/behavior-model/presentation/components/SurfaceEntitiesView.svelte +88 -88
- package/src/features/behavior-model/presentation/components/SurfaceInvariantsEditor.svelte +76 -76
- package/src/features/behavior-model/presentation/components/SurfaceList.svelte +300 -300
- package/src/features/behavior-model/presentation/components/SurfaceMetaEditor.svelte +158 -156
- package/src/features/behavior-model/presentation/components/SurfacePanel.svelte +198 -198
- package/src/features/behavior-model/presentation/components/SurfacePersonasView.svelte +122 -122
- package/src/features/behavior-model/presentation/components/SurfaceResourcesView.svelte +113 -113
- package/src/features/behavior-model/presentation/components/SurfaceRulesEditor.svelte +69 -69
- package/src/features/behavior-model/presentation/components/TransitionsManager.svelte +322 -321
- package/src/features/behavior-model/presentation/context/featureQueueContext.ts +78 -0
- package/src/features/behavior-model/presentation/stores/editorStore.svelte.ts +132 -131
- package/src/features/behavior-model/presentation/stores/featureStore.svelte.ts +177 -177
- package/src/features/behavior-model/presentation/stores/featuresStore.svelte.ts +98 -98
- package/src/features/behavior-model/presentation/view-models/BehaviorGraphTheme.ts +44 -0
- package/src/features/behavior-model/presentation/view-models/factories.ts +181 -132
- package/src/features/builder-mode/domain/BuilderModeDashboard.ts +7 -1
- package/src/features/builder-mode/presentation/components/BuilderModeDashboard.svelte +78 -16
- package/src/features/builder-mode/presentation/components/BuilderTagChips.svelte +25 -0
- package/src/features/builder-mode/presentation/stores/builderModeStore.svelte.ts +247 -3
- package/src/features/domains/infrastructure/persistence/JsonFolderDomainRepository.ts +9 -0
- package/src/features/global-search/application/use-cases/LoadSearchIndex.ts +70 -0
- package/src/features/global-search/domain/SearchDoc.ts +111 -0
- package/src/features/global-search/domain/buildSearchDocs.ts +483 -0
- package/src/features/global-search/domain/searchNav.ts +58 -0
- package/src/features/global-search/domain/searchScoring.ts +81 -0
- package/src/features/global-search/infrastructure/adapters/defaultSearchHost.ts +28 -0
- package/src/features/global-search/presentation/components/GlobalSearch.svelte +262 -0
- package/src/features/global-search/presentation/ports/SearchHostPorts.ts +41 -0
- package/src/features/global-search/presentation/searchKindMeta.ts +108 -0
- package/src/features/global-search/presentation/stores/globalSearchStore.svelte.ts +171 -0
- package/src/features/implementation-queue/presentation/components/FloatingQueueWidget.svelte +264 -0
- package/src/features/implementation-queue/presentation/stores/globalQueueStore.svelte.ts +172 -0
- package/src/features/implementation-status/application/ports/ImplementationStatusRepository.ts +8 -8
- package/src/features/implementation-status/application/use-cases/GetImplementationStatus.ts +8 -8
- package/src/features/implementation-status/domain/ApplyCapturedToSpec.ts +323 -322
- package/src/features/implementation-status/domain/FieldDiff.ts +238 -236
- package/src/features/implementation-status/infrastructure/persistence/InMemoryImplementationStatusRepository.ts +21 -21
- package/src/features/implementation-status/presentation/components/ImplementationStatusPanel.svelte +831 -831
- package/src/features/implementation-status/presentation/stores/implementationStatusStore.svelte.ts +97 -97
- package/src/features/library/application/use-cases/ApplyBlueprintsToFeature.ts +33 -33
- package/src/features/library/domain/services/BlueprintApplier.ts +94 -94
- package/src/features/library/infrastructure/blueprints/auth/ResetPasswordBlueprint.ts +332 -332
- package/src/features/library/infrastructure/blueprints/auth/SignInBlueprint.ts +281 -281
- package/src/features/library/infrastructure/blueprints/auth/SignUpBlueprint.ts +299 -299
- package/src/features/library/infrastructure/blueprints/auth/VerifyEmailBlueprint.ts +288 -288
- package/src/features/library/infrastructure/blueprints/auth/shared.ts +146 -146
- package/src/features/library/infrastructure/blueprints/commerce/CartBlueprint.ts +222 -222
- package/src/features/library/infrastructure/blueprints/commerce/CatalogBlueprint.ts +190 -190
- package/src/features/library/infrastructure/blueprints/commerce/CheckoutBlueprint.ts +322 -322
- package/src/features/library/infrastructure/blueprints/commerce/OrderConfirmationBlueprint.ts +172 -172
- package/src/features/library/infrastructure/blueprints/commerce/ProductDetailsBlueprint.ts +290 -290
- package/src/features/library/infrastructure/blueprints/content/ReviewsBlueprint.ts +392 -392
- package/src/features/library/infrastructure/blueprints/onboarding/OnboardingWizardBlueprint.ts +344 -344
- package/src/features/library/infrastructure/blueprints/utility/CanvasBlueprint.ts +419 -419
- package/src/features/library/infrastructure/blueprints/utility/CookieConsentBlueprint.ts +195 -195
- package/src/features/library/infrastructure/blueprints/utility/NotFoundBlueprint.ts +86 -86
- package/src/features/library/infrastructure/blueprints/utility/SearchPaletteBlueprint.ts +192 -192
- package/src/features/library/infrastructure/blueprints/utility/StoreLocatorBlueprint.ts +221 -221
- package/src/features/library/infrastructure/blueprints/utility/TaskBoardBlueprint.ts +196 -196
- package/src/features/maturity/application/use-cases/ScoreFeature.ts +7 -7
- package/src/features/maturity/domain/MaturityReport.ts +70 -70
- package/src/features/maturity/domain/MaturityScorer.ts +1001 -985
- package/src/features/maturity/presentation/components/MaturityPanel.svelte +376 -372
- package/src/features/mcp-tools/application/tools/dryRunSimulate.ts +24 -24
- package/src/features/mcp-tools/application/tools/findStateReferences.ts +19 -19
- package/src/features/mcp-tools/application/tools/generateTypes.ts +0 -1
- package/src/features/mcp-tools/application/tools/getAction.ts +165 -165
- package/src/features/mcp-tools/application/tools/getFeature.ts +5 -5
- package/src/features/mcp-tools/application/tools/getFeatureIndex.ts +79 -79
- package/src/features/mcp-tools/application/tools/getNeighborhood.ts +319 -319
- package/src/features/mcp-tools/application/tools/getSurface.ts +86 -86
- package/src/features/mcp-tools/application/tools/index.ts +56 -56
- package/src/features/mcp-tools/application/tools/listActions.ts +49 -49
- package/src/features/mcp-tools/application/tools/listFeatures.ts +7 -7
- package/src/features/mcp-tools/application/tools/scoreFeature.ts +153 -153
- package/src/features/projects/application/ports/ProjectRepository.ts +14 -14
- package/src/features/projects/application/use-cases/AddFeatureToProject.ts +23 -23
- package/src/features/projects/application/use-cases/CreateProject.ts +16 -16
- package/src/features/projects/application/use-cases/FindProjectContainingFeature.ts +23 -23
- package/src/features/projects/application/use-cases/GetProjectAggregate.ts +131 -131
- package/src/features/projects/application/use-cases/ImportProjectBundle.ts +45 -0
- package/src/features/projects/application/use-cases/MoveFeatureInProject.ts +36 -36
- package/src/features/projects/application/use-cases/RemoveFeatureFromProject.ts +23 -23
- package/src/features/projects/domain/entities/Project.ts +12 -0
- package/src/features/projects/domain/services/InheritedFromProject.ts +130 -130
- package/src/features/projects/infrastructure/persistence/JsonFolderProjectRepository.ts +9 -0
- package/src/features/projects/presentation/components/ProjectCard.svelte +27 -8
- package/src/features/projects/presentation/components/ProjectEditor.svelte +23 -19
- package/src/features/projects/presentation/components/ProjectFeaturesPanel.svelte +433 -433
- package/src/features/projects/presentation/components/ProjectsIndex.svelte +54 -10
- package/src/features/projects/presentation/stores/projectContextStore.svelte.ts +170 -170
- package/src/features/projects/presentation/stores/projectFeaturesStore.svelte.ts +114 -114
- package/src/features/projects/presentation/stores/projectStore.svelte.ts +265 -266
- package/src/features/projects/presentation/stores/projectsStore.svelte.ts +134 -134
- package/src/features/simulator/application/use-cases/RunScenarios.ts +27 -1
- package/src/features/simulator/application/use-cases/SimulateAction.ts +47 -47
- package/src/features/simulator/domain/SimulationResult.ts +79 -79
- package/src/features/simulator/domain/SimulatorEngine.ts +43 -9
- package/src/features/simulator/domain/StateExplorer.ts +369 -0
- package/src/features/simulator/domain/SurfaceReachability.ts +130 -0
- package/src/features/simulator/presentation/components/ParameterInputs.svelte +277 -277
- package/src/features/simulator/presentation/components/PersonaPicker.svelte +52 -52
- package/src/features/simulator/presentation/components/ScenarioPicker.svelte +42 -45
- package/src/features/simulator/presentation/components/SidePanel.svelte +170 -170
- package/src/features/simulator/presentation/components/SimulationResultView.svelte +394 -394
- package/src/features/simulator/presentation/components/SimulatorPanel.svelte +293 -293
- package/src/features/simulator/presentation/components/StateInspector.svelte +101 -101
- package/src/features/simulator/presentation/stores/simulatorStore.svelte.ts +268 -268
- package/src/features/tutorial/presentation/components/CodeBlock.svelte +5 -1
- package/src/features/verification/application/ports/BehavioralIndexReader.ts +12 -0
- package/src/features/verification/application/use-cases/VerifyFeatures.ts +151 -0
- package/src/features/verification/domain/DriftReport.ts +37 -0
- package/src/features/verification/domain/EventCoherenceReport.ts +27 -0
- package/src/features/verification/domain/IndexedImplementation.ts +27 -0
- package/src/features/verification/domain/VerificationReport.ts +59 -0
- package/src/features/verification/domain/VerificationThresholds.ts +52 -0
- package/src/features/verification/domain/VerificationVerdict.ts +43 -0
- package/src/features/verification/domain/aggregateVerdict.ts +244 -0
- package/src/features/verification/domain/analyzeEventCoherence.ts +43 -0
- package/src/features/verification/domain/detectDrift.ts +166 -0
- package/src/features/verification/domain/verifiedCoverage.ts +37 -0
- package/src/features/verification/infrastructure/persistence/FileBehavioralIndexReader.ts +81 -0
- package/src/features/verification/infrastructure/persistence/StaticBehavioralIndexReader.ts +15 -0
- package/src/features/verification/presentation/components/VerifyPanel.svelte +74 -0
- package/src/features/verification/presentation/stores/verificationStore.svelte.ts +64 -0
- package/src/hooks.server.ts +11 -1
- package/src/lib/server/openLocalDirectory.ts +40 -0
- package/src/lib/server/searchIndex.ts +161 -0
- package/src/lib/server/snapshotRepository.ts +37 -37
- package/src/lib/server/sync/YDocManager.ts +391 -391
- package/src/lib/server/sync/historyStore.ts +276 -276
- package/src/lib/server/sync/wsServer.ts +1 -1
- package/src/lib/sync/protocol.ts +147 -147
- package/src/lib/sync/roomId.ts +33 -33
- package/src/lib/theme/registry.ts +77 -0
- package/src/lib/theme/themeStore.svelte.ts +64 -0
- package/src/routes/+layout.svelte +288 -30
- package/src/routes/api/domains/[id]/+server.ts +7 -3
- package/src/routes/api/projects/[id]/+server.ts +14 -4
- package/src/routes/api/projects/import/+server.ts +16 -38
- package/src/routes/api/search-index/+server.ts +16 -0
- package/src/routes/api/snapshots/[id]/+server.ts +56 -44
- package/src/routes/api/snapshots/[id]/implementation-status/+server.ts +13 -13
- package/src/routes/api/snapshots/[id]/verify/+server.ts +37 -0
- package/src/routes/api/sync/reload/+server.ts +157 -157
- package/src/routes/api/system/hub-directory/+server.ts +24 -0
- package/src/routes/features/+page.svelte +484 -484
- package/src/routes/features/[id]/+page.svelte +55 -49
- package/src/routes/features/[id]/graph/+page.svelte +39 -0
- package/src/routes/features/[id]/verify/+page.svelte +89 -0
- package/src/routes/mcp/+page.svelte +16 -1
- package/src/routes/projects/[id]/+page.svelte +70 -70
- package/src/routes/projects/[id]/graph/+page.svelte +79 -0
- package/src/routes/tutorial/+page.svelte +3 -2
- package/src/shared/infrastructure/browserContainer.ts +61 -61
- package/src/shared/presentation/components/KebabMenu.svelte +95 -0
- package/src/shared/presentation/components/MenuItem.svelte +29 -0
- package/src/shared/presentation/components/ProgressBar.svelte +1 -1
- package/src/shared/presentation/toast/SyncToast.svelte +14 -3
- package/src/shared/presentation/toast/viewLinkResolver.ts +32 -0
- package/static/lyriks_logo.svg +148 -0
- package/vite.config.ts +47 -47
- package/build/client/_app/immutable/assets/0.DFMDYAU9.css +0 -1
- package/build/client/_app/immutable/assets/0.DFMDYAU9.css.br +0 -0
- package/build/client/_app/immutable/assets/0.DFMDYAU9.css.gz +0 -0
- package/build/client/_app/immutable/assets/9.nv0I59TU.css.gz +0 -0
- package/build/client/_app/immutable/chunks/BO66rBOa2.js +0 -1
- package/build/client/_app/immutable/chunks/BO66rBOa2.js.br +0 -0
- package/build/client/_app/immutable/chunks/BO66rBOa2.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BOrLmFwJ.js.br +0 -0
- package/build/client/_app/immutable/chunks/BOrLmFwJ.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BfMYiIUi.js.br +0 -0
- package/build/client/_app/immutable/chunks/BfMYiIUi.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Bp2_Vghh.js +0 -1
- package/build/client/_app/immutable/chunks/Bp2_Vghh.js.br +0 -0
- package/build/client/_app/immutable/chunks/Bp2_Vghh.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Bp8HpEPe2.js +0 -4
- package/build/client/_app/immutable/chunks/Bp8HpEPe2.js.br +0 -0
- package/build/client/_app/immutable/chunks/Bp8HpEPe2.js.gz +0 -0
- package/build/client/_app/immutable/chunks/C8rRKIXT.js +0 -1
- package/build/client/_app/immutable/chunks/C8rRKIXT.js.br +0 -0
- package/build/client/_app/immutable/chunks/C8rRKIXT.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CJjJLwzv2.js +0 -1
- package/build/client/_app/immutable/chunks/CJjJLwzv2.js.br +0 -0
- package/build/client/_app/immutable/chunks/CJjJLwzv2.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CxyLMlpt2.js.br +0 -0
- package/build/client/_app/immutable/chunks/CxyLMlpt2.js.gz +0 -0
- package/build/client/_app/immutable/chunks/D6jhrpTg.js +0 -1
- package/build/client/_app/immutable/chunks/D6jhrpTg.js.br +0 -0
- package/build/client/_app/immutable/chunks/D6jhrpTg.js.gz +0 -0
- package/build/client/_app/immutable/chunks/D8YEa1po.js +0 -1
- package/build/client/_app/immutable/chunks/D8YEa1po.js.br +0 -0
- package/build/client/_app/immutable/chunks/D8YEa1po.js.gz +0 -0
- package/build/client/_app/immutable/chunks/D9dKmajw.js +0 -1
- package/build/client/_app/immutable/chunks/D9dKmajw.js.br +0 -0
- package/build/client/_app/immutable/chunks/D9dKmajw.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DBJWcC6Y.js +0 -1
- package/build/client/_app/immutable/chunks/DBJWcC6Y.js.br +0 -0
- package/build/client/_app/immutable/chunks/DBJWcC6Y.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DHoA038D.js +0 -1
- package/build/client/_app/immutable/chunks/DHoA038D.js.br +0 -2
- package/build/client/_app/immutable/chunks/DHoA038D.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DKgYpi6_.js +0 -1
- package/build/client/_app/immutable/chunks/DKgYpi6_.js.br +0 -0
- package/build/client/_app/immutable/chunks/DKgYpi6_.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DatGSObE.js +0 -1
- package/build/client/_app/immutable/chunks/DatGSObE.js.br +0 -0
- package/build/client/_app/immutable/chunks/DatGSObE.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Dg0acPpT.js +0 -1
- package/build/client/_app/immutable/chunks/Dg0acPpT.js.br +0 -0
- package/build/client/_app/immutable/chunks/Dg0acPpT.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DjWKKtqp.js +0 -1
- package/build/client/_app/immutable/chunks/DjWKKtqp.js.br +0 -1
- package/build/client/_app/immutable/chunks/DjWKKtqp.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Dq0DUAz1.js +0 -1
- package/build/client/_app/immutable/chunks/Dq0DUAz1.js.br +0 -0
- package/build/client/_app/immutable/chunks/Dq0DUAz1.js.gz +0 -0
- package/build/client/_app/immutable/chunks/HKLi1Yz3.js +0 -1
- package/build/client/_app/immutable/chunks/HKLi1Yz3.js.br +0 -0
- package/build/client/_app/immutable/chunks/HKLi1Yz3.js.gz +0 -0
- package/build/client/_app/immutable/chunks/N7PXjlRH.js +0 -1
- package/build/client/_app/immutable/chunks/N7PXjlRH.js.br +0 -0
- package/build/client/_app/immutable/chunks/N7PXjlRH.js.gz +0 -0
- package/build/client/_app/immutable/chunks/hpWJNn0t2.js +0 -2
- package/build/client/_app/immutable/chunks/hpWJNn0t2.js.br +0 -0
- package/build/client/_app/immutable/chunks/hpWJNn0t2.js.gz +0 -0
- package/build/client/_app/immutable/chunks/iQu0D9Ux.js +0 -1
- package/build/client/_app/immutable/chunks/iQu0D9Ux.js.br +0 -0
- package/build/client/_app/immutable/chunks/iQu0D9Ux.js.gz +0 -0
- package/build/client/_app/immutable/entry/app.CLgh6Mx_.js +0 -2
- package/build/client/_app/immutable/entry/app.CLgh6Mx_.js.br +0 -0
- package/build/client/_app/immutable/entry/app.CLgh6Mx_.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.D5GPCQZD.js +0 -1
- package/build/client/_app/immutable/entry/start.D5GPCQZD.js.br +0 -0
- package/build/client/_app/immutable/entry/start.D5GPCQZD.js.gz +0 -0
- package/build/client/_app/immutable/nodes/0.BOoI-hsu.js +0 -4
- package/build/client/_app/immutable/nodes/0.BOoI-hsu.js.br +0 -0
- package/build/client/_app/immutable/nodes/0.BOoI-hsu.js.gz +0 -0
- package/build/client/_app/immutable/nodes/1.KYdA6ppX.js.br +0 -2
- package/build/client/_app/immutable/nodes/1.KYdA6ppX.js.gz +0 -0
- package/build/client/_app/immutable/nodes/2.DBz20KgG.js.br +0 -0
- package/build/client/_app/immutable/nodes/2.DBz20KgG.js.gz +0 -0
- package/build/client/_app/immutable/nodes/3.19DIoFtw.js +0 -1
- package/build/client/_app/immutable/nodes/3.19DIoFtw.js.br +0 -0
- package/build/client/_app/immutable/nodes/3.19DIoFtw.js.gz +0 -0
- package/build/client/_app/immutable/nodes/4.BvMzqBJj.js +0 -3
- package/build/client/_app/immutable/nodes/4.BvMzqBJj.js.br +0 -0
- package/build/client/_app/immutable/nodes/4.BvMzqBJj.js.gz +0 -0
- package/build/client/_app/immutable/nodes/5.Dq6obSGG.js +0 -42
- package/build/client/_app/immutable/nodes/5.Dq6obSGG.js.br +0 -0
- package/build/client/_app/immutable/nodes/5.Dq6obSGG.js.gz +0 -0
- package/build/client/_app/immutable/nodes/6.BOHISqs-.js +0 -5
- package/build/client/_app/immutable/nodes/6.BOHISqs-.js.br +0 -0
- package/build/client/_app/immutable/nodes/6.BOHISqs-.js.gz +0 -0
- package/build/client/_app/immutable/nodes/7.CemgNJfw.js.br +0 -0
- package/build/client/_app/immutable/nodes/7.CemgNJfw.js.gz +0 -0
- package/build/client/_app/immutable/nodes/8.DejSfIYh.js +0 -5
- package/build/client/_app/immutable/nodes/8.DejSfIYh.js.br +0 -0
- package/build/client/_app/immutable/nodes/8.DejSfIYh.js.gz +0 -0
- package/build/client/_app/immutable/nodes/9.CMW6a2Lg.js.br +0 -0
- package/build/client/_app/immutable/nodes/9.CMW6a2Lg.js.gz +0 -0
- package/build/server/chunks/0-C_o0oz-N.js +0 -15
- package/build/server/chunks/0-C_o0oz-N.js.map +0 -1
- package/build/server/chunks/1-DPpKAKXV.js +0 -9
- package/build/server/chunks/2-AlfFqtL1.js +0 -9
- package/build/server/chunks/2-AlfFqtL1.js.map +0 -1
- package/build/server/chunks/3-vbjUt_51.js +0 -16
- package/build/server/chunks/3-vbjUt_51.js.map +0 -1
- package/build/server/chunks/4-BNow4x6D.js +0 -16
- package/build/server/chunks/4-BNow4x6D.js.map +0 -1
- package/build/server/chunks/5-D7OCJpxD.js +0 -9
- package/build/server/chunks/5-D7OCJpxD.js.map +0 -1
- package/build/server/chunks/6-QQ7r8Rd5.js +0 -9
- package/build/server/chunks/7-CbPLGaIG.js +0 -9
- package/build/server/chunks/7-CbPLGaIG.js.map +0 -1
- package/build/server/chunks/8-CVO-E-sf.js +0 -9
- package/build/server/chunks/8-CVO-E-sf.js.map +0 -1
- package/build/server/chunks/9-DxT1baO5.js +0 -9
- package/build/server/chunks/9-DxT1baO5.js.map +0 -1
- package/build/server/chunks/FeatureTransforms-UWDHmWEg.js.map +0 -1
- package/build/server/chunks/FeatureValidator-B8qEjAUW.js.map +0 -1
- package/build/server/chunks/ManageTagsDialog-DBxA3tM2.js.map +0 -1
- package/build/server/chunks/ProgressBar-CfhccQ83.js.map +0 -1
- package/build/server/chunks/ProjectsIndex-CoDrvRya.js.map +0 -1
- package/build/server/chunks/RenameTag-BuWLMl1m.js.map +0 -1
- package/build/server/chunks/TagDotStrip-B1XQ0m0Y.js.map +0 -1
- package/build/server/chunks/TagPalette-CtMNYCmu.js.map +0 -1
- package/build/server/chunks/_layout.svelte-BREws55o.js +0 -616
- package/build/server/chunks/_layout.svelte-BREws55o.js.map +0 -1
- package/build/server/chunks/_page.svelte-B1s7jxaQ.js.map +0 -1
- package/build/server/chunks/_page.svelte-B7hT3P8E.js +0 -29
- package/build/server/chunks/_page.svelte-BqSC-1vK.js.map +0 -1
- package/build/server/chunks/_page.svelte-BtI2zZ_Z.js.map +0 -1
- package/build/server/chunks/_page.svelte-De508ek8.js +0 -29
- package/build/server/chunks/_page.svelte-Zf9H4KOP.js.map +0 -1
- package/build/server/chunks/_server.ts-0uNTZKwF.js.map +0 -1
- package/build/server/chunks/_server.ts-DcZPhyhK.js +0 -59
- package/build/server/chunks/_server.ts-DcZPhyhK.js.map +0 -1
- package/build/server/chunks/_server.ts-Dy5zQHe2.js.map +0 -1
- package/build/server/chunks/_server.ts-YnfXkeMJ.js.map +0 -1
- package/build/server/chunks/_server.ts-vcaqdwxS.js.map +0 -1
- package/build/server/chunks/browserContainer-CNX7ANld.js.map +0 -1
- package/build/server/chunks/builderModeStore.svelte-ihupr-3p.js.map +0 -1
- package/build/server/chunks/client-DfpLcAZ9.js +0 -24
- package/build/server/chunks/featuresStore.svelte-DR1gYZyu.js +0 -98
- package/build/server/chunks/featuresStore.svelte-DR1gYZyu.js.map +0 -1
- package/build/server/chunks/hooks.server-Rv301GTB.js.map +0 -1
- package/build/server/chunks/identityStore.svelte-IIvW2_3b.js +0 -59
- package/build/server/chunks/identityStore.svelte-IIvW2_3b.js.map +0 -1
- package/build/server/chunks/projectsStore.svelte-QDz5PchX.js.map +0 -1
- package/build/server/chunks/reconcile-Dv7jS3C8.js.map +0 -1
- package/build/server/chunks/snapshotRepository-BPXCjX92.js.map +0 -1
- package/build/server/chunks/syncBridge-BwXzPdjJ.js.map +0 -1
- package/src/features/implementation-queue/presentation/components/QueuePanel.svelte +0 -204
- package/src/features/implementation-queue/presentation/stores/queueStore.svelte.ts +0 -143
- /package/build/client/_app/immutable/assets/{9.nv0I59TU.css → 12.nv0I59TU.css} +0 -0
- /package/build/client/_app/immutable/assets/{9.nv0I59TU.css.br → 12.nv0I59TU.css.br} +0 -0
|
@@ -1,616 +0,0 @@
|
|
|
1
|
-
import { h as attr_class, r as ensure_array_like, g as attr, t as escape_html, q as derived, a6 as stringify, i as attr_style } from './index-server-7H0jzj0M.js';
|
|
2
|
-
import './client-DfpLcAZ9.js';
|
|
3
|
-
import { p as page } from './state-CpLVNZq7.js';
|
|
4
|
-
import { g as dialogStore } from './browserContainer-CNX7ANld.js';
|
|
5
|
-
import { b as builderModeStore, s as subscribeSyncEvents } from './builderModeStore.svelte-ihupr-3p.js';
|
|
6
|
-
import { t as tourStore } from './tourStore.svelte-CYs4oLjF.js';
|
|
7
|
-
import { p as public_env } from './shared-server-CCs2CV3b.js';
|
|
8
|
-
import { i as identityStore } from './identityStore.svelte-IIvW2_3b.js';
|
|
9
|
-
import './internal-BPKrFkK1.js';
|
|
10
|
-
import './index-DBqjc0Yf.js';
|
|
11
|
-
import './TagPalette-CtMNYCmu.js';
|
|
12
|
-
import './FeatureValidator-B8qEjAUW.js';
|
|
13
|
-
import './ids-t7Gjdj0M.js';
|
|
14
|
-
import './RenameTag-BuWLMl1m.js';
|
|
15
|
-
import './FeatureTransforms-UWDHmWEg.js';
|
|
16
|
-
import './tagPaletteStore.svelte-DfZOBvgY.js';
|
|
17
|
-
import './eventBus-B9k-Vzso.js';
|
|
18
|
-
|
|
19
|
-
//#region src/lib/views/registry.ts
|
|
20
|
-
/** The base view. Always enabled; it's where the dashboard lands by default. */
|
|
21
|
-
var EXPERT = {
|
|
22
|
-
id: "expert",
|
|
23
|
-
label: "Expert",
|
|
24
|
-
href: "/projects",
|
|
25
|
-
matches: (pathname) => pathname === "/" || pathname.startsWith("/projects") || pathname.startsWith("/features")
|
|
26
|
-
};
|
|
27
|
-
/** Opt-in views, keyed by the id used in `PUBLIC_UNSPA_VIEWS`. */
|
|
28
|
-
var OPTIONAL_VIEWS = { builder: {
|
|
29
|
-
id: "builder",
|
|
30
|
-
label: "Builder",
|
|
31
|
-
href: "/builder-mode",
|
|
32
|
-
matches: (pathname) => pathname.startsWith("/builder-mode")
|
|
33
|
-
} };
|
|
34
|
-
/**
|
|
35
|
-
* Parse the raw `PUBLIC_UNSPA_VIEWS` value into the ordered, de-duped list of
|
|
36
|
-
* enabled view ids. Expert is always first; unknown ids are ignored.
|
|
37
|
-
*/
|
|
38
|
-
var parseEnabledViewIds = (raw) => {
|
|
39
|
-
const requested = (raw ?? "").split(",").map((part) => part.trim().toLowerCase()).filter((id) => id.length > 0 && id !== "expert" && id in OPTIONAL_VIEWS);
|
|
40
|
-
return ["expert", ...[...new Set(requested)]];
|
|
41
|
-
};
|
|
42
|
-
/** Resolve the enabled view ids into their full definitions, in nav order. */
|
|
43
|
-
var resolveEnabledViews = (raw) => parseEnabledViewIds(raw).map((id) => id === "expert" ? EXPERT : OPTIONAL_VIEWS[id]);
|
|
44
|
-
/** Whether a specific view is enabled. Expert is always enabled. */
|
|
45
|
-
var isViewEnabled = (raw, id) => parseEnabledViewIds(raw).includes(id);
|
|
46
|
-
//#endregion
|
|
47
|
-
//#region src/lib/views/enabled.ts
|
|
48
|
-
/**
|
|
49
|
-
* Runtime view enablement, read from `PUBLIC_UNSPA_VIEWS` (a comma list of
|
|
50
|
-
* optional view ids, e.g. "builder"). Expert is always on. The value is a
|
|
51
|
-
* runtime public env var — `unspa dashboard --view builder` sets it, or a
|
|
52
|
-
* local `.env` for `vite dev` — so enabling a view is config, not a rebuild.
|
|
53
|
-
*/
|
|
54
|
-
var enabledViews = () => resolveEnabledViews(public_env.PUBLIC_UNSPA_VIEWS);
|
|
55
|
-
var isEnabled = (id) => isViewEnabled(public_env.PUBLIC_UNSPA_VIEWS, id);
|
|
56
|
-
|
|
57
|
-
//#region src/shared/presentation/dialogs/AppDialog.svelte
|
|
58
|
-
function AppDialog($$renderer, $$props) {
|
|
59
|
-
$$renderer.component(($$renderer) => {
|
|
60
|
-
const current = derived(() => dialogStore.current);
|
|
61
|
-
let selected = /* @__PURE__ */ new Set();
|
|
62
|
-
let inputValue = "";
|
|
63
|
-
const toneStyles = {
|
|
64
|
-
default: {
|
|
65
|
-
icon: "?",
|
|
66
|
-
iconBg: "bg-slate-100",
|
|
67
|
-
iconColor: "text-slate-700",
|
|
68
|
-
confirmBtn: "bg-slate-900 hover:bg-slate-800 text-white",
|
|
69
|
-
check: "accent-slate-700"
|
|
70
|
-
},
|
|
71
|
-
danger: {
|
|
72
|
-
icon: "!",
|
|
73
|
-
iconBg: "bg-rose-50",
|
|
74
|
-
iconColor: "text-rose-600",
|
|
75
|
-
confirmBtn: "bg-rose-600 hover:bg-rose-500 text-white",
|
|
76
|
-
check: "accent-rose-600"
|
|
77
|
-
},
|
|
78
|
-
info: {
|
|
79
|
-
icon: "i",
|
|
80
|
-
iconBg: "bg-brand-50",
|
|
81
|
-
iconColor: "text-brand-700",
|
|
82
|
-
confirmBtn: "bg-brand-700 hover:bg-brand-600 text-white",
|
|
83
|
-
check: "accent-brand-700"
|
|
84
|
-
},
|
|
85
|
-
success: {
|
|
86
|
-
icon: "✓",
|
|
87
|
-
iconBg: "bg-emerald-50",
|
|
88
|
-
iconColor: "text-emerald-600",
|
|
89
|
-
confirmBtn: "bg-emerald-600 hover:bg-emerald-500 text-white",
|
|
90
|
-
check: "accent-emerald-600"
|
|
91
|
-
},
|
|
92
|
-
warning: {
|
|
93
|
-
icon: "!",
|
|
94
|
-
iconBg: "bg-amber-50",
|
|
95
|
-
iconColor: "text-amber-600",
|
|
96
|
-
confirmBtn: "bg-amber-600 hover:bg-amber-500 text-white",
|
|
97
|
-
check: "accent-amber-600"
|
|
98
|
-
}
|
|
99
|
-
};
|
|
100
|
-
const tone = derived(() => current()?.opts.tone ?? (current()?.kind === "alert" ? "info" : "default"));
|
|
101
|
-
const style = derived(() => toneStyles[tone()]);
|
|
102
|
-
if (current()) {
|
|
103
|
-
$$renderer.push("<!--[0-->");
|
|
104
|
-
$$renderer.push(`<div class="fixed inset-0 z-100 flex items-center justify-center px-4" role="presentation"><button type="button" aria-label="Dismiss" class="absolute inset-0 bg-slate-950/40 backdrop-blur-sm"></button> <div role="dialog" aria-modal="true" aria-labelledby="app-dialog-title" aria-describedby="app-dialog-message"${attr_class(`relative w-full ${current().kind === "checklist" || current().kind === "choice" ? "max-w-lg" : "max-w-md"} overflow-hidden rounded-2xl border border-hairline bg-white shadow-2xl shadow-slate-950/20`)}><div class="flex gap-4 px-7 pt-7 pb-5"><div${attr_class(`flex h-11 w-11 shrink-0 items-center justify-center rounded-full text-lg ${style().iconBg} ${style().iconColor}`)}>${escape_html(style().icon)}</div> <div class="min-w-0 flex-1 pt-1"><h2 id="app-dialog-title" class="text-lg leading-tight text-slate-950">${escape_html(current().opts.title)}</h2> <p id="app-dialog-message" class="mt-2 whitespace-pre-line text-sm leading-relaxed text-slate-600">${escape_html(current().opts.message)}</p></div></div> `);
|
|
105
|
-
if (current().kind === "choice") {
|
|
106
|
-
$$renderer.push("<!--[0-->");
|
|
107
|
-
$$renderer.push(`<div class="px-7 pt-2 pb-5"><ul class="flex max-h-80 flex-col gap-3 overflow-y-auto"><!--[-->`);
|
|
108
|
-
const each_array = ensure_array_like(current().opts.options);
|
|
109
|
-
for (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {
|
|
110
|
-
let option = each_array[$$index];
|
|
111
|
-
$$renderer.push(`<li class="flex"><button type="button"${attr_class(`group flex w-full items-center justify-between gap-4 rounded-xl px-5 py-4 text-left shadow-sm shadow-slate-950/5 transition hover:shadow-md focus:ring-2 focus:ring-offset-2 focus:outline-none ${style().confirmBtn}`)}><span class="min-w-0 flex-1"><span class="block text-sm">${escape_html(option.label)}</span> `);
|
|
112
|
-
if (option.description) {
|
|
113
|
-
$$renderer.push("<!--[0-->");
|
|
114
|
-
$$renderer.push(`<span class="mt-1 block text-xs leading-relaxed opacity-80">${escape_html(option.description)}</span>`);
|
|
115
|
-
} else $$renderer.push("<!--[-1-->");
|
|
116
|
-
$$renderer.push(`<!--]--></span> <span aria-hidden="true" class="shrink-0 text-base transition group-hover:translate-x-1">→</span></button></li>`);
|
|
117
|
-
}
|
|
118
|
-
$$renderer.push(`<!--]--></ul></div>`);
|
|
119
|
-
} else if (current().kind === "prompt") {
|
|
120
|
-
$$renderer.push("<!--[1-->");
|
|
121
|
-
$$renderer.push(`<div class="px-7 pt-1 pb-4"><label class="block text-xs font-medium text-slate-700">${escape_html(current().opts.inputLabel ?? "Value")} <input${attr("value", inputValue)}${attr("type", current().opts.password ? "password" : "text")}${attr("autocomplete", current().opts.password ? "new-password" : "off")} autocorrect="off" autocapitalize="off" spellcheck="false"${attr("placeholder", current().opts.placeholder ?? "")} class="mono mt-1 h-10 w-full rounded-md border border-slate-300 bg-white px-3 text-sm outline-none focus:border-brand-700 focus:ring-2 focus:ring-brand-100"/></label> `);
|
|
122
|
-
$$renderer.push("<!--[-1-->");
|
|
123
|
-
$$renderer.push(`<!--]--></div>`);
|
|
124
|
-
} else if (current().kind === "checklist") {
|
|
125
|
-
$$renderer.push("<!--[2-->");
|
|
126
|
-
$$renderer.push(`<div class="border-t border-hairline px-6 py-3"><div class="mb-2 flex items-center justify-between"><span class="text-xs font-medium uppercase tracking-wide text-slate-500">${escape_html(selected.size)} of ${escape_html(current().opts.items.length)} selected</span> <div class="flex gap-2 text-xs"><button type="button" class="font-medium text-slate-600 hover:text-slate-950">Select all</button> <span class="text-slate-300">·</span> <button type="button" class="font-medium text-slate-600 hover:text-slate-950">Select none</button></div></div> <ul class="max-h-72 space-y-1.5 overflow-y-auto rounded-lg border border-hairline bg-slate-50 p-2"><!--[-->`);
|
|
127
|
-
const each_array_1 = ensure_array_like(current().opts.items);
|
|
128
|
-
for (let $$index_1 = 0, $$length = each_array_1.length; $$index_1 < $$length; $$index_1++) {
|
|
129
|
-
let item = each_array_1[$$index_1];
|
|
130
|
-
$$renderer.push(`<li><label class="flex cursor-pointer items-start gap-3 rounded-md px-2 py-2 transition hover:bg-white"><input type="checkbox"${attr_class(`mt-0.5 h-4 w-4 rounded ${style().check}`)}${attr("checked", selected.has(item.id), true)}/> <span class="min-w-0 flex-1"><span class="block text-sm font-medium text-slate-900">${escape_html(item.label)}</span> `);
|
|
131
|
-
if (item.description) {
|
|
132
|
-
$$renderer.push("<!--[0-->");
|
|
133
|
-
$$renderer.push(`<span class="mt-0.5 block text-xs text-slate-500">${escape_html(item.description)}</span>`);
|
|
134
|
-
} else $$renderer.push("<!--[-1-->");
|
|
135
|
-
$$renderer.push(`<!--]--></span></label></li>`);
|
|
136
|
-
}
|
|
137
|
-
$$renderer.push(`<!--]--></ul></div>`);
|
|
138
|
-
} else $$renderer.push("<!--[-1-->");
|
|
139
|
-
$$renderer.push(`<!--]--> <div class="flex justify-end gap-2 border-t border-hairline bg-slate-50 px-7 py-3">`);
|
|
140
|
-
if (current().kind === "alert") {
|
|
141
|
-
$$renderer.push("<!--[0-->");
|
|
142
|
-
$$renderer.push(`<button type="button"${attr_class(`rounded-md px-4 py-2 text-sm transition ${style().confirmBtn}`)}>${escape_html(current().opts.buttonLabel ?? "OK")}</button>`);
|
|
143
|
-
} else if (current().kind === "choice") {
|
|
144
|
-
$$renderer.push("<!--[1-->");
|
|
145
|
-
$$renderer.push(`<button type="button" class="rounded-md px-3 py-2 text-sm text-slate-600 transition hover:text-slate-950">${escape_html(current().opts.cancelLabel ?? "Close")}</button>`);
|
|
146
|
-
} else {
|
|
147
|
-
$$renderer.push("<!--[-1-->");
|
|
148
|
-
$$renderer.push(`<button type="button" class="rounded-md border border-slate-300 bg-white px-4 py-2 text-sm text-slate-700 transition hover:bg-slate-100">${escape_html(current().opts.cancelLabel ?? "Cancel")}</button> <button type="button"${attr_class(`rounded-md px-4 py-2 text-sm transition focus:ring-2 focus:ring-offset-2 focus:outline-none ${style().confirmBtn}`)}>${escape_html(current().opts.confirmLabel ?? "Confirm")}</button>`);
|
|
149
|
-
}
|
|
150
|
-
$$renderer.push(`<!--]--></div></div></div>`);
|
|
151
|
-
} else $$renderer.push("<!--[-1-->");
|
|
152
|
-
$$renderer.push(`<!--]-->`);
|
|
153
|
-
});
|
|
154
|
-
}
|
|
155
|
-
//#endregion
|
|
156
|
-
//#region src/shared/presentation/easter-eggs/FlyingSpaghettiEasterEgg.svelte
|
|
157
|
-
function FlyingSpaghettiEasterEgg($$renderer, $$props) {
|
|
158
|
-
$$renderer.component(($$renderer) => {
|
|
159
|
-
$$renderer.push("<!--[-1-->");
|
|
160
|
-
$$renderer.push(`<!--]-->`);
|
|
161
|
-
});
|
|
162
|
-
}
|
|
163
|
-
//#endregion
|
|
164
|
-
//#region src/shared/presentation/toast/syncToastStore.svelte.ts
|
|
165
|
-
var MAX_VISIBLE = 4;
|
|
166
|
-
var DEFAULT_TTL_MS = 5e3;
|
|
167
|
-
var hrefFor = (evt) => {
|
|
168
|
-
if (evt.op === "delete") return void 0;
|
|
169
|
-
switch (evt.kind) {
|
|
170
|
-
case "feature": return `/features/${evt.id}`;
|
|
171
|
-
case "project": return `/projects/${evt.id}`;
|
|
172
|
-
case "implementation-status": return `/features/${evt.id}`;
|
|
173
|
-
}
|
|
174
|
-
};
|
|
175
|
-
var DEDUPE_WINDOW_MS = 800;
|
|
176
|
-
var SyncToastStore = class {
|
|
177
|
-
toasts = [];
|
|
178
|
-
nextId = 1;
|
|
179
|
-
subscribed = false;
|
|
180
|
-
unsubscribe = null;
|
|
181
|
-
timers = /* @__PURE__ */ new Map();
|
|
182
|
-
/**
|
|
183
|
-
* Implementation-status writes ride the same notify channel as feature
|
|
184
|
-
* saves, but they fire as part of every audit pass and would spam the
|
|
185
|
-
* toast feed. Tracked per-(kind:id) so a burst of identical events
|
|
186
|
-
* within DEDUPE_WINDOW_MS collapses into a single toast.
|
|
187
|
-
*/
|
|
188
|
-
recentKeys = /* @__PURE__ */ new Map();
|
|
189
|
-
/**
|
|
190
|
-
* Idempotent. Call once from the root layout. Re-calls are no-ops, so
|
|
191
|
-
* mounting/unmounting layout fragments won't tear the stream down.
|
|
192
|
-
*/
|
|
193
|
-
start() {
|
|
194
|
-
if (this.subscribed) return;
|
|
195
|
-
this.subscribed = true;
|
|
196
|
-
this.unsubscribe = subscribeSyncEvents();
|
|
197
|
-
}
|
|
198
|
-
dismiss(id) {
|
|
199
|
-
const timer = this.timers.get(id);
|
|
200
|
-
if (timer) {
|
|
201
|
-
clearTimeout(timer);
|
|
202
|
-
this.timers.delete(id);
|
|
203
|
-
}
|
|
204
|
-
this.toasts = this.toasts.filter((t) => t.id !== id);
|
|
205
|
-
}
|
|
206
|
-
/** Test/teardown hook. Not used in production. */
|
|
207
|
-
reset() {
|
|
208
|
-
for (const t of this.timers.values()) clearTimeout(t);
|
|
209
|
-
this.timers.clear();
|
|
210
|
-
this.toasts = [];
|
|
211
|
-
this.recentKeys.clear();
|
|
212
|
-
if (this.unsubscribe) this.unsubscribe();
|
|
213
|
-
this.unsubscribe = null;
|
|
214
|
-
this.subscribed = false;
|
|
215
|
-
}
|
|
216
|
-
handle(evt) {
|
|
217
|
-
const key = `${evt.kind}:${evt.id}:${evt.op ?? "save"}`;
|
|
218
|
-
const now = Date.now();
|
|
219
|
-
const seen = this.recentKeys.get(key);
|
|
220
|
-
if (seen !== void 0 && now - seen < DEDUPE_WINDOW_MS) {
|
|
221
|
-
this.recentKeys.set(key, now);
|
|
222
|
-
return;
|
|
223
|
-
}
|
|
224
|
-
this.recentKeys.set(key, now);
|
|
225
|
-
const id = this.nextId++;
|
|
226
|
-
const next = [{
|
|
227
|
-
id,
|
|
228
|
-
kind: evt.kind,
|
|
229
|
-
entityId: evt.id,
|
|
230
|
-
name: evt.name,
|
|
231
|
-
projectName: evt.projectName,
|
|
232
|
-
op: evt.op ?? "save",
|
|
233
|
-
changeOp: evt.changeOp,
|
|
234
|
-
changePath: evt.changePath,
|
|
235
|
-
previousName: evt.previousName,
|
|
236
|
-
actingFor: evt.actingFor,
|
|
237
|
-
...hrefFor(evt) ? { href: hrefFor(evt) } : {}
|
|
238
|
-
}, ...this.toasts].slice(0, MAX_VISIBLE);
|
|
239
|
-
const surviving = new Set(next.map((t) => t.id));
|
|
240
|
-
for (const [oldId, timer] of this.timers) if (!surviving.has(oldId)) {
|
|
241
|
-
clearTimeout(timer);
|
|
242
|
-
this.timers.delete(oldId);
|
|
243
|
-
}
|
|
244
|
-
this.toasts = next;
|
|
245
|
-
const timer = setTimeout(() => this.dismiss(id), DEFAULT_TTL_MS);
|
|
246
|
-
this.timers.set(id, timer);
|
|
247
|
-
}
|
|
248
|
-
};
|
|
249
|
-
var syncToastStore = new SyncToastStore();
|
|
250
|
-
//#endregion
|
|
251
|
-
//#region src/shared/presentation/toast/SyncToast.svelte
|
|
252
|
-
function SyncToast($$renderer, $$props) {
|
|
253
|
-
$$renderer.component(($$renderer) => {
|
|
254
|
-
function kindLabel(kind) {
|
|
255
|
-
switch (kind) {
|
|
256
|
-
case "feature": return "feature";
|
|
257
|
-
case "project": return "project";
|
|
258
|
-
case "implementation-status": return "status";
|
|
259
|
-
}
|
|
260
|
-
}
|
|
261
|
-
function kindAccent(kind) {
|
|
262
|
-
switch (kind) {
|
|
263
|
-
case "feature": return "border-cyan-200 bg-cyan-50";
|
|
264
|
-
case "project": return "border-violet-200 bg-violet-50";
|
|
265
|
-
case "implementation-status": return "border-emerald-200 bg-emerald-50";
|
|
266
|
-
}
|
|
267
|
-
}
|
|
268
|
-
function opLabel(toast) {
|
|
269
|
-
if (toast.op === "delete") return "deleted";
|
|
270
|
-
switch (toast.changeOp) {
|
|
271
|
-
case "added": return "added";
|
|
272
|
-
case "removed": return "removed";
|
|
273
|
-
case "renamed": return "renamed";
|
|
274
|
-
case "edited": return "edited";
|
|
275
|
-
case "queued": return "queued";
|
|
276
|
-
case "unqueued": return "unqueued";
|
|
277
|
-
case "created": return "created";
|
|
278
|
-
case "deleted": return "deleted";
|
|
279
|
-
default: return "saved";
|
|
280
|
-
}
|
|
281
|
-
}
|
|
282
|
-
function breadcrumb(toast) {
|
|
283
|
-
const parts = [];
|
|
284
|
-
if (toast.projectName) parts.push(toast.projectName);
|
|
285
|
-
const root = toast.changePath?.[0];
|
|
286
|
-
const headIsEntity = root !== void 0 && (toast.name === root || !toast.name);
|
|
287
|
-
if (toast.name && !headIsEntity) parts.push(toast.name);
|
|
288
|
-
if (toast.changePath && toast.changePath.length > 0) for (const segment of toast.changePath) parts.push(segment);
|
|
289
|
-
else if (toast.name && parts[parts.length - 1] !== toast.name) parts.push(toast.name);
|
|
290
|
-
const cleaned = [];
|
|
291
|
-
for (const seg of parts) {
|
|
292
|
-
if (seg === "unknown") continue;
|
|
293
|
-
if (cleaned[cleaned.length - 1] !== seg) cleaned.push(seg);
|
|
294
|
-
}
|
|
295
|
-
if (cleaned.length === 0) cleaned.push(toast.entityId);
|
|
296
|
-
return cleaned;
|
|
297
|
-
}
|
|
298
|
-
if (syncToastStore.toasts.length > 0) {
|
|
299
|
-
$$renderer.push("<!--[0-->");
|
|
300
|
-
$$renderer.push(`<div class="pointer-events-none fixed top-20 right-4 z-50 flex w-full max-w-md flex-col gap-2" role="status" aria-live="polite"><!--[-->`);
|
|
301
|
-
const each_array = ensure_array_like(syncToastStore.toasts);
|
|
302
|
-
for (let $$index_1 = 0, $$length = each_array.length; $$index_1 < $$length; $$index_1++) {
|
|
303
|
-
let toast = each_array[$$index_1];
|
|
304
|
-
const crumbs = breadcrumb(toast);
|
|
305
|
-
$$renderer.push(`<div${attr_class(`pointer-events-auto flex items-start gap-3 rounded-lg border px-3 py-2 shadow-md shadow-slate-950/10 ${stringify(kindAccent(toast.kind))}`)}><div class="min-w-0 flex-1"><div class="flex flex-wrap items-center gap-x-1.5 gap-y-0.5 text-[10px] font-semibold uppercase tracking-wide"><span class="text-slate-500">MCP · ${escape_html(opLabel(toast))} ${escape_html(kindLabel(toast.kind))}</span> `);
|
|
306
|
-
if (toast.actingFor) {
|
|
307
|
-
$$renderer.push("<!--[0-->");
|
|
308
|
-
$$renderer.push(`<span class="rounded bg-purple-100 px-1.5 py-0.5 text-[9px] text-purple-800">for ${escape_html(toast.actingFor)}</span>`);
|
|
309
|
-
} else $$renderer.push("<!--[-1-->");
|
|
310
|
-
$$renderer.push(`<!--]--></div> <div class="mt-0.5 flex min-w-0 flex-wrap items-center gap-x-1 text-sm text-slate-900"><!--[-->`);
|
|
311
|
-
const each_array_1 = ensure_array_like(crumbs);
|
|
312
|
-
for (let i = 0, $$length = each_array_1.length; i < $$length; i++) {
|
|
313
|
-
let segment = each_array_1[i];
|
|
314
|
-
if (i > 0) {
|
|
315
|
-
$$renderer.push("<!--[0-->");
|
|
316
|
-
$$renderer.push(`<span class="shrink-0 text-slate-400" aria-hidden="true">›</span>`);
|
|
317
|
-
} else $$renderer.push("<!--[-1-->");
|
|
318
|
-
$$renderer.push(`<!--]--> <span${attr_class(`truncate ${i === crumbs.length - 1 ? "font-semibold" : "text-slate-600"}`)}>${escape_html(segment)}</span>`);
|
|
319
|
-
}
|
|
320
|
-
$$renderer.push(`<!--]--></div> `);
|
|
321
|
-
if (toast.changeOp === "renamed" && toast.previousName) {
|
|
322
|
-
$$renderer.push("<!--[0-->");
|
|
323
|
-
$$renderer.push(`<div class="mt-0.5 truncate text-[11px] text-slate-500">was “${escape_html(toast.previousName)}”</div>`);
|
|
324
|
-
} else $$renderer.push("<!--[-1-->");
|
|
325
|
-
$$renderer.push(`<!--]--></div> <div class="flex shrink-0 items-center gap-1">`);
|
|
326
|
-
if (toast.href) {
|
|
327
|
-
$$renderer.push("<!--[0-->");
|
|
328
|
-
$$renderer.push(`<a${attr("href", toast.href)} class="rounded-md bg-white/70 px-2 py-1 text-xs font-medium text-slate-700 hover:bg-white hover:text-brand-800">View</a>`);
|
|
329
|
-
} else $$renderer.push("<!--[-1-->");
|
|
330
|
-
$$renderer.push(`<!--]--> <button type="button" class="rounded-md px-1.5 py-1 text-xs text-slate-500 hover:bg-white/70 hover:text-slate-900" aria-label="Dismiss">✕</button></div></div>`);
|
|
331
|
-
}
|
|
332
|
-
$$renderer.push(`<!--]--></div>`);
|
|
333
|
-
} else $$renderer.push("<!--[-1-->");
|
|
334
|
-
$$renderer.push(`<!--]-->`);
|
|
335
|
-
});
|
|
336
|
-
}
|
|
337
|
-
//#endregion
|
|
338
|
-
//#region src/features/tutorial/presentation/components/TourPanel.svelte
|
|
339
|
-
function TourPanel($$renderer, $$props) {
|
|
340
|
-
$$renderer.component(($$renderer) => {
|
|
341
|
-
/**
|
|
342
|
-
* The side-panel UI of the tour: title, body, navigation buttons,
|
|
343
|
-
* "go to route" CTA when the user is on the wrong page.
|
|
344
|
-
*
|
|
345
|
-
* Rendered as a `[popover="manual"]` element so the browser places it
|
|
346
|
-
* in the top layer cross-browser. Native `<dialog>.show()` is only
|
|
347
|
-
* top-layer in Chromium; the Popover API is the cross-browser
|
|
348
|
-
* equivalent and supports the same "last opened wins" re-stacking we
|
|
349
|
-
* need to bump the panel above any modal dialog the app opens during
|
|
350
|
-
* the tour.
|
|
351
|
-
*
|
|
352
|
-
* Pure view: receives all dynamic data via props + callbacks, owns no
|
|
353
|
-
* state, knows nothing about the DOM at large. The orchestrator
|
|
354
|
-
* (TourOverlay) feeds it the active step, the resolved position, and
|
|
355
|
-
* the canAdvance verdict.
|
|
356
|
-
*/
|
|
357
|
-
/** 1-based index of the current step. */
|
|
358
|
-
/** True when the page route already matches the step's `route.pathname`. */
|
|
359
|
-
/** Resolved by the parent based on the step + target rect. */
|
|
360
|
-
/** Whether the user has fulfilled the step's requirements (for manual-advance steps). */
|
|
361
|
-
/**
|
|
362
|
-
* Bound by the parent so it can call .showPopover()/.hidePopover()
|
|
363
|
-
* on the underlying element.
|
|
364
|
-
*/
|
|
365
|
-
let { step, stepNumber, totalSteps, onCorrectRoute, placement, nextEnabled} = $$props;
|
|
366
|
-
const isFirst = derived(() => stepNumber === 1);
|
|
367
|
-
const isLast = derived(() => stepNumber === totalSteps);
|
|
368
|
-
/** Inline style string for the popover. Adds 1.5rem margins on edges. */
|
|
369
|
-
const positionStyle = derived(() => {
|
|
370
|
-
switch (placement.kind) {
|
|
371
|
-
case "bottom-right": return "bottom: 1.5rem; right: 1.5rem; left: auto; top: auto;";
|
|
372
|
-
case "bottom-left": return "bottom: 1.5rem; left: 1.5rem; right: auto; top: auto;";
|
|
373
|
-
case "absolute": return `top: ${placement.top}px; left: ${placement.left}px; bottom: auto; right: auto;`;
|
|
374
|
-
}
|
|
375
|
-
});
|
|
376
|
-
$$renderer.push(`<aside popover="manual" class="fixed z-1010 m-0 w-80 max-w-[calc(100vw-3rem)] rounded-xl border border-brand-200 bg-white p-4 shadow-2xl shadow-slate-950/20 transition-[top,left,bottom,right] duration-200"${attr_style(positionStyle())} aria-label="Interactive tutorial"><header class="mb-2 flex items-start justify-between gap-3"><div class="min-w-0"><p class="text-[10px] font-semibold uppercase tracking-wide text-brand-700">Tutorial · step ${escape_html(stepNumber)} of ${escape_html(totalSteps)}</p> <h3 class="mt-0.5 text-sm font-semibold text-slate-950">${escape_html(step.title)}</h3></div> <button type="button" class="rounded-md px-1.5 py-0.5 text-xs text-slate-400 hover:bg-slate-100 hover:text-slate-700" aria-label="Exit tutorial" title="Exit tutorial">x</button></header> <p class="whitespace-pre-line text-xs leading-5 text-slate-700">${escape_html(step.body)}</p> `);
|
|
377
|
-
if (!onCorrectRoute && step.route) {
|
|
378
|
-
$$renderer.push("<!--[0-->");
|
|
379
|
-
$$renderer.push(`<div class="mt-3 rounded-md border border-amber-200 bg-amber-50 px-2.5 py-2 text-[11px] text-amber-900"><p class="mb-1.5 font-medium">First, head to the right page.</p> <button type="button" class="rounded-md bg-slate-900 px-2.5 py-1 text-[11px] font-medium text-white hover:bg-slate-800">${escape_html(step.route.label)} →</button></div>`);
|
|
380
|
-
} else if (step.advance.kind === "click") {
|
|
381
|
-
$$renderer.push("<!--[1-->");
|
|
382
|
-
$$renderer.push(`<p class="mt-3 text-[10px] italic text-slate-500">Click the highlighted element to continue.</p>`);
|
|
383
|
-
} else if (step.advance.kind === "event") {
|
|
384
|
-
$$renderer.push("<!--[2-->");
|
|
385
|
-
$$renderer.push(`<p class="mt-3 text-[10px] italic text-slate-500">Do the action above to continue.</p>`);
|
|
386
|
-
} else if (step.advance.kind === "manual" && !nextEnabled) {
|
|
387
|
-
$$renderer.push("<!--[3-->");
|
|
388
|
-
$$renderer.push(`<p class="mt-3 text-[10px] italic text-amber-700">Finish the action above first, then click Next.</p>`);
|
|
389
|
-
} else $$renderer.push("<!--[-1-->");
|
|
390
|
-
$$renderer.push(`<!--]--> <footer class="mt-3 flex items-center justify-between gap-2"><button type="button"${attr("disabled", isFirst(), true)} class="rounded-md p-1 text-slate-500 hover:bg-slate-100 hover:text-slate-800 disabled:cursor-not-allowed disabled:opacity-30" aria-label="Previous step" title="Back">←</button> <button type="button" class="rounded-md border border-slate-300 bg-white px-2.5 py-1 text-[11px] font-medium text-slate-600 hover:bg-slate-50">Exit</button> <button type="button"${attr("disabled", !nextEnabled, true)} class="rounded-md bg-brand-700 px-3 py-1 text-[11px] font-semibold text-white hover:bg-brand-800 disabled:cursor-not-allowed disabled:bg-slate-300"${attr("title", nextEnabled ? isLast() ? "Finish the tour" : "Next step" : "Finish the current action first")}>${escape_html(isLast() ? "Finish" : "Next")} →</button></footer></aside>`);
|
|
391
|
-
});
|
|
392
|
-
}
|
|
393
|
-
//#endregion
|
|
394
|
-
//#region src/features/tutorial/presentation/components/TourSpotlight.svelte
|
|
395
|
-
function TourSpotlight($$renderer, $$props) {
|
|
396
|
-
$$renderer.component(($$renderer) => {
|
|
397
|
-
/**
|
|
398
|
-
* Renders the visual highlight for a tour step:
|
|
399
|
-
* - a ring + box-shadow cutout around `rect` when a target is found
|
|
400
|
-
* and the rect overlaps the viewport
|
|
401
|
-
* - an arrow indicator pinned to the top or bottom of the viewport
|
|
402
|
-
* when the target is off-screen (the user scrolled away)
|
|
403
|
-
* - a full-screen dim when there is no target (welcome / done steps)
|
|
404
|
-
*
|
|
405
|
-
* Pure view: takes a rect, renders pixels. Knows nothing about where
|
|
406
|
-
* the rect comes from and nothing about the tour engine. Keeping this
|
|
407
|
-
* component dumb is what lets the spotlight be reused for future tour
|
|
408
|
-
* flavors (e.g. an "explore mode" that highlights without an active
|
|
409
|
-
* tour step).
|
|
410
|
-
*/
|
|
411
|
-
/** Viewport rect of the element to highlight, or null for a full-screen dim. */
|
|
412
|
-
/** Viewport rect of the element to highlight, or null for a full-screen dim. */
|
|
413
|
-
let { rect } = $$props;
|
|
414
|
-
const PAD = 10;
|
|
415
|
-
const ring = derived(() => {
|
|
416
|
-
if (!rect) return null;
|
|
417
|
-
return {
|
|
418
|
-
top: rect.top - PAD,
|
|
419
|
-
left: rect.left - PAD,
|
|
420
|
-
width: rect.width + PAD * 2,
|
|
421
|
-
height: rect.height + PAD * 2
|
|
422
|
-
};
|
|
423
|
-
});
|
|
424
|
-
/**
|
|
425
|
-
* Off-screen state of the target:
|
|
426
|
-
* - 'above': target is above the visible viewport (or behind sticky header)
|
|
427
|
-
* - 'below': target is below the visible viewport
|
|
428
|
-
* - 'visible': at least partially in view
|
|
429
|
-
* - null: no target (full-screen dim case)
|
|
430
|
-
*/
|
|
431
|
-
const offscreen = derived(() => {
|
|
432
|
-
return null;
|
|
433
|
-
});
|
|
434
|
-
if (ring() && offscreen() === "visible") {
|
|
435
|
-
$$renderer.push("<!--[0-->");
|
|
436
|
-
$$renderer.push(`<div class="pointer-events-none fixed z-20 rounded-lg ring-4 ring-brand-400 ring-offset-2 ring-offset-transparent"${attr_style(`top: ${stringify(ring().top)}px; left: ${stringify(ring().left)}px; width: ${stringify(ring().width)}px; height: ${stringify(ring().height)}px; box-shadow: 0 0 0 9999px rgba(15, 23, 42, 0.55);`)} aria-hidden="true"></div>`);
|
|
437
|
-
} else if (ring() && offscreen() === "above") {
|
|
438
|
-
$$renderer.push("<!--[1-->");
|
|
439
|
-
$$renderer.push(`<div class="pointer-events-none fixed inset-0 z-20 bg-slate-950/55" aria-hidden="true"></div> <button type="button" class="pointer-events-auto fixed left-1/2 top-20 z-1015 inline-flex -translate-x-1/2 items-center gap-2 rounded-full border border-brand-300 bg-white px-4 py-2 text-xs font-semibold text-brand-800 shadow-lg shadow-slate-950/30 animate-pulse hover:bg-brand-50" aria-label="Scroll up to see highlighted element"><span aria-hidden="true">↑</span> <span>Highlight is above — click to scroll up</span></button>`);
|
|
440
|
-
} else if (ring() && offscreen() === "below") {
|
|
441
|
-
$$renderer.push("<!--[2-->");
|
|
442
|
-
$$renderer.push(`<div class="pointer-events-none fixed inset-0 z-20 bg-slate-950/55" aria-hidden="true"></div> <button type="button" class="pointer-events-auto fixed left-1/2 bottom-24 z-1015 inline-flex -translate-x-1/2 items-center gap-2 rounded-full border border-brand-300 bg-white px-4 py-2 text-xs font-semibold text-brand-800 shadow-lg shadow-slate-950/30 animate-pulse hover:bg-brand-50" aria-label="Scroll down to see highlighted element"><span>Highlight is below — click to scroll down</span> <span aria-hidden="true">↓</span></button>`);
|
|
443
|
-
} else {
|
|
444
|
-
$$renderer.push("<!--[-1-->");
|
|
445
|
-
$$renderer.push(`<div class="pointer-events-none fixed inset-0 z-20 bg-slate-950/55" aria-hidden="true"></div>`);
|
|
446
|
-
}
|
|
447
|
-
$$renderer.push(`<!--]-->`);
|
|
448
|
-
});
|
|
449
|
-
}
|
|
450
|
-
//#endregion
|
|
451
|
-
//#region src/features/tutorial/presentation/components/TourOverlay.svelte
|
|
452
|
-
function TourOverlay($$renderer, $$props) {
|
|
453
|
-
$$renderer.component(($$renderer) => {
|
|
454
|
-
/**
|
|
455
|
-
* Thin orchestrator. Composes:
|
|
456
|
-
* - TourPanel (the side-panel UI, rendered as a `[popover]`)
|
|
457
|
-
* - TourSpotlight (the highlight ring / full-screen dim)
|
|
458
|
-
* - useTargetTracker (DOM observer that maps selector → live rect)
|
|
459
|
-
* - inputPrefill (seeds tour-nominated inputs)
|
|
460
|
-
* - topLayerStacker (keeps the panel above other top-layer dialogs)
|
|
461
|
-
*
|
|
462
|
-
* Each chunk knows one thing. This file's only job is gluing them to
|
|
463
|
-
* the tour store and to the SvelteKit `page` for the route check.
|
|
464
|
-
*/
|
|
465
|
-
const step = derived(() => tourStore.currentStep);
|
|
466
|
-
const onCorrectRoute = derived(() => {
|
|
467
|
-
if (!step()?.route) return true;
|
|
468
|
-
return page.url?.pathname === step().route.pathname;
|
|
469
|
-
});
|
|
470
|
-
const targetRect = derived(() => null);
|
|
471
|
-
/**
|
|
472
|
-
* Resolved panel placement honouring the step's `panelPosition` hint:
|
|
473
|
-
* - `bottom-right` (default): pinned corner.
|
|
474
|
-
* - `avoid-target`: flip to bottom-left if the target sits in the
|
|
475
|
-
* right half of the viewport (simulator steps).
|
|
476
|
-
* - `below-target`: position directly under the highlighted rect,
|
|
477
|
-
* centred horizontally. Falls back to bottom-right if there's no
|
|
478
|
-
* room or no target.
|
|
479
|
-
*/
|
|
480
|
-
const PANEL_WIDTH = 320;
|
|
481
|
-
const PANEL_HEIGHT_ESTIMATE = 220;
|
|
482
|
-
const PANEL_MARGIN = 16;
|
|
483
|
-
const panelPlacement = derived(() => {
|
|
484
|
-
if (typeof window === "undefined") return { kind: "bottom-right" };
|
|
485
|
-
const mode = step()?.panelPosition ?? "bottom-right";
|
|
486
|
-
if (mode === "avoid-target") {
|
|
487
|
-
if (!targetRect()) return { kind: "bottom-right" };
|
|
488
|
-
return targetRect().left + targetRect().width / 2 > window.innerWidth / 2 ? { kind: "bottom-left" } : { kind: "bottom-right" };
|
|
489
|
-
}
|
|
490
|
-
if (mode === "below-target" && targetRect()) {
|
|
491
|
-
const top = targetRect().bottom + PANEL_MARGIN;
|
|
492
|
-
if (top + PANEL_HEIGHT_ESTIMATE > window.innerHeight - PANEL_MARGIN) return { kind: "bottom-right" };
|
|
493
|
-
const centredLeft = targetRect().left + targetRect().width / 2 - PANEL_WIDTH / 2;
|
|
494
|
-
return {
|
|
495
|
-
kind: "absolute",
|
|
496
|
-
top,
|
|
497
|
-
left: Math.max(PANEL_MARGIN, Math.min(centredLeft, window.innerWidth - PANEL_WIDTH - PANEL_MARGIN))
|
|
498
|
-
};
|
|
499
|
-
}
|
|
500
|
-
return { kind: "bottom-right" };
|
|
501
|
-
});
|
|
502
|
-
/**
|
|
503
|
-
* Whether the Next button should be enabled. Manual steps default
|
|
504
|
-
* to enabled; click/event steps default to disabled (only the natural
|
|
505
|
-
* trigger advances). A step's optional `canAdvance` predicate
|
|
506
|
-
* overrides the manual default — used by the form-modification steps
|
|
507
|
-
* to gate Next until the user has actually added the
|
|
508
|
-
* parameter/effect/rule.
|
|
509
|
-
*/
|
|
510
|
-
const nextEnabled = derived(() => {
|
|
511
|
-
if (!step()) return false;
|
|
512
|
-
if (step().advance.kind !== "manual") return false;
|
|
513
|
-
if (step().canAdvance) return step().canAdvance();
|
|
514
|
-
return true;
|
|
515
|
-
});
|
|
516
|
-
if (step()) {
|
|
517
|
-
$$renderer.push("<!--[0-->");
|
|
518
|
-
if (onCorrectRoute()) {
|
|
519
|
-
$$renderer.push("<!--[0-->");
|
|
520
|
-
TourSpotlight($$renderer, { rect: targetRect() });
|
|
521
|
-
} else $$renderer.push("<!--[-1-->");
|
|
522
|
-
$$renderer.push(`<!--]--> `);
|
|
523
|
-
TourPanel($$renderer, {
|
|
524
|
-
step: step(),
|
|
525
|
-
stepNumber: tourStore.stepIndex + 1,
|
|
526
|
-
totalSteps: tourStore.totalSteps,
|
|
527
|
-
onCorrectRoute: onCorrectRoute(),
|
|
528
|
-
placement: panelPlacement(),
|
|
529
|
-
nextEnabled: nextEnabled()});
|
|
530
|
-
$$renderer.push(`<!---->`);
|
|
531
|
-
} else $$renderer.push("<!--[-1-->");
|
|
532
|
-
$$renderer.push(`<!--]-->`);
|
|
533
|
-
});
|
|
534
|
-
}
|
|
535
|
-
//#endregion
|
|
536
|
-
//#region src/routes/+layout.svelte
|
|
537
|
-
function _layout($$renderer, $$props) {
|
|
538
|
-
$$renderer.component(($$renderer) => {
|
|
539
|
-
const initial = derived(() => identityStore.name.trim().charAt(0).toUpperCase());
|
|
540
|
-
let identityMenuOpen = false;
|
|
541
|
-
let settingsMenuOpen = false;
|
|
542
|
-
let { children } = $$props;
|
|
543
|
-
const views = derived(enabledViews);
|
|
544
|
-
const showViewSwitcher = derived(() => views().length > 1);
|
|
545
|
-
const builderActive = derived(() => isEnabled("builder") && page.url.pathname.startsWith("/builder-mode"));
|
|
546
|
-
const mcpActive = derived(() => page.url.pathname.startsWith("/mcp"));
|
|
547
|
-
const dark = derived(builderActive);
|
|
548
|
-
const builderProject = derived(() => builderActive() ? builderModeStore.selectedProject : null);
|
|
549
|
-
const builderSearch = derived(() => builderModeStore.search);
|
|
550
|
-
$$renderer.push(`<div class="flex min-h-full flex-col bg-[linear-gradient(180deg,#f0fdfa_0%,#f8fafc_220px,#f8fafc_100%)] text-ink"><header${attr_class(`sticky top-0 z-30 border-b backdrop-blur transition-colors ${dark() ? "border-slate-800 bg-slate-950/90" : "border-slate-200 bg-white/95"}`)}><div class="mx-auto flex h-16 max-w-6xl items-center justify-between px-4 sm:px-6"><div class="flex min-w-0 items-center gap-3"><a href="/" class="flex shrink-0 items-center gap-2"><img src="/unspaghettit_logo.png" alt="Unspaghettit" class="h-12 w-auto"/> <span${attr_class(`relative hidden font-brand text-3xl font-semibold leading-none sm:inline-block ${dark() ? "text-white" : "text-slate-950"}`)}>Unspaghettit <span class="font-grotesk absolute right-0 -bottom-2 text-[10px] font-medium tracking-wide text-slate-500">by Lyriks.io</span></span></a> `);
|
|
551
|
-
if (showViewSwitcher()) {
|
|
552
|
-
$$renderer.push("<!--[0-->");
|
|
553
|
-
$$renderer.push(`<div role="group" aria-label="View mode"${attr_class(`flex shrink-0 items-center rounded-full border p-0.5 text-[11px] font-medium ${dark() ? "border-slate-700/70 bg-slate-800/60" : "border-slate-200 bg-slate-100"}`)}><!--[-->`);
|
|
554
|
-
const each_array = ensure_array_like(views());
|
|
555
|
-
for (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {
|
|
556
|
-
let view = each_array[$$index];
|
|
557
|
-
const active = view.matches(page.url.pathname);
|
|
558
|
-
$$renderer.push(`<a${attr("href", view.href)}${attr_class(`rounded-full px-2.5 py-0.5 transition ${active ? dark() ? "bg-slate-700 text-white shadow-sm shadow-black/20" : "bg-white text-slate-900 shadow-sm shadow-slate-950/10" : dark() ? "text-slate-400 hover:text-slate-200" : "text-slate-500 hover:text-slate-800"}`)}${attr("aria-current", active ? "page" : void 0)}>${escape_html(view.label)}</a>`);
|
|
559
|
-
}
|
|
560
|
-
$$renderer.push(`<!--]--></div>`);
|
|
561
|
-
} else $$renderer.push("<!--[-1-->");
|
|
562
|
-
$$renderer.push(`<!--]--> `);
|
|
563
|
-
if (builderProject()) {
|
|
564
|
-
$$renderer.push("<!--[0-->");
|
|
565
|
-
$$renderer.push(`<div class="hidden min-w-0 items-center gap-2 sm:flex"><span class="shrink-0 text-slate-600" aria-hidden="true">/</span> <button type="button" class="max-w-56 truncate text-sm font-medium text-white transition hover:text-brand-300" title="Back to all projects">${escape_html(builderProject().name)}</button></div>`);
|
|
566
|
-
} else $$renderer.push("<!--[-1-->");
|
|
567
|
-
$$renderer.push(`<!--]--></div> `);
|
|
568
|
-
if (builderActive()) {
|
|
569
|
-
$$renderer.push("<!--[0-->");
|
|
570
|
-
$$renderer.push(`<div class="mx-3 hidden min-w-0 flex-1 justify-center md:flex"><label for="builder-global-search" class="sr-only">Search builder</label> <div class="relative w-full max-w-md"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" class="pointer-events-none absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-slate-500" aria-hidden="true"><circle cx="11" cy="11" r="7"></circle><path d="m20 20-3.5-3.5"></path></svg> <input id="builder-global-search" type="search" placeholder="Search..."${attr("value", builderSearch())} class="h-9 w-full rounded-lg border border-slate-700 bg-slate-900/70 py-1.5 pl-9 pr-9 text-sm text-white placeholder:text-slate-500 outline-none transition focus:border-brand-400 focus:ring-2 focus:ring-brand-500/20"/> `);
|
|
571
|
-
if (builderSearch().trim().length > 0) {
|
|
572
|
-
$$renderer.push("<!--[0-->");
|
|
573
|
-
$$renderer.push(`<button type="button" class="absolute right-2 top-1/2 grid h-6 w-6 -translate-y-1/2 place-items-center rounded-md text-slate-500 transition hover:bg-slate-800 hover:text-white" aria-label="Clear builder search" title="Clear search">×</button>`);
|
|
574
|
-
} else $$renderer.push("<!--[-1-->");
|
|
575
|
-
$$renderer.push(`<!--]--></div></div>`);
|
|
576
|
-
} else $$renderer.push("<!--[-1-->");
|
|
577
|
-
$$renderer.push(`<!--]--> <div class="flex shrink-0 items-center gap-1.5"><div class="relative"><button type="button" aria-haspopup="menu"${attr("aria-expanded", settingsMenuOpen)} aria-label="Open app menu" title="App menu"${attr_class(`grid h-9 w-9 place-items-center rounded-md transition ${mcpActive() ? dark() ? "bg-slate-800 text-white" : "bg-slate-900 text-white" : dark() ? "text-slate-400 hover:bg-slate-800 hover:text-white" : "text-slate-600 hover:bg-slate-100 hover:text-slate-950"}`)}><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" class="h-5 w-5" aria-hidden="true"><circle cx="12" cy="12" r="3"></circle><path d="M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 1 1-2.83 2.83l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 1 1-4 0v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 1 1-2.83-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 1 1 0-4h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 1 1 2.83-2.83l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 1 1 4 0v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 1 1 2.83 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 1 1 0 4h-.09a1.65 1.65 0 0 0-1.51 1z"></path></svg></button> `);
|
|
578
|
-
$$renderer.push("<!--[-1-->");
|
|
579
|
-
$$renderer.push(`<!--]--></div> <a href="/tutorial" aria-label="Help & tutorial" title="Help & tutorial"${attr_class(`grid h-9 w-9 place-items-center rounded-md transition ${dark() ? "text-slate-400 hover:bg-slate-800 hover:text-white" : "text-slate-600 hover:bg-slate-100 hover:text-slate-950"}`)}><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round" class="h-5 w-5" aria-hidden="true"><circle cx="12" cy="12" r="9"></circle><path d="M9.4 9a2.6 2.6 0 0 1 5 1c0 1.6-2.4 2-2.4 3.4"></path><line x1="12" y1="17.5" x2="12.01" y2="17.5"></line></svg></a> <div class="relative flex items-center gap-1.5"><button type="button" aria-haspopup="menu"${attr("aria-expanded", identityMenuOpen)}${attr("aria-label", identityStore.name ? `Signed in as ${identityStore.name}. Open identity menu.` : "Set your display name")}${attr("title", identityStore.name ? `Signed in as ${identityStore.name}` : "Set a display name so your edits are recognisable in history")}${attr_class(`group relative flex h-10 w-10 shrink-0 items-center justify-center rounded-full text-sm font-semibold shadow-sm shadow-slate-950/5 ring-1 ring-transparent transition focus:outline-none focus-visible:ring-2 focus-visible:ring-brand-300 ${identityStore.name ? "bg-linear-to-br from-brand-600 to-brand-800 text-white hover:from-brand-500 hover:to-brand-700" : "border border-dashed border-slate-300 bg-white text-slate-400 hover:border-brand-400 hover:text-brand-700"}`)}>`);
|
|
580
|
-
if (identityStore.name) {
|
|
581
|
-
$$renderer.push("<!--[0-->");
|
|
582
|
-
$$renderer.push(`<span aria-hidden="true">${escape_html(initial())}</span>`);
|
|
583
|
-
} else {
|
|
584
|
-
$$renderer.push("<!--[-1-->");
|
|
585
|
-
$$renderer.push(`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" class="h-5 w-5" aria-hidden="true"><circle cx="12" cy="8" r="3.5"></circle><path d="M5 20c1.2-3.6 4-5.5 7-5.5s5.8 1.9 7 5.5"></path></svg>`);
|
|
586
|
-
}
|
|
587
|
-
$$renderer.push(`<!--]--> <span${attr_class(`absolute -right-0.5 -bottom-0.5 inline-flex h-3 w-3 items-center justify-center rounded-full ring-2 ring-white ${identityStore.name ? "bg-emerald-500" : "bg-amber-400"}`)} aria-hidden="true"></span></button> `);
|
|
588
|
-
$$renderer.push("<!--[-1-->");
|
|
589
|
-
$$renderer.push(`<!--]--></div></div></div> `);
|
|
590
|
-
if (builderActive()) {
|
|
591
|
-
$$renderer.push("<!--[0-->");
|
|
592
|
-
$$renderer.push(`<div class="mx-auto px-4 pb-3 md:hidden"><label for="builder-global-search-mobile" class="sr-only">Search builder</label> <div class="relative"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" class="pointer-events-none absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-slate-500" aria-hidden="true"><circle cx="11" cy="11" r="7"></circle><path d="m20 20-3.5-3.5"></path></svg> <input id="builder-global-search-mobile" type="search" placeholder="Search..."${attr("value", builderSearch())} class="h-9 w-full rounded-lg border border-slate-700 bg-slate-900/70 py-1.5 pl-9 pr-9 text-sm text-white placeholder:text-slate-500 outline-none transition focus:border-brand-400 focus:ring-2 focus:ring-brand-500/20"/> `);
|
|
593
|
-
if (builderSearch().trim().length > 0) {
|
|
594
|
-
$$renderer.push("<!--[0-->");
|
|
595
|
-
$$renderer.push(`<button type="button" class="absolute right-2 top-1/2 grid h-6 w-6 -translate-y-1/2 place-items-center rounded-md text-slate-500 transition hover:bg-slate-800 hover:text-white" aria-label="Clear builder search" title="Clear search">×</button>`);
|
|
596
|
-
} else $$renderer.push("<!--[-1-->");
|
|
597
|
-
$$renderer.push(`<!--]--></div></div>`);
|
|
598
|
-
} else $$renderer.push("<!--[-1-->");
|
|
599
|
-
$$renderer.push(`<!--]--></header> <main class="flex-1"><!---->`);
|
|
600
|
-
$$renderer.push(`<div class="motion-reduce:animate-none! motion-reduce:opacity-100!">`);
|
|
601
|
-
children($$renderer);
|
|
602
|
-
$$renderer.push(`<!----></div>`);
|
|
603
|
-
$$renderer.push(`<!----></main></div> `);
|
|
604
|
-
AppDialog($$renderer);
|
|
605
|
-
$$renderer.push(`<!----> `);
|
|
606
|
-
FlyingSpaghettiEasterEgg($$renderer);
|
|
607
|
-
$$renderer.push(`<!----> `);
|
|
608
|
-
SyncToast($$renderer);
|
|
609
|
-
$$renderer.push(`<!----> `);
|
|
610
|
-
TourOverlay($$renderer);
|
|
611
|
-
$$renderer.push(`<!---->`);
|
|
612
|
-
});
|
|
613
|
-
}
|
|
614
|
-
|
|
615
|
-
export { _layout as default };
|
|
616
|
-
//# sourceMappingURL=_layout.svelte-BREws55o.js.map
|