P1: kubernetes/system API 拆为子目录模块,导出工具下沉到 lib/export-utils,
http 统一 buildApiUrl/getWsBase;HostMonitor、DeploymentEdit* 拆至子组件。
P2: 新增 hooks/api(queryKeys、useTerminalSessions、useHostMonitor),
TerminalSessionsTab 与 HostMonitor 接入 TanStack Query。
P3: 保留 services/api 路径,未迁移至 api/ 目录。
2 lines
47 KiB
JavaScript
2 lines
47 KiB
JavaScript
import{f as st,r as a,h as I,j as e,B as b,t as $e,G as rt,z as nt,s as ot,v as ct,S as dt,Y as V,C as lt,D as qe,a as ze,b as Be,c as Ue,d as pt,e as Ge,T as it,Z as Ye,O as Qe,_ as xt}from"./index-Dmami9WE.js";import{I as p}from"./input-NsU9nXZF.js";import{L as l}from"./label-Ap_-SPYI.js";import{B as S}from"./badge-3UzCvU7L.js";import{S as Ke,a as De,b as Ae,c as Pe,d as _}from"./select-DUbxjT0z.js";import{t as y}from"./index-BuEnLCjT.js";import{R as mt}from"./refresh-cw-CTBERyFc.js";import{P as Re}from"./plus-O65gX7Qz.js";import{S as gt}from"./search-Dd-PeBfg.js";import{Z as ht}from"./zap-CocSkPPl.js";import{F as yt}from"./file-text-CebshSV-.js";import{P as vt}from"./pencil-BYahlvYT.js";import{C as Ze}from"./circle-x-BBQeW1R3.js";import{C as We}from"./circle-check-CVbTTFQ0.js";import{T as Ct}from"./trash-2-DWVnIU6o.js";import{C as Ve}from"./copy-CE_T92Lk.js";import"./index-CtCQcvyh.js";import"./chevron-up-Cq4GPopa.js";const O={ssh:{label:"SSH 密钥",icon:dt,color:"text-amber-400",desc:"SSH 私钥/公钥/密码"},docker:{label:"Docker 凭证",icon:ct,color:"text-cyan-400",desc:"Docker Registry 登录凭据"},tls:{label:"TLS 证书",icon:$e,color:"text-green-400",desc:"TLS/SSL 证书与私钥"},aksk:{label:"AKSK 密钥",icon:ot,color:"text-purple-400",desc:"云服务 AccessKey/SecretKey"},database:{label:"数据库凭证",icon:nt,color:"text-blue-400",desc:"数据库连接信息"},api:{label:"API 密钥",icon:rt,color:"text-orange-400",desc:"API Token/Key + 端点"},generic:{label:"通用凭证",icon:yt,color:"text-gray-400",desc:"自定义 Key/Value 键值对"}},Xe={ssh:"bg-amber-500/20 text-amber-400 border-amber-500/30",docker:"bg-cyan-500/20 text-cyan-400 border-cyan-500/30",tls:"bg-green-500/20 text-green-400 border-green-500/30",aksk:"bg-purple-500/20 text-purple-400 border-purple-500/30",database:"bg-blue-500/20 text-blue-400 border-blue-500/30",api:"bg-orange-500/20 text-orange-400 border-orange-500/30",generic:"bg-gray-500/20 text-gray-400 border-gray-500/30"};function ut({open:j,onClose:M,credId:k}){const[n,h]=a.useState(null),[T,v]=a.useState(!1),[E,w]=a.useState({});if(a.useEffect(()=>{!k||!j||(v(!0),I.get(`/credentials/${k}`).then(d=>{h(d)}).catch(()=>y.error("加载详情失败")).finally(()=>v(!1)))},[k,j]),!j||!k)return null;const c=d=>w(i=>({...i,[d]:!i[d]})),K=d=>{navigator.clipboard.writeText(d),y.success("已复制")},x=n?.secret_type,C=O[x],r=n?.content||{},o=({label:d,value:i,sensitive:m,fieldKey:D})=>{if(i==null||i==="")return null;const L=typeof i=="string"&&i.length>80,A=D?E[D]:!1;return e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:107:7",className:"mb-3",children:[e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:108:9",className:"flex items-center gap-2 text-xs text-[var(--dg-text-muted)] mb-1",children:[e.jsx(xt,{"code-path":"src/components/deploy/CredentialManager.tsx:109:11",className:"h-3 w-3"}),d]}),e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:111:9",className:"flex gap-1",children:[L?e.jsx("textarea",{"code-path":"src/components/deploy/CredentialManager.tsx:113:13",readOnly:!0,value:m&&!A?"••••••••":i,className:"flex-1 rounded-md bg-[var(--dg-bg-tertiary)] border border-[var(--dg-border)] text-[var(--dg-text-primary)] p-2 text-xs font-mono resize-none",rows:4}):e.jsx(p,{"code-path":"src/components/deploy/CredentialManager.tsx:117:13",readOnly:!0,value:m&&!A?"••••••••":String(i),className:"flex-1 bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)] font-mono text-xs"}),e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:120:11",className:"flex flex-col gap-0.5 shrink-0",children:[m&&e.jsx(b,{"code-path":"src/components/deploy/CredentialManager.tsx:122:15",variant:"ghost",size:"icon",className:"h-7 w-7",onClick:()=>c(D),children:A?e.jsx(Ye,{"code-path":"src/components/deploy/CredentialManager.tsx:123:25",className:"h-3 w-3"}):e.jsx(Qe,{"code-path":"src/components/deploy/CredentialManager.tsx:123:58",className:"h-3 w-3"})}),e.jsx(b,{"code-path":"src/components/deploy/CredentialManager.tsx:126:13",variant:"ghost",size:"icon",className:"h-7 w-7",onClick:()=>K(String(i)),children:e.jsx(Ve,{"code-path":"src/components/deploy/CredentialManager.tsx:127:15",className:"h-3 w-3"})})]})]})]})};return e.jsx(qe,{"code-path":"src/components/deploy/CredentialManager.tsx:136:5",open:j,onOpenChange:M,children:e.jsxs(ze,{"code-path":"src/components/deploy/CredentialManager.tsx:137:7",className:"sm:max-w-[680px] max-h-[85vh] overflow-y-auto bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:[e.jsx(Be,{"code-path":"src/components/deploy/CredentialManager.tsx:138:9",children:e.jsxs(Ue,{"code-path":"src/components/deploy/CredentialManager.tsx:139:11",className:"text-[var(--dg-text-primary)] flex items-center gap-2",children:[C?e.jsx(C.icon,{"code-path":"src/components/deploy/CredentialManager.tsx:140:20",className:`h-5 w-5 ${C.color}`}):e.jsx(V,{"code-path":"src/components/deploy/CredentialManager.tsx:140:70",className:"h-5 w-5 text-[var(--dg-text-muted)]"}),"凭据详情"]})}),T?e.jsx("div",{"code-path":"src/components/deploy/CredentialManager.tsx:145:11",className:"text-center py-8 text-[var(--dg-text-muted)]",children:"加载中..."}):n?e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:147:11",className:"space-y-4",children:[e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:149:13",className:"grid grid-cols-2 gap-3 text-sm",children:[e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:150:15",children:[e.jsx("span",{"code-path":"src/components/deploy/CredentialManager.tsx:150:20",className:"text-[var(--dg-text-muted)]",children:"名称:"}),e.jsx("span",{"code-path":"src/components/deploy/CredentialManager.tsx:150:76",className:"text-[var(--dg-text-primary)] font-medium",children:n.name})]}),e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:151:15",children:[e.jsx("span",{"code-path":"src/components/deploy/CredentialManager.tsx:151:20",className:"text-[var(--dg-text-muted)]",children:"类型:"}),e.jsx(S,{"code-path":"src/components/deploy/CredentialManager.tsx:152:17",variant:"outline",className:`text-xs ml-1 ${Xe[x]||""}`,children:C?.label||x})]}),e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:154:15",children:[e.jsx("span",{"code-path":"src/components/deploy/CredentialManager.tsx:154:20",className:"text-[var(--dg-text-muted)]",children:"状态:"}),n.is_active?e.jsxs(S,{"code-path":"src/components/deploy/CredentialManager.tsx:156:21",className:"bg-green-500/20 text-green-400 text-xs ml-1",children:[e.jsx(We,{"code-path":"src/components/deploy/CredentialManager.tsx:156:84",className:"h-3 w-3 mr-0.5"}),"启用"]}):e.jsxs(S,{"code-path":"src/components/deploy/CredentialManager.tsx:157:21",className:"bg-red-500/20 text-red-400 text-xs ml-1",children:[e.jsx(Ze,{"code-path":"src/components/deploy/CredentialManager.tsx:157:80",className:"h-3 w-3 mr-0.5"}),"禁用"]}),n.expires_at&&new Date(n.expires_at)<new Date&&e.jsxs(S,{"code-path":"src/components/deploy/CredentialManager.tsx:159:19",className:"bg-yellow-500/20 text-yellow-400 text-xs ml-1",children:[e.jsx(it,{"code-path":"src/components/deploy/CredentialManager.tsx:159:84",className:"h-3 w-3 mr-0.5"}),"已过期"]})]}),e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:162:15",className:"col-span-2 cursor-pointer",onClick:()=>K(n.env_prefix||""),children:[e.jsx("span",{"code-path":"src/components/deploy/CredentialManager.tsx:163:17",className:"text-[var(--dg-text-muted)]",children:"引用ID:"}),e.jsx("code",{"code-path":"src/components/deploy/CredentialManager.tsx:164:17",className:"text-[var(--dg-blue)] font-mono text-xs",children:n.env_prefix||"无"}),e.jsx(Ve,{"code-path":"src/components/deploy/CredentialManager.tsx:165:17",className:"h-3 w-3 inline ml-1 text-[var(--dg-text-muted)]"})]}),n.tags?.length>0&&e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:168:17",className:"col-span-2",children:[e.jsx("span",{"code-path":"src/components/deploy/CredentialManager.tsx:169:19",className:"text-[var(--dg-text-muted)]",children:"标签:"}),n.tags.map(d=>e.jsx(S,{"code-path":"src/components/deploy/CredentialManager.tsx:171:21",variant:"outline",className:"text-xs ml-1 border-[var(--dg-border)]",children:d},d))]}),e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:175:15",className:"col-span-2",children:[e.jsx("span",{"code-path":"src/components/deploy/CredentialManager.tsx:175:43",className:"text-[var(--dg-text-muted)]",children:"描述:"}),e.jsx("span",{"code-path":"src/components/deploy/CredentialManager.tsx:175:99",className:"text-[var(--dg-text-secondary)]",children:n.description||"无"})]}),e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:176:15",children:[e.jsx("span",{"code-path":"src/components/deploy/CredentialManager.tsx:176:20",className:"text-[var(--dg-text-muted)]",children:"创建:"}),e.jsx("span",{"code-path":"src/components/deploy/CredentialManager.tsx:176:76",className:"text-[var(--dg-text-secondary)] text-xs",children:new Date(n.created_at).toLocaleString()})]}),e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:177:15",children:[e.jsx("span",{"code-path":"src/components/deploy/CredentialManager.tsx:177:20",className:"text-[var(--dg-text-muted)]",children:"更新:"}),e.jsx("span",{"code-path":"src/components/deploy/CredentialManager.tsx:177:76",className:"text-[var(--dg-text-secondary)] text-xs",children:new Date(n.updated_at).toLocaleString()})]})]}),e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:181:13",className:"border-t border-[var(--dg-border)] pt-3",children:[e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:182:15",className:"flex items-center gap-2 text-sm text-[var(--dg-text-primary)] font-medium mb-3",children:[e.jsx(V,{"code-path":"src/components/deploy/CredentialManager.tsx:183:17",className:"h-4 w-4 text-yellow-500"}),"密钥数据"]}),e.jsx("div",{"code-path":"src/components/deploy/CredentialManager.tsx:185:15",className:"p-3 rounded-md bg-yellow-500/5 border border-yellow-500/20 mb-3",children:e.jsx("p",{"code-path":"src/components/deploy/CredentialManager.tsx:186:17",className:"text-xs text-yellow-400/80",children:"以下内容包含敏感信息,请妥善保管,不要泄露给他人。"})}),x==="ssh"&&e.jsxs(e.Fragment,{children:[e.jsx(o,{"code-path":"src/components/deploy/CredentialManager.tsx:190:17",label:"SSH 用户",value:r.ssh_user}),e.jsx(o,{"code-path":"src/components/deploy/CredentialManager.tsx:191:17",label:"SSH 端口",value:r.ssh_port}),e.jsx(o,{"code-path":"src/components/deploy/CredentialManager.tsx:192:17",label:"SSH 密码",value:r.password,sensitive:!0,fieldKey:"ssh_password"}),e.jsx(o,{"code-path":"src/components/deploy/CredentialManager.tsx:193:17",label:"私钥",value:r.private_key,sensitive:!0,fieldKey:"ssh_private_key"}),e.jsx(o,{"code-path":"src/components/deploy/CredentialManager.tsx:194:17",label:"公钥",value:r.public_key,fieldKey:"ssh_public_key"})]}),x==="docker"&&e.jsxs(e.Fragment,{children:[e.jsx(o,{"code-path":"src/components/deploy/CredentialManager.tsx:197:17",label:"Registry 地址",value:r.server}),e.jsx(o,{"code-path":"src/components/deploy/CredentialManager.tsx:198:17",label:"用户名",value:r.username}),e.jsx(o,{"code-path":"src/components/deploy/CredentialManager.tsx:199:17",label:"密码",value:r.password,sensitive:!0,fieldKey:"docker_password"})]}),x==="tls"&&e.jsxs(e.Fragment,{children:[e.jsx(o,{"code-path":"src/components/deploy/CredentialManager.tsx:202:17",label:"证书",value:r.cert,sensitive:!0,fieldKey:"tls_cert"}),e.jsx(o,{"code-path":"src/components/deploy/CredentialManager.tsx:203:17",label:"私钥",value:r.key,sensitive:!0,fieldKey:"tls_key"}),e.jsx(o,{"code-path":"src/components/deploy/CredentialManager.tsx:204:17",label:"CA 证书",value:r.ca,sensitive:!0,fieldKey:"tls_ca"})]}),x==="aksk"&&e.jsxs(e.Fragment,{children:[e.jsx(o,{"code-path":"src/components/deploy/CredentialManager.tsx:207:17",label:"Access Key ID",value:r.access_key}),e.jsx(o,{"code-path":"src/components/deploy/CredentialManager.tsx:208:17",label:"Secret Access Key",value:r.secret_key,sensitive:!0,fieldKey:"aksk_secret_key"})]}),x==="database"&&e.jsxs(e.Fragment,{children:[e.jsx(o,{"code-path":"src/components/deploy/CredentialManager.tsx:211:17",label:"数据库类型",value:(r.db_type||"").toUpperCase()}),e.jsx(o,{"code-path":"src/components/deploy/CredentialManager.tsx:212:17",label:"主机",value:r.host}),e.jsx(o,{"code-path":"src/components/deploy/CredentialManager.tsx:213:17",label:"端口",value:r.port}),e.jsx(o,{"code-path":"src/components/deploy/CredentialManager.tsx:214:17",label:"数据库名",value:r.db_name}),e.jsx(o,{"code-path":"src/components/deploy/CredentialManager.tsx:215:17",label:"用户名",value:r.username}),e.jsx(o,{"code-path":"src/components/deploy/CredentialManager.tsx:216:17",label:"密码",value:r.password,sensitive:!0,fieldKey:"db_password"})]}),x==="api"&&e.jsxs(e.Fragment,{children:[e.jsx(o,{"code-path":"src/components/deploy/CredentialManager.tsx:219:17",label:"API Key",value:r.api_key,sensitive:!0,fieldKey:"api_key"}),e.jsx(o,{"code-path":"src/components/deploy/CredentialManager.tsx:220:17",label:"API 端点",value:r.endpoint})]}),x==="generic"&&e.jsxs(e.Fragment,{children:[e.jsx(o,{"code-path":"src/components/deploy/CredentialManager.tsx:223:17",label:"Key",value:r.generic_key}),e.jsx(o,{"code-path":"src/components/deploy/CredentialManager.tsx:224:17",label:"Value",value:r.generic_value,sensitive:!0,fieldKey:"generic_value"})]})]}),e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:229:13",className:"border-t border-[var(--dg-border)] pt-3",children:[e.jsx("div",{"code-path":"src/components/deploy/CredentialManager.tsx:230:15",className:"text-xs text-[var(--dg-text-muted)] mb-2",children:"在流水线/脚本中引用此凭据:"}),e.jsxs("code",{"code-path":"src/components/deploy/CredentialManager.tsx:231:15",className:"text-xs bg-[var(--dg-bg-tertiary)] px-3 py-1.5 rounded block text-[var(--dg-blue)]",children:["${",n.variable_name||n.name.toUpperCase().replace(/[^A-Z0-9]/g,"_"),"}"]})]})]}):e.jsx("div",{"code-path":"src/components/deploy/CredentialManager.tsx:237:11",className:"text-center py-8 text-[var(--dg-text-muted)]",children:"未找到凭据数据"}),e.jsx(Ge,{"code-path":"src/components/deploy/CredentialManager.tsx:239:9",children:e.jsx(b,{"code-path":"src/components/deploy/CredentialManager.tsx:240:11",variant:"outline",onClick:M,children:"关闭"})})]})})}function bt({open:j,onClose:M,onSaved:k,editData:n}){const h=!!n,[T,v]=a.useState(""),[E,w]=a.useState(""),[c,K]=a.useState("ssh"),[x,C]=a.useState(""),[r,o]=a.useState(""),[d,i]=a.useState(!0),[m,D]=a.useState(!1),[L,A]=a.useState({}),[F,s]=a.useState("root"),[g,P]=a.useState("22"),[H,N]=a.useState(""),[$,q]=a.useState(""),[z,B]=a.useState(""),[U,G]=a.useState(""),[Y,Q]=a.useState(""),[Z,W]=a.useState(""),[X,J]=a.useState(""),[ee,te]=a.useState(""),[ae,se]=a.useState(""),[,Te]=a.useState(""),[re,ne]=a.useState(""),[oe,ce]=a.useState(""),[,Ee]=a.useState(""),[de,le]=a.useState("mysql"),[pe,ie]=a.useState(""),[xe,me]=a.useState("3306"),[ge,he]=a.useState(""),[ye,ve]=a.useState(""),[Ce,ue]=a.useState(""),[be,je]=a.useState(""),[Me,Ne]=a.useState(""),[fe,Se]=a.useState(""),[we,_e]=a.useState("");a.useEffect(()=>{j&&(n?(v(n.name),w(n.variable_name||""),K(n.secret_type),C(n.description||""),o((n.tags||[]).join(", ")),i(n.is_active),s(""),P("22"),N(""),q(""),B(""),G(""),Q(""),W(""),J(""),te(""),se(""),Te(""),ne(""),ce(""),Ee(""),le("mysql"),ie(""),me("3306"),he(""),ve(""),ue(""),je(""),Ne(""),Se(""),_e("")):(v(""),w(""),K("ssh"),C(""),o(""),i(!0),s("root"),P("22"),N(""),q(""),B(""),G(""),Q(""),W(""),J(""),te(""),se(""),Te(""),ne(""),ce(""),Ee(""),le("mysql"),ie(""),me("3306"),he(""),ve(""),ue(""),je(""),Ne(""),Se(""),_e("")),A({}))},[n,j]);const Je=t=>A(f=>({...f,[t]:!f[t]})),et=async()=>{if(!T.trim()){y.error("请填写凭据名称");return}D(!0);try{const t={name:T.trim(),secret_type:c,description:x.trim(),tags:r.split(",").map(f=>f.trim()).filter(Boolean),is_active:d};E.trim()&&(t.variable_name=E.trim()),c==="ssh"?(F.trim()&&(t.ssh_user=F.trim()),g&&(t.ssh_port=parseInt(g)||22),H.trim()&&(t.ssh_password=H.trim()),$.trim()&&(t.ssh_private_key=$.trim()),z.trim()&&(t.ssh_public_key=z.trim())):c==="docker"?(U.trim()&&(t.docker_server=U.trim()),Y.trim()&&(t.docker_username=Y.trim()),Z.trim()&&(t.docker_password=Z.trim())):c==="tls"?(X.trim()&&(t.tls_cert=X.trim()),ee.trim()&&(t.tls_key=ee.trim()),ae.trim()&&(t.tls_ca=ae.trim())):c==="aksk"?(re.trim()&&(t.aksk_access_key=re.trim()),oe.trim()&&(t.aksk_secret_key=oe.trim())):c==="database"?(de.trim()&&(t.db_type=de.trim()),pe.trim()&&(t.db_host=pe.trim()),xe&&(t.db_port=parseInt(xe)||3306),ge.trim()&&(t.db_name=ge.trim()),ye.trim()&&(t.db_username=ye.trim()),Ce.trim()&&(t.db_password=Ce.trim())):c==="api"?(be.trim()&&(t.api_key=be.trim()),Me.trim()&&(t.api_endpoint=Me.trim())):c==="generic"&&(fe.trim()&&(t.generic_key=fe.trim()),we.trim()&&(t.generic_value=we.trim())),h?(await I.put(`/credentials/${n.id}`,t),y.success("已更新")):(await I.post("/credentials",t),y.success("已创建")),k(),M()}catch(t){y.error(t?.response?.data?.message||"操作失败")}finally{D(!1)}},u=({label:t,value:f,onChange:Le,placeholder:Fe,fieldKey:He,required:tt,isLong:at})=>{const Oe=L[He];return e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:394:7",className:"space-y-1",children:[e.jsxs(l,{"code-path":"src/components/deploy/CredentialManager.tsx:395:9",className:"text-[var(--dg-text-secondary)] text-xs",children:[t,tt&&!h&&e.jsx("span",{"code-path":"src/components/deploy/CredentialManager.tsx:395:99",className:"text-red-400",children:" *"})]}),e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:396:9",className:"relative",children:[at?e.jsx("textarea",{"code-path":"src/components/deploy/CredentialManager.tsx:398:13",value:f,onChange:ke=>Le(ke.target.value),placeholder:Fe,rows:5,className:"w-full rounded-md bg-[var(--dg-bg-tertiary)] border border-[var(--dg-border)] text-[var(--dg-text-primary)] p-2 text-sm font-mono placeholder:text-[var(--dg-text-muted)]"}):e.jsx(p,{"code-path":"src/components/deploy/CredentialManager.tsx:402:13",value:f,onChange:ke=>Le(ke.target.value),type:Oe?"text":"password",placeholder:Fe,className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)] pr-10 font-mono text-sm"}),e.jsx("button",{"code-path":"src/components/deploy/CredentialManager.tsx:406:11",type:"button",onClick:()=>Je(He),className:"absolute right-2 top-1/2 -translate-y-1/2 text-[var(--dg-text-muted)] hover:text-[var(--dg-text-primary)] text-xs",children:Oe?e.jsx(Ye,{"code-path":"src/components/deploy/CredentialManager.tsx:408:21",className:"h-3.5 w-3.5"}):e.jsx(Qe,{"code-path":"src/components/deploy/CredentialManager.tsx:408:58",className:"h-3.5 w-3.5"})})]})]})},R=O[c],Ie=R?.icon||V;return e.jsx(qe,{"code-path":"src/components/deploy/CredentialManager.tsx:419:5",open:j,onOpenChange:M,children:e.jsxs(ze,{"code-path":"src/components/deploy/CredentialManager.tsx:420:7",className:"sm:max-w-[620px] max-h-[90vh] overflow-y-auto bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:[e.jsxs(Be,{"code-path":"src/components/deploy/CredentialManager.tsx:421:9",children:[e.jsxs(Ue,{"code-path":"src/components/deploy/CredentialManager.tsx:422:11",className:"text-[var(--dg-text-primary)] flex items-center gap-2",children:[e.jsx(Ie,{"code-path":"src/components/deploy/CredentialManager.tsx:423:13",className:`h-5 w-5 ${R?.color||""}`}),h?"编辑凭据":"新增凭据"]}),e.jsx(pt,{"code-path":"src/components/deploy/CredentialManager.tsx:426:11",className:"text-[var(--dg-text-muted)] text-xs",children:R?.desc||"管理敏感凭据信息"})]}),e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:430:9",className:"space-y-4 py-2",children:[e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:432:11",className:"border-b border-[var(--dg-border)] pb-3",children:[e.jsx("div",{"code-path":"src/components/deploy/CredentialManager.tsx:433:13",className:"text-xs font-medium text-[var(--dg-text-secondary)] mb-2",children:"基本信息"}),e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:434:13",className:"grid grid-cols-2 gap-3",children:[e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:435:15",className:"space-y-1",children:[e.jsxs(l,{"code-path":"src/components/deploy/CredentialManager.tsx:436:17",className:"text-[var(--dg-text-secondary)] text-xs",children:["凭据名称 ",e.jsx("span",{"code-path":"src/components/deploy/CredentialManager.tsx:436:81",className:"text-red-400",children:"*"})]}),e.jsx(p,{"code-path":"src/components/deploy/CredentialManager.tsx:437:17",value:T,onChange:t=>v(t.target.value),placeholder:"如:生产环境 SSH",className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]"})]}),e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:440:15",className:"space-y-1",children:[e.jsx(l,{"code-path":"src/components/deploy/CredentialManager.tsx:441:17",className:"text-[var(--dg-text-secondary)] text-xs",children:"变量别名"}),e.jsx(p,{"code-path":"src/components/deploy/CredentialManager.tsx:442:17",value:E,onChange:t=>w(t.target.value),placeholder:"如:MYSQL_PROD",className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)] font-mono text-sm"})]}),e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:445:15",className:"space-y-1",children:[e.jsxs(l,{"code-path":"src/components/deploy/CredentialManager.tsx:446:17",className:"text-[var(--dg-text-secondary)] text-xs",children:["类型",!h&&e.jsx("span",{"code-path":"src/components/deploy/CredentialManager.tsx:446:90",className:"text-red-400",children:" *"})]}),e.jsxs(Ke,{"code-path":"src/components/deploy/CredentialManager.tsx:447:17",value:c,onValueChange:t=>K(t),disabled:h,children:[e.jsx(De,{"code-path":"src/components/deploy/CredentialManager.tsx:448:19",className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]",children:e.jsx(Ae,{"code-path":"src/components/deploy/CredentialManager.tsx:449:21"})}),e.jsx(Pe,{"code-path":"src/components/deploy/CredentialManager.tsx:451:19",className:"max-h-[300px]",children:Object.entries(O).map(([t,f])=>e.jsx(_,{"code-path":"src/components/deploy/CredentialManager.tsx:453:23",value:t,children:e.jsxs("span",{"code-path":"src/components/deploy/CredentialManager.tsx:454:25",className:"flex items-center gap-2",children:[e.jsx(f.icon,{"code-path":"src/components/deploy/CredentialManager.tsx:454:67",className:"h-4 w-4"}),f.label]})},t))})]})]}),e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:460:15",className:"space-y-1",children:[e.jsx(l,{"code-path":"src/components/deploy/CredentialManager.tsx:461:17",className:"text-[var(--dg-text-secondary)] text-xs",children:"标签"}),e.jsx(p,{"code-path":"src/components/deploy/CredentialManager.tsx:462:17",value:r,onChange:t=>o(t.target.value),placeholder:"生产环境, 阿里云",className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]"})]})]}),e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:466:13",className:"mt-2 space-y-1",children:[e.jsx(l,{"code-path":"src/components/deploy/CredentialManager.tsx:467:15",className:"text-[var(--dg-text-secondary)] text-xs",children:"描述"}),e.jsx(p,{"code-path":"src/components/deploy/CredentialManager.tsx:468:15",value:x,onChange:t=>C(t.target.value),placeholder:"可选备注信息",className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]"})]})]}),e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:474:11",children:[e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:475:13",className:"text-xs font-medium text-[var(--dg-text-secondary)] mb-2 flex items-center gap-2",children:[e.jsx(Ie,{"code-path":"src/components/deploy/CredentialManager.tsx:476:15",className:"h-3.5 w-3.5"}),R?.label||c," 配置",h&&e.jsx("span",{"code-path":"src/components/deploy/CredentialManager.tsx:477:26",className:"text-[var(--dg-text-muted)]",children:"(仅填写需要修改的字段)"})]}),c==="ssh"&&e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:481:15",className:"grid grid-cols-2 gap-3",children:[e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:482:17",className:"space-y-1",children:[e.jsx(l,{"code-path":"src/components/deploy/CredentialManager.tsx:483:19",className:"text-[var(--dg-text-secondary)] text-xs",children:"SSH 用户"}),e.jsx(p,{"code-path":"src/components/deploy/CredentialManager.tsx:484:19",value:F,onChange:t=>s(t.target.value),placeholder:"root",className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]"})]}),e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:487:17",className:"space-y-1",children:[e.jsx(l,{"code-path":"src/components/deploy/CredentialManager.tsx:488:19",className:"text-[var(--dg-text-secondary)] text-xs",children:"SSH 端口"}),e.jsx(p,{"code-path":"src/components/deploy/CredentialManager.tsx:489:19",value:g,onChange:t=>P(t.target.value),placeholder:"22",type:"number",className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]"})]}),e.jsx("div",{"code-path":"src/components/deploy/CredentialManager.tsx:492:17",className:"col-span-2",children:e.jsx(u,{"code-path":"src/components/deploy/CredentialManager.tsx:493:19",label:"SSH 密码",value:H,onChange:N,placeholder:"密码(或留空用密钥)",fieldKey:"ssh_pwd"})}),e.jsx("div",{"code-path":"src/components/deploy/CredentialManager.tsx:496:17",className:"col-span-2",children:e.jsx(u,{"code-path":"src/components/deploy/CredentialManager.tsx:497:19",label:"私钥内容",value:$,onChange:q,placeholder:"粘贴 SSH 私钥...",fieldKey:"ssh_pk",isLong:!0})}),e.jsx("div",{"code-path":"src/components/deploy/CredentialManager.tsx:500:17",className:"col-span-2",children:e.jsx(u,{"code-path":"src/components/deploy/CredentialManager.tsx:501:19",label:"公钥内容",value:z,onChange:B,placeholder:"粘贴 SSH 公钥...",fieldKey:"ssh_pub",isLong:!0})})]}),c==="docker"&&e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:508:15",className:"grid grid-cols-2 gap-3",children:[e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:509:17",className:"col-span-2 space-y-1",children:[e.jsxs(l,{"code-path":"src/components/deploy/CredentialManager.tsx:510:19",className:"text-[var(--dg-text-secondary)] text-xs",children:["Registry 地址 ",e.jsx("span",{"code-path":"src/components/deploy/CredentialManager.tsx:510:90",className:"text-red-400",children:"*"})]}),e.jsx(p,{"code-path":"src/components/deploy/CredentialManager.tsx:511:19",value:U,onChange:t=>G(t.target.value),placeholder:"registry.example.com",className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)] font-mono"})]}),e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:514:17",className:"space-y-1",children:[e.jsx(l,{"code-path":"src/components/deploy/CredentialManager.tsx:515:19",className:"text-[var(--dg-text-secondary)] text-xs",children:"用户名"}),e.jsx(p,{"code-path":"src/components/deploy/CredentialManager.tsx:516:19",value:Y,onChange:t=>Q(t.target.value),placeholder:"admin",className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]"})]}),e.jsx("div",{"code-path":"src/components/deploy/CredentialManager.tsx:519:17",children:e.jsx(u,{"code-path":"src/components/deploy/CredentialManager.tsx:519:22",label:"密码",value:Z,onChange:W,placeholder:"Registry 密码",fieldKey:"docker_pwd",required:!0})})]}),c==="tls"&&e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:525:15",className:"space-y-3",children:[e.jsx(u,{"code-path":"src/components/deploy/CredentialManager.tsx:526:17",label:"证书 (PEM)",value:X,onChange:J,placeholder:"-----BEGIN CERTIFICATE-----",fieldKey:"tls_cert",isLong:!0,required:!0}),e.jsx(u,{"code-path":"src/components/deploy/CredentialManager.tsx:528:17",label:"私钥 (PEM)",value:ee,onChange:te,placeholder:"-----BEGIN PRIVATE KEY-----",fieldKey:"tls_key",isLong:!0,required:!0}),e.jsx(u,{"code-path":"src/components/deploy/CredentialManager.tsx:530:17",label:"CA 证书",value:ae,onChange:se,placeholder:"CA 证书内容...",fieldKey:"tls_ca",isLong:!0})]}),c==="aksk"&&e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:536:15",className:"grid grid-cols-2 gap-3",children:[e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:537:17",className:"col-span-2 space-y-1",children:[e.jsxs(l,{"code-path":"src/components/deploy/CredentialManager.tsx:538:19",className:"text-[var(--dg-text-secondary)] text-xs",children:["Access Key ID ",e.jsx("span",{"code-path":"src/components/deploy/CredentialManager.tsx:538:92",className:"text-red-400",children:"*"})]}),e.jsx(p,{"code-path":"src/components/deploy/CredentialManager.tsx:539:19",value:re,onChange:t=>ne(t.target.value),placeholder:"AKIDxxxx...",className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)] font-mono"})]}),e.jsx("div",{"code-path":"src/components/deploy/CredentialManager.tsx:542:17",className:"col-span-2",children:e.jsx(u,{"code-path":"src/components/deploy/CredentialManager.tsx:543:19",label:"Secret Access Key",value:oe,onChange:ce,placeholder:"输入 Secret Key",fieldKey:"aksk_sk",required:!0})})]}),c==="database"&&e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:550:15",className:"grid grid-cols-3 gap-3",children:[e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:551:17",className:"space-y-1",children:[e.jsx(l,{"code-path":"src/components/deploy/CredentialManager.tsx:552:19",className:"text-[var(--dg-text-secondary)] text-xs",children:"数据库类型"}),e.jsxs(Ke,{"code-path":"src/components/deploy/CredentialManager.tsx:553:19",value:de,onValueChange:le,children:[e.jsx(De,{"code-path":"src/components/deploy/CredentialManager.tsx:554:21",className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]",children:e.jsx(Ae,{"code-path":"src/components/deploy/CredentialManager.tsx:555:23"})}),e.jsxs(Pe,{"code-path":"src/components/deploy/CredentialManager.tsx:557:21",children:[e.jsx(_,{"code-path":"src/components/deploy/CredentialManager.tsx:558:23",value:"mysql",children:"MySQL"}),e.jsx(_,{"code-path":"src/components/deploy/CredentialManager.tsx:559:23",value:"postgres",children:"PostgreSQL"}),e.jsx(_,{"code-path":"src/components/deploy/CredentialManager.tsx:560:23",value:"mongodb",children:"MongoDB"}),e.jsx(_,{"code-path":"src/components/deploy/CredentialManager.tsx:561:23",value:"redis",children:"Redis"}),e.jsx(_,{"code-path":"src/components/deploy/CredentialManager.tsx:562:23",value:"mssql",children:"SQL Server"}),e.jsx(_,{"code-path":"src/components/deploy/CredentialManager.tsx:563:23",value:"oracle",children:"Oracle"})]})]})]}),e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:567:17",className:"space-y-1",children:[e.jsxs(l,{"code-path":"src/components/deploy/CredentialManager.tsx:568:19",className:"text-[var(--dg-text-secondary)] text-xs",children:["主机 ",e.jsx("span",{"code-path":"src/components/deploy/CredentialManager.tsx:568:81",className:"text-red-400",children:"*"})]}),e.jsx(p,{"code-path":"src/components/deploy/CredentialManager.tsx:569:19",value:pe,onChange:t=>ie(t.target.value),placeholder:"10.0.0.1",className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)] font-mono"})]}),e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:572:17",className:"space-y-1",children:[e.jsx(l,{"code-path":"src/components/deploy/CredentialManager.tsx:573:19",className:"text-[var(--dg-text-secondary)] text-xs",children:"端口"}),e.jsx(p,{"code-path":"src/components/deploy/CredentialManager.tsx:574:19",value:xe,onChange:t=>me(t.target.value),placeholder:"3306",type:"number",className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]"})]}),e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:577:17",className:"space-y-1",children:[e.jsx(l,{"code-path":"src/components/deploy/CredentialManager.tsx:578:19",className:"text-[var(--dg-text-secondary)] text-xs",children:"数据库名"}),e.jsx(p,{"code-path":"src/components/deploy/CredentialManager.tsx:579:19",value:ge,onChange:t=>he(t.target.value),placeholder:"aiops",className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]"})]}),e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:582:17",className:"space-y-1",children:[e.jsx(l,{"code-path":"src/components/deploy/CredentialManager.tsx:583:19",className:"text-[var(--dg-text-secondary)] text-xs",children:"用户名"}),e.jsx(p,{"code-path":"src/components/deploy/CredentialManager.tsx:584:19",value:ye,onChange:t=>ve(t.target.value),placeholder:"root",className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]"})]}),e.jsx("div",{"code-path":"src/components/deploy/CredentialManager.tsx:587:17",children:e.jsx(u,{"code-path":"src/components/deploy/CredentialManager.tsx:587:22",label:"密码",value:Ce,onChange:ue,placeholder:"数据库密码",fieldKey:"db_pwd"})})]}),c==="api"&&e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:593:15",className:"space-y-3",children:[e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:594:17",className:"space-y-1",children:[e.jsx(l,{"code-path":"src/components/deploy/CredentialManager.tsx:595:19",className:"text-[var(--dg-text-secondary)] text-xs",children:"API 端点"}),e.jsx(p,{"code-path":"src/components/deploy/CredentialManager.tsx:596:19",value:Me,onChange:t=>Ne(t.target.value),placeholder:"https://api.example.com",className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)] font-mono"})]}),e.jsx(u,{"code-path":"src/components/deploy/CredentialManager.tsx:599:17",label:"API Key / Token",value:be,onChange:je,placeholder:"sk-xxxx...",fieldKey:"api_key",required:!0})]}),c==="generic"&&e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:605:15",className:"grid grid-cols-2 gap-3",children:[e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:606:17",className:"space-y-1",children:[e.jsxs(l,{"code-path":"src/components/deploy/CredentialManager.tsx:607:19",className:"text-[var(--dg-text-secondary)] text-xs",children:["Key ",e.jsx("span",{"code-path":"src/components/deploy/CredentialManager.tsx:607:82",className:"text-red-400",children:"*"})]}),e.jsx(p,{"code-path":"src/components/deploy/CredentialManager.tsx:608:19",value:fe,onChange:t=>Se(t.target.value),placeholder:"MY_SECRET",className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)] font-mono"})]}),e.jsx(u,{"code-path":"src/components/deploy/CredentialManager.tsx:611:17",label:"Value",value:we,onChange:_e,placeholder:"密钥值",fieldKey:"generic_val",required:!0})]})]})]}),e.jsxs(Ge,{"code-path":"src/components/deploy/CredentialManager.tsx:617:9",children:[e.jsx(b,{"code-path":"src/components/deploy/CredentialManager.tsx:618:11",variant:"outline",onClick:M,children:"取消"}),e.jsx(b,{"code-path":"src/components/deploy/CredentialManager.tsx:619:11",onClick:et,disabled:m,className:"bg-[var(--dg-blue)] hover:bg-[var(--dg-blue)]/80",children:m?"保存中...":h?"更新":"创建"})]})]})})}function Ot(){const j=st(),[M,k]=a.useState([]),[n,h]=a.useState(!1),[T,v]=a.useState(!1),[E,w]=a.useState(null),[c,K]=a.useState(null),[x,C]=a.useState(!1),[r,o]=a.useState(""),[d,i]=a.useState(""),m=a.useCallback(async()=>{h(!0);try{const s=new URLSearchParams;r&&s.set("secret_type",r),d&&s.set("search",d),s.set("page_size","100");const g=await I.get(`/credentials?${s.toString()}`);k(g?.list||[])}catch{y.error("获取凭证列表失败")}finally{h(!1)}},[r,d]);a.useEffect(()=>{m()},[m]);const D=async s=>{if(await j({title:"删除凭据",description:`确定删除凭据「${s.name}」?此操作不可撤销。`,confirmText:"删除",variant:"destructive"}))try{await I.delete(`/credentials/${s.id}`),y.success("已删除"),m()}catch{y.error("删除失败")}},L=async s=>{try{await I.put(`/credentials/${s.id}`,{is_active:!s.is_active}),y.success(s.is_active?"已禁用":"已启用"),m()}catch{y.error("操作失败")}},A=s=>{navigator.clipboard.writeText(s),y.success("引用 ID 已复制")},F=Object.entries(O);return e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:689:5",className:"space-y-4",children:[e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:690:7",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:691:9",children:[e.jsx("h2",{"code-path":"src/components/deploy/CredentialManager.tsx:692:11",className:"text-lg font-semibold text-[var(--dg-text-primary)]",children:"凭据管理"}),e.jsx("p",{"code-path":"src/components/deploy/CredentialManager.tsx:693:11",className:"text-sm text-[var(--dg-text-muted)] mt-0.5",children:"统一管理 SSH 密钥、Docker 密码、AKSK、数据库等敏感凭据(AES 加密存储)"})]}),e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:697:9",className:"flex items-center gap-2",children:[e.jsxs(b,{"code-path":"src/components/deploy/CredentialManager.tsx:698:11",variant:"outline",size:"sm",onClick:m,children:[e.jsx(mt,{"code-path":"src/components/deploy/CredentialManager.tsx:699:13",className:"w-4 h-4 mr-1"}),"刷新"]}),e.jsxs(b,{"code-path":"src/components/deploy/CredentialManager.tsx:701:11",size:"sm",onClick:()=>{w(null),v(!0)},children:[e.jsx(Re,{"code-path":"src/components/deploy/CredentialManager.tsx:702:13",className:"w-4 h-4 mr-1"}),"新增凭据"]})]})]}),e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:708:7",className:"flex items-center gap-3 flex-wrap",children:[e.jsxs(Ke,{"code-path":"src/components/deploy/CredentialManager.tsx:709:9",value:r,onValueChange:o,children:[e.jsx(De,{"code-path":"src/components/deploy/CredentialManager.tsx:710:11",className:"w-[140px] bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)] h-9 text-sm",children:e.jsx(Ae,{"code-path":"src/components/deploy/CredentialManager.tsx:711:13",placeholder:"全部类型"})}),e.jsxs(Pe,{"code-path":"src/components/deploy/CredentialManager.tsx:713:11",children:[e.jsx(_,{"code-path":"src/components/deploy/CredentialManager.tsx:714:13",value:"all",children:"全部类型"}),F.map(([s,g])=>e.jsx(_,{"code-path":"src/components/deploy/CredentialManager.tsx:716:15",value:s,children:e.jsxs("span",{"code-path":"src/components/deploy/CredentialManager.tsx:717:17",className:"flex items-center gap-2",children:[e.jsx(g.icon,{"code-path":"src/components/deploy/CredentialManager.tsx:717:59",className:"h-3.5 w-3.5"}),g.label]})},s))]})]}),e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:722:9",className:"relative flex-1 max-w-xs",children:[e.jsx(gt,{"code-path":"src/components/deploy/CredentialManager.tsx:723:11",className:"absolute left-2.5 top-1/2 -translate-y-1/2 h-4 w-4 text-[var(--dg-text-muted)]"}),e.jsx(p,{"code-path":"src/components/deploy/CredentialManager.tsx:724:11",value:d,onChange:s=>i(s.target.value),placeholder:"搜索名称、描述...",className:"pl-8 bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)] h-9 text-sm"})]}),e.jsxs("span",{"code-path":"src/components/deploy/CredentialManager.tsx:728:9",className:"text-xs text-[var(--dg-text-muted)]",children:[M.length," 个凭据"]})]}),n?e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:732:9",className:"text-center py-16 text-[var(--dg-text-secondary)]",children:[e.jsx(ht,{"code-path":"src/components/deploy/CredentialManager.tsx:733:11",className:"w-6 h-6 animate-spin mx-auto mb-2 text-[var(--dg-blue)]"}),"加载中..."]}):M.length===0?e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:736:9",className:"text-center py-16 border border-dashed border-[var(--dg-border)] rounded-lg",children:[e.jsx($e,{"code-path":"src/components/deploy/CredentialManager.tsx:737:11",className:"w-12 h-12 mx-auto mb-3 text-[var(--dg-text-muted)]"}),e.jsx("p",{"code-path":"src/components/deploy/CredentialManager.tsx:738:11",className:"text-[var(--dg-text-secondary)] mb-2",children:"暂无凭据"}),e.jsx("p",{"code-path":"src/components/deploy/CredentialManager.tsx:739:11",className:"text-xs text-[var(--dg-text-muted)] mb-4",children:"创建 SSH、Docker、AKSK 等类型的凭据,供流水线和服务器使用"}),e.jsxs(b,{"code-path":"src/components/deploy/CredentialManager.tsx:740:11",onClick:()=>{w(null),v(!0)},children:[e.jsx(Re,{"code-path":"src/components/deploy/CredentialManager.tsx:741:13",className:"w-4 h-4 mr-1"}),"创建第一个凭据"]})]}):e.jsx("div",{"code-path":"src/components/deploy/CredentialManager.tsx:745:9",className:"rounded-md border border-[var(--dg-border)] overflow-hidden",children:e.jsxs("table",{"code-path":"src/components/deploy/CredentialManager.tsx:746:11",className:"w-full text-sm",children:[e.jsx("thead",{"code-path":"src/components/deploy/CredentialManager.tsx:747:13",className:"bg-[var(--dg-bg-tertiary)] border-b border-[var(--dg-border)]",children:e.jsxs("tr",{"code-path":"src/components/deploy/CredentialManager.tsx:748:15",children:[e.jsx("th",{"code-path":"src/components/deploy/CredentialManager.tsx:749:17",className:"px-3 py-2.5 text-left font-medium text-[var(--dg-text-secondary)]",children:"名称"}),e.jsx("th",{"code-path":"src/components/deploy/CredentialManager.tsx:750:17",className:"px-3 py-2.5 text-left font-medium text-[var(--dg-text-secondary)]",children:"类型"}),e.jsx("th",{"code-path":"src/components/deploy/CredentialManager.tsx:751:17",className:"px-3 py-2.5 text-left font-medium text-[var(--dg-text-secondary)] hidden md:table-cell",children:"摘要"}),e.jsx("th",{"code-path":"src/components/deploy/CredentialManager.tsx:752:17",className:"px-3 py-2.5 text-left font-medium text-[var(--dg-text-secondary)] hidden lg:table-cell",children:"标签"}),e.jsx("th",{"code-path":"src/components/deploy/CredentialManager.tsx:753:17",className:"px-3 py-2.5 text-left font-medium text-[var(--dg-text-secondary)] hidden xl:table-cell",children:"引用ID"}),e.jsx("th",{"code-path":"src/components/deploy/CredentialManager.tsx:754:17",className:"px-3 py-2.5 text-left font-medium text-[var(--dg-text-secondary)]",children:"状态"}),e.jsx("th",{"code-path":"src/components/deploy/CredentialManager.tsx:755:17",className:"px-3 py-2.5 text-right font-medium text-[var(--dg-text-secondary)]",children:"操作"})]})}),e.jsx("tbody",{"code-path":"src/components/deploy/CredentialManager.tsx:758:13",children:M.map(s=>{const g=s.secret_type,P=O[g],H=s.expires_at&&new Date(s.expires_at)<new Date;return e.jsxs("tr",{"code-path":"src/components/deploy/CredentialManager.tsx:764:19",className:"border-b border-[var(--dg-border)] hover:bg-[var(--dg-bg-tertiary)]/50 cursor-pointer",onClick:()=>{K(s.id),C(!0)},children:[e.jsx("td",{"code-path":"src/components/deploy/CredentialManager.tsx:767:21",className:"px-3 py-2.5",children:e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:768:23",className:"flex items-center gap-2",children:[P?e.jsx(P.icon,{"code-path":"src/components/deploy/CredentialManager.tsx:769:32",className:`h-4 w-4 ${P.color} shrink-0`}):e.jsx(V,{"code-path":"src/components/deploy/CredentialManager.tsx:769:91",className:"h-4 w-4 text-[var(--dg-text-muted)] shrink-0"}),e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:770:25",children:[e.jsx("div",{"code-path":"src/components/deploy/CredentialManager.tsx:771:27",className:"font-medium text-[var(--dg-text-primary)]",children:s.name}),s.variable_name&&e.jsx("div",{"code-path":"src/components/deploy/CredentialManager.tsx:773:29",className:"text-xs text-[var(--dg-text-muted)] font-mono",children:s.variable_name})]})]})}),e.jsx("td",{"code-path":"src/components/deploy/CredentialManager.tsx:778:21",className:"px-3 py-2.5",children:e.jsx(S,{"code-path":"src/components/deploy/CredentialManager.tsx:779:23",variant:"outline",className:`text-xs ${Xe[g]||""}`,children:P?.label||g})}),e.jsx("td",{"code-path":"src/components/deploy/CredentialManager.tsx:783:21",className:"px-3 py-2.5 text-[var(--dg-text-secondary)] text-xs hidden md:table-cell max-w-[180px] truncate font-mono",children:s.summary||"-"}),e.jsx("td",{"code-path":"src/components/deploy/CredentialManager.tsx:786:21",className:"px-3 py-2.5 hidden lg:table-cell",children:e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:787:23",className:"flex gap-1 flex-wrap",children:[(s.tags||[]).slice(0,3).map(N=>e.jsx(S,{"code-path":"src/components/deploy/CredentialManager.tsx:789:27",variant:"outline",className:"text-xs border-[var(--dg-border)] text-[var(--dg-text-muted)]",children:N},N)),(s.tags||[]).length>3&&e.jsxs("span",{"code-path":"src/components/deploy/CredentialManager.tsx:792:27",className:"text-xs text-[var(--dg-text-muted)]",children:["+",s.tags.length-3]})]})}),e.jsx("td",{"code-path":"src/components/deploy/CredentialManager.tsx:796:21",className:"px-3 py-2.5 hidden xl:table-cell",children:e.jsx("code",{"code-path":"src/components/deploy/CredentialManager.tsx:797:23",className:"text-xs text-[var(--dg-blue)] cursor-pointer font-mono",onClick:N=>{N.stopPropagation(),A(s.env_prefix)},children:s.env_prefix})}),e.jsx("td",{"code-path":"src/components/deploy/CredentialManager.tsx:802:21",className:"px-3 py-2.5",children:e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:803:23",className:"flex items-center gap-1",children:[s.is_active?e.jsx(S,{"code-path":"src/components/deploy/CredentialManager.tsx:805:27",className:"bg-green-500/20 text-green-400 text-xs border-0",children:"启用"}):e.jsx(S,{"code-path":"src/components/deploy/CredentialManager.tsx:807:27",className:"bg-red-500/20 text-red-400 text-xs border-0",children:"禁用"}),H&&e.jsxs(S,{"code-path":"src/components/deploy/CredentialManager.tsx:810:27",className:"bg-yellow-500/20 text-yellow-400 text-xs border-0",children:[e.jsx(lt,{"code-path":"src/components/deploy/CredentialManager.tsx:810:96",className:"h-2.5 w-2.5 mr-0.5"}),"过期"]})]})}),e.jsx("td",{"code-path":"src/components/deploy/CredentialManager.tsx:814:21",className:"px-3 py-2.5 text-right",onClick:N=>N.stopPropagation(),children:e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:815:23",className:"flex justify-end gap-1",children:[e.jsx(b,{"code-path":"src/components/deploy/CredentialManager.tsx:816:25",variant:"ghost",size:"icon",className:"h-7 w-7",onClick:()=>{w(s),v(!0)},title:"编辑",children:e.jsx(vt,{"code-path":"src/components/deploy/CredentialManager.tsx:818:27",className:"w-3.5 h-3.5"})}),e.jsx(b,{"code-path":"src/components/deploy/CredentialManager.tsx:820:25",variant:"ghost",size:"icon",className:"h-7 w-7",onClick:()=>L(s),title:s.is_active?"禁用":"启用",children:s.is_active?e.jsx(Ze,{"code-path":"src/components/deploy/CredentialManager.tsx:823:45",className:"w-3.5 h-3.5 text-yellow-500"}):e.jsx(We,{"code-path":"src/components/deploy/CredentialManager.tsx:823:99",className:"w-3.5 h-3.5 text-green-500"})}),e.jsx(b,{"code-path":"src/components/deploy/CredentialManager.tsx:825:25",variant:"ghost",size:"icon",className:"h-7 w-7 text-red-500",onClick:()=>D(s),title:"删除",children:e.jsx(Ct,{"code-path":"src/components/deploy/CredentialManager.tsx:827:27",className:"w-3.5 h-3.5"})})]})})]},s.id)})})]})}),e.jsx(bt,{"code-path":"src/components/deploy/CredentialManager.tsx:839:7",open:T,onClose:()=>v(!1),onSaved:m,editData:E}),e.jsx(ut,{"code-path":"src/components/deploy/CredentialManager.tsx:840:7",open:x,onClose:()=>C(!1),credId:c})]})}export{Ot as default};
|