UNPKG

@sunpix/claude-code-web

Version:

A web-based interface for interacting with Claude Code CLI

2 lines (1 loc) 24.4 kB
import{e,i as a,j as t,C as l,y as s,o as i,w as d,b as o,f as u,D as n,E as r,G as c,H as p,c as v,k as f,F as m,l as y,I as b,q as h,m as _,r as g,J as x,n as k,x as w,K as V,a as q,t as C,s as B,L as S,g as j,d as $}from"./sqhd64MX.js";import{i as A,g as M,w as D,f as I,R as P,u as E,_ as T,P as R}from"./Cp9jViau.js";import{V as F,u as K,_ as O,e as U,a as L,b as z,c as H,d as W,f as G}from"./Bf1Xoc5j.js";import{u as N,b as J,P as Q,d as X,e as Y,f as Z,g as ee,h as ae,i as te,a as le,r as se,j as ie,c as de,k as oe}from"./BonREZMq.js";import{L as ue}from"./KAbOdxKQ.js";var ne=e({__name:"RovingFocusItem",props:{tabStopId:{type:String,required:!1},focusable:{type:Boolean,required:!1,default:!0},active:{type:Boolean,required:!1},allowShiftKey:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"span"}},setup(e){const c=e,p=A(),v=N(),f=a(()=>c.tabStopId||v),m=a(()=>p.currentTabStopId.value===f.value),{getItems:y,CollectionItem:b}=J();function h(e){if("Tab"===e.key&&e.shiftKey)return void p.onItemShiftTab();if(e.target!==e.currentTarget)return;const a=M(e,p.orientation.value,p.dir.value);if(void 0!==a){if(e.metaKey||e.ctrlKey||e.altKey||!c.allowShiftKey&&e.shiftKey)return;e.preventDefault();let t=[...y().map(e=>e.ref).filter(e=>""!==e.dataset.disabled)];if("last"===a)t.reverse();else if("prev"===a||"next"===a){"prev"===a&&t.reverse();const l=t.indexOf(e.currentTarget);t=p.loop.value?D(t,l+1):t.slice(l+1)}r(()=>I(t))}}return t(()=>{c.focusable&&p.onFocusableItemAdd()}),l(()=>{c.focusable&&p.onFocusableItemRemove()}),(e,a)=>(i(),s(u(b),null,{default:d(()=>[o(u(Q),{tabindex:m.value?0:-1,"data-orientation":u(p).orientation.value,"data-active":e.active?"":void 0,"data-disabled":e.focusable?void 0:"",as:e.as,"as-child":e.asChild,onMousedown:a[0]||(a[0]=a=>{e.focusable?u(p).onItemFocus(f.value):a.preventDefault()}),onFocus:a[1]||(a[1]=e=>u(p).onItemFocus(f.value)),onKeydown:h},{default:d(()=>[n(e.$slots,"default")]),_:3},8,["tabindex","data-orientation","data-active","data-disabled","as","as-child"])]),_:3}))}}),re=e({inheritAttrs:!1,__name:"VisuallyHiddenInputBubble",props:{name:{type:String,required:!0},value:{type:null,required:!0},checked:{type:Boolean,required:!1,default:void 0},required:{type:Boolean,required:!1},disabled:{type:Boolean,required:!1},feature:{type:String,required:!1,default:"fully-hidden"}},setup(e){const t=e,{primitiveElement:l,currentElement:d}=X(),o=a(()=>t.checked??t.value);return c(o,(e,a)=>{if(!d.value)return;const t=d.value,l=window.HTMLInputElement.prototype,s=Object.getOwnPropertyDescriptor(l,"value").set;if(s&&e!==a){const a=new Event("input",{bubbles:!0}),l=new Event("change",{bubbles:!0});s.call(t,e),t.dispatchEvent(a),t.dispatchEvent(l)}}),(e,a)=>(i(),s(F,p({ref_key:"primitiveElement",ref:l},{...t,...e.$attrs},{as:"input"}),null,16))}}),ce=e({inheritAttrs:!1,__name:"VisuallyHiddenInput",props:{name:{type:String,required:!0},value:{type:null,required:!0},checked:{type:Boolean,required:!1,default:void 0},required:{type:Boolean,required:!1},disabled:{type:Boolean,required:!1},feature:{type:String,required:!1,default:"fully-hidden"}},setup(e){const t=e,l=a(()=>"object"==typeof t.value&&Array.isArray(t.value)&&0===t.value.length&&t.required),d=a(()=>"string"==typeof t.value||"number"==typeof t.value||"boolean"==typeof t.value||null===t.value||void 0===t.value?[{name:t.name,value:t.value}]:"object"==typeof t.value&&Array.isArray(t.value)?t.value.flatMap((e,a)=>"object"==typeof e?Object.entries(e).map(([e,l])=>({name:`${t.name}[${a}][${e}]`,value:l})):{name:`${t.name}[${a}]`,value:e}):null===t.value||"object"!=typeof t.value||Array.isArray(t.value)?[]:Object.entries(t.value).map(([e,a])=>({name:`${t.name}[${e}]`,value:a})));return(e,a)=>(i(),v(m,null,[f(" We render single input if it's required "),l.value?(i(),s(re,p({key:e.name},{...t,...e.$attrs},{name:e.name,value:e.value}),null,16,["name","value"])):(i(!0),v(m,{key:1},y(d.value,a=>(i(),s(re,p({key:a.name},{ref_for:!0},{...t,...e.$attrs},{name:a.name,value:a.value}),null,16,["name","value"]))),128))],2112))}});const[pe,ve]=Y("SwitchRoot");var fe=e({__name:"SwitchRoot",props:{defaultValue:{type:Boolean,required:!1},modelValue:{type:[Boolean,null],required:!1,default:void 0},disabled:{type:Boolean,required:!1},id:{type:String,required:!1},value:{type:String,required:!1,default:"on"},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"button"},name:{type:String,required:!1},required:{type:Boolean,required:!1}},emits:["update:modelValue"],setup(e,{emit:t}){const l=e,o=t,{disabled:r}=b(l),c=Z(l,"modelValue",o,{defaultValue:l.defaultValue,passive:void 0===l.modelValue});function v(){r.value||(c.value=!c.value)}const{forwardRef:m,currentElement:y}=ee(),g=K(y),x=a(()=>l.id&&y.value?document.querySelector(`[for="${l.id}"]`)?.innerText:void 0);return ve({modelValue:c,toggleCheck:v,disabled:r}),(e,a)=>(i(),s(u(Q),p(e.$attrs,{id:e.id,ref:u(m),role:"switch",type:"button"===e.as?"button":void 0,value:e.value,"aria-label":e.$attrs["aria-label"]||x.value,"aria-checked":u(c),"aria-required":e.required,"data-state":u(c)?"checked":"unchecked","data-disabled":u(r)?"":void 0,"as-child":e.asChild,as:e.as,disabled:u(r),onClick:v,onKeydown:h(_(v,["prevent"]),["enter"])}),{default:d(()=>[n(e.$slots,"default",{modelValue:u(c)}),u(g)&&e.name?(i(),s(u(ce),{key:0,type:"checkbox",name:e.name,disabled:u(r),required:e.required,value:e.value,checked:!!u(c)},null,8,["name","disabled","required","value","checked"])):f("v-if",!0)]),_:3},16,["id","type","value","aria-label","aria-checked","aria-required","data-state","data-disabled","as-child","as","disabled","onKeydown"]))}}),me=e({__name:"SwitchThumb",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"span"}},setup(e){const a=pe();return ee(),(e,t)=>(i(),s(u(Q),{"data-state":u(a).modelValue?.value?"checked":"unchecked","data-disabled":u(a).disabled.value?"":void 0,"as-child":e.asChild,as:e.as},{default:d(()=>[n(e.$slots,"default")]),_:3},8,["data-state","data-disabled","as-child","as"]))}});const[ye,be]=Y("TabsRoot");var he=e({__name:"TabsRoot",props:{defaultValue:{type:null,required:!1},orientation:{type:String,required:!1,default:"horizontal"},dir:{type:String,required:!1},activationMode:{type:String,required:!1,default:"automatic"},modelValue:{type:null,required:!1},unmountOnHide:{type:Boolean,required:!1,default:!0},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:["update:modelValue"],setup(e,{emit:a}){const t=e,l=a,{orientation:o,unmountOnHide:r,dir:c}=b(t),p=ae(c);ee();const v=Z(t,"modelValue",l,{defaultValue:t.defaultValue,passive:void 0===t.modelValue}),f=g();return be({modelValue:v,changeModelValue:e=>{v.value=e},orientation:o,dir:p,unmountOnHide:r,activationMode:t.activationMode,baseId:N(void 0,"reka-tabs"),tabsList:f}),(e,a)=>(i(),s(u(Q),{dir:u(p),"data-orientation":u(o),"as-child":e.asChild,as:e.as},{default:d(()=>[n(e.$slots,"default",{modelValue:u(v)})]),_:3},8,["dir","data-orientation","as-child","as"]))}});function _e(e,a){return`${e}-trigger-${a}`}function ge(e,a){return`${e}-content-${a}`}var xe=e({__name:"TabsContent",props:{value:{type:[String,Number],required:!0},forceMount:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){const l=e,{forwardRef:r}=ee(),c=ye(),p=a(()=>_e(c.baseId,l.value)),v=a(()=>ge(c.baseId,l.value)),m=a(()=>l.value===c.modelValue.value),y=g(m.value);return t(()=>{requestAnimationFrame(()=>{y.value=!1})}),(e,a)=>(i(),s(u(te),{present:e.forceMount||m.value,"force-mount":""},{default:d(({present:a})=>[o(u(Q),{id:v.value,ref:u(r),"as-child":e.asChild,as:e.as,role:"tabpanel","data-state":m.value?"active":"inactive","data-orientation":u(c).orientation.value,"aria-labelledby":p.value,hidden:!a,tabindex:"0",style:x({animationDuration:y.value?"0s":void 0})},{default:d(()=>[!u(c).unmountOnHide.value||a?n(e.$slots,"default",{key:0}):f("v-if",!0)]),_:2},1032,["id","as-child","as","data-state","data-orientation","aria-labelledby","hidden","style"])]),_:3},8,["present"]))}}),ke=e({__name:"TabsList",props:{loop:{type:Boolean,required:!1,default:!0},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){const a=e,{loop:t}=b(a),{forwardRef:l,currentElement:r}=ee(),c=ye();return c.tabsList=r,(e,a)=>(i(),s(u(P),{"as-child":"",orientation:u(c).orientation.value,dir:u(c).dir.value,loop:u(t)},{default:d(()=>[o(u(Q),{ref:u(l),role:"tablist","as-child":e.asChild,as:e.as,"aria-orientation":u(c).orientation.value},{default:d(()=>[n(e.$slots,"default")]),_:3},8,["as-child","as","aria-orientation"])]),_:3},8,["orientation","dir","loop"]))}}),we=e({__name:"TabsTrigger",props:{value:{type:[String,Number],required:!0},disabled:{type:Boolean,required:!1,default:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"button"}},setup(e){const t=e,{forwardRef:l}=ee(),r=ye(),c=a(()=>_e(r.baseId,t.value)),p=a(()=>ge(r.baseId,t.value)),v=a(()=>t.value===r.modelValue.value);return(e,a)=>(i(),s(u(ne),{"as-child":"",focusable:!e.disabled,active:v.value},{default:d(()=>[o(u(Q),{id:c.value,ref:u(l),role:"tab",type:"button"===e.as?"button":void 0,as:e.as,"as-child":e.asChild,"aria-selected":v.value?"true":"false","aria-controls":p.value,"data-state":v.value?"active":"inactive",disabled:e.disabled,"data-disabled":e.disabled?"":void 0,"data-orientation":u(r).orientation.value,onMousedown:a[0]||(a[0]=_(a=>{e.disabled||!1!==a.ctrlKey?a.preventDefault():u(r).changeModelValue(e.value)},["left"])),onKeydown:a[1]||(a[1]=h(a=>u(r).changeModelValue(e.value),["enter","space"])),onFocus:a[2]||(a[2]=()=>{const a="manual"!==u(r).activationMode;v.value||e.disabled||!a||u(r).changeModelValue(e.value)})},{default:d(()=>[n(e.$slots,"default")]),_:3},8,["id","type","as","as-child","aria-selected","aria-controls","data-state","disabled","data-disabled","data-orientation"])]),_:3},8,["focusable","active"]))}});const Ve=le("x",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]),qe=e({__name:"Switch",props:{defaultValue:{type:Boolean},modelValue:{type:[Boolean,null]},disabled:{type:Boolean},id:{},value:{},asChild:{type:Boolean},as:{},name:{},required:{type:Boolean},class:{}},emits:["update:modelValue"],setup(e,{emit:a}){const t=e,l=a,r=se(t,"class"),c=ie(r,l);return(e,a)=>(i(),s(u(fe),p({"data-slot":"switch"},u(c),{class:u(de)("peer data-[state=checked]:bg-primary data-[state=unchecked]:bg-input focus-visible:border-ring focus-visible:ring-ring/50 dark:data-[state=unchecked]:bg-input/80 inline-flex h-[1.15rem] w-8 shrink-0 items-center rounded-full border border-transparent shadow-xs transition-all outline-none focus-visible:ring-[3px] cursor-pointer disabled:cursor-not-allowed disabled:opacity-50",t.class)}),{default:d(()=>[o(u(me),{"data-slot":"switch-thumb",class:k(u(de)("bg-background dark:data-[state=unchecked]:bg-foreground dark:data-[state=checked]:bg-primary-foreground pointer-events-none block size-4 rounded-full ring-0 transition-transform data-[state=checked]:translate-x-[calc(100%-2px)] data-[state=unchecked]:translate-x-0"))},{default:d(()=>[n(e.$slots,"thumb")]),_:3},8,["class"])]),_:3},16,["class"]))}}),Ce=e({__name:"Tabs",props:{defaultValue:{},orientation:{},dir:{},activationMode:{},modelValue:{},unmountOnHide:{type:Boolean},asChild:{type:Boolean},as:{},class:{}},emits:["update:modelValue"],setup(e,{emit:a}){const t=e,l=a,o=se(t,"class"),r=ie(o,l);return(e,a)=>(i(),s(u(he),p({"data-slot":"tabs"},u(r),{class:u(de)("flex flex-col gap-2",t.class)}),{default:d(()=>[n(e.$slots,"default")]),_:3},16,["class"]))}}),Be=e({__name:"TabsContent",props:{value:{},forceMount:{type:Boolean},asChild:{type:Boolean},as:{},class:{}},setup(e){const a=e,t=se(a,"class");return(e,l)=>(i(),s(u(xe),p({"data-slot":"tabs-content",class:u(de)("flex-1 outline-none",a.class)},u(t)),{default:d(()=>[n(e.$slots,"default")]),_:3},16,["class"]))}}),Se=e({__name:"TabsList",props:{loop:{type:Boolean},asChild:{type:Boolean},as:{},class:{}},setup(e){const a=e,t=se(a,"class");return(e,l)=>(i(),s(u(ke),p({"data-slot":"tabs-list"},u(t),{class:u(de)("bg-muted text-muted-foreground inline-flex h-9 w-fit items-center justify-center rounded-lg p-[3px]",a.class)}),{default:d(()=>[n(e.$slots,"default")]),_:3},16,["class"]))}}),je=e({__name:"TabsTrigger",props:{value:{},disabled:{type:Boolean},asChild:{type:Boolean},as:{},class:{}},setup(e){const a=e,t=se(a,"class"),l=oe(t);return(e,t)=>(i(),s(u(we),p({"data-slot":"tabs-trigger"},u(l),{class:u(de)("data-[state=active]:bg-background dark:data-[state=active]:text-foreground focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring dark:data-[state=active]:border-input dark:data-[state=active]:bg-input/30 text-foreground dark:text-muted-foreground inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:shadow-sm [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",a.class)}),{default:d(()=>[n(e.$slots,"default")]),_:3},16,["class"]))}}),$e={class:"h-full flex flex-col"},Ae={class:"flex-1 overflow-y-auto pb-36"},Me={class:"max-w-4xl mx-auto space-y-8 p-6"},De={class:"text-2xl font-bold"},Ie={class:"text-muted-foreground text-sm mt-2"},Pe={class:"space-y-8"},Ee={class:"space-y-2"},Te={class:"space-y-3"},Re={class:"space-y-2"},Fe={class:"space-y-3"},Ke={class:"space-y-2"},Oe={class:"space-y-3"},Ue={class:"space-y-2"},Le={class:"space-y-8"},ze={class:"space-y-3"},He={class:"space-y-8"},We={class:"flex items-center justify-between"},Ge={class:"space-y-0.5"},Ne={class:"space-y-8"},Je={class:"space-y-2"},Qe={class:"max-w-4xl mx-auto flex justify-end"},Xe={class:"flex gap-3"},Ye=e({__name:"settings",setup(e){const a=w(),l=B(),s=j(),{isOpen:n,isMobile:r}=E(),c=g(!1),p=g([{key:"",value:""}]),f=g([""]),b=g([""]),h=g([""]),x=V({includeCoAuthoredBy:!0,cleanupPeriodDays:"30",permissions:{defaultMode:"acceptEdits"}});function A(){p.value.push({key:"",value:""})}function M(e){"allow"===e?f.value.push(""):"deny"===e?b.value.push(""):h.value.push("")}function D(e,a){"allow"===e?(f.value.splice(a,1),0===f.value.length&&f.value.push("")):"deny"===e?(b.value.splice(a,1),0===b.value.length&&b.value.push("")):(h.value.splice(a,1),0===h.value.length&&h.value.push(""))}async function I(e){c.value=!0;try{const e={};p.value.forEach(({key:a,value:t})=>{a.trim()&&t.trim()&&(e[a.trim()]=t.trim())});const a=f.value.filter(e=>e.trim()),t=b.value.filter(e=>e.trim()),i=h.value.filter(e=>e.trim()),d={env:e,includeCoAuthoredBy:x.includeCoAuthoredBy,cleanupPeriodDays:parseInt(x.cleanupPeriodDays),permissions:{defaultMode:x.permissions?.defaultMode||"acceptEdits",allow:a,deny:t,additionalDirectories:i}};await $fetch("/api/project-settings",{method:"POST",body:{projectId:l.params.projectId,settings:d}}),S.success("Project settings saved successfully"),s.back()}catch(a){S.error("Failed to save project settings")}finally{c.value=!1}}function P(){x.includeCoAuthoredBy=!0,x.cleanupPeriodDays="30",x.permissions.defaultMode="acceptEdits",p.value=[{key:"",value:""}],f.value=[""],b.value=[""],h.value=[""]}return t(()=>{!async function(){try{const e=await $fetch(`/api/project-settings?projectId=${l.params.projectId}`);e.env&&(p.value=Object.entries(e.env).map(([e,a])=>({key:e,value:a}))),0===p.value.length&&(p.value=[{key:"",value:""}]),void 0!==e.includeCoAuthoredBy&&(x.includeCoAuthoredBy=e.includeCoAuthoredBy),void 0!==e.cleanupPeriodDays&&(x.cleanupPeriodDays=e.cleanupPeriodDays.toString()),e.permissions?.defaultMode&&x.permissions&&(x.permissions.defaultMode=e.permissions.defaultMode),e.permissions?.allow&&(f.value=[...e.permissions.allow]),(0===f.value.length||f.value.every(e=>!e))&&(f.value=[""]),e.permissions?.deny&&(b.value=[...e.permissions.deny]),(0===b.value.length||b.value.every(e=>!e))&&(b.value=[""]),e.permissions?.additionalDirectories&&(h.value=[...e.permissions.additionalDirectories]),(0===h.value.length||h.value.every(e=>!e))&&(h.value=[""])}catch(e){S.error("Failed to load project settings")}}()}),(e,t)=>(i(),v("div",$e,[q("div",Ae,[q("div",Me,[q("div",null,[q("h1",De,"Settings for "+C(u(a).currentProjectDisplayName),1),q("p",Ie,C(u(a).currentCwd),1)]),q("form",{onSubmit:_(I,["prevent"]),class:"mt-6"},[o(u(Ce),{"default-value":"permissions",class:"w-full"},{default:d(()=>[o(u(Se),{class:"grid w-full grid-cols-4"},{default:d(()=>[o(u(je),{value:"permissions"},{default:d(()=>t[6]||(t[6]=[$("Permissions")])),_:1,__:[6]}),o(u(je),{value:"environment"},{default:d(()=>t[7]||(t[7]=[$("Environment")])),_:1,__:[7]}),o(u(je),{value:"git"},{default:d(()=>t[8]||(t[8]=[$("Git")])),_:1,__:[8]}),o(u(je),{value:"cleanup"},{default:d(()=>t[9]||(t[9]=[$("Cleanup")])),_:1,__:[9]})]),_:1}),o(u(Be),{value:"permissions",class:"space-y-6"},{default:d(()=>[q("div",Pe,[t[24]||(t[24]=q("div",null,[q("h2",{class:"text-xl font-semibold"},"Permissions Framework"),q("p",{class:"text-base text-muted-foreground"},"Configure Claude's access permissions and behavior")],-1)),q("div",Ee,[o(u(O),{class:"text-base",for:"default-mode"},{default:d(()=>t[10]||(t[10]=[$("Default Permission Mode")])),_:1,__:[10]}),o(u(U),{modelValue:x.permissions.defaultMode,"onUpdate:modelValue":t[0]||(t[0]=e=>x.permissions.defaultMode=e)},{default:d(()=>[o(u(L),{class:"w-full"},{default:d(()=>[o(u(z),{placeholder:"Select default mode"})]),_:1}),o(u(H),null,{default:d(()=>[o(u(W),{value:"default"},{default:d(()=>t[11]||(t[11]=[$("Default - Prompts for permission on first use")])),_:1,__:[11]}),o(u(W),{value:"acceptEdits"},{default:d(()=>t[12]||(t[12]=[$("Accept Edits - Automatically accepts file edit permissions")])),_:1,__:[12]}),o(u(W),{value:"plan"},{default:d(()=>t[13]||(t[13]=[$("Plan Mode - Analyze but not modify files or execute commands")])),_:1,__:[13]}),o(u(W),{value:"bypassPermissions"},{default:d(()=>t[14]||(t[14]=[$("Bypass Permissions - Skips all permission prompts")])),_:1,__:[14]})]),_:1})]),_:1},8,["modelValue"])]),q("div",Te,[q("div",null,[o(u(O),{class:"text-base"},{default:d(()=>t[15]||(t[15]=[$("Allow List")])),_:1,__:[15]}),t[16]||(t[16]=q("p",{class:"text-sm text-muted-foreground"},"Whitelist specific tools or patterns",-1))]),q("div",Re,[(i(!0),v(m,null,y(f.value,(e,a)=>(i(),v("div",{key:a,class:"flex gap-2 items-center"},[o(u(G),{modelValue:f.value[a],"onUpdate:modelValue":e=>f.value[a]=e,placeholder:"e.g., Bash(git diff:*)",class:"flex-1"},null,8,["modelValue","onUpdate:modelValue"]),o(u(T),{type:"button",variant:"outline",size:"sm",onClick:e=>D("allow",a)},{default:d(()=>[o(u(Ve),{class:"w-4 h-4"})]),_:2},1032,["onClick"])]))),128)),o(u(T),{type:"button",variant:"secondary",onClick:t[1]||(t[1]=e=>M("allow")),class:"w-full"},{default:d(()=>[o(u(R),{class:"w-4 h-4 mr-2"}),t[17]||(t[17]=$(" Add Allow Rule "))]),_:1,__:[17]})])]),q("div",Fe,[q("div",null,[o(u(O),{class:"text-base"},{default:d(()=>t[18]||(t[18]=[$("Deny List")])),_:1,__:[18]}),t[19]||(t[19]=q("p",{class:"text-sm text-muted-foreground"},"Blacklist specific tools or patterns",-1))]),q("div",Ke,[(i(!0),v(m,null,y(b.value,(e,a)=>(i(),v("div",{key:a,class:"flex gap-2 items-center"},[o(u(G),{modelValue:b.value[a],"onUpdate:modelValue":e=>b.value[a]=e,placeholder:"e.g., WebFetch, Bash(curl:*)",class:"flex-1"},null,8,["modelValue","onUpdate:modelValue"]),o(u(T),{type:"button",variant:"outline",size:"sm",onClick:e=>D("deny",a)},{default:d(()=>[o(u(Ve),{class:"w-4 h-4"})]),_:2},1032,["onClick"])]))),128)),o(u(T),{type:"button",variant:"secondary",onClick:t[2]||(t[2]=e=>M("deny")),class:"w-full"},{default:d(()=>[o(u(R),{class:"w-4 h-4 mr-2"}),t[20]||(t[20]=$(" Add Deny Rule "))]),_:1,__:[20]})])]),q("div",Oe,[q("div",null,[o(u(O),{class:"text-base"},{default:d(()=>t[21]||(t[21]=[$("Additional Directories")])),_:1,__:[21]}),t[22]||(t[22]=q("p",{class:"text-sm text-muted-foreground"},"Extra directories Claude can access beyond the project root",-1))]),q("div",Ue,[(i(!0),v(m,null,y(h.value,(e,a)=>(i(),v("div",{key:a,class:"flex gap-2 items-center"},[o(u(G),{modelValue:h.value[a],"onUpdate:modelValue":e=>h.value[a]=e,placeholder:"e.g., ../docs/",class:"flex-1"},null,8,["modelValue","onUpdate:modelValue"]),o(u(T),{type:"button",variant:"outline",size:"sm",onClick:e=>D("directories",a)},{default:d(()=>[o(u(Ve),{class:"w-4 h-4"})]),_:2},1032,["onClick"])]))),128)),o(u(T),{type:"button",variant:"secondary",onClick:t[3]||(t[3]=e=>M("directories")),class:"w-full"},{default:d(()=>[o(u(R),{class:"w-4 h-4 mr-2"}),t[23]||(t[23]=$(" Add Directory "))]),_:1,__:[23]})])])])]),_:1}),o(u(Be),{value:"environment",class:"space-y-6"},{default:d(()=>[q("div",Le,[t[26]||(t[26]=q("div",null,[q("h2",{class:"text-xl font-semibold"},"Environment Variables"),q("p",{class:"text-base text-muted-foreground"},"Set environment variables for this project")],-1)),q("div",ze,[(i(!0),v(m,null,y(p.value,(e,a)=>(i(),v("div",{key:a,class:"flex gap-2 items-center"},[o(u(G),{modelValue:e.key,"onUpdate:modelValue":a=>e.key=a,placeholder:"Variable name",class:"flex-1"},null,8,["modelValue","onUpdate:modelValue"]),o(u(G),{modelValue:e.value,"onUpdate:modelValue":a=>e.value=a,placeholder:"Value",class:"flex-1"},null,8,["modelValue","onUpdate:modelValue"]),o(u(T),{type:"button",variant:"outline",size:"sm",onClick:e=>function(e){p.value.length>1&&p.value.splice(e,1)}(a),disabled:1===p.value.length},{default:d(()=>[o(u(Ve),{class:"w-4 h-4"})]),_:2},1032,["onClick","disabled"])]))),128)),o(u(T),{type:"button",variant:"outline",onClick:A,class:"w-full"},{default:d(()=>[o(u(R),{class:"w-4 h-4 mr-2"}),t[25]||(t[25]=$(" Add Environment Variable "))]),_:1,__:[25]})])])]),_:1}),o(u(Be),{value:"git",class:"space-y-6"},{default:d(()=>[q("div",He,[t[29]||(t[29]=q("div",null,[q("h2",{class:"text-xl font-semibold"},"Git Attribution"),q("p",{class:"text-base text-muted-foreground"},"Configure git commit attribution settings")],-1)),q("div",We,[q("div",Ge,[o(u(O),{class:"text-base"},{default:d(()=>t[27]||(t[27]=[$("Include Co-authored-by trailer")])),_:1,__:[27]}),t[28]||(t[28]=q("div",{class:"text-sm text-muted-foreground"},' When enabled, git commits and PRs include "Co‑authored‑by: Claude" trailer ',-1))]),o(u(qe),{modelValue:x.includeCoAuthoredBy,"onUpdate:modelValue":t[4]||(t[4]=e=>x.includeCoAuthoredBy=e)},null,8,["modelValue"])])])]),_:1}),o(u(Be),{value:"cleanup",class:"space-y-6"},{default:d(()=>[q("div",Ne,[t[38]||(t[38]=q("div",null,[q("h2",{class:"text-xl font-semibold"},"Chat Cleanup"),q("p",{class:"text-base text-muted-foreground"},"Configure automatic cleanup of chat transcripts")],-1)),q("div",Je,[o(u(O),{for:"cleanup-period"},{default:d(()=>t[30]||(t[30]=[$("Cleanup Period (days)")])),_:1,__:[30]}),o(u(U),{modelValue:x.cleanupPeriodDays,"onUpdate:modelValue":t[5]||(t[5]=e=>x.cleanupPeriodDays=e)},{default:d(()=>[o(u(L),{class:"w-[200px]"},{default:d(()=>[o(u(z),{placeholder:"Select cleanup period"})]),_:1}),o(u(H),null,{default:d(()=>[o(u(W),{value:"7"},{default:d(()=>t[31]||(t[31]=[$("7 days")])),_:1,__:[31]}),o(u(W),{value:"14"},{default:d(()=>t[32]||(t[32]=[$("14 days")])),_:1,__:[32]}),o(u(W),{value:"20"},{default:d(()=>t[33]||(t[33]=[$("20 days")])),_:1,__:[33]}),o(u(W),{value:"30"},{default:d(()=>t[34]||(t[34]=[$("30 days (default)")])),_:1,__:[34]}),o(u(W),{value:"60"},{default:d(()=>t[35]||(t[35]=[$("60 days")])),_:1,__:[35]}),o(u(W),{value:"90"},{default:d(()=>t[36]||(t[36]=[$("90 days")])),_:1,__:[36]})]),_:1})]),_:1},8,["modelValue"]),t[37]||(t[37]=q("p",{class:"text-sm text-muted-foreground"}," Local chat transcripts will be removed after this many days ",-1))])])]),_:1})]),_:1})],32)])]),q("div",{class:k(["border-t bg-background p-6 fixed bottom-0 right-0 left-0 transition-[margin-left] duration-300",{"md:ml-64":!u(r)&&u(n),"md:ml-12":!u(r)&&!u(n)}])},[q("div",Qe,[q("div",Xe,[o(u(T),{type:"button",variant:"outline",onClick:P},{default:d(()=>t[39]||(t[39]=[$(" Reset to Defaults ")])),_:1,__:[39]}),o(u(T),{type:"submit",disabled:c.value,onClick:I},{default:d(()=>[c.value?(i(),v(m,{key:0},[o(u(ue),{class:"w-4 h-4 mr-2 animate-spin"}),t[40]||(t[40]=$(" Saving... "))],64)):(i(),v(m,{key:1},[$(" Save Settings ")],64))]),_:1},8,["disabled"])])])],2)]))}});export{Ye as default};