UNPKG

mira-app-server

Version:

Mira Server - standalone server application using mira-app-core

2 lines (1 loc) 10.3 kB
import{aJ as y,d3 as C,d2 as U,cR as P,al as w,a1 as D,ax as S,as as t,aH as d,dq as c,bL as E,cr as s,bZ as _,c8 as k,db as F,t as L,p as N,l as B,j as R,at as I,aG as h,d1 as $,bV as H,x as G,cb as J,cg as M}from"./index-OOzZz4T6.js";import{a as z,C as A}from"./CardContent-Kj1V4j7G.js";import{F as q,P as W,N as Z,G as K,s as T}from"./FileUpload-DAQxSw5N.js";import{f as Q,e as X,d as Y,T as ee}from"./TooltipTrigger-BN8IaDgz.js";import"./SelectValue-BTic8Ggd.js";import"./Collection-xoV-DHwv.js";import"./usePrimitiveElement-CCN0lZVt.js";import"./Switch-QckDRkQW.js";import"./Slider-IdZsXzZo.js";import"./createLucideIcon-DGRAKu_b.js";import"./Input-CZG1tOaA.js";const te=y({__name:"OverviewPanel",setup(n,{expose:o}){o();const a=C(),e=U(),{t:r}=P(),i=w(()=>{switch(a.connectionStatus){case"connected":return"text-green-600";case"connecting":case"reconnecting":return"text-yellow-600";case"error":return"text-destructive";default:return"text-muted-foreground"}}),l=w(()=>{switch(a.connectionStatus){case"connected":return r("views.overviewPanel.connected");case"connecting":return r("views.overviewPanel.connecting");case"reconnecting":return r("views.overviewPanel.reconnecting");case"error":return r("views.overviewPanel.connectionFailed");default:return r("views.overviewPanel.notConnected")}}),m=w(()=>typeof window<"u"&&window.electronAPI?window.electronAPI.platform||"Unknown":navigator.platform||"Web"),f=w(()=>"1.0.0"),v={settingsStore:a,serverListStore:e,t:r,connectionStatusColor:i,connectionStatusText:l,systemPlatform:m,appVersion:f,get Card(){return A},get CardContent(){return z}};return Object.defineProperty(v,"__isScriptSetup",{enumerable:!1,value:!0}),v}}),oe={class:"p-4 space-y-6"},re={class:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4"},ne={class:"flex items-center gap-3 mb-3"},se={class:"font-semibold text-foreground dark:text-muted-foreground"},ae={class:"text-sm text-muted-foreground dark:text-muted-foreground"},ie={class:"text-xs text-muted-foreground"},le={class:"flex items-center gap-3 mb-3"},de={class:"font-semibold text-foreground dark:text-muted-foreground"},ce={class:"text-sm text-muted-foreground dark:text-muted-foreground"},ge={class:"text-xs text-muted-foreground"};function ue(n,o,a,e,r,i){return _(),S("div",oe,[t("div",re,[d(e.Card,{class:"p-4"},{default:c(()=>[d(e.CardContent,null,{default:c(()=>[t("div",ne,[t("span",{class:E(["material-icons text-2xl",e.connectionStatusColor])},"language",2),t("div",null,[t("h3",se,s(n.$t("views.overviewPanel.connectionStatus")),1),t("p",ae,s(e.connectionStatusText),1)])]),t("div",ie,s(n.$t("views.overviewPanel.server"))+" "+s(e.serverListStore.activeServer?.serverUrl||n.$t("views.overviewPanel.notConnected")),1)]),_:1})]),_:1}),d(e.Card,{class:"p-4"},{default:c(()=>[d(e.CardContent,null,{default:c(()=>[t("div",le,[o[0]||(o[0]=t("span",{class:"material-icons text-2xl text-primary"},"computer",-1)),t("div",null,[t("h3",de,s(n.$t("views.overviewPanel.systemInfo")),1),t("p",ce,s(e.systemPlatform),1)])]),t("div",ge,s(n.$t("views.overviewPanel.version"))+" "+s(e.appVersion),1)]),_:1})]),_:1})])])}const j=D(te,[["render",ue],["__file","D:/mira_typescript/packages/mira-client/src/renderer/views/settings/OverviewPanel.vue"]]),me=y({__name:"SettingsImportExportDialog",setup(n,{expose:o}){const a=C(),e=F(),{t:r}=P(),i=k(!1),l=g=>{i.value=g},m=()=>{i.value=!0},f=async()=>{try{const g=JSON.stringify(a.settings,null,2),x=new Blob([g],{type:"application/json"}),p=URL.createObjectURL(x),u=document.createElement("a");u.href=p,u.download=`mira-settings-${new Date().toISOString().split("T")[0]}.json`,u.click(),URL.revokeObjectURL(p),e.add({severity:"success",summary:r("views.dataPanel.exportSuccess"),detail:r("views.dataPanel.exportSuccessDetail"),life:3e3})}catch(g){e.add({severity:"error",summary:r("views.dataPanel.exportFailed"),detail:g instanceof Error?g.message:r("views.dataPanel.exportError"),life:5e3})}},v=async g=>{const x=g.files[0];if(x)try{const p=await x.text(),u=JSON.parse(p);if(typeof u!="object"||!u.serverUrl)throw new Error(r("views.dataPanel.invalidFormat"));Object.assign(a.settings,u),await a.saveSettings(),i.value=!1,e.add({severity:"success",summary:r("views.dataPanel.importSuccess"),detail:r("views.dataPanel.importSuccessDetail"),life:3e3})}catch(p){e.add({severity:"error",summary:r("views.dataPanel.importFailed"),detail:p instanceof Error?p.message:r("views.dataPanel.importError"),life:5e3})}};o({openImportDialog:m,exportSettings:f});const b={settingsStore:a,toast:e,t:r,showImportDialog:i,handleOpenChange:l,openImportDialog:m,exportSettings:f,handleFileSelect:v,get Dialog(){return R},get DialogContent(){return B},get DialogHeader(){return N},get DialogTitle(){return L},FileUpload:q};return Object.defineProperty(b,"__isScriptSetup",{enumerable:!1,value:!0}),b}});function pe(n,o,a,e,r,i){return _(),I(e.Dialog,{open:e.showImportDialog,"onUpdate:open":e.handleOpenChange},{default:c(()=>[d(e.DialogContent,{class:"sm:max-w-[400px]"},{default:c(()=>[d(e.DialogHeader,null,{default:c(()=>[d(e.DialogTitle,null,{default:c(()=>[h(s(n.$t("views.settingsImportExportDialog.title")),1)]),_:1})]),_:1}),d(e.FileUpload,{name:"settings",accept:".json","max-file-size":1e6,"choose-label":n.$t("views.settingsImportExportDialog.chooseFile"),onSelect:e.handleFileSelect},null,8,["choose-label"])]),_:1})]),_:1},8,["open"])}const fe=D(me,[["render",pe],["__file","D:/mira_typescript/packages/mira-client/src/renderer/views/settings/SettingsImportExportDialog.vue"]]),ve=y({__name:"SettingsView",setup(n,{expose:o}){o();const a=$(),e=C(),r=F(),{t:i}=P(),l=k("overview"),m=k(),f=w(()=>({overview:j,general:K,notifications:Z,plugins:W})[l.value]||j),v=()=>T.find(O=>O.id===l.value)?.name||i("views.settingsView.settingsFallback"),b=()=>{a.go(-1)},g=()=>{m.value?.openImportDialog()},x=()=>{m.value?.exportSettings()},p=()=>{r.add({severity:"info",summary:i("views.settingsView.feedbackTitle"),detail:i("views.settingsView.feedbackDetail"),life:3e3})};H(async()=>{await e.loadSettings()});const u={router:a,settingsStore:e,toast:r,t:i,activeSection:l,importExportDialog:m,currentComponent:f,getCurrentSectionName:v,goBack:b,importSettings:g,exportSettings:x,openFeedback:p,SettingsImportExportDialog:fe,get settingSections(){return T},get Tooltip(){return ee},get TooltipContent(){return Y},get TooltipProvider(){return X},get TooltipTrigger(){return Q}};return Object.defineProperty(u,"__isScriptSetup",{enumerable:!1,value:!0}),u}}),xe={class:"settings h-full flex flex-col bg-muted dark:bg-muted"},_e={class:"flex items-center justify-between whitespace-nowrap border-b border-solid border-b-slate-200 dark:border-border px-10 py-3 bg-white dark:bg-muted"},we={class:"flex items-center gap-4 text-foreground dark:text-muted-foreground"},be={class:"flex gap-3"},Se={class:"gap-1 px-6 flex flex-1 justify-center py-5"},he={class:"layout-content-container flex flex-col w-80"},ke={class:"flex h-full min-h-[700px] flex-col justify-between bg-muted dark:bg-muted p-4"},ye={class:"flex flex-col gap-4"},Ce={class:"flex flex-col gap-2"},Pe=["onClick"],De={class:"text-foreground dark:text-muted-foreground"},Te={class:"material-icons text-lg"},je={class:"text-foreground dark:text-muted-foreground text-sm font-medium leading-normal"},Ee={class:"layout-content-container flex flex-col max-w-[960px] flex-1"},Fe={class:"flex flex-wrap justify-between gap-3 p-4"},Ie={class:"text-foreground dark:text-muted-foreground tracking-light text-[32px] font-bold leading-tight min-w-72"};function Ve(n,o,a,e,r,i){return _(),S("div",xe,[t("header",_e,[t("div",we,[d(e.TooltipProvider,null,{default:c(()=>[d(e.Tooltip,null,{default:c(()=>[d(e.TooltipTrigger,{"as-child":""},{default:c(()=>[t("button",{class:"flex h-10 w-10 items-center justify-center rounded-full bg-transparent text-foreground dark:text-muted-foreground hover:bg-muted dark:hover:bg-muted transition-colors",onClick:e.goBack},o[0]||(o[0]=[t("span",{class:"material-icons text-lg"},"arrow_back",-1)]))]),_:1}),d(e.TooltipContent,{side:"bottom"},{default:c(()=>[h(s(n.$t("views.settingsView.back")),1)]),_:1})]),_:1})]),_:1}),o[1]||(o[1]=t("span",{class:"material-icons text-lg"},"settings",-1)),o[2]||(o[2]=t("h2",{class:"text-foreground dark:text-muted-foreground text-lg font-bold leading-tight tracking-[-0.015em]"},"Settings",-1))]),t("div",be,[t("button",{class:"flex items-center gap-2 rounded-lg border border-border dark:border-border bg-white dark:bg-muted px-4 py-2 text-sm font-medium text-foreground dark:text-muted-foreground hover:bg-muted dark:hover:bg-muted transition-colors",onClick:e.importSettings},[o[3]||(o[3]=t("span",{class:"material-icons text-sm"},"upload",-1)),h(" "+s(n.$t("views.settingsView.importSettings")),1)]),t("button",{class:"flex items-center gap-2 rounded-lg bg-primary px-4 py-2 text-sm font-medium text-white hover:bg-primary transition-colors",onClick:e.exportSettings},[o[4]||(o[4]=t("span",{class:"material-icons text-sm"},"download",-1)),h(" "+s(n.$t("views.settingsView.exportSettings")),1)])])]),t("div",Se,[t("div",he,[t("div",ke,[t("div",ye,[o[5]||(o[5]=t("h1",{class:"text-foreground dark:text-muted-foreground text-base font-medium leading-normal"},"Settings",-1)),t("div",Ce,[(_(!0),S(G,null,J(e.settingSections,l=>(_(),S("div",{key:l.id,class:E(["flex items-center gap-3 px-3 py-2 cursor-pointer rounded-full transition-colors",e.activeSection===l.id?"bg-accent dark:bg-muted":"hover:bg-muted dark:hover:bg-muted"]),onClick:m=>e.activeSection=l.id},[t("div",De,[t("span",Te,s(l.icon),1)]),t("p",je,s(e.t(l.name)),1)],10,Pe))),128))])]),t("div",{class:"flex flex-col gap-1"},[t("div",{class:"flex items-center gap-3 px-3 py-2 cursor-pointer hover:bg-muted dark:hover:bg-muted rounded-full transition-colors",onClick:e.openFeedback},o[6]||(o[6]=[t("div",{class:"text-foreground dark:text-muted-foreground"},[t("span",{class:"material-icons text-lg"},"campaign")],-1),t("p",{class:"text-foreground dark:text-muted-foreground text-sm font-medium leading-normal"},"Feedback",-1)]))])])]),t("div",Ee,[t("div",Fe,[t("p",Ie,s(e.getCurrentSectionName()),1)]),(_(),I(M(e.currentComponent)))])]),d(e.SettingsImportExportDialog,{ref:"importExportDialog"},null,512)])}const ze=D(ve,[["render",Ve],["__file","D:/mira_typescript/packages/mira-client/src/renderer/views/SettingsView.vue"]]);export{ze as default};