mongoku 2.2.4 → 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/{D4iRRB8h.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/{Dx56OlI-.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/{BQEBQyfZ.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/DR2XDb5m.js +4 -0
- 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/{C2sjtvBO.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.DrdSPfGo.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.qfhS2VqU.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.BXMJq3Z_.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-C_LPMO7A.js.map → 1-lbtVyJzb.js.map} +1 -1
- package/build/server/chunks/{10-DGUQMXHt.js → 10-srcxgYum.js} +4 -4
- package/build/server/chunks/10-srcxgYum.js.map +1 -0
- package/build/server/chunks/{11-CxBnyyqR.js → 11-Do6XJz0l.js} +4 -4
- package/build/server/chunks/11-Do6XJz0l.js.map +1 -0
- package/build/server/chunks/{12-K_JVUnsk.js → 12-zP_nvSCU.js} +4 -4
- package/build/server/chunks/12-zP_nvSCU.js.map +1 -0
- package/build/server/chunks/{13-Cay35aHK.js → 13-Df-9cdO7.js} +4 -4
- package/build/server/chunks/{13-Cay35aHK.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-DvU-_ADW.js → 7-_mc0fkA5.js} +4 -4
- package/build/server/chunks/7-_mc0fkA5.js.map +1 -0
- package/build/server/chunks/{8-CA3-CJtS.js → 8-CgCyM--7.js} +4 -4
- package/build/server/chunks/8-CgCyM--7.js.map +1 -0
- package/build/server/chunks/{9-jMOS3lPS.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-D3CylSVd.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-DoOBFRSo.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-2w3fCax2.js → _page.svelte-C8zstZ7b.js} +6 -6
- package/build/server/chunks/{_page.svelte-2w3fCax2.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/BQEBQyfZ.js.br +0 -0
- package/build/client/_app/immutable/chunks/BQEBQyfZ.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/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/C0rm4mmq.js +0 -1
- package/build/client/_app/immutable/chunks/C0rm4mmq.js.br +0 -0
- package/build/client/_app/immutable/chunks/C0rm4mmq.js.gz +0 -0
- package/build/client/_app/immutable/chunks/C2sjtvBO.js.br +0 -0
- package/build/client/_app/immutable/chunks/C2sjtvBO.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/CGSOl_q_.js +0 -4
- package/build/client/_app/immutable/chunks/CGSOl_q_.js.br +0 -0
- package/build/client/_app/immutable/chunks/CGSOl_q_.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CjNnAkTB.js +0 -1
- package/build/client/_app/immutable/chunks/CjNnAkTB.js.br +0 -0
- package/build/client/_app/immutable/chunks/CjNnAkTB.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/D4iRRB8h.js.br +0 -0
- package/build/client/_app/immutable/chunks/D4iRRB8h.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/DVRQRZnh.js +0 -1
- package/build/client/_app/immutable/chunks/DVRQRZnh.js.br +0 -0
- package/build/client/_app/immutable/chunks/DVRQRZnh.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DcPEQ0_V.js +0 -29
- package/build/client/_app/immutable/chunks/DcPEQ0_V.js.br +0 -0
- package/build/client/_app/immutable/chunks/DcPEQ0_V.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Dx56OlI-.js.br +0 -2
- package/build/client/_app/immutable/chunks/Dx56OlI-.js.gz +0 -0
- package/build/client/_app/immutable/chunks/PXh00dfp.js +0 -2
- package/build/client/_app/immutable/chunks/PXh00dfp.js.br +0 -0
- package/build/client/_app/immutable/chunks/PXh00dfp.js.gz +0 -0
- package/build/client/_app/immutable/entry/app.DrdSPfGo.js.br +0 -0
- package/build/client/_app/immutable/entry/app.DrdSPfGo.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.DGG3CpnK.js +0 -1
- package/build/client/_app/immutable/entry/start.DGG3CpnK.js.br +0 -2
- package/build/client/_app/immutable/entry/start.DGG3CpnK.js.gz +0 -0
- package/build/client/_app/immutable/nodes/0.kCLtccjl.js +0 -5
- package/build/client/_app/immutable/nodes/0.kCLtccjl.js.br +0 -0
- package/build/client/_app/immutable/nodes/0.kCLtccjl.js.gz +0 -0
- package/build/client/_app/immutable/nodes/1.Dr8p9JHT.js +0 -1
- package/build/client/_app/immutable/nodes/1.Dr8p9JHT.js.br +0 -3
- package/build/client/_app/immutable/nodes/1.Dr8p9JHT.js.gz +0 -0
- package/build/client/_app/immutable/nodes/10.B4uwvHd0.js +0 -2
- package/build/client/_app/immutable/nodes/10.B4uwvHd0.js.br +0 -0
- package/build/client/_app/immutable/nodes/10.B4uwvHd0.js.gz +0 -0
- package/build/client/_app/immutable/nodes/11.qfhS2VqU.js.br +0 -0
- package/build/client/_app/immutable/nodes/11.qfhS2VqU.js.gz +0 -0
- package/build/client/_app/immutable/nodes/12.DkZDCIfS.js +0 -1
- package/build/client/_app/immutable/nodes/12.DkZDCIfS.js.br +0 -0
- package/build/client/_app/immutable/nodes/12.DkZDCIfS.js.gz +0 -0
- package/build/client/_app/immutable/nodes/13.DFVzMgyY.js +0 -66
- package/build/client/_app/immutable/nodes/13.DFVzMgyY.js.br +0 -0
- package/build/client/_app/immutable/nodes/13.DFVzMgyY.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.D14iWySv.js +0 -1
- package/build/client/_app/immutable/nodes/7.D14iWySv.js.br +0 -0
- package/build/client/_app/immutable/nodes/7.D14iWySv.js.gz +0 -0
- package/build/client/_app/immutable/nodes/8.BSXe_VNA.js +0 -1
- package/build/client/_app/immutable/nodes/8.BSXe_VNA.js.br +0 -0
- package/build/client/_app/immutable/nodes/8.BSXe_VNA.js.gz +0 -0
- package/build/client/_app/immutable/nodes/9.BXMJq3Z_.js.br +0 -0
- package/build/client/_app/immutable/nodes/9.BXMJq3Z_.js.gz +0 -0
- package/build/server/chunks/0-BozXjQlk.js +0 -22
- package/build/server/chunks/0-BozXjQlk.js.map +0 -1
- package/build/server/chunks/1-C_LPMO7A.js +0 -9
- package/build/server/chunks/10-DGUQMXHt.js.map +0 -1
- package/build/server/chunks/11-CxBnyyqR.js.map +0 -1
- package/build/server/chunks/12-K_JVUnsk.js.map +0 -1
- package/build/server/chunks/7-DvU-_ADW.js.map +0 -1
- package/build/server/chunks/8-CA3-CJtS.js.map +0 -1
- package/build/server/chunks/9-jMOS3lPS.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-D3CylSVd.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-DoOBFRSo.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>
|