mongoku 2.2.3 → 2.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/client/_app/immutable/assets/0.BXOUh4Q1.css +1 -0
- package/build/client/_app/immutable/assets/0.BXOUh4Q1.css.br +0 -0
- package/build/client/_app/immutable/assets/0.BXOUh4Q1.css.gz +0 -0
- package/build/client/_app/immutable/assets/10.BrydhPds.css +1 -0
- package/build/client/_app/immutable/assets/10.BrydhPds.css.br +0 -0
- package/build/client/_app/immutable/assets/10.BrydhPds.css.gz +0 -0
- package/build/client/_app/immutable/assets/12.B90SyvCO.css +1 -0
- package/build/client/_app/immutable/assets/12.B90SyvCO.css.br +0 -0
- package/build/client/_app/immutable/assets/12.B90SyvCO.css.gz +0 -0
- package/build/client/_app/immutable/assets/Modal.zD4dMMyk.css +1 -0
- package/build/client/_app/immutable/assets/Modal.zD4dMMyk.css.br +0 -0
- package/build/client/_app/immutable/assets/Modal.zD4dMMyk.css.gz +0 -0
- package/build/client/_app/immutable/chunks/AIOqEo5H.js +1 -0
- package/build/client/_app/immutable/chunks/AIOqEo5H.js.br +0 -0
- package/build/client/_app/immutable/chunks/AIOqEo5H.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{D7E46CWw.js → BEYqxaXI.js} +1 -1
- package/build/client/_app/immutable/chunks/BEYqxaXI.js.br +0 -0
- package/build/client/_app/immutable/chunks/BEYqxaXI.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BJqoLy3B.js +2 -0
- package/build/client/_app/immutable/chunks/BJqoLy3B.js.br +0 -0
- package/build/client/_app/immutable/chunks/BJqoLy3B.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{DR9xdhsg.js → BXaawuvz.js} +1 -1
- package/build/client/_app/immutable/chunks/BXaawuvz.js.br +2 -0
- package/build/client/_app/immutable/chunks/BXaawuvz.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{x6b1IMb1.js → BgGFWTC8.js} +1 -1
- package/build/client/_app/immutable/chunks/BgGFWTC8.js.br +0 -0
- package/build/client/_app/immutable/chunks/BgGFWTC8.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{5nAxkTTP.js → Bpmh7lVJ.js} +1 -1
- package/build/client/_app/immutable/chunks/Bpmh7lVJ.js.br +6 -0
- package/build/client/_app/immutable/chunks/Bpmh7lVJ.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BrrIPcne.js +1 -0
- package/build/client/_app/immutable/chunks/BrrIPcne.js.br +0 -0
- package/build/client/_app/immutable/chunks/BrrIPcne.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{BUNgwIS0.js → ByHQcyQR.js} +1 -1
- package/build/client/_app/immutable/chunks/ByHQcyQR.js.br +0 -0
- package/build/client/_app/immutable/chunks/ByHQcyQR.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{Bs385hYd.js → C6AfvKtU.js} +1 -1
- package/build/client/_app/immutable/chunks/C6AfvKtU.js.br +0 -0
- package/build/client/_app/immutable/chunks/C6AfvKtU.js.gz +0 -0
- package/build/client/_app/immutable/chunks/COPDkxhL.js +29 -0
- package/build/client/_app/immutable/chunks/COPDkxhL.js.br +0 -0
- package/build/client/_app/immutable/chunks/COPDkxhL.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{3iRu_dUj.js → CTHGUrxr.js} +2 -2
- package/build/client/_app/immutable/chunks/CTHGUrxr.js.br +0 -0
- package/build/client/_app/immutable/chunks/CTHGUrxr.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{KQwgBpEw.js → Cotvfu8-.js} +1 -1
- package/build/client/_app/immutable/chunks/Cotvfu8-.js.br +0 -0
- package/build/client/_app/immutable/chunks/Cotvfu8-.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DQ-rgtMu.js +1 -0
- package/build/client/_app/immutable/chunks/DQ-rgtMu.js.br +0 -0
- package/build/client/_app/immutable/chunks/DQ-rgtMu.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{JdOJ3u1C.js → DR2XDb5m.js} +3 -3
- package/build/client/_app/immutable/chunks/DR2XDb5m.js.br +0 -0
- package/build/client/_app/immutable/chunks/DR2XDb5m.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DUjc2RFp.js +1 -0
- package/build/client/_app/immutable/chunks/DUjc2RFp.js.br +0 -0
- package/build/client/_app/immutable/chunks/DUjc2RFp.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{BE8UzJuY.js → DaTUpm_7.js} +1 -1
- package/build/client/_app/immutable/chunks/DaTUpm_7.js.br +0 -0
- package/build/client/_app/immutable/chunks/DaTUpm_7.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{C0PCwpqt.js → DnwC6gcO.js} +1 -1
- package/build/client/_app/immutable/chunks/DnwC6gcO.js.br +0 -0
- package/build/client/_app/immutable/chunks/DnwC6gcO.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Dt2qaq8g.js +1 -0
- package/build/client/_app/immutable/chunks/Dt2qaq8g.js.br +0 -0
- package/build/client/_app/immutable/chunks/Dt2qaq8g.js.gz +0 -0
- package/build/client/_app/immutable/chunks/EUN-td6X.js +1 -0
- package/build/client/_app/immutable/chunks/EUN-td6X.js.br +0 -0
- package/build/client/_app/immutable/chunks/EUN-td6X.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{Cx2cA4gg.js → EbSISJZg.js} +1 -1
- package/build/client/_app/immutable/chunks/EbSISJZg.js.br +0 -0
- package/build/client/_app/immutable/chunks/EbSISJZg.js.gz +0 -0
- package/build/client/_app/immutable/chunks/f0NSiE2-.js +1 -0
- package/build/client/_app/immutable/chunks/f0NSiE2-.js.br +0 -0
- package/build/client/_app/immutable/chunks/f0NSiE2-.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{CrqAkc8i.js → qhxgM-U4.js} +1 -1
- package/build/client/_app/immutable/chunks/qhxgM-U4.js.br +0 -0
- package/build/client/_app/immutable/chunks/qhxgM-U4.js.gz +0 -0
- package/build/client/_app/immutable/chunks/zJxs36IQ.js +1 -0
- package/build/client/_app/immutable/chunks/zJxs36IQ.js.br +0 -0
- package/build/client/_app/immutable/chunks/zJxs36IQ.js.gz +0 -0
- package/build/client/_app/immutable/entry/{app.mQ763Jro.js → app.Cu4hmll6.js} +2 -2
- package/build/client/_app/immutable/entry/app.Cu4hmll6.js.br +0 -0
- package/build/client/_app/immutable/entry/app.Cu4hmll6.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.CWodO31h.js +1 -0
- package/build/client/_app/immutable/entry/start.CWodO31h.js.br +2 -0
- package/build/client/_app/immutable/entry/start.CWodO31h.js.gz +0 -0
- package/build/client/_app/immutable/nodes/0.CA_MMU1Y.js +1 -0
- package/build/client/_app/immutable/nodes/0.CA_MMU1Y.js.br +0 -0
- package/build/client/_app/immutable/nodes/0.CA_MMU1Y.js.gz +0 -0
- package/build/client/_app/immutable/nodes/1.RRRMvoTM.js +1 -0
- package/build/client/_app/immutable/nodes/1.RRRMvoTM.js.br +1 -0
- package/build/client/_app/immutable/nodes/1.RRRMvoTM.js.gz +0 -0
- package/build/client/_app/immutable/nodes/10.SPSTrllh.js +1 -0
- package/build/client/_app/immutable/nodes/10.SPSTrllh.js.br +0 -0
- package/build/client/_app/immutable/nodes/10.SPSTrllh.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{11.8qk0qM-Y.js → 11.C4Wc3Kw8.js} +1 -1
- package/build/client/_app/immutable/nodes/11.C4Wc3Kw8.js.br +0 -0
- package/build/client/_app/immutable/nodes/11.C4Wc3Kw8.js.gz +0 -0
- package/build/client/_app/immutable/nodes/12.CWkEGtcM.js +1 -0
- package/build/client/_app/immutable/nodes/12.CWkEGtcM.js.br +0 -0
- package/build/client/_app/immutable/nodes/12.CWkEGtcM.js.gz +0 -0
- package/build/client/_app/immutable/nodes/13.CHTpks4Z.js +66 -0
- package/build/client/_app/immutable/nodes/13.CHTpks4Z.js.br +0 -0
- package/build/client/_app/immutable/nodes/13.CHTpks4Z.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{2.DwwrLLW4.js → 2.tuhqPc6d.js} +1 -1
- package/build/client/_app/immutable/nodes/2.tuhqPc6d.js.br +0 -0
- package/build/client/_app/immutable/nodes/2.tuhqPc6d.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{3.t20GootO.js → 3.304xAIC7.js} +1 -1
- package/build/client/_app/immutable/nodes/3.304xAIC7.js.br +0 -0
- package/build/client/_app/immutable/nodes/3.304xAIC7.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{4.CXHjkPtf.js → 4.CRm68VfX.js} +1 -1
- package/build/client/_app/immutable/nodes/4.CRm68VfX.js.br +0 -0
- package/build/client/_app/immutable/nodes/4.CRm68VfX.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{5.C9tcr5B0.js → 5.DfCi7Z5N.js} +1 -1
- package/build/client/_app/immutable/nodes/5.DfCi7Z5N.js.br +0 -0
- package/build/client/_app/immutable/nodes/5.DfCi7Z5N.js.gz +0 -0
- package/build/client/_app/immutable/nodes/7.COdDrqa5.js +1 -0
- package/build/client/_app/immutable/nodes/7.COdDrqa5.js.br +0 -0
- package/build/client/_app/immutable/nodes/7.COdDrqa5.js.gz +0 -0
- package/build/client/_app/immutable/nodes/8.COLtCRaa.js +1 -0
- package/build/client/_app/immutable/nodes/8.COLtCRaa.js.br +0 -0
- package/build/client/_app/immutable/nodes/8.COLtCRaa.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{9.y89ycq-G.js → 9.DGHjsSV7.js} +2 -2
- package/build/client/_app/immutable/nodes/9.DGHjsSV7.js.br +0 -0
- package/build/client/_app/immutable/nodes/9.DGHjsSV7.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/server/chunks/0-QaXL5dxl.js +22 -0
- package/build/server/chunks/0-QaXL5dxl.js.map +1 -0
- package/build/server/chunks/1-lbtVyJzb.js +9 -0
- package/build/server/chunks/{1-BY-0kZ2c.js.map → 1-lbtVyJzb.js.map} +1 -1
- package/build/server/chunks/{10-Dq5GLv21.js → 10-srcxgYum.js} +4 -4
- package/build/server/chunks/10-srcxgYum.js.map +1 -0
- package/build/server/chunks/{11-CFe9WXQq.js → 11-Do6XJz0l.js} +4 -4
- package/build/server/chunks/11-Do6XJz0l.js.map +1 -0
- package/build/server/chunks/{12-DxwNtcT_.js → 12-zP_nvSCU.js} +4 -4
- package/build/server/chunks/12-zP_nvSCU.js.map +1 -0
- package/build/server/chunks/{13-CKXI1mBR.js → 13-Df-9cdO7.js} +4 -4
- package/build/server/chunks/{13-CKXI1mBR.js.map → 13-Df-9cdO7.js.map} +1 -1
- package/build/server/chunks/{2-ClkERMhY.js → 2-CEvLemXF.js} +2 -2
- package/build/server/chunks/{2-ClkERMhY.js.map → 2-CEvLemXF.js.map} +1 -1
- package/build/server/chunks/{3-CTpqmxdo.js → 3-C8wnnjW_.js} +2 -2
- package/build/server/chunks/{3-CTpqmxdo.js.map → 3-C8wnnjW_.js.map} +1 -1
- package/build/server/chunks/{4-CUH4fZn8.js → 4-CFsHQHNr.js} +2 -2
- package/build/server/chunks/{4-CUH4fZn8.js.map → 4-CFsHQHNr.js.map} +1 -1
- package/build/server/chunks/{5-BSEdxfut.js → 5-BHNZukuO.js} +2 -2
- package/build/server/chunks/{5-BSEdxfut.js.map → 5-BHNZukuO.js.map} +1 -1
- package/build/server/chunks/{7-CS9m81mD.js → 7-_mc0fkA5.js} +4 -4
- package/build/server/chunks/7-_mc0fkA5.js.map +1 -0
- package/build/server/chunks/{8-BE_waNfW.js → 8-CgCyM--7.js} +4 -4
- package/build/server/chunks/8-CgCyM--7.js.map +1 -0
- package/build/server/chunks/{9-DBL9U7pQ.js → 9-CrztPNtK.js} +4 -4
- package/build/server/chunks/9-CrztPNtK.js.map +1 -0
- package/build/server/chunks/{JsonValue-WMdIUvRM.js → JsonValue-BUoddLqM.js} +10 -3
- package/build/server/chunks/JsonValue-BUoddLqM.js.map +1 -0
- package/build/server/chunks/{Modal-zVnoAfFx.js → Modal-BzZ9u6V6.js} +3 -3
- package/build/server/chunks/Modal-BzZ9u6V6.js.map +1 -0
- package/build/server/chunks/Panel-DEP08QXV.js +48 -0
- package/build/server/chunks/Panel-DEP08QXV.js.map +1 -0
- package/build/server/chunks/{PrettyJson-DcsHfzq6.js → PrettyJson-5I-m1T9H.js} +53 -38
- package/build/server/chunks/PrettyJson-5I-m1T9H.js.map +1 -0
- package/build/server/chunks/Tooltip-DK6Aok7l.js +35 -0
- package/build/server/chunks/Tooltip-DK6Aok7l.js.map +1 -0
- package/build/server/chunks/{TooltipTable-DCu3GLqO.js → TooltipTable-DUYKVtrh.js} +3 -3
- package/build/server/chunks/{TooltipTable-DCu3GLqO.js.map → TooltipTable-DUYKVtrh.js.map} +1 -1
- package/build/server/chunks/_layout.svelte-CLgSVnvV.js +160 -0
- package/build/server/chunks/_layout.svelte-CLgSVnvV.js.map +1 -0
- package/build/server/chunks/{_page.svelte-DRWGkQQA.js → _page.svelte-B4-xrCHW.js} +42 -30
- package/build/server/chunks/_page.svelte-B4-xrCHW.js.map +1 -0
- package/build/server/chunks/{_page.svelte-C-13GpOe.js → _page.svelte-BORdYQFx.js} +12 -10
- package/build/server/chunks/_page.svelte-BORdYQFx.js.map +1 -0
- package/build/server/chunks/{_page.svelte-D5UJAskw.js → _page.svelte-C8zstZ7b.js} +6 -6
- package/build/server/chunks/{_page.svelte-D5UJAskw.js.map → _page.svelte-C8zstZ7b.js.map} +1 -1
- package/build/server/chunks/{_page.svelte-BBHqwhWF.js → _page.svelte-C9l9vy6P.js} +8 -7
- package/build/server/chunks/{_page.svelte-BBHqwhWF.js.map → _page.svelte-C9l9vy6P.js.map} +1 -1
- package/build/server/chunks/{_page.svelte-BRxX_vQR.js → _page.svelte-CRBjbDDt.js} +8 -7
- package/build/server/chunks/{_page.svelte-BRxX_vQR.js.map → _page.svelte-CRBjbDDt.js.map} +1 -1
- package/build/server/chunks/{_page.svelte-Cm_vgRRR.js → _page.svelte-CiIXCzlp.js} +18 -14
- package/build/server/chunks/_page.svelte-CiIXCzlp.js.map +1 -0
- package/build/server/chunks/{_page.svelte-Ca9u_35e.js → _page.svelte-TuuvQq-s.js} +7 -6
- package/build/server/chunks/{_page.svelte-Ca9u_35e.js.map → _page.svelte-TuuvQq-s.js.map} +1 -1
- package/build/server/chunks/{index2-DBFlGzWV.js → index2-DzKnqQNM.js} +2 -2
- package/build/server/chunks/{index2-DBFlGzWV.js.map → index2-DzKnqQNM.js.map} +1 -1
- package/build/server/index.js +3 -3
- package/build/server/index.js.map +1 -1
- package/build/server/manifest.js +14 -14
- package/build/server/manifest.js.map +1 -1
- package/package.json +1 -1
- package/src/app.css +161 -134
- package/src/app.html +23 -10
- package/src/lib/actions/portal.ts +28 -0
- package/src/lib/components/Breadcrumbs.svelte +20 -60
- package/src/lib/components/JsonValue.svelte +30 -1
- package/src/lib/components/Modal.svelte +5 -5
- package/src/lib/components/Notifications.svelte +40 -20
- package/src/lib/components/PageSwitcher.svelte +14 -10
- package/src/lib/components/Panel.svelte +19 -15
- package/src/lib/components/PrettyJson.svelte +101 -43
- package/src/lib/components/SearchBox.svelte +117 -96
- package/src/lib/components/ThemeSwitcher.svelte +191 -36
- package/src/lib/components/Tooltip.svelte +23 -14
- package/src/routes/+layout.svelte +36 -17
- package/src/routes/servers/+page.svelte +1 -1
- package/src/routes/servers/[server]/databases/[database]/collections/[collection]/documents/+page.svelte +77 -40
- package/src/routes/servers/[server]/databases/[database]/collections/[collection]/indexes/+page.svelte +118 -95
- package/src/routes/servers/[server]/databases/[database]/collections/[collection]/mappings/+page.svelte +26 -12
- package/build/client/_app/immutable/assets/0.COnAcXN4.css +0 -1
- package/build/client/_app/immutable/assets/0.COnAcXN4.css.br +0 -0
- package/build/client/_app/immutable/assets/0.COnAcXN4.css.gz +0 -0
- package/build/client/_app/immutable/assets/10.59aTjJn9.css +0 -1
- package/build/client/_app/immutable/assets/10.59aTjJn9.css.br +0 -0
- package/build/client/_app/immutable/assets/10.59aTjJn9.css.gz +0 -0
- package/build/client/_app/immutable/assets/12.BdCOhvz0.css +0 -1
- package/build/client/_app/immutable/assets/12.BdCOhvz0.css.br +0 -0
- package/build/client/_app/immutable/assets/12.BdCOhvz0.css.gz +0 -0
- package/build/client/_app/immutable/assets/Modal.DIIFkbGB.css +0 -1
- package/build/client/_app/immutable/assets/Modal.DIIFkbGB.css.br +0 -0
- package/build/client/_app/immutable/assets/Modal.DIIFkbGB.css.gz +0 -0
- package/build/client/_app/immutable/assets/Panel.B3aWupye.css +0 -1
- package/build/client/_app/immutable/assets/Panel.B3aWupye.css.br +0 -0
- package/build/client/_app/immutable/assets/Panel.B3aWupye.css.gz +0 -0
- package/build/client/_app/immutable/assets/cuprum-cyrillic-400-normal.Cnibl3-L.woff2 +0 -0
- package/build/client/_app/immutable/assets/cuprum-cyrillic-400-normal.RKIjpA76.woff +0 -0
- package/build/client/_app/immutable/assets/cuprum-cyrillic-ext-400-normal.CT5q4ZVh.woff2 +0 -0
- package/build/client/_app/immutable/assets/cuprum-cyrillic-ext-400-normal.iCCFJ4Gn.woff +0 -0
- package/build/client/_app/immutable/assets/cuprum-latin-400-normal.Cbwtr8a4.woff +0 -0
- package/build/client/_app/immutable/assets/cuprum-latin-400-normal.CjFvNwMJ.woff2 +0 -0
- package/build/client/_app/immutable/assets/cuprum-latin-ext-400-normal.BWTJtpjo.woff2 +0 -0
- package/build/client/_app/immutable/assets/cuprum-latin-ext-400-normal.BZXayy47.woff +0 -0
- package/build/client/_app/immutable/assets/cuprum-vietnamese-400-normal.uXRi1gw5.woff +0 -0
- package/build/client/_app/immutable/assets/rajdhani-devanagari-400-normal.BdIzgbsr.woff +0 -0
- package/build/client/_app/immutable/assets/rajdhani-devanagari-400-normal.CTuj2HZW.woff2 +0 -0
- package/build/client/_app/immutable/assets/rajdhani-latin-400-normal.C6_q4usG.woff +0 -0
- package/build/client/_app/immutable/assets/rajdhani-latin-400-normal.CurJOxDW.woff2 +0 -0
- package/build/client/_app/immutable/assets/rajdhani-latin-ext-400-normal.DACPYgMx.woff2 +0 -0
- package/build/client/_app/immutable/assets/rajdhani-latin-ext-400-normal.Der7ynDE.woff +0 -0
- package/build/client/_app/immutable/chunks/3iRu_dUj.js.br +0 -0
- package/build/client/_app/immutable/chunks/3iRu_dUj.js.gz +0 -0
- package/build/client/_app/immutable/chunks/5nAxkTTP.js.br +0 -5
- package/build/client/_app/immutable/chunks/5nAxkTTP.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BBg-V8FE.js +0 -1
- package/build/client/_app/immutable/chunks/BBg-V8FE.js.br +0 -0
- package/build/client/_app/immutable/chunks/BBg-V8FE.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BE8UzJuY.js.br +0 -0
- package/build/client/_app/immutable/chunks/BE8UzJuY.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BMOmr7v8.js +0 -1
- package/build/client/_app/immutable/chunks/BMOmr7v8.js.br +0 -0
- package/build/client/_app/immutable/chunks/BMOmr7v8.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BUNgwIS0.js.br +0 -0
- package/build/client/_app/immutable/chunks/BUNgwIS0.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Bs385hYd.js.br +0 -0
- package/build/client/_app/immutable/chunks/Bs385hYd.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BvKY81hz.js +0 -1
- package/build/client/_app/immutable/chunks/BvKY81hz.js.br +0 -0
- package/build/client/_app/immutable/chunks/BvKY81hz.js.gz +0 -0
- package/build/client/_app/immutable/chunks/C0PCwpqt.js.br +0 -0
- package/build/client/_app/immutable/chunks/C0PCwpqt.js.gz +0 -0
- package/build/client/_app/immutable/chunks/C82Rp5eQ.js +0 -1
- package/build/client/_app/immutable/chunks/C82Rp5eQ.js.br +0 -0
- package/build/client/_app/immutable/chunks/C82Rp5eQ.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CQtd9cay.js +0 -29
- package/build/client/_app/immutable/chunks/CQtd9cay.js.br +0 -0
- package/build/client/_app/immutable/chunks/CQtd9cay.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CrqAkc8i.js.br +0 -0
- package/build/client/_app/immutable/chunks/CrqAkc8i.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Cx2cA4gg.js.br +0 -0
- package/build/client/_app/immutable/chunks/Cx2cA4gg.js.gz +0 -0
- package/build/client/_app/immutable/chunks/D5ccpaXt.js +0 -1
- package/build/client/_app/immutable/chunks/D5ccpaXt.js.br +0 -0
- package/build/client/_app/immutable/chunks/D5ccpaXt.js.gz +0 -0
- package/build/client/_app/immutable/chunks/D7E46CWw.js.br +0 -0
- package/build/client/_app/immutable/chunks/D7E46CWw.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DR9xdhsg.js.br +0 -0
- package/build/client/_app/immutable/chunks/DR9xdhsg.js.gz +0 -0
- package/build/client/_app/immutable/chunks/JdOJ3u1C.js.br +0 -0
- package/build/client/_app/immutable/chunks/JdOJ3u1C.js.gz +0 -0
- package/build/client/_app/immutable/chunks/KQwgBpEw.js.br +0 -0
- package/build/client/_app/immutable/chunks/KQwgBpEw.js.gz +0 -0
- package/build/client/_app/immutable/chunks/K_9Qq9mM.js +0 -1
- package/build/client/_app/immutable/chunks/K_9Qq9mM.js.br +0 -0
- package/build/client/_app/immutable/chunks/K_9Qq9mM.js.gz +0 -0
- package/build/client/_app/immutable/chunks/dD1vqiUv.js +0 -1
- package/build/client/_app/immutable/chunks/dD1vqiUv.js.br +0 -0
- package/build/client/_app/immutable/chunks/dD1vqiUv.js.gz +0 -0
- package/build/client/_app/immutable/chunks/x6b1IMb1.js.br +0 -0
- package/build/client/_app/immutable/chunks/x6b1IMb1.js.gz +0 -0
- package/build/client/_app/immutable/chunks/z-c6xmRA.js +0 -2
- package/build/client/_app/immutable/chunks/z-c6xmRA.js.br +0 -0
- package/build/client/_app/immutable/chunks/z-c6xmRA.js.gz +0 -0
- package/build/client/_app/immutable/entry/app.mQ763Jro.js.br +0 -0
- package/build/client/_app/immutable/entry/app.mQ763Jro.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.s82l3CYb.js +0 -1
- package/build/client/_app/immutable/entry/start.s82l3CYb.js.br +0 -2
- package/build/client/_app/immutable/entry/start.s82l3CYb.js.gz +0 -0
- package/build/client/_app/immutable/nodes/0.S6bCTVx0.js +0 -5
- package/build/client/_app/immutable/nodes/0.S6bCTVx0.js.br +0 -0
- package/build/client/_app/immutable/nodes/0.S6bCTVx0.js.gz +0 -0
- package/build/client/_app/immutable/nodes/1.BsbNooTv.js +0 -1
- package/build/client/_app/immutable/nodes/1.BsbNooTv.js.br +0 -0
- package/build/client/_app/immutable/nodes/1.BsbNooTv.js.gz +0 -0
- package/build/client/_app/immutable/nodes/10.BePolrit.js +0 -2
- package/build/client/_app/immutable/nodes/10.BePolrit.js.br +0 -0
- package/build/client/_app/immutable/nodes/10.BePolrit.js.gz +0 -0
- package/build/client/_app/immutable/nodes/11.8qk0qM-Y.js.br +0 -0
- package/build/client/_app/immutable/nodes/11.8qk0qM-Y.js.gz +0 -0
- package/build/client/_app/immutable/nodes/12.kTSoZlFO.js +0 -1
- package/build/client/_app/immutable/nodes/12.kTSoZlFO.js.br +0 -0
- package/build/client/_app/immutable/nodes/12.kTSoZlFO.js.gz +0 -0
- package/build/client/_app/immutable/nodes/13.BJFpRqor.js +0 -66
- package/build/client/_app/immutable/nodes/13.BJFpRqor.js.br +0 -0
- package/build/client/_app/immutable/nodes/13.BJFpRqor.js.gz +0 -0
- package/build/client/_app/immutable/nodes/2.DwwrLLW4.js.br +0 -1
- package/build/client/_app/immutable/nodes/2.DwwrLLW4.js.gz +0 -0
- package/build/client/_app/immutable/nodes/3.t20GootO.js.br +0 -0
- package/build/client/_app/immutable/nodes/3.t20GootO.js.gz +0 -0
- package/build/client/_app/immutable/nodes/4.CXHjkPtf.js.br +0 -0
- package/build/client/_app/immutable/nodes/4.CXHjkPtf.js.gz +0 -0
- package/build/client/_app/immutable/nodes/5.C9tcr5B0.js.br +0 -0
- package/build/client/_app/immutable/nodes/5.C9tcr5B0.js.gz +0 -0
- package/build/client/_app/immutable/nodes/7.DMxMzDCJ.js +0 -1
- package/build/client/_app/immutable/nodes/7.DMxMzDCJ.js.br +0 -0
- package/build/client/_app/immutable/nodes/7.DMxMzDCJ.js.gz +0 -0
- package/build/client/_app/immutable/nodes/8.DiXZmADx.js +0 -1
- package/build/client/_app/immutable/nodes/8.DiXZmADx.js.br +0 -0
- package/build/client/_app/immutable/nodes/8.DiXZmADx.js.gz +0 -0
- package/build/client/_app/immutable/nodes/9.y89ycq-G.js.br +0 -0
- package/build/client/_app/immutable/nodes/9.y89ycq-G.js.gz +0 -0
- package/build/server/chunks/0-Dq8iBzxR.js +0 -22
- package/build/server/chunks/0-Dq8iBzxR.js.map +0 -1
- package/build/server/chunks/1-BY-0kZ2c.js +0 -9
- package/build/server/chunks/10-Dq5GLv21.js.map +0 -1
- package/build/server/chunks/11-CFe9WXQq.js.map +0 -1
- package/build/server/chunks/12-DxwNtcT_.js.map +0 -1
- package/build/server/chunks/7-CS9m81mD.js.map +0 -1
- package/build/server/chunks/8-BE_waNfW.js.map +0 -1
- package/build/server/chunks/9-DBL9U7pQ.js.map +0 -1
- package/build/server/chunks/JsonValue-WMdIUvRM.js.map +0 -1
- package/build/server/chunks/Modal-zVnoAfFx.js.map +0 -1
- package/build/server/chunks/Panel-yg5YKL4d.js +0 -38
- package/build/server/chunks/Panel-yg5YKL4d.js.map +0 -1
- package/build/server/chunks/PrettyJson-DcsHfzq6.js.map +0 -1
- package/build/server/chunks/Tooltip-ys6l541_.js +0 -28
- package/build/server/chunks/Tooltip-ys6l541_.js.map +0 -1
- package/build/server/chunks/_layout.svelte-DMm1Ill8.js +0 -168
- package/build/server/chunks/_layout.svelte-DMm1Ill8.js.map +0 -1
- package/build/server/chunks/_page.svelte-C-13GpOe.js.map +0 -1
- package/build/server/chunks/_page.svelte-Cm_vgRRR.js.map +0 -1
- package/build/server/chunks/_page.svelte-DRWGkQQA.js.map +0 -1
|
@@ -61,18 +61,18 @@
|
|
|
61
61
|
let form = $state<HTMLFormElement | undefined>(undefined);
|
|
62
62
|
</script>
|
|
63
63
|
|
|
64
|
-
<div>
|
|
65
|
-
<form class="flex
|
|
66
|
-
<!--
|
|
67
|
-
<div class="flex-
|
|
68
|
-
|
|
69
|
-
|
|
64
|
+
<div class="rounded-2xl border border-[var(--border-color)] bg-[var(--light-background)]/70 shadow-sm p-3 sm:p-4">
|
|
65
|
+
<form class="flex flex-col gap-3" method="GET" action="?" onsubmit={submit} bind:this={form}>
|
|
66
|
+
<!-- Query input (always shown) -->
|
|
67
|
+
<div class="flex items-stretch gap-2">
|
|
68
|
+
<div
|
|
69
|
+
class="flex-1 flex items-stretch rounded-xl border border-[var(--border-color)] overflow-hidden bg-[var(--color-3)]/50"
|
|
70
|
+
>
|
|
70
71
|
<div
|
|
71
|
-
class="
|
|
72
|
-
|
|
73
|
-
: 'border-b-0'} bg-[var(--color-1)] rounded-tl-md"
|
|
72
|
+
class="px-3 flex items-center text-[13px] border-r border-[var(--border-color)]"
|
|
73
|
+
style="color: var(--text-secondary);"
|
|
74
74
|
>
|
|
75
|
-
{isAggregation ? "Aggregation
|
|
75
|
+
{isAggregation ? "Aggregation" : "Query"}
|
|
76
76
|
</div>
|
|
77
77
|
{#if isAggregation}
|
|
78
78
|
<textarea
|
|
@@ -82,7 +82,8 @@
|
|
|
82
82
|
name="query"
|
|
83
83
|
rows="5"
|
|
84
84
|
use:jsonTextarea={{ onsubmit: () => form?.requestSubmit() }}
|
|
85
|
-
class="
|
|
85
|
+
class="w-full px-3 py-2 bg-transparent outline-none font-mono text-[13px] resize-y"
|
|
86
|
+
style="color: var(--text);"
|
|
86
87
|
></textarea>
|
|
87
88
|
{:else}
|
|
88
89
|
<input
|
|
@@ -91,134 +92,154 @@
|
|
|
91
92
|
bind:value={params.query}
|
|
92
93
|
placeholder={"{}"}
|
|
93
94
|
name="query"
|
|
94
|
-
class="
|
|
95
|
+
class="w-full h-9 px-3 bg-transparent outline-none font-mono text-[13px] border-0 !rounded-none"
|
|
96
|
+
style="color: var(--text);"
|
|
95
97
|
/>
|
|
96
98
|
{/if}
|
|
97
99
|
</div>
|
|
98
100
|
|
|
99
101
|
<input type="hidden" value={counter} name="v" />
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
<
|
|
102
|
+
|
|
103
|
+
<div class="flex items-center gap-2">
|
|
104
|
+
<button
|
|
105
|
+
type="button"
|
|
106
|
+
class="h-9 px-3 rounded-xl border border-[var(--border-color)] bg-[var(--light-background)] hover:bg-[var(--color-3)] text-[15px] font-semibold leading-none transition cursor-pointer"
|
|
107
|
+
style="color: var(--text);"
|
|
108
|
+
title="Toggle optional fields"
|
|
109
|
+
onclick={() => {
|
|
110
|
+
showOptionalFields = !showOptionalFields;
|
|
111
|
+
}}
|
|
112
|
+
>
|
|
113
|
+
{showOptionalFields ? "−" : "+"}
|
|
114
|
+
</button>
|
|
115
|
+
{#if !readonly}
|
|
116
|
+
<button
|
|
117
|
+
type="button"
|
|
118
|
+
class="h-9 px-3 rounded-xl border border-[var(--border-color)] bg-[var(--light-background)] hover:bg-[var(--color-3)] transition disabled:opacity-50 cursor-pointer"
|
|
119
|
+
style="color: var(--text);"
|
|
120
|
+
title={isAggregation ? "Update not available in aggregation mode" : "Update multiple documents"}
|
|
121
|
+
disabled={isAggregation}
|
|
122
|
+
onclick={() => {
|
|
123
|
+
editMode = !editMode;
|
|
124
|
+
}}
|
|
125
|
+
>
|
|
126
|
+
<svg
|
|
127
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
128
|
+
width="16"
|
|
129
|
+
height="16"
|
|
130
|
+
viewBox="0 0 24 24"
|
|
131
|
+
fill="none"
|
|
132
|
+
stroke="currentColor"
|
|
133
|
+
stroke-width="2"
|
|
134
|
+
stroke-linecap="round"
|
|
135
|
+
stroke-linejoin="round"
|
|
136
|
+
>
|
|
137
|
+
<path d="M17 3a2.85 2.83 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5Z"></path>
|
|
138
|
+
<path d="m15 5 4 4"></path>
|
|
139
|
+
</svg>
|
|
140
|
+
</button>
|
|
141
|
+
{/if}
|
|
142
|
+
<button
|
|
143
|
+
type="submit"
|
|
144
|
+
class="h-9 px-4 rounded-xl bg-[var(--button-success)] text-white font-semibold transition cursor-pointer hover:bg-[var(--button-success-l)] active:brightness-95"
|
|
145
|
+
>
|
|
146
|
+
Go
|
|
147
|
+
</button>
|
|
148
|
+
</div>
|
|
149
|
+
</div>
|
|
150
|
+
|
|
151
|
+
<!-- Optional fields -->
|
|
152
|
+
{#if showOptionalFields}
|
|
153
|
+
<div class="grid gap-2 sm:grid-cols-2">
|
|
154
|
+
<!-- Sort -->
|
|
155
|
+
<div class="rounded-xl border border-[var(--border-color)] overflow-hidden bg-[var(--color-3)]/50">
|
|
103
156
|
<div
|
|
104
|
-
class="
|
|
157
|
+
class="px-3 py-1.5 text-[12px] border-b border-[var(--border-color)]"
|
|
158
|
+
style="color: var(--text-secondary);"
|
|
105
159
|
>
|
|
106
|
-
Sort
|
|
160
|
+
Sort
|
|
107
161
|
</div>
|
|
108
162
|
<input
|
|
109
163
|
type="text"
|
|
110
164
|
bind:value={params.sort}
|
|
111
165
|
name="sort"
|
|
112
166
|
placeholder={"{}"}
|
|
113
|
-
class="
|
|
167
|
+
class="w-full h-9 px-3 bg-transparent outline-none font-mono text-[13px] border-0 !rounded-none"
|
|
168
|
+
style="color: var(--text);"
|
|
114
169
|
/>
|
|
115
170
|
</div>
|
|
116
171
|
|
|
117
|
-
<!--
|
|
118
|
-
<div class="
|
|
172
|
+
<!-- Project -->
|
|
173
|
+
<div class="rounded-xl border border-[var(--border-color)] overflow-hidden bg-[var(--color-3)]/50">
|
|
119
174
|
<div
|
|
120
|
-
class="
|
|
175
|
+
class="px-3 py-1.5 text-[12px] border-b border-[var(--border-color)]"
|
|
176
|
+
style="color: var(--text-secondary);"
|
|
121
177
|
>
|
|
122
|
-
|
|
178
|
+
Project
|
|
123
179
|
</div>
|
|
124
180
|
<input
|
|
125
|
-
type="
|
|
126
|
-
bind:value={params.
|
|
127
|
-
name="
|
|
128
|
-
|
|
129
|
-
class="
|
|
181
|
+
type="text"
|
|
182
|
+
bind:value={params.project}
|
|
183
|
+
name="project"
|
|
184
|
+
placeholder={"{}"}
|
|
185
|
+
class="w-full h-9 px-3 bg-transparent outline-none font-mono text-[13px] border-0 !rounded-none"
|
|
186
|
+
style="color: var(--text);"
|
|
130
187
|
/>
|
|
131
188
|
</div>
|
|
132
189
|
|
|
133
|
-
<!--
|
|
134
|
-
<div class="
|
|
190
|
+
<!-- Skip -->
|
|
191
|
+
<div class="rounded-xl border border-[var(--border-color)] overflow-hidden bg-[var(--color-3)]/50">
|
|
135
192
|
<div
|
|
136
|
-
class="
|
|
193
|
+
class="px-3 py-1.5 text-[12px] border-b border-[var(--border-color)]"
|
|
194
|
+
style="color: var(--text-secondary);"
|
|
137
195
|
>
|
|
138
|
-
|
|
196
|
+
Skip
|
|
139
197
|
</div>
|
|
140
198
|
<input
|
|
141
199
|
type="number"
|
|
142
|
-
bind:value={params.
|
|
143
|
-
name="
|
|
144
|
-
min="
|
|
145
|
-
class="
|
|
200
|
+
bind:value={params.skip}
|
|
201
|
+
name="skip"
|
|
202
|
+
min="0"
|
|
203
|
+
class="w-full h-9 px-3 bg-transparent outline-none font-mono text-[13px] border-0 !rounded-none"
|
|
204
|
+
style="color: var(--text);"
|
|
146
205
|
/>
|
|
147
206
|
</div>
|
|
148
207
|
|
|
149
|
-
<!--
|
|
150
|
-
<div class="
|
|
208
|
+
<!-- Limit -->
|
|
209
|
+
<div class="rounded-xl border border-[var(--border-color)] overflow-hidden bg-[var(--color-3)]/50">
|
|
151
210
|
<div
|
|
152
|
-
class="
|
|
211
|
+
class="px-3 py-1.5 text-[12px] border-b border-[var(--border-color)]"
|
|
212
|
+
style="color: var(--text-secondary);"
|
|
153
213
|
>
|
|
154
|
-
|
|
214
|
+
Limit
|
|
155
215
|
</div>
|
|
156
216
|
<input
|
|
157
|
-
type="
|
|
158
|
-
bind:value={params.
|
|
159
|
-
name="
|
|
160
|
-
|
|
161
|
-
class="
|
|
217
|
+
type="number"
|
|
218
|
+
bind:value={params.limit}
|
|
219
|
+
name="limit"
|
|
220
|
+
min="1"
|
|
221
|
+
class="w-full h-9 px-3 bg-transparent outline-none font-mono text-[13px] border-0 !rounded-none"
|
|
222
|
+
style="color: var(--text);"
|
|
162
223
|
/>
|
|
163
224
|
</div>
|
|
164
|
-
|
|
165
|
-
</div>
|
|
166
|
-
|
|
167
|
-
<!-- Toggle optional fields button -->
|
|
168
|
-
<button
|
|
169
|
-
class="btn btn-default !w-12 !rounded-none !border-r-0 text-2xl leading-none font-bold !py-1.5"
|
|
170
|
-
type="button"
|
|
171
|
-
onclick={() => {
|
|
172
|
-
showOptionalFields = !showOptionalFields;
|
|
173
|
-
}}
|
|
174
|
-
>
|
|
175
|
-
{showOptionalFields ? "−" : "+"}
|
|
176
|
-
</button>
|
|
177
|
-
|
|
178
|
-
<!-- Edit/Update button -->
|
|
179
|
-
{#if !readonly}
|
|
180
|
-
<button
|
|
181
|
-
class="btn btn-default !w-12 !rounded-none !border-r-0 text-lg leading-none font-bold !py-1.5"
|
|
182
|
-
type="button"
|
|
183
|
-
title={isAggregation ? "Update not available in aggregation mode" : "Update multiple documents"}
|
|
184
|
-
disabled={isAggregation}
|
|
185
|
-
onclick={() => {
|
|
186
|
-
editMode = !editMode;
|
|
187
|
-
}}
|
|
188
|
-
>
|
|
189
|
-
<svg
|
|
190
|
-
xmlns="http://www.w3.org/2000/svg"
|
|
191
|
-
width="18"
|
|
192
|
-
height="18"
|
|
193
|
-
viewBox="0 0 24 24"
|
|
194
|
-
fill="none"
|
|
195
|
-
stroke="currentColor"
|
|
196
|
-
stroke-width="2"
|
|
197
|
-
stroke-linecap="round"
|
|
198
|
-
stroke-linejoin="round"
|
|
199
|
-
>
|
|
200
|
-
<path d="M17 3a2.85 2.83 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5Z"></path>
|
|
201
|
-
<path d="m15 5 4 4"></path>
|
|
202
|
-
</svg>
|
|
203
|
-
</button>
|
|
225
|
+
</div>
|
|
204
226
|
{/if}
|
|
205
227
|
|
|
206
|
-
<!--
|
|
207
|
-
|
|
228
|
+
<!-- Help text -->
|
|
229
|
+
{#if !showOptionalFields && !isAggregation && params.query === "{}"}
|
|
230
|
+
<div class="text-xs" style="color: var(--text-secondary);">
|
|
231
|
+
Tip: Use <code class="px-1.5 py-0.5 rounded bg-[var(--color-3)] border border-[var(--border-color)] font-mono"
|
|
232
|
+
>[{"{...}"}]</code
|
|
233
|
+
> to switch to aggregation mode
|
|
234
|
+
</div>
|
|
235
|
+
{/if}
|
|
208
236
|
</form>
|
|
209
|
-
|
|
210
|
-
<!-- Help text when collapsed -->
|
|
211
|
-
{#if !showOptionalFields && !isAggregation && params.query === "{}"}
|
|
212
|
-
<div class="text-xs mt-1 ml-1" style="color: var(--text-secondary);">
|
|
213
|
-
Tip: Use <code class="bg-[var(--color-3)] px-1 py-0.5 rounded font-mono">[{"{...}"}]</code> to switch to aggregation
|
|
214
|
-
mode
|
|
215
|
-
</div>
|
|
216
|
-
{/if}
|
|
217
237
|
</div>
|
|
218
238
|
|
|
219
239
|
<style lang="postcss">
|
|
220
|
-
input,
|
|
240
|
+
input[type="text"],
|
|
241
|
+
input[type="number"],
|
|
221
242
|
textarea {
|
|
222
|
-
border-radius: 0;
|
|
243
|
+
border-radius: 0 !important;
|
|
223
244
|
}
|
|
224
245
|
</style>
|
|
@@ -1,13 +1,29 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
2
|
type Theme = "system" | "light" | "dark";
|
|
3
3
|
|
|
4
|
-
let currentTheme = $state<Theme>("
|
|
4
|
+
let currentTheme = $state<Theme>("system");
|
|
5
|
+
let systemTheme = $state<"light" | "dark">("light");
|
|
5
6
|
|
|
6
|
-
// Load theme from localStorage on mount
|
|
7
|
+
// Load theme from localStorage on mount and listen for system theme changes
|
|
7
8
|
$effect(() => {
|
|
8
9
|
if (typeof window !== "undefined") {
|
|
9
10
|
const stored = localStorage.getItem("theme") as Theme | null;
|
|
10
|
-
currentTheme = stored || "
|
|
11
|
+
currentTheme = stored || "system";
|
|
12
|
+
|
|
13
|
+
// Detect system theme
|
|
14
|
+
const mediaQuery = window.matchMedia("(prefers-color-scheme: dark)");
|
|
15
|
+
systemTheme = mediaQuery.matches ? "dark" : "light";
|
|
16
|
+
|
|
17
|
+
// Listen for system theme changes
|
|
18
|
+
const handler = (e: MediaQueryListEvent) => {
|
|
19
|
+
systemTheme = e.matches ? "dark" : "light";
|
|
20
|
+
if (currentTheme === "system") {
|
|
21
|
+
setTheme("system");
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
mediaQuery.addEventListener("change", handler);
|
|
25
|
+
|
|
26
|
+
return () => mediaQuery.removeEventListener("change", handler);
|
|
11
27
|
}
|
|
12
28
|
});
|
|
13
29
|
|
|
@@ -20,47 +36,186 @@
|
|
|
20
36
|
if (theme === "system") {
|
|
21
37
|
const prefersDark = window.matchMedia("(prefers-color-scheme: dark)").matches;
|
|
22
38
|
root.setAttribute("data-theme", prefersDark ? "dark" : "light");
|
|
39
|
+
// Also add/remove dark class for Tailwind
|
|
40
|
+
if (prefersDark) {
|
|
41
|
+
root.classList.add("dark");
|
|
42
|
+
} else {
|
|
43
|
+
root.classList.remove("dark");
|
|
44
|
+
}
|
|
23
45
|
} else {
|
|
24
46
|
root.setAttribute("data-theme", theme);
|
|
47
|
+
// Also add/remove dark class for Tailwind
|
|
48
|
+
if (theme === "dark") {
|
|
49
|
+
root.classList.add("dark");
|
|
50
|
+
} else {
|
|
51
|
+
root.classList.remove("dark");
|
|
52
|
+
}
|
|
25
53
|
}
|
|
26
|
-
}
|
|
27
54
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
const currentIndex = themes.indexOf(currentTheme);
|
|
31
|
-
const nextTheme = themes[(currentIndex + 1) % themes.length];
|
|
32
|
-
setTheme(nextTheme);
|
|
55
|
+
// Set theme mode for CSS-based rendering
|
|
56
|
+
root.setAttribute("data-theme-mode", theme);
|
|
33
57
|
}
|
|
34
58
|
|
|
35
|
-
const
|
|
36
|
-
switch (currentTheme) {
|
|
37
|
-
case "light":
|
|
38
|
-
return "☀️";
|
|
39
|
-
case "dark":
|
|
40
|
-
return "🌙";
|
|
41
|
-
case "system":
|
|
42
|
-
return "💻";
|
|
43
|
-
}
|
|
44
|
-
});
|
|
59
|
+
const oppositeTheme = $derived(systemTheme === "dark" ? "light" : "dark");
|
|
45
60
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
case "system":
|
|
53
|
-
return "System";
|
|
61
|
+
function toggleTheme() {
|
|
62
|
+
if (currentTheme === "system") {
|
|
63
|
+
setTheme(oppositeTheme);
|
|
64
|
+
} else {
|
|
65
|
+
// Toggle between light and dark
|
|
66
|
+
setTheme(currentTheme === "light" ? "dark" : "light");
|
|
54
67
|
}
|
|
55
|
-
}
|
|
68
|
+
}
|
|
56
69
|
</script>
|
|
57
70
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
71
|
+
{#snippet sunIcon()}
|
|
72
|
+
<svg
|
|
73
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
74
|
+
class="h-4 w-4"
|
|
75
|
+
viewBox="0 0 24 24"
|
|
76
|
+
fill="none"
|
|
77
|
+
stroke="currentColor"
|
|
78
|
+
stroke-width="1.6"
|
|
79
|
+
>
|
|
80
|
+
<circle cx="12" cy="12" r="4"></circle>
|
|
81
|
+
<path
|
|
82
|
+
d="M12 2v2m0 16v2m10-10h-2M4 12H2m15.364-7.364-1.414 1.414M8.05 16.95l-1.414 1.414m0-12.728L8.05 6.364m10.607 10.607 1.414 1.414"
|
|
83
|
+
></path>
|
|
84
|
+
</svg>
|
|
85
|
+
{/snippet}
|
|
86
|
+
|
|
87
|
+
{#snippet moonIcon()}
|
|
88
|
+
<svg
|
|
89
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
90
|
+
class="h-4 w-4"
|
|
91
|
+
viewBox="0 0 24 24"
|
|
92
|
+
fill="none"
|
|
93
|
+
stroke="currentColor"
|
|
94
|
+
stroke-width="1.6"
|
|
95
|
+
>
|
|
96
|
+
<path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path>
|
|
97
|
+
</svg>
|
|
98
|
+
{/snippet}
|
|
99
|
+
|
|
100
|
+
{#snippet systemIcon()}
|
|
101
|
+
<svg
|
|
102
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
103
|
+
class="h-4 w-4"
|
|
104
|
+
viewBox="0 0 24 24"
|
|
105
|
+
fill="none"
|
|
106
|
+
stroke="currentColor"
|
|
107
|
+
stroke-width="1.6"
|
|
108
|
+
>
|
|
109
|
+
<rect x="2" y="3" width="20" height="14" rx="2" ry="2"></rect>
|
|
110
|
+
<line x1="8" y1="21" x2="16" y2="21"></line>
|
|
111
|
+
<line x1="12" y1="17" x2="12" y2="21"></line>
|
|
112
|
+
</svg>
|
|
113
|
+
{/snippet}
|
|
114
|
+
|
|
115
|
+
<div
|
|
116
|
+
class="theme-switcher inline-flex rounded-lg border border-[var(--border-color)] bg-[var(--light-background)] overflow-hidden text-sm font-medium"
|
|
117
|
+
style="color: var(--text);"
|
|
63
118
|
>
|
|
64
|
-
|
|
65
|
-
<
|
|
66
|
-
|
|
119
|
+
<!-- Left side -->
|
|
120
|
+
<button
|
|
121
|
+
onclick={toggleTheme}
|
|
122
|
+
class="inline-flex items-center gap-2 px-2.5 py-1.5 hover:bg-[var(--color-3)] transition cursor-pointer"
|
|
123
|
+
aria-label="Toggle theme"
|
|
124
|
+
>
|
|
125
|
+
<!-- Light mode selected -->
|
|
126
|
+
<span class="theme-content theme-light inline-flex items-center gap-2">
|
|
127
|
+
{@render sunIcon()}
|
|
128
|
+
<span class="hidden sm:inline text-[13px]" style="color: var(--text-secondary);">Light</span>
|
|
129
|
+
</span>
|
|
130
|
+
|
|
131
|
+
<!-- Dark mode selected -->
|
|
132
|
+
<span class="theme-content theme-dark inline-flex items-center gap-2">
|
|
133
|
+
{@render moonIcon()}
|
|
134
|
+
<span class="hidden sm:inline text-[13px]" style="color: var(--text-secondary);">Dark</span>
|
|
135
|
+
</span>
|
|
136
|
+
|
|
137
|
+
<!-- System mode + light actual theme -->
|
|
138
|
+
<span class="theme-content theme-system-light inline-flex items-center gap-2">
|
|
139
|
+
{@render sunIcon()}
|
|
140
|
+
</span>
|
|
141
|
+
|
|
142
|
+
<!-- System mode + dark actual theme -->
|
|
143
|
+
<span class="theme-content theme-system-dark inline-flex items-center gap-2">
|
|
144
|
+
{@render moonIcon()}
|
|
145
|
+
</span>
|
|
146
|
+
</button>
|
|
147
|
+
|
|
148
|
+
<!-- Divider -->
|
|
149
|
+
<div class="w-px bg-[var(--border-color)]"></div>
|
|
150
|
+
|
|
151
|
+
<!-- Right side -->
|
|
152
|
+
<button
|
|
153
|
+
onclick={() => setTheme("system")}
|
|
154
|
+
class="inline-flex items-center gap-2 px-2.5 py-1.5 hover:bg-[var(--color-3)] transition cursor-pointer"
|
|
155
|
+
aria-label="Switch to system theme"
|
|
156
|
+
>
|
|
157
|
+
{@render systemIcon()}
|
|
158
|
+
<span class="theme-text-system hidden sm:inline text-[13px]" style="color: var(--text-secondary);"> System </span>
|
|
159
|
+
</button>
|
|
160
|
+
</div>
|
|
161
|
+
|
|
162
|
+
<style>
|
|
163
|
+
/* Hide all theme content by default */
|
|
164
|
+
.theme-content {
|
|
165
|
+
display: none;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
/* Show light mode when selected */
|
|
169
|
+
:global(html[data-theme-mode="light"]) .theme-light {
|
|
170
|
+
display: inline-flex;
|
|
171
|
+
opacity: 1;
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
/* Show dark mode when selected */
|
|
175
|
+
:global(html[data-theme-mode="dark"]) .theme-dark {
|
|
176
|
+
display: inline-flex;
|
|
177
|
+
opacity: 1;
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
/* Show system mode icons based on actual theme */
|
|
181
|
+
:global(html[data-theme-mode="system"][data-theme="light"]) .theme-system-light {
|
|
182
|
+
display: inline-flex;
|
|
183
|
+
opacity: 0.6;
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
:global(html[data-theme-mode="system"][data-theme="dark"]) .theme-system-dark {
|
|
187
|
+
display: inline-flex;
|
|
188
|
+
opacity: 0.6;
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
/* Show System text only when system mode is selected */
|
|
192
|
+
.theme-text-system {
|
|
193
|
+
display: none;
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
:global(html[data-theme-mode="system"]) .theme-text-system {
|
|
197
|
+
display: inline;
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
/* Opacity for left button when not system mode */
|
|
201
|
+
:global(html[data-theme-mode="light"]) .theme-switcher button:first-child,
|
|
202
|
+
:global(html[data-theme-mode="dark"]) .theme-switcher button:first-child {
|
|
203
|
+
opacity: 1;
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
/* Opacity for left button when system mode */
|
|
207
|
+
:global(html[data-theme-mode="system"]) .theme-switcher button:first-child {
|
|
208
|
+
opacity: 0.6;
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
/* Opacity for right button when system mode */
|
|
212
|
+
:global(html[data-theme-mode="system"]) .theme-switcher button:last-child {
|
|
213
|
+
opacity: 1;
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
/* Opacity for right button when not system mode */
|
|
217
|
+
:global(html[data-theme-mode="light"]) .theme-switcher button:last-child,
|
|
218
|
+
:global(html[data-theme-mode="dark"]) .theme-switcher button:last-child {
|
|
219
|
+
opacity: 0.6;
|
|
220
|
+
}
|
|
221
|
+
</style>
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
|
+
import { portal } from "$lib/actions/portal";
|
|
2
3
|
import { tick, type Snippet } from "svelte";
|
|
3
4
|
|
|
4
5
|
interface Props {
|
|
@@ -10,9 +11,13 @@
|
|
|
10
11
|
show?: boolean;
|
|
11
12
|
/** Additional class for the tooltip container */
|
|
12
13
|
tooltipClass?: string;
|
|
14
|
+
/** Callback when mouse enters the tooltip content */
|
|
15
|
+
onTooltipMouseEnter?: () => void;
|
|
16
|
+
/** Callback when mouse leaves the tooltip content */
|
|
17
|
+
onTooltipMouseLeave?: () => void;
|
|
13
18
|
}
|
|
14
19
|
|
|
15
|
-
let { trigger, content, show = false, tooltipClass = "" }: Props = $props();
|
|
20
|
+
let { trigger, content, show = false, tooltipClass = "", onTooltipMouseEnter, onTooltipMouseLeave }: Props = $props();
|
|
16
21
|
|
|
17
22
|
let tooltipElement = $state<HTMLDivElement>();
|
|
18
23
|
let containerElement = $state<HTMLDivElement>();
|
|
@@ -67,16 +72,20 @@
|
|
|
67
72
|
});
|
|
68
73
|
</script>
|
|
69
74
|
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
75
|
+
<!-- The formatting is intentional to avoid adding extra spaces around the trigger -->
|
|
76
|
+
<div class="relative inline-block" bind:this={containerElement}>{@render trigger()}</div>{#if show}
|
|
77
|
+
<div
|
|
78
|
+
use:portal
|
|
79
|
+
role="tooltip"
|
|
80
|
+
class="fixed bg-[var(--light-background)] border border-[var(--border-color)] rounded-2xl z-[1000] shadow-xl backdrop-blur-md {tooltipClass}"
|
|
81
|
+
bind:this={tooltipElement}
|
|
82
|
+
style:left={tooltipPosition.left}
|
|
83
|
+
style:right={tooltipPosition.right}
|
|
84
|
+
style:top={tooltipPosition.top}
|
|
85
|
+
style="color: var(--text);"
|
|
86
|
+
onmouseenter={onTooltipMouseEnter}
|
|
87
|
+
onmouseleave={onTooltipMouseLeave}
|
|
88
|
+
>
|
|
89
|
+
{@render content()}
|
|
90
|
+
</div>
|
|
91
|
+
{/if}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
2
|
import { resolve } from "$app/paths";
|
|
3
|
+
import { createPortal } from "$lib/actions/portal";
|
|
3
4
|
import Breadcrumbs from "$lib/components/Breadcrumbs.svelte";
|
|
4
5
|
import Notifications from "$lib/components/Notifications.svelte";
|
|
5
6
|
import OriginWarning from "$lib/components/OriginWarning.svelte";
|
|
@@ -15,26 +16,44 @@
|
|
|
15
16
|
</svelte:head>
|
|
16
17
|
|
|
17
18
|
<div style="min-height: 100vh">
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
<
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
19
|
+
<!-- App bar -->
|
|
20
|
+
<header class="sticky top-0 z-50 border-b border-[var(--border-color)] bg-[var(--background-color)]/80">
|
|
21
|
+
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
|
|
22
|
+
<div class="h-14 flex items-center gap-3">
|
|
23
|
+
<!-- Logo -->
|
|
24
|
+
<a href={resolve("/")} class="inline-flex items-center gap-2 group no-underline hover:no-underline">
|
|
25
|
+
<span
|
|
26
|
+
class="inline-flex items-center justify-center w-7 h-7 rounded-md bg-black dark:bg-white text-white dark:text-black text-sm font-semibold select-none"
|
|
27
|
+
>
|
|
28
|
+
M
|
|
29
|
+
</span>
|
|
30
|
+
<span class="text-lg font-semibold tracking-tight" style="color: var(--text);">Mongoku</span>
|
|
31
|
+
</a>
|
|
32
|
+
|
|
33
|
+
<div class="hidden md:block w-px h-5 bg-[var(--border-color)]"></div>
|
|
34
|
+
|
|
35
|
+
<!-- Breadcrumbs -->
|
|
36
|
+
<Breadcrumbs />
|
|
37
|
+
|
|
38
|
+
<div class="ml-auto flex items-center gap-2">
|
|
39
|
+
<!-- View tabs -->
|
|
40
|
+
<PageSwitcher class="" />
|
|
41
|
+
<ThemeSwitcher />
|
|
42
|
+
</div>
|
|
43
|
+
</div>
|
|
24
44
|
</div>
|
|
25
|
-
</
|
|
45
|
+
</header>
|
|
26
46
|
|
|
27
47
|
<OriginWarning serverOrigin={data.serverOrigin} readOnly={data.readOnly} />
|
|
28
48
|
|
|
29
|
-
|
|
49
|
+
<!-- Main -->
|
|
50
|
+
<main class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-6 md:py-10">
|
|
30
51
|
<Notifications />
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
</div>
|
|
52
|
+
<div class="flex flex-col gap-6">
|
|
53
|
+
{@render children()}
|
|
54
|
+
</div>
|
|
55
|
+
</main>
|
|
34
56
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
border-bottom: var(--border);
|
|
39
|
-
}
|
|
40
|
-
</style>
|
|
57
|
+
<!-- Portal container for tooltips and other overlay content -->
|
|
58
|
+
<div use:createPortal></div>
|
|
59
|
+
</div>
|