@shepai/cli 1.72.0 → 1.72.1
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/dist/src/presentation/web/components/common/base-drawer/base-drawer.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/base-drawer/base-drawer.js +5 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/web/.next/BUILD_ID +1 -1
- package/web/.next/build-manifest.json +2 -2
- package/web/.next/cache/.previewinfo +1 -1
- package/web/.next/cache/.rscinfo +1 -1
- package/web/.next/cache/.tsbuildinfo +1 -1
- package/web/.next/cache/config.json +3 -3
- package/web/.next/fallback-build-manifest.json +2 -2
- package/web/.next/prerender-manifest.json +3 -3
- package/web/.next/required-server-files.js +1 -1
- package/web/.next/required-server-files.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +14 -14
- package/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +17 -17
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +12 -12
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +14 -14
- package/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +17 -17
- package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +12 -12
- package/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +12 -12
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/_global-error.html +2 -2
- package/web/.next/server/app/_global-error.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/web/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
- package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/skills/page/server-reference-manifest.json +6 -6
- package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/tools/page/server-reference-manifest.json +1 -1
- package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/version/page/server-reference-manifest.json +1 -1
- package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
- package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js +1 -1
- package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js.map +1 -1
- package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_2b7834f6.js +1 -1
- package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_2b7834f6.js.map +1 -1
- package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_6923c575.js +1 -1
- package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_6923c575.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__07385073._.js +2 -2
- package/web/.next/server/chunks/ssr/[root-of-the-server]__07385073._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__08ba9bd3._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__08ba9bd3._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__249c74f6._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__6b17a22d._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__6b17a22d._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__6bb00d90._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__6bb00d90._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__6db85a66._.js +2 -2
- package/web/.next/server/chunks/ssr/[root-of-the-server]__804c006d._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__804c006d._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__8fcb9132._.js +2 -2
- package/web/.next/server/chunks/ssr/_00e6c698._.js +1 -1
- package/web/.next/server/chunks/ssr/_00e6c698._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_37259405._.js +1 -1
- package/web/.next/server/chunks/ssr/_37259405._.js.map +1 -1
- package/web/.next/server/chunks/ssr/{_326c615c._.js → _48935b11._.js} +2 -2
- package/web/.next/server/chunks/ssr/{_326c615c._.js.map → _48935b11._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/_85d0351b._.js +1 -1
- package/web/.next/server/chunks/ssr/_85d0351b._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_fc3a6895._.js +1 -1
- package/web/.next/server/chunks/ssr/_fc3a6895._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_1a32dbcb._.js +2 -2
- package/web/.next/server/chunks/ssr/src_presentation_web_1a32dbcb._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_398553b0._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_398553b0._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_5c87e8e4._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_5c87e8e4._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_f4952172.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_f4952172.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_c1bc6240._.js +2 -2
- package/web/.next/server/chunks/ssr/src_presentation_web_c1bc6240._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js.map +1 -1
- package/web/.next/server/pages/500.html +2 -2
- package/web/.next/server/server-reference-manifest.js +1 -1
- package/web/.next/server/server-reference-manifest.json +20 -20
- package/web/.next/standalone/src/presentation/web/.next/BUILD_ID +1 -1
- package/web/.next/standalone/src/presentation/web/.next/build-manifest.json +2 -2
- package/web/.next/standalone/src/presentation/web/.next/prerender-manifest.json +3 -3
- package/web/.next/standalone/src/presentation/web/.next/required-server-files.json +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +14 -14
- package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +17 -17
- package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +12 -12
- package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +14 -14
- package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +17 -17
- package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +12 -12
- package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +12 -12
- package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.html +2 -2
- package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.rsc +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/skills/page/server-reference-manifest.json +6 -6
- package/web/.next/standalone/src/presentation/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/tools/page/server-reference-manifest.json +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/version/page/server-reference-manifest.json +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_2b7834f6.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_6923c575.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__07385073._.js +2 -2
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__08ba9bd3._.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__249c74f6._.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__6b17a22d._.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__6bb00d90._.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__6db85a66._.js +2 -2
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__804c006d._.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__8fcb9132._.js +2 -2
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_00e6c698._.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_37259405._.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/{_326c615c._.js → _48935b11._.js} +2 -2
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_85d0351b._.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_fc3a6895._.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_1a32dbcb._.js +2 -2
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_398553b0._.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_5c87e8e4._.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_f4952172.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_c1bc6240._.js +2 -2
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/pages/500.html +2 -2
- package/web/.next/standalone/src/presentation/web/.next/server/server-reference-manifest.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/server-reference-manifest.json +20 -20
- package/web/.next/standalone/src/presentation/web/components/common/base-drawer/base-drawer.tsx +4 -0
- package/web/.next/standalone/src/presentation/web/server.js +1 -1
- package/web/.next/static/chunks/{782a2a325d33916e.js → 03d33ef0225f01ed.js} +1 -1
- package/web/.next/static/chunks/{d063d1ee549e36c1.js → 34abde74bbbcf2a7.js} +1 -1
- package/web/.next/static/chunks/{eab4c5668703be61.js → 40056cc7a83dbc74.js} +1 -1
- package/web/.next/static/chunks/{3b841f29db9a3da9.js → 826098f4effdc320.js} +1 -1
- package/web/.next/static/chunks/{c1e2dd0ea2411684.js → 858e98ff8bec6b19.js} +1 -1
- package/web/.next/static/chunks/{4ad5002ab597037c.js → af0b5ed9f7772209.js} +1 -1
- package/web/.next/static/chunks/{d58c232421d2eb76.js → c49356a5aa45e9f6.js} +1 -1
- package/web/.next/static/chunks/{f76236b7baf672dc.js → f05904554c809e13.js} +1 -1
- package/web/.next/trace +1 -1
- package/web/.next/trace-build +1 -1
- /package/web/.next/static/{cheZlPwpJASMO-UbgLmQk → wZm2E7aeoaHgqBeiAY-EL}/_buildManifest.js +0 -0
- /package/web/.next/static/{cheZlPwpJASMO-UbgLmQk → wZm2E7aeoaHgqBeiAY-EL}/_clientMiddlewareManifest.json +0 -0
- /package/web/.next/static/{cheZlPwpJASMO-UbgLmQk → wZm2E7aeoaHgqBeiAY-EL}/_ssgManifest.js +0 -0
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[93995,a=>{"use strict";var b=a.i(10973),c=a.i(96960),d=a.i(69845),e=a.i(52313),f=a.i(25674);let g=(0,f.createServerReference)("40d075c363c758e7309fe56f5aadf1216283e26ed3",f.callServer,void 0,f.findSourceMapURL,"createFeature");var h=a.i(87148),h=h,i=a.i(25700);let j=(0,i.default)("file",[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}]]);var k=a.i(42642),k=k;let l=(0,i.default)("image",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",ry:"2",key:"1m3agn"}],["circle",{cx:"9",cy:"9",r:"2",key:"af1f0g"}],["path",{d:"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21",key:"1xmnt7"}]]),m=(0,i.default)("code",[["path",{d:"m16 18 6-6-6-6",key:"eg8j8"}],["path",{d:"m8 6-6 6 6 6",key:"ppft3o"}]]);var n=a.i(26915),n=n;let o=(0,i.default)("chevrons-up-down",[["path",{d:"m7 15 5 5 5-5",key:"1hf1tw"}],["path",{d:"m7 9 5-5 5 5",key:"sgt6xg"}]]);var p=a.i(51969),p=p,q=a.i(85536),r=a.i(19884);a.i(78454);var s=a.i(24255),t=a.i(2824),u=a.i(18948),v=a.i(90920);function w({className:a,...c}){return(0,b.jsx)("textarea",{"data-slot":"textarea",className:(0,q.cn)("placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input field-sizing-content min-h-[80px] w-full rounded-md border bg-transparent px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm","focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]","aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",a),...c})}var x=a.i(66873),y=c.forwardRef((a,c)=>(0,b.jsx)(x.Primitive.label,{...a,ref:c,onMouseDown:b=>{b.target.closest("button, input, select, textarea")||(a.onMouseDown?.(b),!b.defaultPrevented&&b.detail>1&&b.preventDefault())}}));y.displayName="Label",a.s(["Label",()=>y,"Root",()=>y],59967);var z=a.i(59967),z=z;let A=(0,a.i(42261).cva)("text-sm leading-none font-medium peer-disabled:cursor-not-allowed peer-disabled:opacity-70"),B=c.forwardRef(({className:a,...c},d)=>(0,b.jsx)(z.Root,{ref:d,className:(0,q.cn)(A(),a),...c}));B.displayName=z.Root.displayName;var p=p;let C=(0,i.default)("minus",[["path",{d:"M5 12h14",key:"1ays0h"}]]);var D=a.i(6175),E=a.i(7420),F=a.i(59653),G=a.i(17329),H=a.i(74432),I=a.i(14272),J="Checkbox",[K,L]=(0,E.createContextScope)(J),[M,N]=K(J);function O(a){let{__scopeCheckbox:d,checked:e,children:f,defaultChecked:g,disabled:h,form:i,name:j,onCheckedChange:k,required:l,value:m="on",internal_do_not_use_render:n}=a,[o,p]=(0,G.useControllableState)({prop:e,defaultProp:g??!1,onChange:k,caller:J}),[q,r]=c.useState(null),[s,t]=c.useState(null),u=c.useRef(!1),v=!q||!!i||!!q.closest("form"),w={checked:o,disabled:h,setChecked:p,control:q,setControl:r,name:j,form:i,value:m,hasConsumerStoppedPropagationRef:u,required:l,defaultChecked:!W(g)&&g,isFormControl:v,bubbleInput:s,setBubbleInput:t};return(0,b.jsx)(M,{scope:d,...w,children:"function"==typeof n?n(w):f})}var P="CheckboxTrigger",Q=c.forwardRef(({__scopeCheckbox:a,onKeyDown:d,onClick:e,...f},g)=>{let{control:h,value:i,disabled:j,checked:k,required:l,setControl:m,setChecked:n,hasConsumerStoppedPropagationRef:o,isFormControl:p,bubbleInput:q}=N(P,a),r=(0,D.useComposedRefs)(g,m),s=c.useRef(k);return c.useEffect(()=>{let a=h?.form;if(a){let b=()=>n(s.current);return a.addEventListener("reset",b),()=>a.removeEventListener("reset",b)}},[h,n]),(0,b.jsx)(x.Primitive.button,{type:"button",role:"checkbox","aria-checked":W(k)?"mixed":k,"aria-required":l,"data-state":X(k),"data-disabled":j?"":void 0,disabled:j,value:i,...f,ref:r,onKeyDown:(0,F.composeEventHandlers)(d,a=>{"Enter"===a.key&&a.preventDefault()}),onClick:(0,F.composeEventHandlers)(e,a=>{n(a=>!!W(a)||!a),q&&p&&(o.current=a.isPropagationStopped(),o.current||a.stopPropagation())})})});Q.displayName=P;var R=c.forwardRef((a,c)=>{let{__scopeCheckbox:d,name:e,checked:f,defaultChecked:g,required:h,disabled:i,value:j,onCheckedChange:k,form:l,...m}=a;return(0,b.jsx)(O,{__scopeCheckbox:d,checked:f,defaultChecked:g,disabled:i,required:h,onCheckedChange:k,name:e,form:l,value:j,internal_do_not_use_render:({isFormControl:a})=>(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(Q,{...m,ref:c,__scopeCheckbox:d}),a&&(0,b.jsx)(V,{__scopeCheckbox:d})]})})});R.displayName=J;var S="CheckboxIndicator",T=c.forwardRef((a,c)=>{let{__scopeCheckbox:d,forceMount:e,...f}=a,g=N(S,d);return(0,b.jsx)(I.Presence,{present:e||W(g.checked)||!0===g.checked,children:(0,b.jsx)(x.Primitive.span,{"data-state":X(g.checked),"data-disabled":g.disabled?"":void 0,...f,ref:c,style:{pointerEvents:"none",...a.style}})})});T.displayName=S;var U="CheckboxBubbleInput",V=c.forwardRef(({__scopeCheckbox:a,...d},e)=>{let f,{control:g,hasConsumerStoppedPropagationRef:h,checked:i,defaultChecked:j,required:k,disabled:l,name:m,value:n,form:o,bubbleInput:p,setBubbleInput:q}=N(U,a),r=(0,D.useComposedRefs)(e,q),s=(f=c.useRef({value:i,previous:i}),c.useMemo(()=>(f.current.value!==i&&(f.current.previous=f.current.value,f.current.value=i),f.current.previous),[i])),t=(0,H.useSize)(g);c.useEffect(()=>{if(!p)return;let a=Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype,"checked").set,b=!h.current;if(s!==i&&a){let c=new Event("click",{bubbles:b});p.indeterminate=W(i),a.call(p,!W(i)&&i),p.dispatchEvent(c)}},[p,s,i,h]);let u=c.useRef(!W(i)&&i);return(0,b.jsx)(x.Primitive.input,{type:"checkbox","aria-hidden":!0,defaultChecked:j??u.current,required:k,disabled:l,name:m,value:n,form:o,...d,tabIndex:-1,ref:r,style:{...d.style,...t,position:"absolute",pointerEvents:"none",opacity:0,margin:0,transform:"translateX(-100%)"}})});function W(a){return"indeterminate"===a}function X(a){return W(a)?"indeterminate":a?"checked":"unchecked"}V.displayName=U,a.s(["Checkbox",()=>R,"CheckboxIndicator",()=>T,"Indicator",()=>T,"Root",()=>R,"createCheckboxScope",()=>L,"unstable_BubbleInput",()=>V,"unstable_CheckboxBubbleInput",()=>V,"unstable_CheckboxProvider",()=>O,"unstable_CheckboxTrigger",()=>Q,"unstable_Provider",()=>O,"unstable_Trigger",()=>Q],27835);var Y=a.i(27835),Y=Y;function Z({className:a,...c}){return(0,b.jsx)(Y.Root,{"data-slot":"checkbox",className:(0,q.cn)("peer border-input dark:bg-input/30 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground dark:data-[state=checked]:bg-primary data-[state=checked]:border-primary data-[state=indeterminate]:bg-primary data-[state=indeterminate]:text-primary-foreground data-[state=indeterminate]:border-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive size-4 shrink-0 cursor-pointer rounded-[4px] border shadow-xs transition-shadow outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50",a),...c,children:(0,b.jsx)(Y.Indicator,{"data-slot":"checkbox-indicator",className:"grid place-content-center text-current transition-none",children:"indeterminate"===c.checked?(0,b.jsx)(C,{className:"size-3.5"}):(0,b.jsx)(p.default,{className:"size-3.5"})})})}function $({id:a,label:c,description:d,checked:e,onCheckedChange:f,disabled:g}){return(0,b.jsxs)("div",{className:"flex items-start gap-2",children:[(0,b.jsx)(Z,{id:a,className:"mt-0.75",checked:e,onCheckedChange:a=>f(!0===a),disabled:g}),(0,b.jsxs)("div",{className:"flex flex-col gap-0.5",children:[(0,b.jsx)(B,{htmlFor:a,className:"cursor-pointer text-sm font-medium",children:c}),d?(0,b.jsx)(B,{htmlFor:a,className:"text-muted-foreground cursor-pointer text-xs font-normal",children:d}):null]})]})}function _({label:a,description:c,parentAriaLabel:d,options:e,value:f,onValueChange:g,disabled:h}){let i=e.filter(a=>f[a.id]).length,j=i===e.length,k=i>0&&!j,l=`${a.toLowerCase().replace(/\s+/g,"-")}-group`;return(0,b.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,b.jsxs)("div",{className:"flex items-start gap-2",children:[(0,b.jsx)(Z,{id:l,className:"mt-0.75",checked:k?"indeterminate":j,onCheckedChange:()=>{let a=i<e.length,b={};for(let c of e)b[c.id]=a;g(b)},disabled:h,"aria-label":d??`${a} select all`}),(0,b.jsxs)("div",{className:"flex flex-col gap-0.5",children:[(0,b.jsx)(B,{htmlFor:l,className:"cursor-pointer text-sm font-medium",children:a}),c?(0,b.jsx)(B,{htmlFor:l,className:"text-muted-foreground cursor-pointer text-xs font-normal",children:c}):null]})]}),(0,b.jsx)("div",{className:"flex flex-col gap-3 pl-6",children:e.map(a=>(0,b.jsx)($,{id:a.id,label:a.label,description:a.description,checked:f[a.id]??!1,onCheckedChange:b=>{var c;return c=a.id,void g({...f,[c]:b})},disabled:h},a.id))})]})}var aa=a.i(58339),ab=a.i(58761),ac=a.i(51473),ad=a.i(59675),ae=a.i(5472),af=a.i(75988),ag=a.i(80930),ah=a.i(90986),ai=a.i(16164),aj=a.i(45291),ak="Popover",[al,am]=(0,E.createContextScope)(ak,[af.createPopperScope]),an=(0,af.createPopperScope)(),[ao,ap]=al(ak),aq=a=>{let{__scopePopover:d,children:e,open:f,defaultOpen:g,onOpenChange:h,modal:i=!1}=a,j=an(d),k=c.useRef(null),[l,m]=c.useState(!1),[n,o]=(0,G.useControllableState)({prop:f,defaultProp:g??!1,onChange:h,caller:ak});return(0,b.jsx)(af.Root,{...j,children:(0,b.jsx)(ao,{scope:d,contentId:(0,ae.useId)(),triggerRef:k,open:n,onOpenChange:o,onOpenToggle:c.useCallback(()=>o(a=>!a),[o]),hasCustomAnchor:l,onCustomAnchorAdd:c.useCallback(()=>m(!0),[]),onCustomAnchorRemove:c.useCallback(()=>m(!1),[]),modal:i,children:e})})};aq.displayName=ak;var ar="PopoverAnchor",as=c.forwardRef((a,d)=>{let{__scopePopover:e,...f}=a,g=ap(ar,e),h=an(e),{onCustomAnchorAdd:i,onCustomAnchorRemove:j}=g;return c.useEffect(()=>(i(),()=>j()),[i,j]),(0,b.jsx)(af.Anchor,{...h,...f,ref:d})});as.displayName=ar;var at="PopoverTrigger",au=c.forwardRef((a,c)=>{let{__scopePopover:d,...e}=a,f=ap(at,d),g=an(d),h=(0,D.useComposedRefs)(c,f.triggerRef),i=(0,b.jsx)(x.Primitive.button,{type:"button","aria-haspopup":"dialog","aria-expanded":f.open,"aria-controls":f.contentId,"data-state":aI(f.open),...e,ref:h,onClick:(0,F.composeEventHandlers)(a.onClick,f.onOpenToggle)});return f.hasCustomAnchor?i:(0,b.jsx)(af.Anchor,{asChild:!0,...g,children:i})});au.displayName=at;var av="PopoverPortal",[aw,ax]=al(av,{forceMount:void 0}),ay=a=>{let{__scopePopover:c,forceMount:d,children:e,container:f}=a,g=ap(av,c);return(0,b.jsx)(aw,{scope:c,forceMount:d,children:(0,b.jsx)(I.Presence,{present:d||g.open,children:(0,b.jsx)(ag.Portal,{asChild:!0,container:f,children:e})})})};ay.displayName=av;var az="PopoverContent",aA=c.forwardRef((a,c)=>{let d=ax(az,a.__scopePopover),{forceMount:e=d.forceMount,...f}=a,g=ap(az,a.__scopePopover);return(0,b.jsx)(I.Presence,{present:e||g.open,children:g.modal?(0,b.jsx)(aC,{...f,ref:c}):(0,b.jsx)(aD,{...f,ref:c})})});aA.displayName=az;var aB=(0,ah.createSlot)("PopoverContent.RemoveScroll"),aC=c.forwardRef((a,d)=>{let e=ap(az,a.__scopePopover),f=c.useRef(null),g=(0,D.useComposedRefs)(d,f),h=c.useRef(!1);return c.useEffect(()=>{let a=f.current;if(a)return(0,ai.hideOthers)(a)},[]),(0,b.jsx)(aj.RemoveScroll,{as:aB,allowPinchZoom:!0,children:(0,b.jsx)(aE,{...a,ref:g,trapFocus:e.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:(0,F.composeEventHandlers)(a.onCloseAutoFocus,a=>{a.preventDefault(),h.current||e.triggerRef.current?.focus()}),onPointerDownOutside:(0,F.composeEventHandlers)(a.onPointerDownOutside,a=>{let b=a.detail.originalEvent,c=0===b.button&&!0===b.ctrlKey;h.current=2===b.button||c},{checkForDefaultPrevented:!1}),onFocusOutside:(0,F.composeEventHandlers)(a.onFocusOutside,a=>a.preventDefault(),{checkForDefaultPrevented:!1})})})}),aD=c.forwardRef((a,d)=>{let e=ap(az,a.__scopePopover),f=c.useRef(!1),g=c.useRef(!1);return(0,b.jsx)(aE,{...a,ref:d,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:b=>{a.onCloseAutoFocus?.(b),b.defaultPrevented||(f.current||e.triggerRef.current?.focus(),b.preventDefault()),f.current=!1,g.current=!1},onInteractOutside:b=>{a.onInteractOutside?.(b),b.defaultPrevented||(f.current=!0,"pointerdown"===b.detail.originalEvent.type&&(g.current=!0));let c=b.target;e.triggerRef.current?.contains(c)&&b.preventDefault(),"focusin"===b.detail.originalEvent.type&&g.current&&b.preventDefault()}})}),aE=c.forwardRef((a,c)=>{let{__scopePopover:d,trapFocus:e,onOpenAutoFocus:f,onCloseAutoFocus:g,disableOutsidePointerEvents:h,onEscapeKeyDown:i,onPointerDownOutside:j,onFocusOutside:k,onInteractOutside:l,...m}=a,n=ap(az,d),o=an(d);return(0,ac.useFocusGuards)(),(0,b.jsx)(ad.FocusScope,{asChild:!0,loop:!0,trapped:e,onMountAutoFocus:f,onUnmountAutoFocus:g,children:(0,b.jsx)(ab.DismissableLayer,{asChild:!0,disableOutsidePointerEvents:h,onInteractOutside:l,onEscapeKeyDown:i,onPointerDownOutside:j,onFocusOutside:k,onDismiss:()=>n.onOpenChange(!1),children:(0,b.jsx)(af.Content,{"data-state":aI(n.open),role:"dialog",id:n.contentId,...o,...m,ref:c,style:{...m.style,"--radix-popover-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-popover-content-available-width":"var(--radix-popper-available-width)","--radix-popover-content-available-height":"var(--radix-popper-available-height)","--radix-popover-trigger-width":"var(--radix-popper-anchor-width)","--radix-popover-trigger-height":"var(--radix-popper-anchor-height)"}})})})}),aF="PopoverClose",aG=c.forwardRef((a,c)=>{let{__scopePopover:d,...e}=a,f=ap(aF,d);return(0,b.jsx)(x.Primitive.button,{type:"button",...e,ref:c,onClick:(0,F.composeEventHandlers)(a.onClick,()=>f.onOpenChange(!1))})});aG.displayName=aF;var aH=c.forwardRef((a,c)=>{let{__scopePopover:d,...e}=a,f=an(d);return(0,b.jsx)(af.Arrow,{...f,...e,ref:c})});function aI(a){return a?"open":"closed"}aH.displayName="PopoverArrow",a.s(["Anchor",()=>as,"Arrow",()=>aH,"Close",()=>aG,"Content",()=>aA,"Popover",()=>aq,"PopoverAnchor",()=>as,"PopoverArrow",()=>aH,"PopoverClose",()=>aG,"PopoverContent",()=>aA,"PopoverPortal",()=>ay,"PopoverTrigger",()=>au,"Portal",()=>ay,"Root",()=>aq,"Trigger",()=>au,"createPopoverScope",()=>am],61452);var aJ=a.i(61452),aJ=aJ;let aK=aJ.Root,aL=aJ.Trigger;aJ.Anchor;let aM=c.forwardRef(({className:a,align:c="center",sideOffset:d=4,...e},f)=>(0,b.jsx)(aJ.Portal,{children:(0,b.jsx)(aJ.Content,{ref:f,align:c,sideOffset:d,className:(0,q.cn)("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-72 rounded-md border p-4 shadow-md outline-none",a),...e})}));async function aN(){let a=await fetch("/api/dialog/pick-files",{method:"POST"});if(!a.ok)throw Error("Failed to open file dialog");let b=await a.json();return b.cancelled?null:b.files}aM.displayName=aJ.Content.displayName;let aO=[{id:"allowPrd",label:"PRD",description:"Auto-approve requirements move to planning."},{id:"allowPlan",label:"Plan",description:"Auto-approve planning move to implementation."},{id:"allowMerge",label:"Merge",description:"Auto-approve merge move to Done."}],aP={allowPrd:!1,allowPlan:!1,allowMerge:!1};function aQ({open:a,onClose:d,onSubmit:e,repositoryPath:f,isSubmitting:g=!1,workflowDefaults:i,features:j,initialParentId:k}){let l=(0,r.useSoundAction)("create"),m=i?.approvalGates??aP,n=i?.push??!1,o=i?.openPr??!1,[p,q]=(0,c.useState)(""),[x,y]=(0,c.useState)(""),[z,A]=(0,c.useState)([]),[C,D]=(0,c.useState)({...m}),[E,F]=(0,c.useState)(n),[G,H]=(0,c.useState)(o),[I,J]=(0,c.useState)(void 0);(0,c.useEffect)(()=>{i&&(D({...i.approvalGates}),F(i.push),H(i.openPr))},[i]),(0,c.useEffect)(()=>{a&&k&&J(k)},[a,k]);let K=(0,c.useCallback)(()=>{q(""),y(""),A([]),D({...m}),F(n),H(o),J(void 0)},[m,n,o]),L=(0,c.useCallback)(()=>{K(),d()},[d,K]),M=(0,c.useCallback)(a=>{if(a.preventDefault(),!p.trim())return;l.play();let b=x.trim()||void 0;e({name:p.trim(),description:b,attachments:z,repositoryPath:f,approvalGates:{allowPrd:C.allowPrd??!1,allowPlan:C.allowPlan??!1,allowMerge:C.allowMerge??!1},push:E||G,openPr:G,...I?{parentId:I}:{}}),K()},[p,x,z,C,f,e,E,G,I,l,K]),N=(0,c.useCallback)(async()=>{try{let a=await aN();a&&A(b=>[...b,...a])}catch{}},[]),O=(0,c.useCallback)(a=>{A(b=>b.filter(b=>b.path!==a))},[]),P=j&&j.length>0;return(0,b.jsx)(s.BaseDrawer,{open:a,onClose:L,size:"md",modal:!1,"data-testid":"feature-create-drawer",header:(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)("div",{className:"h-2.5 w-2.5 shrink-0 rounded-full bg-blue-500"}),(0,b.jsx)(t.DrawerTitle,{children:"NEW FEATURE"})]}),(0,b.jsx)(t.DrawerDescription,{asChild:!0,children:(0,b.jsx)("div",{children:(0,b.jsx)(aa.Badge,{variant:"secondary",children:"Creating..."})})})]}),footer:(0,b.jsxs)("div",{className:"flex flex-row justify-end gap-2",children:[(0,b.jsx)(u.Button,{variant:"outline",onClick:L,disabled:g,children:"Cancel"}),(0,b.jsx)(u.Button,{type:"submit",form:"create-feature-form",disabled:!p.trim()||g,children:g?"Creating...":"+ Create Feature"})]}),children:(0,b.jsx)("div",{className:"overflow-y-auto p-4",children:(0,b.jsxs)("form",{id:"create-feature-form",onSubmit:M,className:"flex flex-col gap-4",children:[(0,b.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,b.jsx)(B,{htmlFor:"feature-name",className:"text-muted-foreground text-xs font-semibold tracking-wider",children:"FEATURE NAME"}),(0,b.jsx)(v.Input,{id:"feature-name",placeholder:"e.g. GitHub OAuth Login",value:p,onChange:a=>q(a.target.value),required:!0,disabled:g})]}),(0,b.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,b.jsx)(B,{htmlFor:"feature-description",className:"text-muted-foreground text-xs font-semibold tracking-wider",children:"DESCRIPTION"}),(0,b.jsx)(w,{id:"feature-description",placeholder:"Describe what this feature does...",value:x,onChange:a=>y(a.target.value),rows:4,disabled:g})]}),P?(0,b.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,b.jsx)(B,{htmlFor:"parent-feature",className:"text-muted-foreground text-xs font-semibold tracking-wider",children:"PARENT FEATURE"}),(0,b.jsx)(aR,{features:j,value:I,onChange:J,disabled:g})]}):null,(0,b.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,b.jsx)(B,{className:"text-muted-foreground text-xs font-semibold tracking-wider",children:"APPROVE"}),(0,b.jsx)(_,{label:"Autonomous Mode",description:"YOLO!",parentAriaLabel:"Auto approve all",options:aO,value:C,onValueChange:D,disabled:g})]}),(0,b.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,b.jsx)(B,{className:"text-muted-foreground text-xs font-semibold tracking-wider",children:"GIT"}),(0,b.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,b.jsx)($,{id:"push",label:"Push",description:"Push branch to remote after implementation.",checked:E||G,onCheckedChange:F,disabled:G||g}),(0,b.jsx)($,{id:"open-pr",label:"Create PR",description:"Open a pull request after pushing.",checked:G,onCheckedChange:H,disabled:g})]})]}),(0,b.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between",children:[(0,b.jsxs)(B,{className:"text-muted-foreground text-xs font-semibold tracking-wider",children:["ATTACHMENTS",z.length>0&&(0,b.jsxs)("span",{className:"text-muted-foreground/60 ml-1.5",children:["(",z.length,")"]})]}),(0,b.jsxs)(u.Button,{type:"button",variant:"outline",size:"xs",onClick:N,disabled:g,children:[(0,b.jsx)(h.default,{className:"size-3"}),"Add Files"]})]}),z.length>0&&(0,b.jsx)("div",{className:"flex flex-col gap-2",children:z.map(a=>(0,b.jsx)(aS,{file:a,onRemove:()=>O(a.path),disabled:g},a.path))})]})]})})})}function aR({features:a,value:d,onChange:e,disabled:f}){let[g,h]=(0,c.useState)(!1),[i,j]=(0,c.useState)(""),k=(0,c.useRef)(null),l=a.find(a=>a.id===d),m=i.trim()?a.filter(a=>a.name.toLowerCase().includes(i.toLowerCase())||a.id.toLowerCase().includes(i.toLowerCase())):a,n=(0,c.useCallback)(a=>{e(a),h(!1),j("")},[e]);return(0,c.useEffect)(()=>{g?setTimeout(()=>k.current?.focus(),0):j("")},[g]),(0,b.jsxs)(aK,{open:g,onOpenChange:h,children:[(0,b.jsx)(aL,{asChild:!0,children:(0,b.jsxs)("button",{id:"parent-feature",type:"button",role:"combobox","aria-expanded":g,"aria-label":"Parent Feature",disabled:f,"data-testid":"parent-feature-combobox",className:(0,q.cn)("border-input bg-background ring-offset-background focus:ring-ring flex h-9 w-full items-center justify-between rounded-md border px-3 py-2 text-sm focus:ring-2 focus:ring-offset-2 focus:outline-none disabled:cursor-not-allowed disabled:opacity-50",!l&&"text-muted-foreground"),children:[(0,b.jsx)("span",{className:"truncate",children:l?`${l.name} (${l.id.slice(0,8)})`:"Select parent feature..."}),(0,b.jsx)(o,{className:"ml-2 h-4 w-4 shrink-0 opacity-50"})]})}),(0,b.jsx)(aM,{className:"w-80 p-0",align:"start","data-testid":"parent-feature-combobox-content",children:(0,b.jsxs)("div",{className:"flex flex-col",children:[(0,b.jsx)("div",{className:"border-b p-2",children:(0,b.jsx)(v.Input,{ref:k,placeholder:"Search features...",value:i,onChange:a=>j(a.target.value),className:"h-8 border-0 p-0 text-sm shadow-none focus-visible:ring-0","data-testid":"parent-feature-search"})}),(0,b.jsxs)("div",{className:"max-h-48 overflow-y-auto py-1",role:"listbox","aria-label":"Features",children:[(0,b.jsxs)("button",{type:"button",role:"option","aria-selected":void 0===d,onClick:()=>n(void 0),className:(0,q.cn)("hover:bg-accent hover:text-accent-foreground flex w-full items-center gap-2 px-3 py-2 text-sm",void 0===d&&"bg-accent/50"),"data-testid":"parent-feature-option-none",children:[(0,b.jsx)(p.default,{className:(0,q.cn)("h-4 w-4 shrink-0",void 0!==d&&"invisible")}),(0,b.jsx)("span",{className:"text-muted-foreground italic",children:"No parent"})]}),0===m.length&&i?(0,b.jsx)("p",{className:"text-muted-foreground px-3 py-2 text-sm",children:"No features found."}):m.map(a=>(0,b.jsxs)("button",{type:"button",role:"option","aria-selected":d===a.id,onClick:()=>n(a.id),className:(0,q.cn)("hover:bg-accent hover:text-accent-foreground flex w-full items-center gap-2 px-3 py-2 text-sm",d===a.id&&"bg-accent/50"),"data-testid":`parent-feature-option-${a.id}`,children:[(0,b.jsx)(p.default,{className:(0,q.cn)("h-4 w-4 shrink-0",d!==a.id&&"invisible")}),(0,b.jsxs)("span",{className:"truncate",children:[a.name," ",(0,b.jsxs)("span",{className:"text-muted-foreground font-mono text-xs",children:["(",a.id.slice(0,8),")"]})]})]},a.id))]})]})})]})}function aS({file:a,onRemove:c,disabled:d}){var e,f,g;let h,i=(h=(e=a.name).lastIndexOf("."))>=0?e.slice(h).toLowerCase():"",o=(f=i,aT.has(f)?l:".pdf"===f?k.default:aU.has(f)?m:j),p=".pdf"===(g=i)?"bg-red-50 text-red-600":aT.has(g)?"bg-blue-50 text-blue-600":aU.has(g)?"bg-emerald-50 text-emerald-600":"bg-gray-50 text-gray-600";return(0,b.jsxs)("div",{className:"flex items-center gap-3 rounded-md border p-2",children:[(0,b.jsx)("div",{className:(0,q.cn)("flex h-8 w-8 shrink-0 items-center justify-center rounded",p),children:(0,b.jsx)(o,{className:"h-4 w-4"})}),(0,b.jsxs)("div",{className:"flex min-w-0 flex-1 flex-col",children:[(0,b.jsx)("span",{className:"truncate text-sm font-medium",children:a.name}),(0,b.jsx)("span",{className:"text-muted-foreground truncate text-xs",children:a.path}),(0,b.jsx)("span",{className:"text-muted-foreground text-xs",children:function(a){if(0===a)return"0 B";let b=Math.floor(Math.log(a)/Math.log(1024));return`${(a/Math.pow(1024,b)).toFixed(+(0!==b))} ${["B","KB","MB","GB"][b]}`}(a.size)})]}),(0,b.jsx)(u.Button,{type:"button",variant:"ghost",size:"icon-xs",onClick:c,disabled:d,"aria-label":`Remove ${a.name}`,children:(0,b.jsx)(n.default,{className:"h-3 w-3"})})]})}let aT=new Set([".png",".jpg",".jpeg",".gif",".svg",".webp",".ico",".bmp"]),aU=new Set([".ts",".tsx",".js",".jsx",".json",".yaml",".yml",".xml",".html",".css",".md"]);function aV({repositoryPath:a,initialParentId:f,features:h,workflowDefaults:i}){let j=(0,d.useRouter)(),k=(0,r.useSoundAction)("create"),[l,m]=(0,c.useState)(!1),n=(0,c.useCallback)(()=>{j.push("/")},[j]),o=(0,c.useCallback)(a=>{m(!0),window.dispatchEvent(new CustomEvent("shep:feature-created",{detail:{name:a.name,description:a.description,repositoryPath:a.repositoryPath}})),j.push("/"),g(a).then(a=>{if(a.error){e.toast.error(a.error),window.dispatchEvent(new CustomEvent("shep:feature-create-failed"));return}k.play(),j.refresh()}).catch(()=>{e.toast.error("Failed to create feature"),window.dispatchEvent(new CustomEvent("shep:feature-create-failed"))}).finally(()=>{m(!1)})},[j,k]);return(0,b.jsx)(aQ,{open:!0,onClose:n,onSubmit:o,repositoryPath:a,features:h,workflowDefaults:i,initialParentId:f,isSubmitting:l})}a.s(["CreateDrawerClient",()=>aV],93995)}];
|
|
1
|
+
module.exports=[93995,a=>{"use strict";var b=a.i(10973),c=a.i(96960),d=a.i(69845),e=a.i(52313),f=a.i(25674);let g=(0,f.createServerReference)("4060ea2aabfb6edfdb6329ae6eaadce3c8cf03dc73",f.callServer,void 0,f.findSourceMapURL,"createFeature");var h=a.i(87148),h=h,i=a.i(25700);let j=(0,i.default)("file",[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}]]);var k=a.i(42642),k=k;let l=(0,i.default)("image",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",ry:"2",key:"1m3agn"}],["circle",{cx:"9",cy:"9",r:"2",key:"af1f0g"}],["path",{d:"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21",key:"1xmnt7"}]]),m=(0,i.default)("code",[["path",{d:"m16 18 6-6-6-6",key:"eg8j8"}],["path",{d:"m8 6-6 6 6 6",key:"ppft3o"}]]);var n=a.i(26915),n=n;let o=(0,i.default)("chevrons-up-down",[["path",{d:"m7 15 5 5 5-5",key:"1hf1tw"}],["path",{d:"m7 9 5-5 5 5",key:"sgt6xg"}]]);var p=a.i(51969),p=p,q=a.i(85536),r=a.i(19884);a.i(78454);var s=a.i(24255),t=a.i(2824),u=a.i(18948),v=a.i(90920);function w({className:a,...c}){return(0,b.jsx)("textarea",{"data-slot":"textarea",className:(0,q.cn)("placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input field-sizing-content min-h-[80px] w-full rounded-md border bg-transparent px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm","focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]","aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",a),...c})}var x=a.i(66873),y=c.forwardRef((a,c)=>(0,b.jsx)(x.Primitive.label,{...a,ref:c,onMouseDown:b=>{b.target.closest("button, input, select, textarea")||(a.onMouseDown?.(b),!b.defaultPrevented&&b.detail>1&&b.preventDefault())}}));y.displayName="Label",a.s(["Label",()=>y,"Root",()=>y],59967);var z=a.i(59967),z=z;let A=(0,a.i(42261).cva)("text-sm leading-none font-medium peer-disabled:cursor-not-allowed peer-disabled:opacity-70"),B=c.forwardRef(({className:a,...c},d)=>(0,b.jsx)(z.Root,{ref:d,className:(0,q.cn)(A(),a),...c}));B.displayName=z.Root.displayName;var p=p;let C=(0,i.default)("minus",[["path",{d:"M5 12h14",key:"1ays0h"}]]);var D=a.i(6175),E=a.i(7420),F=a.i(59653),G=a.i(17329),H=a.i(74432),I=a.i(14272),J="Checkbox",[K,L]=(0,E.createContextScope)(J),[M,N]=K(J);function O(a){let{__scopeCheckbox:d,checked:e,children:f,defaultChecked:g,disabled:h,form:i,name:j,onCheckedChange:k,required:l,value:m="on",internal_do_not_use_render:n}=a,[o,p]=(0,G.useControllableState)({prop:e,defaultProp:g??!1,onChange:k,caller:J}),[q,r]=c.useState(null),[s,t]=c.useState(null),u=c.useRef(!1),v=!q||!!i||!!q.closest("form"),w={checked:o,disabled:h,setChecked:p,control:q,setControl:r,name:j,form:i,value:m,hasConsumerStoppedPropagationRef:u,required:l,defaultChecked:!W(g)&&g,isFormControl:v,bubbleInput:s,setBubbleInput:t};return(0,b.jsx)(M,{scope:d,...w,children:"function"==typeof n?n(w):f})}var P="CheckboxTrigger",Q=c.forwardRef(({__scopeCheckbox:a,onKeyDown:d,onClick:e,...f},g)=>{let{control:h,value:i,disabled:j,checked:k,required:l,setControl:m,setChecked:n,hasConsumerStoppedPropagationRef:o,isFormControl:p,bubbleInput:q}=N(P,a),r=(0,D.useComposedRefs)(g,m),s=c.useRef(k);return c.useEffect(()=>{let a=h?.form;if(a){let b=()=>n(s.current);return a.addEventListener("reset",b),()=>a.removeEventListener("reset",b)}},[h,n]),(0,b.jsx)(x.Primitive.button,{type:"button",role:"checkbox","aria-checked":W(k)?"mixed":k,"aria-required":l,"data-state":X(k),"data-disabled":j?"":void 0,disabled:j,value:i,...f,ref:r,onKeyDown:(0,F.composeEventHandlers)(d,a=>{"Enter"===a.key&&a.preventDefault()}),onClick:(0,F.composeEventHandlers)(e,a=>{n(a=>!!W(a)||!a),q&&p&&(o.current=a.isPropagationStopped(),o.current||a.stopPropagation())})})});Q.displayName=P;var R=c.forwardRef((a,c)=>{let{__scopeCheckbox:d,name:e,checked:f,defaultChecked:g,required:h,disabled:i,value:j,onCheckedChange:k,form:l,...m}=a;return(0,b.jsx)(O,{__scopeCheckbox:d,checked:f,defaultChecked:g,disabled:i,required:h,onCheckedChange:k,name:e,form:l,value:j,internal_do_not_use_render:({isFormControl:a})=>(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(Q,{...m,ref:c,__scopeCheckbox:d}),a&&(0,b.jsx)(V,{__scopeCheckbox:d})]})})});R.displayName=J;var S="CheckboxIndicator",T=c.forwardRef((a,c)=>{let{__scopeCheckbox:d,forceMount:e,...f}=a,g=N(S,d);return(0,b.jsx)(I.Presence,{present:e||W(g.checked)||!0===g.checked,children:(0,b.jsx)(x.Primitive.span,{"data-state":X(g.checked),"data-disabled":g.disabled?"":void 0,...f,ref:c,style:{pointerEvents:"none",...a.style}})})});T.displayName=S;var U="CheckboxBubbleInput",V=c.forwardRef(({__scopeCheckbox:a,...d},e)=>{let f,{control:g,hasConsumerStoppedPropagationRef:h,checked:i,defaultChecked:j,required:k,disabled:l,name:m,value:n,form:o,bubbleInput:p,setBubbleInput:q}=N(U,a),r=(0,D.useComposedRefs)(e,q),s=(f=c.useRef({value:i,previous:i}),c.useMemo(()=>(f.current.value!==i&&(f.current.previous=f.current.value,f.current.value=i),f.current.previous),[i])),t=(0,H.useSize)(g);c.useEffect(()=>{if(!p)return;let a=Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype,"checked").set,b=!h.current;if(s!==i&&a){let c=new Event("click",{bubbles:b});p.indeterminate=W(i),a.call(p,!W(i)&&i),p.dispatchEvent(c)}},[p,s,i,h]);let u=c.useRef(!W(i)&&i);return(0,b.jsx)(x.Primitive.input,{type:"checkbox","aria-hidden":!0,defaultChecked:j??u.current,required:k,disabled:l,name:m,value:n,form:o,...d,tabIndex:-1,ref:r,style:{...d.style,...t,position:"absolute",pointerEvents:"none",opacity:0,margin:0,transform:"translateX(-100%)"}})});function W(a){return"indeterminate"===a}function X(a){return W(a)?"indeterminate":a?"checked":"unchecked"}V.displayName=U,a.s(["Checkbox",()=>R,"CheckboxIndicator",()=>T,"Indicator",()=>T,"Root",()=>R,"createCheckboxScope",()=>L,"unstable_BubbleInput",()=>V,"unstable_CheckboxBubbleInput",()=>V,"unstable_CheckboxProvider",()=>O,"unstable_CheckboxTrigger",()=>Q,"unstable_Provider",()=>O,"unstable_Trigger",()=>Q],27835);var Y=a.i(27835),Y=Y;function Z({className:a,...c}){return(0,b.jsx)(Y.Root,{"data-slot":"checkbox",className:(0,q.cn)("peer border-input dark:bg-input/30 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground dark:data-[state=checked]:bg-primary data-[state=checked]:border-primary data-[state=indeterminate]:bg-primary data-[state=indeterminate]:text-primary-foreground data-[state=indeterminate]:border-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive size-4 shrink-0 cursor-pointer rounded-[4px] border shadow-xs transition-shadow outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50",a),...c,children:(0,b.jsx)(Y.Indicator,{"data-slot":"checkbox-indicator",className:"grid place-content-center text-current transition-none",children:"indeterminate"===c.checked?(0,b.jsx)(C,{className:"size-3.5"}):(0,b.jsx)(p.default,{className:"size-3.5"})})})}function $({id:a,label:c,description:d,checked:e,onCheckedChange:f,disabled:g}){return(0,b.jsxs)("div",{className:"flex items-start gap-2",children:[(0,b.jsx)(Z,{id:a,className:"mt-0.75",checked:e,onCheckedChange:a=>f(!0===a),disabled:g}),(0,b.jsxs)("div",{className:"flex flex-col gap-0.5",children:[(0,b.jsx)(B,{htmlFor:a,className:"cursor-pointer text-sm font-medium",children:c}),d?(0,b.jsx)(B,{htmlFor:a,className:"text-muted-foreground cursor-pointer text-xs font-normal",children:d}):null]})]})}function _({label:a,description:c,parentAriaLabel:d,options:e,value:f,onValueChange:g,disabled:h}){let i=e.filter(a=>f[a.id]).length,j=i===e.length,k=i>0&&!j,l=`${a.toLowerCase().replace(/\s+/g,"-")}-group`;return(0,b.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,b.jsxs)("div",{className:"flex items-start gap-2",children:[(0,b.jsx)(Z,{id:l,className:"mt-0.75",checked:k?"indeterminate":j,onCheckedChange:()=>{let a=i<e.length,b={};for(let c of e)b[c.id]=a;g(b)},disabled:h,"aria-label":d??`${a} select all`}),(0,b.jsxs)("div",{className:"flex flex-col gap-0.5",children:[(0,b.jsx)(B,{htmlFor:l,className:"cursor-pointer text-sm font-medium",children:a}),c?(0,b.jsx)(B,{htmlFor:l,className:"text-muted-foreground cursor-pointer text-xs font-normal",children:c}):null]})]}),(0,b.jsx)("div",{className:"flex flex-col gap-3 pl-6",children:e.map(a=>(0,b.jsx)($,{id:a.id,label:a.label,description:a.description,checked:f[a.id]??!1,onCheckedChange:b=>{var c;return c=a.id,void g({...f,[c]:b})},disabled:h},a.id))})]})}var aa=a.i(58339),ab=a.i(58761),ac=a.i(51473),ad=a.i(59675),ae=a.i(5472),af=a.i(75988),ag=a.i(80930),ah=a.i(90986),ai=a.i(16164),aj=a.i(45291),ak="Popover",[al,am]=(0,E.createContextScope)(ak,[af.createPopperScope]),an=(0,af.createPopperScope)(),[ao,ap]=al(ak),aq=a=>{let{__scopePopover:d,children:e,open:f,defaultOpen:g,onOpenChange:h,modal:i=!1}=a,j=an(d),k=c.useRef(null),[l,m]=c.useState(!1),[n,o]=(0,G.useControllableState)({prop:f,defaultProp:g??!1,onChange:h,caller:ak});return(0,b.jsx)(af.Root,{...j,children:(0,b.jsx)(ao,{scope:d,contentId:(0,ae.useId)(),triggerRef:k,open:n,onOpenChange:o,onOpenToggle:c.useCallback(()=>o(a=>!a),[o]),hasCustomAnchor:l,onCustomAnchorAdd:c.useCallback(()=>m(!0),[]),onCustomAnchorRemove:c.useCallback(()=>m(!1),[]),modal:i,children:e})})};aq.displayName=ak;var ar="PopoverAnchor",as=c.forwardRef((a,d)=>{let{__scopePopover:e,...f}=a,g=ap(ar,e),h=an(e),{onCustomAnchorAdd:i,onCustomAnchorRemove:j}=g;return c.useEffect(()=>(i(),()=>j()),[i,j]),(0,b.jsx)(af.Anchor,{...h,...f,ref:d})});as.displayName=ar;var at="PopoverTrigger",au=c.forwardRef((a,c)=>{let{__scopePopover:d,...e}=a,f=ap(at,d),g=an(d),h=(0,D.useComposedRefs)(c,f.triggerRef),i=(0,b.jsx)(x.Primitive.button,{type:"button","aria-haspopup":"dialog","aria-expanded":f.open,"aria-controls":f.contentId,"data-state":aI(f.open),...e,ref:h,onClick:(0,F.composeEventHandlers)(a.onClick,f.onOpenToggle)});return f.hasCustomAnchor?i:(0,b.jsx)(af.Anchor,{asChild:!0,...g,children:i})});au.displayName=at;var av="PopoverPortal",[aw,ax]=al(av,{forceMount:void 0}),ay=a=>{let{__scopePopover:c,forceMount:d,children:e,container:f}=a,g=ap(av,c);return(0,b.jsx)(aw,{scope:c,forceMount:d,children:(0,b.jsx)(I.Presence,{present:d||g.open,children:(0,b.jsx)(ag.Portal,{asChild:!0,container:f,children:e})})})};ay.displayName=av;var az="PopoverContent",aA=c.forwardRef((a,c)=>{let d=ax(az,a.__scopePopover),{forceMount:e=d.forceMount,...f}=a,g=ap(az,a.__scopePopover);return(0,b.jsx)(I.Presence,{present:e||g.open,children:g.modal?(0,b.jsx)(aC,{...f,ref:c}):(0,b.jsx)(aD,{...f,ref:c})})});aA.displayName=az;var aB=(0,ah.createSlot)("PopoverContent.RemoveScroll"),aC=c.forwardRef((a,d)=>{let e=ap(az,a.__scopePopover),f=c.useRef(null),g=(0,D.useComposedRefs)(d,f),h=c.useRef(!1);return c.useEffect(()=>{let a=f.current;if(a)return(0,ai.hideOthers)(a)},[]),(0,b.jsx)(aj.RemoveScroll,{as:aB,allowPinchZoom:!0,children:(0,b.jsx)(aE,{...a,ref:g,trapFocus:e.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:(0,F.composeEventHandlers)(a.onCloseAutoFocus,a=>{a.preventDefault(),h.current||e.triggerRef.current?.focus()}),onPointerDownOutside:(0,F.composeEventHandlers)(a.onPointerDownOutside,a=>{let b=a.detail.originalEvent,c=0===b.button&&!0===b.ctrlKey;h.current=2===b.button||c},{checkForDefaultPrevented:!1}),onFocusOutside:(0,F.composeEventHandlers)(a.onFocusOutside,a=>a.preventDefault(),{checkForDefaultPrevented:!1})})})}),aD=c.forwardRef((a,d)=>{let e=ap(az,a.__scopePopover),f=c.useRef(!1),g=c.useRef(!1);return(0,b.jsx)(aE,{...a,ref:d,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:b=>{a.onCloseAutoFocus?.(b),b.defaultPrevented||(f.current||e.triggerRef.current?.focus(),b.preventDefault()),f.current=!1,g.current=!1},onInteractOutside:b=>{a.onInteractOutside?.(b),b.defaultPrevented||(f.current=!0,"pointerdown"===b.detail.originalEvent.type&&(g.current=!0));let c=b.target;e.triggerRef.current?.contains(c)&&b.preventDefault(),"focusin"===b.detail.originalEvent.type&&g.current&&b.preventDefault()}})}),aE=c.forwardRef((a,c)=>{let{__scopePopover:d,trapFocus:e,onOpenAutoFocus:f,onCloseAutoFocus:g,disableOutsidePointerEvents:h,onEscapeKeyDown:i,onPointerDownOutside:j,onFocusOutside:k,onInteractOutside:l,...m}=a,n=ap(az,d),o=an(d);return(0,ac.useFocusGuards)(),(0,b.jsx)(ad.FocusScope,{asChild:!0,loop:!0,trapped:e,onMountAutoFocus:f,onUnmountAutoFocus:g,children:(0,b.jsx)(ab.DismissableLayer,{asChild:!0,disableOutsidePointerEvents:h,onInteractOutside:l,onEscapeKeyDown:i,onPointerDownOutside:j,onFocusOutside:k,onDismiss:()=>n.onOpenChange(!1),children:(0,b.jsx)(af.Content,{"data-state":aI(n.open),role:"dialog",id:n.contentId,...o,...m,ref:c,style:{...m.style,"--radix-popover-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-popover-content-available-width":"var(--radix-popper-available-width)","--radix-popover-content-available-height":"var(--radix-popper-available-height)","--radix-popover-trigger-width":"var(--radix-popper-anchor-width)","--radix-popover-trigger-height":"var(--radix-popper-anchor-height)"}})})})}),aF="PopoverClose",aG=c.forwardRef((a,c)=>{let{__scopePopover:d,...e}=a,f=ap(aF,d);return(0,b.jsx)(x.Primitive.button,{type:"button",...e,ref:c,onClick:(0,F.composeEventHandlers)(a.onClick,()=>f.onOpenChange(!1))})});aG.displayName=aF;var aH=c.forwardRef((a,c)=>{let{__scopePopover:d,...e}=a,f=an(d);return(0,b.jsx)(af.Arrow,{...f,...e,ref:c})});function aI(a){return a?"open":"closed"}aH.displayName="PopoverArrow",a.s(["Anchor",()=>as,"Arrow",()=>aH,"Close",()=>aG,"Content",()=>aA,"Popover",()=>aq,"PopoverAnchor",()=>as,"PopoverArrow",()=>aH,"PopoverClose",()=>aG,"PopoverContent",()=>aA,"PopoverPortal",()=>ay,"PopoverTrigger",()=>au,"Portal",()=>ay,"Root",()=>aq,"Trigger",()=>au,"createPopoverScope",()=>am],61452);var aJ=a.i(61452),aJ=aJ;let aK=aJ.Root,aL=aJ.Trigger;aJ.Anchor;let aM=c.forwardRef(({className:a,align:c="center",sideOffset:d=4,...e},f)=>(0,b.jsx)(aJ.Portal,{children:(0,b.jsx)(aJ.Content,{ref:f,align:c,sideOffset:d,className:(0,q.cn)("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-72 rounded-md border p-4 shadow-md outline-none",a),...e})}));async function aN(){let a=await fetch("/api/dialog/pick-files",{method:"POST"});if(!a.ok)throw Error("Failed to open file dialog");let b=await a.json();return b.cancelled?null:b.files}aM.displayName=aJ.Content.displayName;let aO=[{id:"allowPrd",label:"PRD",description:"Auto-approve requirements move to planning."},{id:"allowPlan",label:"Plan",description:"Auto-approve planning move to implementation."},{id:"allowMerge",label:"Merge",description:"Auto-approve merge move to Done."}],aP={allowPrd:!1,allowPlan:!1,allowMerge:!1};function aQ({open:a,onClose:d,onSubmit:e,repositoryPath:f,isSubmitting:g=!1,workflowDefaults:i,features:j,initialParentId:k}){let l=(0,r.useSoundAction)("create"),m=i?.approvalGates??aP,n=i?.push??!1,o=i?.openPr??!1,[p,q]=(0,c.useState)(""),[x,y]=(0,c.useState)(""),[z,A]=(0,c.useState)([]),[C,D]=(0,c.useState)({...m}),[E,F]=(0,c.useState)(n),[G,H]=(0,c.useState)(o),[I,J]=(0,c.useState)(void 0);(0,c.useEffect)(()=>{i&&(D({...i.approvalGates}),F(i.push),H(i.openPr))},[i]),(0,c.useEffect)(()=>{a&&k&&J(k)},[a,k]);let K=(0,c.useCallback)(()=>{q(""),y(""),A([]),D({...m}),F(n),H(o),J(void 0)},[m,n,o]),L=(0,c.useCallback)(()=>{K(),d()},[d,K]),M=(0,c.useCallback)(a=>{if(a.preventDefault(),!p.trim())return;l.play();let b=x.trim()||void 0;e({name:p.trim(),description:b,attachments:z,repositoryPath:f,approvalGates:{allowPrd:C.allowPrd??!1,allowPlan:C.allowPlan??!1,allowMerge:C.allowMerge??!1},push:E||G,openPr:G,...I?{parentId:I}:{}}),K()},[p,x,z,C,f,e,E,G,I,l,K]),N=(0,c.useCallback)(async()=>{try{let a=await aN();a&&A(b=>[...b,...a])}catch{}},[]),O=(0,c.useCallback)(a=>{A(b=>b.filter(b=>b.path!==a))},[]),P=j&&j.length>0;return(0,b.jsx)(s.BaseDrawer,{open:a,onClose:L,size:"md",modal:!1,"data-testid":"feature-create-drawer",header:(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)("div",{className:"h-2.5 w-2.5 shrink-0 rounded-full bg-blue-500"}),(0,b.jsx)(t.DrawerTitle,{children:"NEW FEATURE"})]}),(0,b.jsx)(t.DrawerDescription,{asChild:!0,children:(0,b.jsx)("div",{children:(0,b.jsx)(aa.Badge,{variant:"secondary",children:"Creating..."})})})]}),footer:(0,b.jsxs)("div",{className:"flex flex-row justify-end gap-2",children:[(0,b.jsx)(u.Button,{variant:"outline",onClick:L,disabled:g,children:"Cancel"}),(0,b.jsx)(u.Button,{type:"submit",form:"create-feature-form",disabled:!p.trim()||g,children:g?"Creating...":"+ Create Feature"})]}),children:(0,b.jsx)("div",{className:"overflow-y-auto p-4",children:(0,b.jsxs)("form",{id:"create-feature-form",onSubmit:M,className:"flex flex-col gap-4",children:[(0,b.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,b.jsx)(B,{htmlFor:"feature-name",className:"text-muted-foreground text-xs font-semibold tracking-wider",children:"FEATURE NAME"}),(0,b.jsx)(v.Input,{id:"feature-name",placeholder:"e.g. GitHub OAuth Login",value:p,onChange:a=>q(a.target.value),required:!0,disabled:g})]}),(0,b.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,b.jsx)(B,{htmlFor:"feature-description",className:"text-muted-foreground text-xs font-semibold tracking-wider",children:"DESCRIPTION"}),(0,b.jsx)(w,{id:"feature-description",placeholder:"Describe what this feature does...",value:x,onChange:a=>y(a.target.value),rows:4,disabled:g})]}),P?(0,b.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,b.jsx)(B,{htmlFor:"parent-feature",className:"text-muted-foreground text-xs font-semibold tracking-wider",children:"PARENT FEATURE"}),(0,b.jsx)(aR,{features:j,value:I,onChange:J,disabled:g})]}):null,(0,b.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,b.jsx)(B,{className:"text-muted-foreground text-xs font-semibold tracking-wider",children:"APPROVE"}),(0,b.jsx)(_,{label:"Autonomous Mode",description:"YOLO!",parentAriaLabel:"Auto approve all",options:aO,value:C,onValueChange:D,disabled:g})]}),(0,b.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,b.jsx)(B,{className:"text-muted-foreground text-xs font-semibold tracking-wider",children:"GIT"}),(0,b.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,b.jsx)($,{id:"push",label:"Push",description:"Push branch to remote after implementation.",checked:E||G,onCheckedChange:F,disabled:G||g}),(0,b.jsx)($,{id:"open-pr",label:"Create PR",description:"Open a pull request after pushing.",checked:G,onCheckedChange:H,disabled:g})]})]}),(0,b.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between",children:[(0,b.jsxs)(B,{className:"text-muted-foreground text-xs font-semibold tracking-wider",children:["ATTACHMENTS",z.length>0&&(0,b.jsxs)("span",{className:"text-muted-foreground/60 ml-1.5",children:["(",z.length,")"]})]}),(0,b.jsxs)(u.Button,{type:"button",variant:"outline",size:"xs",onClick:N,disabled:g,children:[(0,b.jsx)(h.default,{className:"size-3"}),"Add Files"]})]}),z.length>0&&(0,b.jsx)("div",{className:"flex flex-col gap-2",children:z.map(a=>(0,b.jsx)(aS,{file:a,onRemove:()=>O(a.path),disabled:g},a.path))})]})]})})})}function aR({features:a,value:d,onChange:e,disabled:f}){let[g,h]=(0,c.useState)(!1),[i,j]=(0,c.useState)(""),k=(0,c.useRef)(null),l=a.find(a=>a.id===d),m=i.trim()?a.filter(a=>a.name.toLowerCase().includes(i.toLowerCase())||a.id.toLowerCase().includes(i.toLowerCase())):a,n=(0,c.useCallback)(a=>{e(a),h(!1),j("")},[e]);return(0,c.useEffect)(()=>{g?setTimeout(()=>k.current?.focus(),0):j("")},[g]),(0,b.jsxs)(aK,{open:g,onOpenChange:h,children:[(0,b.jsx)(aL,{asChild:!0,children:(0,b.jsxs)("button",{id:"parent-feature",type:"button",role:"combobox","aria-expanded":g,"aria-label":"Parent Feature",disabled:f,"data-testid":"parent-feature-combobox",className:(0,q.cn)("border-input bg-background ring-offset-background focus:ring-ring flex h-9 w-full items-center justify-between rounded-md border px-3 py-2 text-sm focus:ring-2 focus:ring-offset-2 focus:outline-none disabled:cursor-not-allowed disabled:opacity-50",!l&&"text-muted-foreground"),children:[(0,b.jsx)("span",{className:"truncate",children:l?`${l.name} (${l.id.slice(0,8)})`:"Select parent feature..."}),(0,b.jsx)(o,{className:"ml-2 h-4 w-4 shrink-0 opacity-50"})]})}),(0,b.jsx)(aM,{className:"w-80 p-0",align:"start","data-testid":"parent-feature-combobox-content",children:(0,b.jsxs)("div",{className:"flex flex-col",children:[(0,b.jsx)("div",{className:"border-b p-2",children:(0,b.jsx)(v.Input,{ref:k,placeholder:"Search features...",value:i,onChange:a=>j(a.target.value),className:"h-8 border-0 p-0 text-sm shadow-none focus-visible:ring-0","data-testid":"parent-feature-search"})}),(0,b.jsxs)("div",{className:"max-h-48 overflow-y-auto py-1",role:"listbox","aria-label":"Features",children:[(0,b.jsxs)("button",{type:"button",role:"option","aria-selected":void 0===d,onClick:()=>n(void 0),className:(0,q.cn)("hover:bg-accent hover:text-accent-foreground flex w-full items-center gap-2 px-3 py-2 text-sm",void 0===d&&"bg-accent/50"),"data-testid":"parent-feature-option-none",children:[(0,b.jsx)(p.default,{className:(0,q.cn)("h-4 w-4 shrink-0",void 0!==d&&"invisible")}),(0,b.jsx)("span",{className:"text-muted-foreground italic",children:"No parent"})]}),0===m.length&&i?(0,b.jsx)("p",{className:"text-muted-foreground px-3 py-2 text-sm",children:"No features found."}):m.map(a=>(0,b.jsxs)("button",{type:"button",role:"option","aria-selected":d===a.id,onClick:()=>n(a.id),className:(0,q.cn)("hover:bg-accent hover:text-accent-foreground flex w-full items-center gap-2 px-3 py-2 text-sm",d===a.id&&"bg-accent/50"),"data-testid":`parent-feature-option-${a.id}`,children:[(0,b.jsx)(p.default,{className:(0,q.cn)("h-4 w-4 shrink-0",d!==a.id&&"invisible")}),(0,b.jsxs)("span",{className:"truncate",children:[a.name," ",(0,b.jsxs)("span",{className:"text-muted-foreground font-mono text-xs",children:["(",a.id.slice(0,8),")"]})]})]},a.id))]})]})})]})}function aS({file:a,onRemove:c,disabled:d}){var e,f,g;let h,i=(h=(e=a.name).lastIndexOf("."))>=0?e.slice(h).toLowerCase():"",o=(f=i,aT.has(f)?l:".pdf"===f?k.default:aU.has(f)?m:j),p=".pdf"===(g=i)?"bg-red-50 text-red-600":aT.has(g)?"bg-blue-50 text-blue-600":aU.has(g)?"bg-emerald-50 text-emerald-600":"bg-gray-50 text-gray-600";return(0,b.jsxs)("div",{className:"flex items-center gap-3 rounded-md border p-2",children:[(0,b.jsx)("div",{className:(0,q.cn)("flex h-8 w-8 shrink-0 items-center justify-center rounded",p),children:(0,b.jsx)(o,{className:"h-4 w-4"})}),(0,b.jsxs)("div",{className:"flex min-w-0 flex-1 flex-col",children:[(0,b.jsx)("span",{className:"truncate text-sm font-medium",children:a.name}),(0,b.jsx)("span",{className:"text-muted-foreground truncate text-xs",children:a.path}),(0,b.jsx)("span",{className:"text-muted-foreground text-xs",children:function(a){if(0===a)return"0 B";let b=Math.floor(Math.log(a)/Math.log(1024));return`${(a/Math.pow(1024,b)).toFixed(+(0!==b))} ${["B","KB","MB","GB"][b]}`}(a.size)})]}),(0,b.jsx)(u.Button,{type:"button",variant:"ghost",size:"icon-xs",onClick:c,disabled:d,"aria-label":`Remove ${a.name}`,children:(0,b.jsx)(n.default,{className:"h-3 w-3"})})]})}let aT=new Set([".png",".jpg",".jpeg",".gif",".svg",".webp",".ico",".bmp"]),aU=new Set([".ts",".tsx",".js",".jsx",".json",".yaml",".yml",".xml",".html",".css",".md"]);function aV({repositoryPath:a,initialParentId:f,features:h,workflowDefaults:i}){let j=(0,d.useRouter)(),k=(0,r.useSoundAction)("create"),[l,m]=(0,c.useState)(!1),n=(0,c.useCallback)(()=>{j.push("/")},[j]),o=(0,c.useCallback)(a=>{m(!0),window.dispatchEvent(new CustomEvent("shep:feature-created",{detail:{name:a.name,description:a.description,repositoryPath:a.repositoryPath}})),j.push("/"),g(a).then(a=>{if(a.error){e.toast.error(a.error),window.dispatchEvent(new CustomEvent("shep:feature-create-failed"));return}k.play(),j.refresh()}).catch(()=>{e.toast.error("Failed to create feature"),window.dispatchEvent(new CustomEvent("shep:feature-create-failed"))}).finally(()=>{m(!1)})},[j,k]);return(0,b.jsx)(aQ,{open:!0,onClose:n,onSubmit:o,repositoryPath:a,features:h,workflowDefaults:i,initialParentId:f,isSubmitting:l})}a.s(["CreateDrawerClient",()=>aV],93995)}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../src/presentation/web/components/common/control-center-drawer/create-drawer-client.tsx","../../../../../../../node_modules/.pnpm/%40radix-ui%2Breact-label%402.1.7_%40types%2Breact-dom%4019.2.3_%40types%2Breact%4019.2.10__%40types%2Breact%40_511ac9deb435ae46b2843bd1975598a6/node_modules/%40radix-ui/react-label/dist/index.mjs","../../../../../../../src/presentation/web/components/ui/label.tsx","../../../../../../../node_modules/.pnpm/%40radix-ui%2Breact-checkbox%401.3.3_%40types%2Breact-dom%4019.2.3_%40types%2Breact%4019.2.10__%40types%2Brea_5132bbb1edf049509ad81076406f08e7/node_modules/%40radix-ui/react-checkbox/dist/index.mjs","../../../../../../../src/presentation/web/app/actions/data%3Afa3e0c%20%3Ctext/javascript%3E","../../../../../../../src/presentation/web/components/ui/checkbox.tsx","../../../../../../../src/presentation/web/components/ui/checkbox-group-item.tsx","../../../../../../../src/presentation/web/components/ui/checkbox-group.tsx","../../../../../../../node_modules/.pnpm/%40radix-ui%2Breact-popover%401.1.15_%40types%2Breact-dom%4019.2.3_%40types%2Breact%4019.2.10__%40types%2Brea_6845413866e39bfed03c608b19c71ed1/node_modules/%40radix-ui/react-popover/dist/index.mjs","../../../../../../../src/presentation/web/components/ui/popover.tsx","../../../../../../../src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.tsx","../../../../../../../node_modules/.pnpm/%40radix-ui%2Breact-use-previous%401.1.1_%40types%2Breact%4019.2.10_react%4019.2.4/node_modules/%40radix-ui/react-use-previous/dist/index.mjs","../../../../../../../src/presentation/web/components/ui/textarea.tsx","../../../../../../../src/presentation/web/components/common/feature-create-drawer/pick-files.ts","../../../../../../../node_modules/.pnpm/lucide-react%400.563.0_react%4019.2.4/node_modules/lucide-react/src/icons/code.ts","../../../../../../../node_modules/.pnpm/lucide-react%400.563.0_react%4019.2.4/node_modules/lucide-react/src/icons/minus.ts","../../../../../../../node_modules/.pnpm/lucide-react%400.563.0_react%4019.2.4/node_modules/lucide-react/src/icons/chevrons-up-down.ts","../../../../../../../node_modules/.pnpm/lucide-react%400.563.0_react%4019.2.4/node_modules/lucide-react/src/icons/image.ts","../../../../../../../node_modules/.pnpm/lucide-react%400.563.0_react%4019.2.4/node_modules/lucide-react/src/icons/file.ts"],"sourcesContent":["'use client';\n\nimport { useState, useCallback } from 'react';\nimport { useRouter } from 'next/navigation';\nimport { toast } from 'sonner';\nimport { createFeature } from '@/app/actions/create-feature';\nimport { FeatureCreateDrawer } from '@/components/common/feature-create-drawer';\nimport type { FeatureCreatePayload } from '@/components/common/feature-create-drawer';\nimport type { ParentFeatureOption } from '@/components/common/feature-create-drawer/feature-create-drawer';\nimport type { WorkflowDefaults } from '@/app/actions/get-workflow-defaults';\nimport { useSoundAction } from '@/hooks/use-sound-action';\n\nexport interface CreateDrawerClientProps {\n repositoryPath: string;\n initialParentId?: string;\n features: ParentFeatureOption[];\n workflowDefaults?: WorkflowDefaults;\n}\n\nexport function CreateDrawerClient({\n repositoryPath,\n initialParentId,\n features,\n workflowDefaults,\n}: CreateDrawerClientProps) {\n const router = useRouter();\n const createSound = useSoundAction('create');\n const [isSubmitting, setIsSubmitting] = useState(false);\n\n const onClose = useCallback(() => {\n router.push('/');\n }, [router]);\n\n const onSubmit = useCallback(\n (data: FeatureCreatePayload) => {\n setIsSubmitting(true);\n\n // Dispatch event for optimistic canvas update before navigating\n window.dispatchEvent(\n new CustomEvent('shep:feature-created', {\n detail: {\n name: data.name,\n description: data.description,\n repositoryPath: data.repositoryPath,\n },\n })\n );\n\n // Close the drawer immediately for responsive UI\n router.push('/');\n\n // Fire server action in the background\n createFeature(data)\n .then((result) => {\n if (result.error) {\n toast.error(result.error);\n // Dispatch rollback event\n window.dispatchEvent(new CustomEvent('shep:feature-create-failed'));\n return;\n }\n createSound.play();\n router.refresh();\n })\n .catch(() => {\n toast.error('Failed to create feature');\n window.dispatchEvent(new CustomEvent('shep:feature-create-failed'));\n })\n .finally(() => {\n setIsSubmitting(false);\n });\n },\n [router, createSound]\n );\n\n return (\n <FeatureCreateDrawer\n open\n onClose={onClose}\n onSubmit={onSubmit}\n repositoryPath={repositoryPath}\n features={features}\n workflowDefaults={workflowDefaults}\n initialParentId={initialParentId}\n isSubmitting={isSubmitting}\n />\n );\n}\n","\"use client\";\n\n// src/label.tsx\nimport * as React from \"react\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NAME = \"Label\";\nvar Label = React.forwardRef((props, forwardedRef) => {\n return /* @__PURE__ */ jsx(\n Primitive.label,\n {\n ...props,\n ref: forwardedRef,\n onMouseDown: (event) => {\n const target = event.target;\n if (target.closest(\"button, input, select, textarea\")) return;\n props.onMouseDown?.(event);\n if (!event.defaultPrevented && event.detail > 1) event.preventDefault();\n }\n }\n );\n});\nLabel.displayName = NAME;\nvar Root = Label;\nexport {\n Label,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","'use client';\n\nimport * as React from 'react';\nimport { Label as LabelPrimitive } from 'radix-ui';\nimport { cva, type VariantProps } from 'class-variance-authority';\n\nimport { cn } from '@/lib/utils';\n\nconst labelVariants = cva(\n 'text-sm leading-none font-medium peer-disabled:cursor-not-allowed peer-disabled:opacity-70'\n);\n\nconst Label = React.forwardRef<\n React.ComponentRef<typeof LabelPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root> & VariantProps<typeof labelVariants>\n>(({ className, ...props }, ref) => (\n <LabelPrimitive.Root ref={ref} className={cn(labelVariants(), className)} {...props} />\n));\nLabel.displayName = LabelPrimitive.Root.displayName;\n\nexport { Label };\n","\"use client\";\n\n// src/checkbox.tsx\nimport * as React from \"react\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { usePrevious } from \"@radix-ui/react-use-previous\";\nimport { useSize } from \"@radix-ui/react-use-size\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { Fragment, jsx, jsxs } from \"react/jsx-runtime\";\nvar CHECKBOX_NAME = \"Checkbox\";\nvar [createCheckboxContext, createCheckboxScope] = createContextScope(CHECKBOX_NAME);\nvar [CheckboxProviderImpl, useCheckboxContext] = createCheckboxContext(CHECKBOX_NAME);\nfunction CheckboxProvider(props) {\n const {\n __scopeCheckbox,\n checked: checkedProp,\n children,\n defaultChecked,\n disabled,\n form,\n name,\n onCheckedChange,\n required,\n value = \"on\",\n // @ts-expect-error\n internal_do_not_use_render\n } = props;\n const [checked, setChecked] = useControllableState({\n prop: checkedProp,\n defaultProp: defaultChecked ?? false,\n onChange: onCheckedChange,\n caller: CHECKBOX_NAME\n });\n const [control, setControl] = React.useState(null);\n const [bubbleInput, setBubbleInput] = React.useState(null);\n const hasConsumerStoppedPropagationRef = React.useRef(false);\n const isFormControl = control ? !!form || !!control.closest(\"form\") : (\n // We set this to true by default so that events bubble to forms without JS (SSR)\n true\n );\n const context = {\n checked,\n disabled,\n setChecked,\n control,\n setControl,\n name,\n form,\n value,\n hasConsumerStoppedPropagationRef,\n required,\n defaultChecked: isIndeterminate(defaultChecked) ? false : defaultChecked,\n isFormControl,\n bubbleInput,\n setBubbleInput\n };\n return /* @__PURE__ */ jsx(\n CheckboxProviderImpl,\n {\n scope: __scopeCheckbox,\n ...context,\n children: isFunction(internal_do_not_use_render) ? internal_do_not_use_render(context) : children\n }\n );\n}\nvar TRIGGER_NAME = \"CheckboxTrigger\";\nvar CheckboxTrigger = React.forwardRef(\n ({ __scopeCheckbox, onKeyDown, onClick, ...checkboxProps }, forwardedRef) => {\n const {\n control,\n value,\n disabled,\n checked,\n required,\n setControl,\n setChecked,\n hasConsumerStoppedPropagationRef,\n isFormControl,\n bubbleInput\n } = useCheckboxContext(TRIGGER_NAME, __scopeCheckbox);\n const composedRefs = useComposedRefs(forwardedRef, setControl);\n const initialCheckedStateRef = React.useRef(checked);\n React.useEffect(() => {\n const form = control?.form;\n if (form) {\n const reset = () => setChecked(initialCheckedStateRef.current);\n form.addEventListener(\"reset\", reset);\n return () => form.removeEventListener(\"reset\", reset);\n }\n }, [control, setChecked]);\n return /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n role: \"checkbox\",\n \"aria-checked\": isIndeterminate(checked) ? \"mixed\" : checked,\n \"aria-required\": required,\n \"data-state\": getState(checked),\n \"data-disabled\": disabled ? \"\" : void 0,\n disabled,\n value,\n ...checkboxProps,\n ref: composedRefs,\n onKeyDown: composeEventHandlers(onKeyDown, (event) => {\n if (event.key === \"Enter\") event.preventDefault();\n }),\n onClick: composeEventHandlers(onClick, (event) => {\n setChecked((prevChecked) => isIndeterminate(prevChecked) ? true : !prevChecked);\n if (bubbleInput && isFormControl) {\n hasConsumerStoppedPropagationRef.current = event.isPropagationStopped();\n if (!hasConsumerStoppedPropagationRef.current) event.stopPropagation();\n }\n })\n }\n );\n }\n);\nCheckboxTrigger.displayName = TRIGGER_NAME;\nvar Checkbox = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeCheckbox,\n name,\n checked,\n defaultChecked,\n required,\n disabled,\n value,\n onCheckedChange,\n form,\n ...checkboxProps\n } = props;\n return /* @__PURE__ */ jsx(\n CheckboxProvider,\n {\n __scopeCheckbox,\n checked,\n defaultChecked,\n disabled,\n required,\n onCheckedChange,\n name,\n form,\n value,\n internal_do_not_use_render: ({ isFormControl }) => /* @__PURE__ */ jsxs(Fragment, { children: [\n /* @__PURE__ */ jsx(\n CheckboxTrigger,\n {\n ...checkboxProps,\n ref: forwardedRef,\n __scopeCheckbox\n }\n ),\n isFormControl && /* @__PURE__ */ jsx(\n CheckboxBubbleInput,\n {\n __scopeCheckbox\n }\n )\n ] })\n }\n );\n }\n);\nCheckbox.displayName = CHECKBOX_NAME;\nvar INDICATOR_NAME = \"CheckboxIndicator\";\nvar CheckboxIndicator = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeCheckbox, forceMount, ...indicatorProps } = props;\n const context = useCheckboxContext(INDICATOR_NAME, __scopeCheckbox);\n return /* @__PURE__ */ jsx(\n Presence,\n {\n present: forceMount || isIndeterminate(context.checked) || context.checked === true,\n children: /* @__PURE__ */ jsx(\n Primitive.span,\n {\n \"data-state\": getState(context.checked),\n \"data-disabled\": context.disabled ? \"\" : void 0,\n ...indicatorProps,\n ref: forwardedRef,\n style: { pointerEvents: \"none\", ...props.style }\n }\n )\n }\n );\n }\n);\nCheckboxIndicator.displayName = INDICATOR_NAME;\nvar BUBBLE_INPUT_NAME = \"CheckboxBubbleInput\";\nvar CheckboxBubbleInput = React.forwardRef(\n ({ __scopeCheckbox, ...props }, forwardedRef) => {\n const {\n control,\n hasConsumerStoppedPropagationRef,\n checked,\n defaultChecked,\n required,\n disabled,\n name,\n value,\n form,\n bubbleInput,\n setBubbleInput\n } = useCheckboxContext(BUBBLE_INPUT_NAME, __scopeCheckbox);\n const composedRefs = useComposedRefs(forwardedRef, setBubbleInput);\n const prevChecked = usePrevious(checked);\n const controlSize = useSize(control);\n React.useEffect(() => {\n const input = bubbleInput;\n if (!input) return;\n const inputProto = window.HTMLInputElement.prototype;\n const descriptor = Object.getOwnPropertyDescriptor(\n inputProto,\n \"checked\"\n );\n const setChecked = descriptor.set;\n const bubbles = !hasConsumerStoppedPropagationRef.current;\n if (prevChecked !== checked && setChecked) {\n const event = new Event(\"click\", { bubbles });\n input.indeterminate = isIndeterminate(checked);\n setChecked.call(input, isIndeterminate(checked) ? false : checked);\n input.dispatchEvent(event);\n }\n }, [bubbleInput, prevChecked, checked, hasConsumerStoppedPropagationRef]);\n const defaultCheckedRef = React.useRef(isIndeterminate(checked) ? false : checked);\n return /* @__PURE__ */ jsx(\n Primitive.input,\n {\n type: \"checkbox\",\n \"aria-hidden\": true,\n defaultChecked: defaultChecked ?? defaultCheckedRef.current,\n required,\n disabled,\n name,\n value,\n form,\n ...props,\n tabIndex: -1,\n ref: composedRefs,\n style: {\n ...props.style,\n ...controlSize,\n position: \"absolute\",\n pointerEvents: \"none\",\n opacity: 0,\n margin: 0,\n // We transform because the input is absolutely positioned but we have\n // rendered it **after** the button. This pulls it back to sit on top\n // of the button.\n transform: \"translateX(-100%)\"\n }\n }\n );\n }\n);\nCheckboxBubbleInput.displayName = BUBBLE_INPUT_NAME;\nfunction isFunction(value) {\n return typeof value === \"function\";\n}\nfunction isIndeterminate(checked) {\n return checked === \"indeterminate\";\n}\nfunction getState(checked) {\n return isIndeterminate(checked) ? \"indeterminate\" : checked ? \"checked\" : \"unchecked\";\n}\nexport {\n Checkbox,\n CheckboxIndicator,\n CheckboxIndicator as Indicator,\n Checkbox as Root,\n createCheckboxScope,\n CheckboxBubbleInput as unstable_BubbleInput,\n CheckboxBubbleInput as unstable_CheckboxBubbleInput,\n CheckboxProvider as unstable_CheckboxProvider,\n CheckboxTrigger as unstable_CheckboxTrigger,\n CheckboxProvider as unstable_Provider,\n CheckboxTrigger as unstable_Trigger\n};\n//# sourceMappingURL=index.mjs.map\n","/* __next_internal_action_entry_do_not_use__ [{\"40d075c363c758e7309fe56f5aadf1216283e26ed3\":\"createFeature\"},\"src/presentation/web/app/actions/create-feature.ts\",\"\"] */\"use turbopack no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_0=/*#__PURE__*/createServerReference(\"40d075c363c758e7309fe56f5aadf1216283e26ed3\",callServer,void 0,findSourceMapURL,\"createFeature\");export{$$RSC_SERVER_ACTION_0 as createFeature};","'use client';\n\nimport * as React from 'react';\nimport { CheckIcon, MinusIcon } from 'lucide-react';\nimport { Checkbox as CheckboxPrimitive } from 'radix-ui';\n\nimport { cn } from '@/lib/utils';\n\nfunction Checkbox({ className, ...props }: React.ComponentProps<typeof CheckboxPrimitive.Root>) {\n return (\n <CheckboxPrimitive.Root\n data-slot=\"checkbox\"\n className={cn(\n 'peer border-input dark:bg-input/30 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground dark:data-[state=checked]:bg-primary data-[state=checked]:border-primary data-[state=indeterminate]:bg-primary data-[state=indeterminate]:text-primary-foreground data-[state=indeterminate]:border-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive size-4 shrink-0 cursor-pointer rounded-[4px] border shadow-xs transition-shadow outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50',\n className\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n data-slot=\"checkbox-indicator\"\n className=\"grid place-content-center text-current transition-none\"\n >\n {props.checked === 'indeterminate' ? (\n <MinusIcon className=\"size-3.5\" />\n ) : (\n <CheckIcon className=\"size-3.5\" />\n )}\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n );\n}\n\nexport { Checkbox };\n","'use client';\n\nimport { Checkbox } from '@/components/ui/checkbox';\nimport { Label } from '@/components/ui/label';\n\nexport interface CheckboxGroupItemProps {\n id: string;\n label: string;\n description?: string;\n checked: boolean;\n onCheckedChange: (checked: boolean) => void;\n disabled?: boolean;\n}\n\nfunction CheckboxGroupItem({\n id,\n label,\n description,\n checked,\n onCheckedChange,\n disabled,\n}: CheckboxGroupItemProps) {\n return (\n <div className=\"flex items-start gap-2\">\n <Checkbox\n id={id}\n className=\"mt-0.75\"\n checked={checked}\n onCheckedChange={(v) => onCheckedChange(v === true)}\n disabled={disabled}\n />\n <div className=\"flex flex-col gap-0.5\">\n <Label htmlFor={id} className=\"cursor-pointer text-sm font-medium\">\n {label}\n </Label>\n {description ? (\n <Label htmlFor={id} className=\"text-muted-foreground cursor-pointer text-xs font-normal\">\n {description}\n </Label>\n ) : null}\n </div>\n </div>\n );\n}\n\nexport { CheckboxGroupItem };\n","'use client';\n\nimport { Checkbox } from '@/components/ui/checkbox';\nimport { Label } from '@/components/ui/label';\nimport { CheckboxGroupItem } from '@/components/ui/checkbox-group-item';\n\nexport interface CheckboxGroupOption {\n id: string;\n label: string;\n description?: string;\n}\n\nexport interface CheckboxGroupProps {\n /** Visible group label rendered next to the parent checkbox. */\n label: string;\n /** Optional description rendered below the parent label. */\n description?: string;\n /** Accessible name for the parent checkbox (used as aria-label). */\n parentAriaLabel?: string;\n options: CheckboxGroupOption[];\n /** Record mapping option id → checked state. */\n value: Record<string, boolean>;\n onValueChange: (value: Record<string, boolean>) => void;\n disabled?: boolean;\n}\n\nfunction CheckboxGroup({\n label,\n description,\n parentAriaLabel,\n options,\n value,\n onValueChange,\n disabled,\n}: CheckboxGroupProps) {\n const selectedCount = options.filter((o) => value[o.id]).length;\n const parentChecked = selectedCount === options.length;\n const parentIndeterminate = selectedCount > 0 && !parentChecked;\n\n const handleParentToggle = () => {\n const target = selectedCount < options.length;\n const next: Record<string, boolean> = {};\n for (const o of options) {\n next[o.id] = target;\n }\n onValueChange(next);\n };\n\n const handleItemChange = (id: string, checked: boolean) => {\n onValueChange({ ...value, [id]: checked });\n };\n\n const parentId = `${label.toLowerCase().replace(/\\s+/g, '-')}-group`;\n\n return (\n <div className=\"flex flex-col gap-3\">\n {/* Parent checkbox */}\n <div className=\"flex items-start gap-2\">\n <Checkbox\n id={parentId}\n className=\"mt-0.75\"\n checked={parentIndeterminate ? 'indeterminate' : parentChecked}\n onCheckedChange={handleParentToggle}\n disabled={disabled}\n aria-label={parentAriaLabel ?? `${label} select all`}\n />\n <div className=\"flex flex-col gap-0.5\">\n <Label htmlFor={parentId} className=\"cursor-pointer text-sm font-medium\">\n {label}\n </Label>\n {description ? (\n <Label\n htmlFor={parentId}\n className=\"text-muted-foreground cursor-pointer text-xs font-normal\"\n >\n {description}\n </Label>\n ) : null}\n </div>\n </div>\n\n {/* Child checkboxes */}\n <div className=\"flex flex-col gap-3 pl-6\">\n {options.map((option) => (\n <CheckboxGroupItem\n key={option.id}\n id={option.id}\n label={option.label}\n description={option.description}\n checked={value[option.id] ?? false}\n onCheckedChange={(checked) => handleItemChange(option.id, checked)}\n disabled={disabled}\n />\n ))}\n </div>\n </div>\n );\n}\n\nexport { CheckboxGroup };\n","\"use client\";\n\n// src/popover.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { DismissableLayer } from \"@radix-ui/react-dismissable-layer\";\nimport { useFocusGuards } from \"@radix-ui/react-focus-guards\";\nimport { FocusScope } from \"@radix-ui/react-focus-scope\";\nimport { useId } from \"@radix-ui/react-id\";\nimport * as PopperPrimitive from \"@radix-ui/react-popper\";\nimport { createPopperScope } from \"@radix-ui/react-popper\";\nimport { Portal as PortalPrimitive } from \"@radix-ui/react-portal\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { hideOthers } from \"aria-hidden\";\nimport { RemoveScroll } from \"react-remove-scroll\";\nimport { jsx } from \"react/jsx-runtime\";\nvar POPOVER_NAME = \"Popover\";\nvar [createPopoverContext, createPopoverScope] = createContextScope(POPOVER_NAME, [\n createPopperScope\n]);\nvar usePopperScope = createPopperScope();\nvar [PopoverProvider, usePopoverContext] = createPopoverContext(POPOVER_NAME);\nvar Popover = (props) => {\n const {\n __scopePopover,\n children,\n open: openProp,\n defaultOpen,\n onOpenChange,\n modal = false\n } = props;\n const popperScope = usePopperScope(__scopePopover);\n const triggerRef = React.useRef(null);\n const [hasCustomAnchor, setHasCustomAnchor] = React.useState(false);\n const [open, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen ?? false,\n onChange: onOpenChange,\n caller: POPOVER_NAME\n });\n return /* @__PURE__ */ jsx(PopperPrimitive.Root, { ...popperScope, children: /* @__PURE__ */ jsx(\n PopoverProvider,\n {\n scope: __scopePopover,\n contentId: useId(),\n triggerRef,\n open,\n onOpenChange: setOpen,\n onOpenToggle: React.useCallback(() => setOpen((prevOpen) => !prevOpen), [setOpen]),\n hasCustomAnchor,\n onCustomAnchorAdd: React.useCallback(() => setHasCustomAnchor(true), []),\n onCustomAnchorRemove: React.useCallback(() => setHasCustomAnchor(false), []),\n modal,\n children\n }\n ) });\n};\nPopover.displayName = POPOVER_NAME;\nvar ANCHOR_NAME = \"PopoverAnchor\";\nvar PopoverAnchor = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopePopover, ...anchorProps } = props;\n const context = usePopoverContext(ANCHOR_NAME, __scopePopover);\n const popperScope = usePopperScope(__scopePopover);\n const { onCustomAnchorAdd, onCustomAnchorRemove } = context;\n React.useEffect(() => {\n onCustomAnchorAdd();\n return () => onCustomAnchorRemove();\n }, [onCustomAnchorAdd, onCustomAnchorRemove]);\n return /* @__PURE__ */ jsx(PopperPrimitive.Anchor, { ...popperScope, ...anchorProps, ref: forwardedRef });\n }\n);\nPopoverAnchor.displayName = ANCHOR_NAME;\nvar TRIGGER_NAME = \"PopoverTrigger\";\nvar PopoverTrigger = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopePopover, ...triggerProps } = props;\n const context = usePopoverContext(TRIGGER_NAME, __scopePopover);\n const popperScope = usePopperScope(__scopePopover);\n const composedTriggerRef = useComposedRefs(forwardedRef, context.triggerRef);\n const trigger = /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n \"aria-haspopup\": \"dialog\",\n \"aria-expanded\": context.open,\n \"aria-controls\": context.contentId,\n \"data-state\": getState(context.open),\n ...triggerProps,\n ref: composedTriggerRef,\n onClick: composeEventHandlers(props.onClick, context.onOpenToggle)\n }\n );\n return context.hasCustomAnchor ? trigger : /* @__PURE__ */ jsx(PopperPrimitive.Anchor, { asChild: true, ...popperScope, children: trigger });\n }\n);\nPopoverTrigger.displayName = TRIGGER_NAME;\nvar PORTAL_NAME = \"PopoverPortal\";\nvar [PortalProvider, usePortalContext] = createPopoverContext(PORTAL_NAME, {\n forceMount: void 0\n});\nvar PopoverPortal = (props) => {\n const { __scopePopover, forceMount, children, container } = props;\n const context = usePopoverContext(PORTAL_NAME, __scopePopover);\n return /* @__PURE__ */ jsx(PortalProvider, { scope: __scopePopover, forceMount, children: /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(PortalPrimitive, { asChild: true, container, children }) }) });\n};\nPopoverPortal.displayName = PORTAL_NAME;\nvar CONTENT_NAME = \"PopoverContent\";\nvar PopoverContent = React.forwardRef(\n (props, forwardedRef) => {\n const portalContext = usePortalContext(CONTENT_NAME, props.__scopePopover);\n const { forceMount = portalContext.forceMount, ...contentProps } = props;\n const context = usePopoverContext(CONTENT_NAME, props.__scopePopover);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: context.modal ? /* @__PURE__ */ jsx(PopoverContentModal, { ...contentProps, ref: forwardedRef }) : /* @__PURE__ */ jsx(PopoverContentNonModal, { ...contentProps, ref: forwardedRef }) });\n }\n);\nPopoverContent.displayName = CONTENT_NAME;\nvar Slot = createSlot(\"PopoverContent.RemoveScroll\");\nvar PopoverContentModal = React.forwardRef(\n (props, forwardedRef) => {\n const context = usePopoverContext(CONTENT_NAME, props.__scopePopover);\n const contentRef = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, contentRef);\n const isRightClickOutsideRef = React.useRef(false);\n React.useEffect(() => {\n const content = contentRef.current;\n if (content) return hideOthers(content);\n }, []);\n return /* @__PURE__ */ jsx(RemoveScroll, { as: Slot, allowPinchZoom: true, children: /* @__PURE__ */ jsx(\n PopoverContentImpl,\n {\n ...props,\n ref: composedRefs,\n trapFocus: context.open,\n disableOutsidePointerEvents: true,\n onCloseAutoFocus: composeEventHandlers(props.onCloseAutoFocus, (event) => {\n event.preventDefault();\n if (!isRightClickOutsideRef.current) context.triggerRef.current?.focus();\n }),\n onPointerDownOutside: composeEventHandlers(\n props.onPointerDownOutside,\n (event) => {\n const originalEvent = event.detail.originalEvent;\n const ctrlLeftClick = originalEvent.button === 0 && originalEvent.ctrlKey === true;\n const isRightClick = originalEvent.button === 2 || ctrlLeftClick;\n isRightClickOutsideRef.current = isRightClick;\n },\n { checkForDefaultPrevented: false }\n ),\n onFocusOutside: composeEventHandlers(\n props.onFocusOutside,\n (event) => event.preventDefault(),\n { checkForDefaultPrevented: false }\n )\n }\n ) });\n }\n);\nvar PopoverContentNonModal = React.forwardRef(\n (props, forwardedRef) => {\n const context = usePopoverContext(CONTENT_NAME, props.__scopePopover);\n const hasInteractedOutsideRef = React.useRef(false);\n const hasPointerDownOutsideRef = React.useRef(false);\n return /* @__PURE__ */ jsx(\n PopoverContentImpl,\n {\n ...props,\n ref: forwardedRef,\n trapFocus: false,\n disableOutsidePointerEvents: false,\n onCloseAutoFocus: (event) => {\n props.onCloseAutoFocus?.(event);\n if (!event.defaultPrevented) {\n if (!hasInteractedOutsideRef.current) context.triggerRef.current?.focus();\n event.preventDefault();\n }\n hasInteractedOutsideRef.current = false;\n hasPointerDownOutsideRef.current = false;\n },\n onInteractOutside: (event) => {\n props.onInteractOutside?.(event);\n if (!event.defaultPrevented) {\n hasInteractedOutsideRef.current = true;\n if (event.detail.originalEvent.type === \"pointerdown\") {\n hasPointerDownOutsideRef.current = true;\n }\n }\n const target = event.target;\n const targetIsTrigger = context.triggerRef.current?.contains(target);\n if (targetIsTrigger) event.preventDefault();\n if (event.detail.originalEvent.type === \"focusin\" && hasPointerDownOutsideRef.current) {\n event.preventDefault();\n }\n }\n }\n );\n }\n);\nvar PopoverContentImpl = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopePopover,\n trapFocus,\n onOpenAutoFocus,\n onCloseAutoFocus,\n disableOutsidePointerEvents,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside,\n onInteractOutside,\n ...contentProps\n } = props;\n const context = usePopoverContext(CONTENT_NAME, __scopePopover);\n const popperScope = usePopperScope(__scopePopover);\n useFocusGuards();\n return /* @__PURE__ */ jsx(\n FocusScope,\n {\n asChild: true,\n loop: true,\n trapped: trapFocus,\n onMountAutoFocus: onOpenAutoFocus,\n onUnmountAutoFocus: onCloseAutoFocus,\n children: /* @__PURE__ */ jsx(\n DismissableLayer,\n {\n asChild: true,\n disableOutsidePointerEvents,\n onInteractOutside,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside,\n onDismiss: () => context.onOpenChange(false),\n children: /* @__PURE__ */ jsx(\n PopperPrimitive.Content,\n {\n \"data-state\": getState(context.open),\n role: \"dialog\",\n id: context.contentId,\n ...popperScope,\n ...contentProps,\n ref: forwardedRef,\n style: {\n ...contentProps.style,\n // re-namespace exposed content custom properties\n ...{\n \"--radix-popover-content-transform-origin\": \"var(--radix-popper-transform-origin)\",\n \"--radix-popover-content-available-width\": \"var(--radix-popper-available-width)\",\n \"--radix-popover-content-available-height\": \"var(--radix-popper-available-height)\",\n \"--radix-popover-trigger-width\": \"var(--radix-popper-anchor-width)\",\n \"--radix-popover-trigger-height\": \"var(--radix-popper-anchor-height)\"\n }\n }\n }\n )\n }\n )\n }\n );\n }\n);\nvar CLOSE_NAME = \"PopoverClose\";\nvar PopoverClose = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopePopover, ...closeProps } = props;\n const context = usePopoverContext(CLOSE_NAME, __scopePopover);\n return /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n ...closeProps,\n ref: forwardedRef,\n onClick: composeEventHandlers(props.onClick, () => context.onOpenChange(false))\n }\n );\n }\n);\nPopoverClose.displayName = CLOSE_NAME;\nvar ARROW_NAME = \"PopoverArrow\";\nvar PopoverArrow = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopePopover, ...arrowProps } = props;\n const popperScope = usePopperScope(__scopePopover);\n return /* @__PURE__ */ jsx(PopperPrimitive.Arrow, { ...popperScope, ...arrowProps, ref: forwardedRef });\n }\n);\nPopoverArrow.displayName = ARROW_NAME;\nfunction getState(open) {\n return open ? \"open\" : \"closed\";\n}\nvar Root2 = Popover;\nvar Anchor2 = PopoverAnchor;\nvar Trigger = PopoverTrigger;\nvar Portal = PopoverPortal;\nvar Content2 = PopoverContent;\nvar Close = PopoverClose;\nvar Arrow2 = PopoverArrow;\nexport {\n Anchor2 as Anchor,\n Arrow2 as Arrow,\n Close,\n Content2 as Content,\n Popover,\n PopoverAnchor,\n PopoverArrow,\n PopoverClose,\n PopoverContent,\n PopoverPortal,\n PopoverTrigger,\n Portal,\n Root2 as Root,\n Trigger,\n createPopoverScope\n};\n//# sourceMappingURL=index.mjs.map\n","'use client';\n\nimport * as React from 'react';\nimport { Popover as PopoverPrimitive } from 'radix-ui';\n\nimport { cn } from '@/lib/utils';\n\nconst Popover = PopoverPrimitive.Root;\n\nconst PopoverTrigger = PopoverPrimitive.Trigger;\n\nconst PopoverAnchor = PopoverPrimitive.Anchor;\n\nconst PopoverContent = React.forwardRef<\n React.ComponentRef<typeof PopoverPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Content>\n>(({ className, align = 'center', sideOffset = 4, ...props }, ref) => (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n ref={ref}\n align={align}\n sideOffset={sideOffset}\n className={cn(\n 'bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-72 rounded-md border p-4 shadow-md outline-none',\n className\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n));\nPopoverContent.displayName = PopoverPrimitive.Content.displayName;\n\nexport { Popover, PopoverTrigger, PopoverContent, PopoverAnchor };\n","'use client';\n\nimport { useState, useCallback, useEffect, useRef } from 'react';\nimport type { LucideIcon } from 'lucide-react';\nimport {\n PlusIcon,\n FileIcon,\n FileTextIcon,\n ImageIcon,\n CodeIcon,\n Trash2Icon,\n ChevronsUpDown,\n CheckIcon,\n} from 'lucide-react';\nimport { cn } from '@/lib/utils';\nimport { useSoundAction } from '@/hooks/use-sound-action';\nimport { BaseDrawer } from '@/components/common/base-drawer';\nimport { DrawerTitle, DrawerDescription } from '@/components/ui/drawer';\nimport { Button } from '@/components/ui/button';\nimport { Input } from '@/components/ui/input';\nimport { Textarea } from '@/components/ui/textarea';\nimport { Label } from '@/components/ui/label';\nimport { CheckboxGroup } from '@/components/ui/checkbox-group';\nimport { CheckboxGroupItem } from '@/components/ui/checkbox-group-item';\nimport { Badge } from '@/components/ui/badge';\nimport { Popover, PopoverContent, PopoverTrigger } from '@/components/ui/popover';\nimport type { FileAttachment } from '@shepai/core/infrastructure/services/file-dialog.service';\nimport type { WorkflowDefaults } from '@/app/actions/get-workflow-defaults';\nimport { pickFiles } from './pick-files';\n\nexport type { FileAttachment } from '@shepai/core/infrastructure/services/file-dialog.service';\n\n/** Minimal feature descriptor for the parent selector. */\nexport interface ParentFeatureOption {\n id: string;\n name: string;\n}\n\nexport interface FeatureCreatePayload {\n name: string;\n description?: string;\n attachments: FileAttachment[];\n repositoryPath: string;\n approvalGates: {\n allowPrd: boolean;\n allowPlan: boolean;\n allowMerge: boolean;\n };\n push: boolean;\n openPr: boolean;\n parentId?: string;\n}\n\nconst AUTO_APPROVE_OPTIONS = [\n { id: 'allowPrd', label: 'PRD', description: 'Auto-approve requirements move to planning.' },\n { id: 'allowPlan', label: 'Plan', description: 'Auto-approve planning move to implementation.' },\n { id: 'allowMerge', label: 'Merge', description: 'Auto-approve merge move to Done.' },\n];\n\nconst EMPTY_GATES: Record<string, boolean> = {\n allowPrd: false,\n allowPlan: false,\n allowMerge: false,\n};\n\nexport interface FeatureCreateDrawerProps {\n open: boolean;\n onClose: () => void;\n onSubmit: (data: FeatureCreatePayload) => void;\n repositoryPath: string;\n isSubmitting?: boolean;\n workflowDefaults?: WorkflowDefaults;\n /** List of existing features available for selection as a parent. */\n features?: ParentFeatureOption[];\n /** Pre-select a parent feature when the drawer opens (e.g. from (+) button on a feature node). */\n initialParentId?: string;\n}\n\nexport function FeatureCreateDrawer({\n open,\n onClose,\n onSubmit,\n repositoryPath,\n isSubmitting = false,\n workflowDefaults,\n features,\n initialParentId,\n}: FeatureCreateDrawerProps) {\n const createSound = useSoundAction('create');\n const defaultGates = workflowDefaults?.approvalGates ?? EMPTY_GATES;\n const defaultPush = workflowDefaults?.push ?? false;\n const defaultOpenPr = workflowDefaults?.openPr ?? false;\n\n const [name, setName] = useState('');\n const [description, setDescription] = useState('');\n const [attachments, setAttachments] = useState<FileAttachment[]>([]);\n const [approvalGates, setApprovalGates] = useState<Record<string, boolean>>({ ...defaultGates });\n const [push, setPush] = useState(defaultPush);\n const [openPr, setOpenPr] = useState(defaultOpenPr);\n const [parentId, setParentId] = useState<string | undefined>(undefined);\n\n // Sync state when workflowDefaults load asynchronously\n useEffect(() => {\n if (workflowDefaults) {\n setApprovalGates({ ...workflowDefaults.approvalGates });\n setPush(workflowDefaults.push);\n setOpenPr(workflowDefaults.openPr);\n }\n }, [workflowDefaults]);\n\n // Pre-select parent when initialParentId changes (e.g. (+) button on feature node)\n useEffect(() => {\n if (open && initialParentId) {\n setParentId(initialParentId);\n }\n }, [open, initialParentId]);\n\n const resetForm = useCallback(() => {\n setName('');\n setDescription('');\n setAttachments([]);\n setApprovalGates({ ...defaultGates });\n setPush(defaultPush);\n setOpenPr(defaultOpenPr);\n setParentId(undefined);\n }, [defaultGates, defaultPush, defaultOpenPr]);\n\n const handleClose = useCallback(() => {\n resetForm();\n onClose();\n }, [onClose, resetForm]);\n\n const handleSubmit = useCallback(\n (e: React.FormEvent) => {\n e.preventDefault();\n if (!name.trim()) return;\n createSound.play();\n const trimmedDescription = description.trim() || undefined;\n onSubmit({\n name: name.trim(),\n description: trimmedDescription,\n attachments,\n repositoryPath,\n approvalGates: {\n allowPrd: approvalGates.allowPrd ?? false,\n allowPlan: approvalGates.allowPlan ?? false,\n allowMerge: approvalGates.allowMerge ?? false,\n },\n push: push || openPr,\n openPr,\n ...(parentId ? { parentId } : {}),\n });\n resetForm();\n },\n [\n name,\n description,\n attachments,\n approvalGates,\n repositoryPath,\n onSubmit,\n push,\n openPr,\n parentId,\n createSound,\n resetForm,\n ]\n );\n\n const handleAddFiles = useCallback(async () => {\n try {\n const files = await pickFiles();\n if (files) {\n setAttachments((prev) => [...prev, ...files]);\n }\n } catch {\n // Native dialog failed — silently ignore (user can retry)\n }\n }, []);\n\n const handleRemoveFile = useCallback((path: string) => {\n setAttachments((prev) => prev.filter((f) => f.path !== path));\n }, []);\n\n const hasFeatures = features && features.length > 0;\n\n return (\n <BaseDrawer\n open={open}\n onClose={handleClose}\n size=\"md\"\n modal={false}\n data-testid=\"feature-create-drawer\"\n header={\n <>\n <div className=\"flex items-center gap-2\">\n <div className=\"h-2.5 w-2.5 shrink-0 rounded-full bg-blue-500\" />\n <DrawerTitle>NEW FEATURE</DrawerTitle>\n </div>\n <DrawerDescription asChild>\n <div>\n <Badge variant=\"secondary\">Creating...</Badge>\n </div>\n </DrawerDescription>\n </>\n }\n footer={\n <div className=\"flex flex-row justify-end gap-2\">\n <Button variant=\"outline\" onClick={handleClose} disabled={isSubmitting}>\n Cancel\n </Button>\n <Button type=\"submit\" form=\"create-feature-form\" disabled={!name.trim() || isSubmitting}>\n {isSubmitting ? 'Creating...' : '+ Create Feature'}\n </Button>\n </div>\n }\n >\n {/* Form body */}\n <div className=\"overflow-y-auto p-4\">\n <form id=\"create-feature-form\" onSubmit={handleSubmit} className=\"flex flex-col gap-4\">\n {/* Feature name */}\n <div className=\"flex flex-col gap-1.5\">\n <Label\n htmlFor=\"feature-name\"\n className=\"text-muted-foreground text-xs font-semibold tracking-wider\"\n >\n FEATURE NAME\n </Label>\n <Input\n id=\"feature-name\"\n placeholder=\"e.g. GitHub OAuth Login\"\n value={name}\n onChange={(e) => setName(e.target.value)}\n required\n disabled={isSubmitting}\n />\n </div>\n\n {/* Description */}\n <div className=\"flex flex-col gap-1.5\">\n <Label\n htmlFor=\"feature-description\"\n className=\"text-muted-foreground text-xs font-semibold tracking-wider\"\n >\n DESCRIPTION\n </Label>\n <Textarea\n id=\"feature-description\"\n placeholder=\"Describe what this feature does...\"\n value={description}\n onChange={(e) => setDescription(e.target.value)}\n rows={4}\n disabled={isSubmitting}\n />\n </div>\n\n {/* Parent feature selector (only when features are available) */}\n {hasFeatures ? (\n <div className=\"flex flex-col gap-1.5\">\n <Label\n htmlFor=\"parent-feature\"\n className=\"text-muted-foreground text-xs font-semibold tracking-wider\"\n >\n PARENT FEATURE\n </Label>\n <ParentFeatureCombobox\n features={features}\n value={parentId}\n onChange={setParentId}\n disabled={isSubmitting}\n />\n </div>\n ) : null}\n\n {/* Auto-approve checkboxes */}\n <div className=\"flex flex-col gap-1.5\">\n <Label className=\"text-muted-foreground text-xs font-semibold tracking-wider\">\n APPROVE\n </Label>\n <CheckboxGroup\n label=\"Autonomous Mode\"\n description=\"YOLO!\"\n parentAriaLabel=\"Auto approve all\"\n options={AUTO_APPROVE_OPTIONS}\n value={approvalGates}\n onValueChange={setApprovalGates}\n disabled={isSubmitting}\n />\n </div>\n\n {/* Git options */}\n <div className=\"flex flex-col gap-1.5\">\n <Label className=\"text-muted-foreground text-xs font-semibold tracking-wider\">\n GIT\n </Label>\n <div className=\"flex flex-col gap-2\">\n <CheckboxGroupItem\n id=\"push\"\n label=\"Push\"\n description=\"Push branch to remote after implementation.\"\n checked={push || openPr}\n onCheckedChange={setPush}\n disabled={openPr || isSubmitting}\n />\n <CheckboxGroupItem\n id=\"open-pr\"\n label=\"Create PR\"\n description=\"Open a pull request after pushing.\"\n checked={openPr}\n onCheckedChange={setOpenPr}\n disabled={isSubmitting}\n />\n </div>\n </div>\n\n {/* Attachments */}\n <div className=\"flex flex-col gap-2\">\n <div className=\"flex items-center justify-between\">\n <Label className=\"text-muted-foreground text-xs font-semibold tracking-wider\">\n ATTACHMENTS\n {attachments.length > 0 && (\n <span className=\"text-muted-foreground/60 ml-1.5\">({attachments.length})</span>\n )}\n </Label>\n <Button\n type=\"button\"\n variant=\"outline\"\n size=\"xs\"\n onClick={handleAddFiles}\n disabled={isSubmitting}\n >\n <PlusIcon className=\"size-3\" />\n Add Files\n </Button>\n </div>\n\n {attachments.length > 0 && (\n <div className=\"flex flex-col gap-2\">\n {attachments.map((file) => (\n <AttachmentCard\n key={file.path}\n file={file}\n onRemove={() => handleRemoveFile(file.path)}\n disabled={isSubmitting}\n />\n ))}\n </div>\n )}\n </div>\n </form>\n </div>\n </BaseDrawer>\n );\n}\n\n/* ---------------------------------------------------------------------------\n * ParentFeatureCombobox — searchable dropdown for parent feature selection\n * ------------------------------------------------------------------------- */\n\ninterface ParentFeatureComboboxProps {\n features: ParentFeatureOption[];\n value: string | undefined;\n onChange: (id: string | undefined) => void;\n disabled?: boolean;\n}\n\nfunction ParentFeatureCombobox({\n features,\n value,\n onChange,\n disabled,\n}: ParentFeatureComboboxProps) {\n const [open, setOpen] = useState(false);\n const [query, setQuery] = useState('');\n const inputRef = useRef<HTMLInputElement>(null);\n\n const selectedFeature = features.find((f) => f.id === value);\n\n const filtered = query.trim()\n ? features.filter(\n (f) =>\n f.name.toLowerCase().includes(query.toLowerCase()) ||\n f.id.toLowerCase().includes(query.toLowerCase())\n )\n : features;\n\n const handleSelect = useCallback(\n (id: string | undefined) => {\n onChange(id);\n setOpen(false);\n setQuery('');\n },\n [onChange]\n );\n\n useEffect(() => {\n if (open) {\n setTimeout(() => inputRef.current?.focus(), 0);\n } else {\n setQuery('');\n }\n }, [open]);\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <button\n id=\"parent-feature\"\n type=\"button\"\n role=\"combobox\"\n aria-expanded={open}\n aria-label=\"Parent Feature\"\n disabled={disabled}\n data-testid=\"parent-feature-combobox\"\n className={cn(\n 'border-input bg-background ring-offset-background focus:ring-ring flex h-9 w-full items-center justify-between rounded-md border px-3 py-2 text-sm focus:ring-2 focus:ring-offset-2 focus:outline-none disabled:cursor-not-allowed disabled:opacity-50',\n !selectedFeature && 'text-muted-foreground'\n )}\n >\n <span className=\"truncate\">\n {selectedFeature\n ? `${selectedFeature.name} (${selectedFeature.id.slice(0, 8)})`\n : 'Select parent feature...'}\n </span>\n <ChevronsUpDown className=\"ml-2 h-4 w-4 shrink-0 opacity-50\" />\n </button>\n </PopoverTrigger>\n <PopoverContent\n className=\"w-80 p-0\"\n align=\"start\"\n data-testid=\"parent-feature-combobox-content\"\n >\n <div className=\"flex flex-col\">\n {/* Search input */}\n <div className=\"border-b p-2\">\n <Input\n ref={inputRef}\n placeholder=\"Search features...\"\n value={query}\n onChange={(e) => setQuery(e.target.value)}\n className=\"h-8 border-0 p-0 text-sm shadow-none focus-visible:ring-0\"\n data-testid=\"parent-feature-search\"\n />\n </div>\n\n {/* Options list */}\n <div className=\"max-h-48 overflow-y-auto py-1\" role=\"listbox\" aria-label=\"Features\">\n {/* No parent option */}\n <button\n type=\"button\"\n role=\"option\"\n aria-selected={value === undefined}\n onClick={() => handleSelect(undefined)}\n className={cn(\n 'hover:bg-accent hover:text-accent-foreground flex w-full items-center gap-2 px-3 py-2 text-sm',\n value === undefined && 'bg-accent/50'\n )}\n data-testid=\"parent-feature-option-none\"\n >\n <CheckIcon className={cn('h-4 w-4 shrink-0', value !== undefined && 'invisible')} />\n <span className=\"text-muted-foreground italic\">No parent</span>\n </button>\n\n {filtered.length === 0 && query ? (\n <p className=\"text-muted-foreground px-3 py-2 text-sm\">No features found.</p>\n ) : (\n filtered.map((f) => (\n <button\n key={f.id}\n type=\"button\"\n role=\"option\"\n aria-selected={value === f.id}\n onClick={() => handleSelect(f.id)}\n className={cn(\n 'hover:bg-accent hover:text-accent-foreground flex w-full items-center gap-2 px-3 py-2 text-sm',\n value === f.id && 'bg-accent/50'\n )}\n data-testid={`parent-feature-option-${f.id}`}\n >\n <CheckIcon className={cn('h-4 w-4 shrink-0', value !== f.id && 'invisible')} />\n <span className=\"truncate\">\n {f.name}{' '}\n <span className=\"text-muted-foreground font-mono text-xs\">\n ({f.id.slice(0, 8)})\n </span>\n </span>\n </button>\n ))\n )}\n </div>\n </div>\n </PopoverContent>\n </Popover>\n );\n}\n\n/* ---------------------------------------------------------------------------\n * Private sub-components & utilities\n * ------------------------------------------------------------------------- */\n\nfunction AttachmentCard({\n file,\n onRemove,\n disabled,\n}: {\n file: FileAttachment;\n onRemove: () => void;\n disabled?: boolean;\n}) {\n const ext = getExtension(file.name);\n const Icon = getFileIcon(ext);\n const iconColorClass = getFileIconColor(ext);\n\n return (\n <div className=\"flex items-center gap-3 rounded-md border p-2\">\n <div\n className={cn('flex h-8 w-8 shrink-0 items-center justify-center rounded', iconColorClass)}\n >\n <Icon className=\"h-4 w-4\" />\n </div>\n <div className=\"flex min-w-0 flex-1 flex-col\">\n <span className=\"truncate text-sm font-medium\">{file.name}</span>\n <span className=\"text-muted-foreground truncate text-xs\">{file.path}</span>\n <span className=\"text-muted-foreground text-xs\">{formatFileSize(file.size)}</span>\n </div>\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"icon-xs\"\n onClick={onRemove}\n disabled={disabled}\n aria-label={`Remove ${file.name}`}\n >\n <Trash2Icon className=\"h-3 w-3\" />\n </Button>\n </div>\n );\n}\n\nfunction getExtension(filename: string): string {\n const dot = filename.lastIndexOf('.');\n return dot >= 0 ? filename.slice(dot).toLowerCase() : '';\n}\n\nconst IMAGE_EXTS = new Set(['.png', '.jpg', '.jpeg', '.gif', '.svg', '.webp', '.ico', '.bmp']);\nconst CODE_EXTS = new Set([\n '.ts',\n '.tsx',\n '.js',\n '.jsx',\n '.json',\n '.yaml',\n '.yml',\n '.xml',\n '.html',\n '.css',\n '.md',\n]);\n\nfunction getFileIcon(ext: string): LucideIcon {\n if (IMAGE_EXTS.has(ext)) return ImageIcon;\n if (ext === '.pdf') return FileTextIcon;\n if (CODE_EXTS.has(ext)) return CodeIcon;\n return FileIcon;\n}\n\nfunction getFileIconColor(ext: string): string {\n if (ext === '.pdf') return 'bg-red-50 text-red-600';\n if (IMAGE_EXTS.has(ext)) return 'bg-blue-50 text-blue-600';\n if (CODE_EXTS.has(ext)) return 'bg-emerald-50 text-emerald-600';\n return 'bg-gray-50 text-gray-600';\n}\n\nfunction formatFileSize(bytes: number): string {\n if (bytes === 0) return '0 B';\n const units = ['B', 'KB', 'MB', 'GB'];\n const i = Math.floor(Math.log(bytes) / Math.log(1024));\n return `${(bytes / Math.pow(1024, i)).toFixed(i === 0 ? 0 : 1)} ${units[i]}`;\n}\n","// packages/react/use-previous/src/use-previous.tsx\nimport * as React from \"react\";\nfunction usePrevious(value) {\n const ref = React.useRef({ value, previous: value });\n return React.useMemo(() => {\n if (ref.current.value !== value) {\n ref.current.previous = ref.current.value;\n ref.current.value = value;\n }\n return ref.current.previous;\n }, [value]);\n}\nexport {\n usePrevious\n};\n//# sourceMappingURL=index.mjs.map\n","import * as React from 'react';\n\nimport { cn } from '@/lib/utils';\n\nfunction Textarea({ className, ...props }: React.ComponentProps<'textarea'>) {\n return (\n <textarea\n data-slot=\"textarea\"\n className={cn(\n 'placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input field-sizing-content min-h-[80px] w-full rounded-md border bg-transparent px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm',\n 'focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]',\n 'aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive',\n className\n )}\n {...props}\n />\n );\n}\n\nexport { Textarea };\n","import type { FileAttachment } from '@shepai/core/infrastructure/services/file-dialog.service';\n\n/**\n * Opens a native OS file picker dialog via API route.\n * Returns the selected files with metadata, or null if the user cancelled.\n */\nexport async function pickFiles(): Promise<FileAttachment[] | null> {\n const res = await fetch('/api/dialog/pick-files', { method: 'POST' });\n\n if (!res.ok) {\n throw new Error('Failed to open file dialog');\n }\n\n const data: { files: FileAttachment[] | null; cancelled: boolean } = await res.json();\n return data.cancelled ? null : data.files;\n}\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'm16 18 6-6-6-6', key: 'eg8j8' }],\n ['path', { d: 'm8 6-6 6 6 6', key: 'ppft3o' }],\n];\n\n/**\n * @component @name Code\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/code\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Code = createLucideIcon('code', __iconNode);\n\nexport default Code;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [['path', { d: 'M5 12h14', key: '1ays0h' }]];\n\n/**\n * @component @name Minus\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/minus\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Minus = createLucideIcon('minus', __iconNode);\n\nexport default Minus;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'm7 15 5 5 5-5', key: '1hf1tw' }],\n ['path', { d: 'm7 9 5-5 5 5', key: 'sgt6xg' }],\n];\n\n/**\n * @component @name ChevronsUpDown\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/chevrons-up-down\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ChevronsUpDown = createLucideIcon('chevrons-up-down', __iconNode);\n\nexport default ChevronsUpDown;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['rect', { width: '18', height: '18', x: '3', y: '3', rx: '2', ry: '2', key: '1m3agn' }],\n ['circle', { cx: '9', cy: '9', r: '2', key: 'af1f0g' }],\n ['path', { d: 'm21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21', key: '1xmnt7' }],\n];\n\n/**\n * @component @name Image\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/image\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Image = createLucideIcon('image', __iconNode);\n\nexport default Image;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z',\n key: '1oefj6',\n },\n ],\n ['path', { d: 'M14 2v5a1 1 0 0 0 1 1h5', key: 'wfsgrz' }],\n];\n\n/**\n * @component @name File\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/file\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst File = createLucideIcon('file', __iconNode);\n\nexport default File;\n"],"names":[],"mappings":"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","ignoreList":[1,3,8,11,14,15,16,17,18]}
|
|
1
|
+
{"version":3,"sources":["../../../../../../../src/presentation/web/components/common/control-center-drawer/create-drawer-client.tsx","../../../../../../../node_modules/.pnpm/%40radix-ui%2Breact-label%402.1.7_%40types%2Breact-dom%4019.2.3_%40types%2Breact%4019.2.10__%40types%2Breact%40_511ac9deb435ae46b2843bd1975598a6/node_modules/%40radix-ui/react-label/dist/index.mjs","../../../../../../../src/presentation/web/components/ui/label.tsx","../../../../../../../node_modules/.pnpm/%40radix-ui%2Breact-checkbox%401.3.3_%40types%2Breact-dom%4019.2.3_%40types%2Breact%4019.2.10__%40types%2Brea_5132bbb1edf049509ad81076406f08e7/node_modules/%40radix-ui/react-checkbox/dist/index.mjs","../../../../../../../src/presentation/web/app/actions/data%3A26d001%20%3Ctext/javascript%3E","../../../../../../../src/presentation/web/components/ui/checkbox.tsx","../../../../../../../src/presentation/web/components/ui/checkbox-group-item.tsx","../../../../../../../src/presentation/web/components/ui/checkbox-group.tsx","../../../../../../../node_modules/.pnpm/%40radix-ui%2Breact-popover%401.1.15_%40types%2Breact-dom%4019.2.3_%40types%2Breact%4019.2.10__%40types%2Brea_6845413866e39bfed03c608b19c71ed1/node_modules/%40radix-ui/react-popover/dist/index.mjs","../../../../../../../src/presentation/web/components/ui/popover.tsx","../../../../../../../src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.tsx","../../../../../../../node_modules/.pnpm/%40radix-ui%2Breact-use-previous%401.1.1_%40types%2Breact%4019.2.10_react%4019.2.4/node_modules/%40radix-ui/react-use-previous/dist/index.mjs","../../../../../../../src/presentation/web/components/ui/textarea.tsx","../../../../../../../src/presentation/web/components/common/feature-create-drawer/pick-files.ts","../../../../../../../node_modules/.pnpm/lucide-react%400.563.0_react%4019.2.4/node_modules/lucide-react/src/icons/code.ts","../../../../../../../node_modules/.pnpm/lucide-react%400.563.0_react%4019.2.4/node_modules/lucide-react/src/icons/minus.ts","../../../../../../../node_modules/.pnpm/lucide-react%400.563.0_react%4019.2.4/node_modules/lucide-react/src/icons/chevrons-up-down.ts","../../../../../../../node_modules/.pnpm/lucide-react%400.563.0_react%4019.2.4/node_modules/lucide-react/src/icons/image.ts","../../../../../../../node_modules/.pnpm/lucide-react%400.563.0_react%4019.2.4/node_modules/lucide-react/src/icons/file.ts"],"sourcesContent":["'use client';\n\nimport { useState, useCallback } from 'react';\nimport { useRouter } from 'next/navigation';\nimport { toast } from 'sonner';\nimport { createFeature } from '@/app/actions/create-feature';\nimport { FeatureCreateDrawer } from '@/components/common/feature-create-drawer';\nimport type { FeatureCreatePayload } from '@/components/common/feature-create-drawer';\nimport type { ParentFeatureOption } from '@/components/common/feature-create-drawer/feature-create-drawer';\nimport type { WorkflowDefaults } from '@/app/actions/get-workflow-defaults';\nimport { useSoundAction } from '@/hooks/use-sound-action';\n\nexport interface CreateDrawerClientProps {\n repositoryPath: string;\n initialParentId?: string;\n features: ParentFeatureOption[];\n workflowDefaults?: WorkflowDefaults;\n}\n\nexport function CreateDrawerClient({\n repositoryPath,\n initialParentId,\n features,\n workflowDefaults,\n}: CreateDrawerClientProps) {\n const router = useRouter();\n const createSound = useSoundAction('create');\n const [isSubmitting, setIsSubmitting] = useState(false);\n\n const onClose = useCallback(() => {\n router.push('/');\n }, [router]);\n\n const onSubmit = useCallback(\n (data: FeatureCreatePayload) => {\n setIsSubmitting(true);\n\n // Dispatch event for optimistic canvas update before navigating\n window.dispatchEvent(\n new CustomEvent('shep:feature-created', {\n detail: {\n name: data.name,\n description: data.description,\n repositoryPath: data.repositoryPath,\n },\n })\n );\n\n // Close the drawer immediately for responsive UI\n router.push('/');\n\n // Fire server action in the background\n createFeature(data)\n .then((result) => {\n if (result.error) {\n toast.error(result.error);\n // Dispatch rollback event\n window.dispatchEvent(new CustomEvent('shep:feature-create-failed'));\n return;\n }\n createSound.play();\n router.refresh();\n })\n .catch(() => {\n toast.error('Failed to create feature');\n window.dispatchEvent(new CustomEvent('shep:feature-create-failed'));\n })\n .finally(() => {\n setIsSubmitting(false);\n });\n },\n [router, createSound]\n );\n\n return (\n <FeatureCreateDrawer\n open\n onClose={onClose}\n onSubmit={onSubmit}\n repositoryPath={repositoryPath}\n features={features}\n workflowDefaults={workflowDefaults}\n initialParentId={initialParentId}\n isSubmitting={isSubmitting}\n />\n );\n}\n","\"use client\";\n\n// src/label.tsx\nimport * as React from \"react\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NAME = \"Label\";\nvar Label = React.forwardRef((props, forwardedRef) => {\n return /* @__PURE__ */ jsx(\n Primitive.label,\n {\n ...props,\n ref: forwardedRef,\n onMouseDown: (event) => {\n const target = event.target;\n if (target.closest(\"button, input, select, textarea\")) return;\n props.onMouseDown?.(event);\n if (!event.defaultPrevented && event.detail > 1) event.preventDefault();\n }\n }\n );\n});\nLabel.displayName = NAME;\nvar Root = Label;\nexport {\n Label,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","'use client';\n\nimport * as React from 'react';\nimport { Label as LabelPrimitive } from 'radix-ui';\nimport { cva, type VariantProps } from 'class-variance-authority';\n\nimport { cn } from '@/lib/utils';\n\nconst labelVariants = cva(\n 'text-sm leading-none font-medium peer-disabled:cursor-not-allowed peer-disabled:opacity-70'\n);\n\nconst Label = React.forwardRef<\n React.ComponentRef<typeof LabelPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root> & VariantProps<typeof labelVariants>\n>(({ className, ...props }, ref) => (\n <LabelPrimitive.Root ref={ref} className={cn(labelVariants(), className)} {...props} />\n));\nLabel.displayName = LabelPrimitive.Root.displayName;\n\nexport { Label };\n","\"use client\";\n\n// src/checkbox.tsx\nimport * as React from \"react\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { usePrevious } from \"@radix-ui/react-use-previous\";\nimport { useSize } from \"@radix-ui/react-use-size\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { Fragment, jsx, jsxs } from \"react/jsx-runtime\";\nvar CHECKBOX_NAME = \"Checkbox\";\nvar [createCheckboxContext, createCheckboxScope] = createContextScope(CHECKBOX_NAME);\nvar [CheckboxProviderImpl, useCheckboxContext] = createCheckboxContext(CHECKBOX_NAME);\nfunction CheckboxProvider(props) {\n const {\n __scopeCheckbox,\n checked: checkedProp,\n children,\n defaultChecked,\n disabled,\n form,\n name,\n onCheckedChange,\n required,\n value = \"on\",\n // @ts-expect-error\n internal_do_not_use_render\n } = props;\n const [checked, setChecked] = useControllableState({\n prop: checkedProp,\n defaultProp: defaultChecked ?? false,\n onChange: onCheckedChange,\n caller: CHECKBOX_NAME\n });\n const [control, setControl] = React.useState(null);\n const [bubbleInput, setBubbleInput] = React.useState(null);\n const hasConsumerStoppedPropagationRef = React.useRef(false);\n const isFormControl = control ? !!form || !!control.closest(\"form\") : (\n // We set this to true by default so that events bubble to forms without JS (SSR)\n true\n );\n const context = {\n checked,\n disabled,\n setChecked,\n control,\n setControl,\n name,\n form,\n value,\n hasConsumerStoppedPropagationRef,\n required,\n defaultChecked: isIndeterminate(defaultChecked) ? false : defaultChecked,\n isFormControl,\n bubbleInput,\n setBubbleInput\n };\n return /* @__PURE__ */ jsx(\n CheckboxProviderImpl,\n {\n scope: __scopeCheckbox,\n ...context,\n children: isFunction(internal_do_not_use_render) ? internal_do_not_use_render(context) : children\n }\n );\n}\nvar TRIGGER_NAME = \"CheckboxTrigger\";\nvar CheckboxTrigger = React.forwardRef(\n ({ __scopeCheckbox, onKeyDown, onClick, ...checkboxProps }, forwardedRef) => {\n const {\n control,\n value,\n disabled,\n checked,\n required,\n setControl,\n setChecked,\n hasConsumerStoppedPropagationRef,\n isFormControl,\n bubbleInput\n } = useCheckboxContext(TRIGGER_NAME, __scopeCheckbox);\n const composedRefs = useComposedRefs(forwardedRef, setControl);\n const initialCheckedStateRef = React.useRef(checked);\n React.useEffect(() => {\n const form = control?.form;\n if (form) {\n const reset = () => setChecked(initialCheckedStateRef.current);\n form.addEventListener(\"reset\", reset);\n return () => form.removeEventListener(\"reset\", reset);\n }\n }, [control, setChecked]);\n return /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n role: \"checkbox\",\n \"aria-checked\": isIndeterminate(checked) ? \"mixed\" : checked,\n \"aria-required\": required,\n \"data-state\": getState(checked),\n \"data-disabled\": disabled ? \"\" : void 0,\n disabled,\n value,\n ...checkboxProps,\n ref: composedRefs,\n onKeyDown: composeEventHandlers(onKeyDown, (event) => {\n if (event.key === \"Enter\") event.preventDefault();\n }),\n onClick: composeEventHandlers(onClick, (event) => {\n setChecked((prevChecked) => isIndeterminate(prevChecked) ? true : !prevChecked);\n if (bubbleInput && isFormControl) {\n hasConsumerStoppedPropagationRef.current = event.isPropagationStopped();\n if (!hasConsumerStoppedPropagationRef.current) event.stopPropagation();\n }\n })\n }\n );\n }\n);\nCheckboxTrigger.displayName = TRIGGER_NAME;\nvar Checkbox = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeCheckbox,\n name,\n checked,\n defaultChecked,\n required,\n disabled,\n value,\n onCheckedChange,\n form,\n ...checkboxProps\n } = props;\n return /* @__PURE__ */ jsx(\n CheckboxProvider,\n {\n __scopeCheckbox,\n checked,\n defaultChecked,\n disabled,\n required,\n onCheckedChange,\n name,\n form,\n value,\n internal_do_not_use_render: ({ isFormControl }) => /* @__PURE__ */ jsxs(Fragment, { children: [\n /* @__PURE__ */ jsx(\n CheckboxTrigger,\n {\n ...checkboxProps,\n ref: forwardedRef,\n __scopeCheckbox\n }\n ),\n isFormControl && /* @__PURE__ */ jsx(\n CheckboxBubbleInput,\n {\n __scopeCheckbox\n }\n )\n ] })\n }\n );\n }\n);\nCheckbox.displayName = CHECKBOX_NAME;\nvar INDICATOR_NAME = \"CheckboxIndicator\";\nvar CheckboxIndicator = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeCheckbox, forceMount, ...indicatorProps } = props;\n const context = useCheckboxContext(INDICATOR_NAME, __scopeCheckbox);\n return /* @__PURE__ */ jsx(\n Presence,\n {\n present: forceMount || isIndeterminate(context.checked) || context.checked === true,\n children: /* @__PURE__ */ jsx(\n Primitive.span,\n {\n \"data-state\": getState(context.checked),\n \"data-disabled\": context.disabled ? \"\" : void 0,\n ...indicatorProps,\n ref: forwardedRef,\n style: { pointerEvents: \"none\", ...props.style }\n }\n )\n }\n );\n }\n);\nCheckboxIndicator.displayName = INDICATOR_NAME;\nvar BUBBLE_INPUT_NAME = \"CheckboxBubbleInput\";\nvar CheckboxBubbleInput = React.forwardRef(\n ({ __scopeCheckbox, ...props }, forwardedRef) => {\n const {\n control,\n hasConsumerStoppedPropagationRef,\n checked,\n defaultChecked,\n required,\n disabled,\n name,\n value,\n form,\n bubbleInput,\n setBubbleInput\n } = useCheckboxContext(BUBBLE_INPUT_NAME, __scopeCheckbox);\n const composedRefs = useComposedRefs(forwardedRef, setBubbleInput);\n const prevChecked = usePrevious(checked);\n const controlSize = useSize(control);\n React.useEffect(() => {\n const input = bubbleInput;\n if (!input) return;\n const inputProto = window.HTMLInputElement.prototype;\n const descriptor = Object.getOwnPropertyDescriptor(\n inputProto,\n \"checked\"\n );\n const setChecked = descriptor.set;\n const bubbles = !hasConsumerStoppedPropagationRef.current;\n if (prevChecked !== checked && setChecked) {\n const event = new Event(\"click\", { bubbles });\n input.indeterminate = isIndeterminate(checked);\n setChecked.call(input, isIndeterminate(checked) ? false : checked);\n input.dispatchEvent(event);\n }\n }, [bubbleInput, prevChecked, checked, hasConsumerStoppedPropagationRef]);\n const defaultCheckedRef = React.useRef(isIndeterminate(checked) ? false : checked);\n return /* @__PURE__ */ jsx(\n Primitive.input,\n {\n type: \"checkbox\",\n \"aria-hidden\": true,\n defaultChecked: defaultChecked ?? defaultCheckedRef.current,\n required,\n disabled,\n name,\n value,\n form,\n ...props,\n tabIndex: -1,\n ref: composedRefs,\n style: {\n ...props.style,\n ...controlSize,\n position: \"absolute\",\n pointerEvents: \"none\",\n opacity: 0,\n margin: 0,\n // We transform because the input is absolutely positioned but we have\n // rendered it **after** the button. This pulls it back to sit on top\n // of the button.\n transform: \"translateX(-100%)\"\n }\n }\n );\n }\n);\nCheckboxBubbleInput.displayName = BUBBLE_INPUT_NAME;\nfunction isFunction(value) {\n return typeof value === \"function\";\n}\nfunction isIndeterminate(checked) {\n return checked === \"indeterminate\";\n}\nfunction getState(checked) {\n return isIndeterminate(checked) ? \"indeterminate\" : checked ? \"checked\" : \"unchecked\";\n}\nexport {\n Checkbox,\n CheckboxIndicator,\n CheckboxIndicator as Indicator,\n Checkbox as Root,\n createCheckboxScope,\n CheckboxBubbleInput as unstable_BubbleInput,\n CheckboxBubbleInput as unstable_CheckboxBubbleInput,\n CheckboxProvider as unstable_CheckboxProvider,\n CheckboxTrigger as unstable_CheckboxTrigger,\n CheckboxProvider as unstable_Provider,\n CheckboxTrigger as unstable_Trigger\n};\n//# sourceMappingURL=index.mjs.map\n","/* __next_internal_action_entry_do_not_use__ [{\"4060ea2aabfb6edfdb6329ae6eaadce3c8cf03dc73\":\"createFeature\"},\"src/presentation/web/app/actions/create-feature.ts\",\"\"] */\"use turbopack no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_0=/*#__PURE__*/createServerReference(\"4060ea2aabfb6edfdb6329ae6eaadce3c8cf03dc73\",callServer,void 0,findSourceMapURL,\"createFeature\");export{$$RSC_SERVER_ACTION_0 as createFeature};","'use client';\n\nimport * as React from 'react';\nimport { CheckIcon, MinusIcon } from 'lucide-react';\nimport { Checkbox as CheckboxPrimitive } from 'radix-ui';\n\nimport { cn } from '@/lib/utils';\n\nfunction Checkbox({ className, ...props }: React.ComponentProps<typeof CheckboxPrimitive.Root>) {\n return (\n <CheckboxPrimitive.Root\n data-slot=\"checkbox\"\n className={cn(\n 'peer border-input dark:bg-input/30 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground dark:data-[state=checked]:bg-primary data-[state=checked]:border-primary data-[state=indeterminate]:bg-primary data-[state=indeterminate]:text-primary-foreground data-[state=indeterminate]:border-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive size-4 shrink-0 cursor-pointer rounded-[4px] border shadow-xs transition-shadow outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50',\n className\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n data-slot=\"checkbox-indicator\"\n className=\"grid place-content-center text-current transition-none\"\n >\n {props.checked === 'indeterminate' ? (\n <MinusIcon className=\"size-3.5\" />\n ) : (\n <CheckIcon className=\"size-3.5\" />\n )}\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n );\n}\n\nexport { Checkbox };\n","'use client';\n\nimport { Checkbox } from '@/components/ui/checkbox';\nimport { Label } from '@/components/ui/label';\n\nexport interface CheckboxGroupItemProps {\n id: string;\n label: string;\n description?: string;\n checked: boolean;\n onCheckedChange: (checked: boolean) => void;\n disabled?: boolean;\n}\n\nfunction CheckboxGroupItem({\n id,\n label,\n description,\n checked,\n onCheckedChange,\n disabled,\n}: CheckboxGroupItemProps) {\n return (\n <div className=\"flex items-start gap-2\">\n <Checkbox\n id={id}\n className=\"mt-0.75\"\n checked={checked}\n onCheckedChange={(v) => onCheckedChange(v === true)}\n disabled={disabled}\n />\n <div className=\"flex flex-col gap-0.5\">\n <Label htmlFor={id} className=\"cursor-pointer text-sm font-medium\">\n {label}\n </Label>\n {description ? (\n <Label htmlFor={id} className=\"text-muted-foreground cursor-pointer text-xs font-normal\">\n {description}\n </Label>\n ) : null}\n </div>\n </div>\n );\n}\n\nexport { CheckboxGroupItem };\n","'use client';\n\nimport { Checkbox } from '@/components/ui/checkbox';\nimport { Label } from '@/components/ui/label';\nimport { CheckboxGroupItem } from '@/components/ui/checkbox-group-item';\n\nexport interface CheckboxGroupOption {\n id: string;\n label: string;\n description?: string;\n}\n\nexport interface CheckboxGroupProps {\n /** Visible group label rendered next to the parent checkbox. */\n label: string;\n /** Optional description rendered below the parent label. */\n description?: string;\n /** Accessible name for the parent checkbox (used as aria-label). */\n parentAriaLabel?: string;\n options: CheckboxGroupOption[];\n /** Record mapping option id → checked state. */\n value: Record<string, boolean>;\n onValueChange: (value: Record<string, boolean>) => void;\n disabled?: boolean;\n}\n\nfunction CheckboxGroup({\n label,\n description,\n parentAriaLabel,\n options,\n value,\n onValueChange,\n disabled,\n}: CheckboxGroupProps) {\n const selectedCount = options.filter((o) => value[o.id]).length;\n const parentChecked = selectedCount === options.length;\n const parentIndeterminate = selectedCount > 0 && !parentChecked;\n\n const handleParentToggle = () => {\n const target = selectedCount < options.length;\n const next: Record<string, boolean> = {};\n for (const o of options) {\n next[o.id] = target;\n }\n onValueChange(next);\n };\n\n const handleItemChange = (id: string, checked: boolean) => {\n onValueChange({ ...value, [id]: checked });\n };\n\n const parentId = `${label.toLowerCase().replace(/\\s+/g, '-')}-group`;\n\n return (\n <div className=\"flex flex-col gap-3\">\n {/* Parent checkbox */}\n <div className=\"flex items-start gap-2\">\n <Checkbox\n id={parentId}\n className=\"mt-0.75\"\n checked={parentIndeterminate ? 'indeterminate' : parentChecked}\n onCheckedChange={handleParentToggle}\n disabled={disabled}\n aria-label={parentAriaLabel ?? `${label} select all`}\n />\n <div className=\"flex flex-col gap-0.5\">\n <Label htmlFor={parentId} className=\"cursor-pointer text-sm font-medium\">\n {label}\n </Label>\n {description ? (\n <Label\n htmlFor={parentId}\n className=\"text-muted-foreground cursor-pointer text-xs font-normal\"\n >\n {description}\n </Label>\n ) : null}\n </div>\n </div>\n\n {/* Child checkboxes */}\n <div className=\"flex flex-col gap-3 pl-6\">\n {options.map((option) => (\n <CheckboxGroupItem\n key={option.id}\n id={option.id}\n label={option.label}\n description={option.description}\n checked={value[option.id] ?? false}\n onCheckedChange={(checked) => handleItemChange(option.id, checked)}\n disabled={disabled}\n />\n ))}\n </div>\n </div>\n );\n}\n\nexport { CheckboxGroup };\n","\"use client\";\n\n// src/popover.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { DismissableLayer } from \"@radix-ui/react-dismissable-layer\";\nimport { useFocusGuards } from \"@radix-ui/react-focus-guards\";\nimport { FocusScope } from \"@radix-ui/react-focus-scope\";\nimport { useId } from \"@radix-ui/react-id\";\nimport * as PopperPrimitive from \"@radix-ui/react-popper\";\nimport { createPopperScope } from \"@radix-ui/react-popper\";\nimport { Portal as PortalPrimitive } from \"@radix-ui/react-portal\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { hideOthers } from \"aria-hidden\";\nimport { RemoveScroll } from \"react-remove-scroll\";\nimport { jsx } from \"react/jsx-runtime\";\nvar POPOVER_NAME = \"Popover\";\nvar [createPopoverContext, createPopoverScope] = createContextScope(POPOVER_NAME, [\n createPopperScope\n]);\nvar usePopperScope = createPopperScope();\nvar [PopoverProvider, usePopoverContext] = createPopoverContext(POPOVER_NAME);\nvar Popover = (props) => {\n const {\n __scopePopover,\n children,\n open: openProp,\n defaultOpen,\n onOpenChange,\n modal = false\n } = props;\n const popperScope = usePopperScope(__scopePopover);\n const triggerRef = React.useRef(null);\n const [hasCustomAnchor, setHasCustomAnchor] = React.useState(false);\n const [open, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen ?? false,\n onChange: onOpenChange,\n caller: POPOVER_NAME\n });\n return /* @__PURE__ */ jsx(PopperPrimitive.Root, { ...popperScope, children: /* @__PURE__ */ jsx(\n PopoverProvider,\n {\n scope: __scopePopover,\n contentId: useId(),\n triggerRef,\n open,\n onOpenChange: setOpen,\n onOpenToggle: React.useCallback(() => setOpen((prevOpen) => !prevOpen), [setOpen]),\n hasCustomAnchor,\n onCustomAnchorAdd: React.useCallback(() => setHasCustomAnchor(true), []),\n onCustomAnchorRemove: React.useCallback(() => setHasCustomAnchor(false), []),\n modal,\n children\n }\n ) });\n};\nPopover.displayName = POPOVER_NAME;\nvar ANCHOR_NAME = \"PopoverAnchor\";\nvar PopoverAnchor = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopePopover, ...anchorProps } = props;\n const context = usePopoverContext(ANCHOR_NAME, __scopePopover);\n const popperScope = usePopperScope(__scopePopover);\n const { onCustomAnchorAdd, onCustomAnchorRemove } = context;\n React.useEffect(() => {\n onCustomAnchorAdd();\n return () => onCustomAnchorRemove();\n }, [onCustomAnchorAdd, onCustomAnchorRemove]);\n return /* @__PURE__ */ jsx(PopperPrimitive.Anchor, { ...popperScope, ...anchorProps, ref: forwardedRef });\n }\n);\nPopoverAnchor.displayName = ANCHOR_NAME;\nvar TRIGGER_NAME = \"PopoverTrigger\";\nvar PopoverTrigger = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopePopover, ...triggerProps } = props;\n const context = usePopoverContext(TRIGGER_NAME, __scopePopover);\n const popperScope = usePopperScope(__scopePopover);\n const composedTriggerRef = useComposedRefs(forwardedRef, context.triggerRef);\n const trigger = /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n \"aria-haspopup\": \"dialog\",\n \"aria-expanded\": context.open,\n \"aria-controls\": context.contentId,\n \"data-state\": getState(context.open),\n ...triggerProps,\n ref: composedTriggerRef,\n onClick: composeEventHandlers(props.onClick, context.onOpenToggle)\n }\n );\n return context.hasCustomAnchor ? trigger : /* @__PURE__ */ jsx(PopperPrimitive.Anchor, { asChild: true, ...popperScope, children: trigger });\n }\n);\nPopoverTrigger.displayName = TRIGGER_NAME;\nvar PORTAL_NAME = \"PopoverPortal\";\nvar [PortalProvider, usePortalContext] = createPopoverContext(PORTAL_NAME, {\n forceMount: void 0\n});\nvar PopoverPortal = (props) => {\n const { __scopePopover, forceMount, children, container } = props;\n const context = usePopoverContext(PORTAL_NAME, __scopePopover);\n return /* @__PURE__ */ jsx(PortalProvider, { scope: __scopePopover, forceMount, children: /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(PortalPrimitive, { asChild: true, container, children }) }) });\n};\nPopoverPortal.displayName = PORTAL_NAME;\nvar CONTENT_NAME = \"PopoverContent\";\nvar PopoverContent = React.forwardRef(\n (props, forwardedRef) => {\n const portalContext = usePortalContext(CONTENT_NAME, props.__scopePopover);\n const { forceMount = portalContext.forceMount, ...contentProps } = props;\n const context = usePopoverContext(CONTENT_NAME, props.__scopePopover);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: context.modal ? /* @__PURE__ */ jsx(PopoverContentModal, { ...contentProps, ref: forwardedRef }) : /* @__PURE__ */ jsx(PopoverContentNonModal, { ...contentProps, ref: forwardedRef }) });\n }\n);\nPopoverContent.displayName = CONTENT_NAME;\nvar Slot = createSlot(\"PopoverContent.RemoveScroll\");\nvar PopoverContentModal = React.forwardRef(\n (props, forwardedRef) => {\n const context = usePopoverContext(CONTENT_NAME, props.__scopePopover);\n const contentRef = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, contentRef);\n const isRightClickOutsideRef = React.useRef(false);\n React.useEffect(() => {\n const content = contentRef.current;\n if (content) return hideOthers(content);\n }, []);\n return /* @__PURE__ */ jsx(RemoveScroll, { as: Slot, allowPinchZoom: true, children: /* @__PURE__ */ jsx(\n PopoverContentImpl,\n {\n ...props,\n ref: composedRefs,\n trapFocus: context.open,\n disableOutsidePointerEvents: true,\n onCloseAutoFocus: composeEventHandlers(props.onCloseAutoFocus, (event) => {\n event.preventDefault();\n if (!isRightClickOutsideRef.current) context.triggerRef.current?.focus();\n }),\n onPointerDownOutside: composeEventHandlers(\n props.onPointerDownOutside,\n (event) => {\n const originalEvent = event.detail.originalEvent;\n const ctrlLeftClick = originalEvent.button === 0 && originalEvent.ctrlKey === true;\n const isRightClick = originalEvent.button === 2 || ctrlLeftClick;\n isRightClickOutsideRef.current = isRightClick;\n },\n { checkForDefaultPrevented: false }\n ),\n onFocusOutside: composeEventHandlers(\n props.onFocusOutside,\n (event) => event.preventDefault(),\n { checkForDefaultPrevented: false }\n )\n }\n ) });\n }\n);\nvar PopoverContentNonModal = React.forwardRef(\n (props, forwardedRef) => {\n const context = usePopoverContext(CONTENT_NAME, props.__scopePopover);\n const hasInteractedOutsideRef = React.useRef(false);\n const hasPointerDownOutsideRef = React.useRef(false);\n return /* @__PURE__ */ jsx(\n PopoverContentImpl,\n {\n ...props,\n ref: forwardedRef,\n trapFocus: false,\n disableOutsidePointerEvents: false,\n onCloseAutoFocus: (event) => {\n props.onCloseAutoFocus?.(event);\n if (!event.defaultPrevented) {\n if (!hasInteractedOutsideRef.current) context.triggerRef.current?.focus();\n event.preventDefault();\n }\n hasInteractedOutsideRef.current = false;\n hasPointerDownOutsideRef.current = false;\n },\n onInteractOutside: (event) => {\n props.onInteractOutside?.(event);\n if (!event.defaultPrevented) {\n hasInteractedOutsideRef.current = true;\n if (event.detail.originalEvent.type === \"pointerdown\") {\n hasPointerDownOutsideRef.current = true;\n }\n }\n const target = event.target;\n const targetIsTrigger = context.triggerRef.current?.contains(target);\n if (targetIsTrigger) event.preventDefault();\n if (event.detail.originalEvent.type === \"focusin\" && hasPointerDownOutsideRef.current) {\n event.preventDefault();\n }\n }\n }\n );\n }\n);\nvar PopoverContentImpl = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopePopover,\n trapFocus,\n onOpenAutoFocus,\n onCloseAutoFocus,\n disableOutsidePointerEvents,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside,\n onInteractOutside,\n ...contentProps\n } = props;\n const context = usePopoverContext(CONTENT_NAME, __scopePopover);\n const popperScope = usePopperScope(__scopePopover);\n useFocusGuards();\n return /* @__PURE__ */ jsx(\n FocusScope,\n {\n asChild: true,\n loop: true,\n trapped: trapFocus,\n onMountAutoFocus: onOpenAutoFocus,\n onUnmountAutoFocus: onCloseAutoFocus,\n children: /* @__PURE__ */ jsx(\n DismissableLayer,\n {\n asChild: true,\n disableOutsidePointerEvents,\n onInteractOutside,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside,\n onDismiss: () => context.onOpenChange(false),\n children: /* @__PURE__ */ jsx(\n PopperPrimitive.Content,\n {\n \"data-state\": getState(context.open),\n role: \"dialog\",\n id: context.contentId,\n ...popperScope,\n ...contentProps,\n ref: forwardedRef,\n style: {\n ...contentProps.style,\n // re-namespace exposed content custom properties\n ...{\n \"--radix-popover-content-transform-origin\": \"var(--radix-popper-transform-origin)\",\n \"--radix-popover-content-available-width\": \"var(--radix-popper-available-width)\",\n \"--radix-popover-content-available-height\": \"var(--radix-popper-available-height)\",\n \"--radix-popover-trigger-width\": \"var(--radix-popper-anchor-width)\",\n \"--radix-popover-trigger-height\": \"var(--radix-popper-anchor-height)\"\n }\n }\n }\n )\n }\n )\n }\n );\n }\n);\nvar CLOSE_NAME = \"PopoverClose\";\nvar PopoverClose = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopePopover, ...closeProps } = props;\n const context = usePopoverContext(CLOSE_NAME, __scopePopover);\n return /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n ...closeProps,\n ref: forwardedRef,\n onClick: composeEventHandlers(props.onClick, () => context.onOpenChange(false))\n }\n );\n }\n);\nPopoverClose.displayName = CLOSE_NAME;\nvar ARROW_NAME = \"PopoverArrow\";\nvar PopoverArrow = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopePopover, ...arrowProps } = props;\n const popperScope = usePopperScope(__scopePopover);\n return /* @__PURE__ */ jsx(PopperPrimitive.Arrow, { ...popperScope, ...arrowProps, ref: forwardedRef });\n }\n);\nPopoverArrow.displayName = ARROW_NAME;\nfunction getState(open) {\n return open ? \"open\" : \"closed\";\n}\nvar Root2 = Popover;\nvar Anchor2 = PopoverAnchor;\nvar Trigger = PopoverTrigger;\nvar Portal = PopoverPortal;\nvar Content2 = PopoverContent;\nvar Close = PopoverClose;\nvar Arrow2 = PopoverArrow;\nexport {\n Anchor2 as Anchor,\n Arrow2 as Arrow,\n Close,\n Content2 as Content,\n Popover,\n PopoverAnchor,\n PopoverArrow,\n PopoverClose,\n PopoverContent,\n PopoverPortal,\n PopoverTrigger,\n Portal,\n Root2 as Root,\n Trigger,\n createPopoverScope\n};\n//# sourceMappingURL=index.mjs.map\n","'use client';\n\nimport * as React from 'react';\nimport { Popover as PopoverPrimitive } from 'radix-ui';\n\nimport { cn } from '@/lib/utils';\n\nconst Popover = PopoverPrimitive.Root;\n\nconst PopoverTrigger = PopoverPrimitive.Trigger;\n\nconst PopoverAnchor = PopoverPrimitive.Anchor;\n\nconst PopoverContent = React.forwardRef<\n React.ComponentRef<typeof PopoverPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Content>\n>(({ className, align = 'center', sideOffset = 4, ...props }, ref) => (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n ref={ref}\n align={align}\n sideOffset={sideOffset}\n className={cn(\n 'bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-72 rounded-md border p-4 shadow-md outline-none',\n className\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n));\nPopoverContent.displayName = PopoverPrimitive.Content.displayName;\n\nexport { Popover, PopoverTrigger, PopoverContent, PopoverAnchor };\n","'use client';\n\nimport { useState, useCallback, useEffect, useRef } from 'react';\nimport type { LucideIcon } from 'lucide-react';\nimport {\n PlusIcon,\n FileIcon,\n FileTextIcon,\n ImageIcon,\n CodeIcon,\n Trash2Icon,\n ChevronsUpDown,\n CheckIcon,\n} from 'lucide-react';\nimport { cn } from '@/lib/utils';\nimport { useSoundAction } from '@/hooks/use-sound-action';\nimport { BaseDrawer } from '@/components/common/base-drawer';\nimport { DrawerTitle, DrawerDescription } from '@/components/ui/drawer';\nimport { Button } from '@/components/ui/button';\nimport { Input } from '@/components/ui/input';\nimport { Textarea } from '@/components/ui/textarea';\nimport { Label } from '@/components/ui/label';\nimport { CheckboxGroup } from '@/components/ui/checkbox-group';\nimport { CheckboxGroupItem } from '@/components/ui/checkbox-group-item';\nimport { Badge } from '@/components/ui/badge';\nimport { Popover, PopoverContent, PopoverTrigger } from '@/components/ui/popover';\nimport type { FileAttachment } from '@shepai/core/infrastructure/services/file-dialog.service';\nimport type { WorkflowDefaults } from '@/app/actions/get-workflow-defaults';\nimport { pickFiles } from './pick-files';\n\nexport type { FileAttachment } from '@shepai/core/infrastructure/services/file-dialog.service';\n\n/** Minimal feature descriptor for the parent selector. */\nexport interface ParentFeatureOption {\n id: string;\n name: string;\n}\n\nexport interface FeatureCreatePayload {\n name: string;\n description?: string;\n attachments: FileAttachment[];\n repositoryPath: string;\n approvalGates: {\n allowPrd: boolean;\n allowPlan: boolean;\n allowMerge: boolean;\n };\n push: boolean;\n openPr: boolean;\n parentId?: string;\n}\n\nconst AUTO_APPROVE_OPTIONS = [\n { id: 'allowPrd', label: 'PRD', description: 'Auto-approve requirements move to planning.' },\n { id: 'allowPlan', label: 'Plan', description: 'Auto-approve planning move to implementation.' },\n { id: 'allowMerge', label: 'Merge', description: 'Auto-approve merge move to Done.' },\n];\n\nconst EMPTY_GATES: Record<string, boolean> = {\n allowPrd: false,\n allowPlan: false,\n allowMerge: false,\n};\n\nexport interface FeatureCreateDrawerProps {\n open: boolean;\n onClose: () => void;\n onSubmit: (data: FeatureCreatePayload) => void;\n repositoryPath: string;\n isSubmitting?: boolean;\n workflowDefaults?: WorkflowDefaults;\n /** List of existing features available for selection as a parent. */\n features?: ParentFeatureOption[];\n /** Pre-select a parent feature when the drawer opens (e.g. from (+) button on a feature node). */\n initialParentId?: string;\n}\n\nexport function FeatureCreateDrawer({\n open,\n onClose,\n onSubmit,\n repositoryPath,\n isSubmitting = false,\n workflowDefaults,\n features,\n initialParentId,\n}: FeatureCreateDrawerProps) {\n const createSound = useSoundAction('create');\n const defaultGates = workflowDefaults?.approvalGates ?? EMPTY_GATES;\n const defaultPush = workflowDefaults?.push ?? false;\n const defaultOpenPr = workflowDefaults?.openPr ?? false;\n\n const [name, setName] = useState('');\n const [description, setDescription] = useState('');\n const [attachments, setAttachments] = useState<FileAttachment[]>([]);\n const [approvalGates, setApprovalGates] = useState<Record<string, boolean>>({ ...defaultGates });\n const [push, setPush] = useState(defaultPush);\n const [openPr, setOpenPr] = useState(defaultOpenPr);\n const [parentId, setParentId] = useState<string | undefined>(undefined);\n\n // Sync state when workflowDefaults load asynchronously\n useEffect(() => {\n if (workflowDefaults) {\n setApprovalGates({ ...workflowDefaults.approvalGates });\n setPush(workflowDefaults.push);\n setOpenPr(workflowDefaults.openPr);\n }\n }, [workflowDefaults]);\n\n // Pre-select parent when initialParentId changes (e.g. (+) button on feature node)\n useEffect(() => {\n if (open && initialParentId) {\n setParentId(initialParentId);\n }\n }, [open, initialParentId]);\n\n const resetForm = useCallback(() => {\n setName('');\n setDescription('');\n setAttachments([]);\n setApprovalGates({ ...defaultGates });\n setPush(defaultPush);\n setOpenPr(defaultOpenPr);\n setParentId(undefined);\n }, [defaultGates, defaultPush, defaultOpenPr]);\n\n const handleClose = useCallback(() => {\n resetForm();\n onClose();\n }, [onClose, resetForm]);\n\n const handleSubmit = useCallback(\n (e: React.FormEvent) => {\n e.preventDefault();\n if (!name.trim()) return;\n createSound.play();\n const trimmedDescription = description.trim() || undefined;\n onSubmit({\n name: name.trim(),\n description: trimmedDescription,\n attachments,\n repositoryPath,\n approvalGates: {\n allowPrd: approvalGates.allowPrd ?? false,\n allowPlan: approvalGates.allowPlan ?? false,\n allowMerge: approvalGates.allowMerge ?? false,\n },\n push: push || openPr,\n openPr,\n ...(parentId ? { parentId } : {}),\n });\n resetForm();\n },\n [\n name,\n description,\n attachments,\n approvalGates,\n repositoryPath,\n onSubmit,\n push,\n openPr,\n parentId,\n createSound,\n resetForm,\n ]\n );\n\n const handleAddFiles = useCallback(async () => {\n try {\n const files = await pickFiles();\n if (files) {\n setAttachments((prev) => [...prev, ...files]);\n }\n } catch {\n // Native dialog failed — silently ignore (user can retry)\n }\n }, []);\n\n const handleRemoveFile = useCallback((path: string) => {\n setAttachments((prev) => prev.filter((f) => f.path !== path));\n }, []);\n\n const hasFeatures = features && features.length > 0;\n\n return (\n <BaseDrawer\n open={open}\n onClose={handleClose}\n size=\"md\"\n modal={false}\n data-testid=\"feature-create-drawer\"\n header={\n <>\n <div className=\"flex items-center gap-2\">\n <div className=\"h-2.5 w-2.5 shrink-0 rounded-full bg-blue-500\" />\n <DrawerTitle>NEW FEATURE</DrawerTitle>\n </div>\n <DrawerDescription asChild>\n <div>\n <Badge variant=\"secondary\">Creating...</Badge>\n </div>\n </DrawerDescription>\n </>\n }\n footer={\n <div className=\"flex flex-row justify-end gap-2\">\n <Button variant=\"outline\" onClick={handleClose} disabled={isSubmitting}>\n Cancel\n </Button>\n <Button type=\"submit\" form=\"create-feature-form\" disabled={!name.trim() || isSubmitting}>\n {isSubmitting ? 'Creating...' : '+ Create Feature'}\n </Button>\n </div>\n }\n >\n {/* Form body */}\n <div className=\"overflow-y-auto p-4\">\n <form id=\"create-feature-form\" onSubmit={handleSubmit} className=\"flex flex-col gap-4\">\n {/* Feature name */}\n <div className=\"flex flex-col gap-1.5\">\n <Label\n htmlFor=\"feature-name\"\n className=\"text-muted-foreground text-xs font-semibold tracking-wider\"\n >\n FEATURE NAME\n </Label>\n <Input\n id=\"feature-name\"\n placeholder=\"e.g. GitHub OAuth Login\"\n value={name}\n onChange={(e) => setName(e.target.value)}\n required\n disabled={isSubmitting}\n />\n </div>\n\n {/* Description */}\n <div className=\"flex flex-col gap-1.5\">\n <Label\n htmlFor=\"feature-description\"\n className=\"text-muted-foreground text-xs font-semibold tracking-wider\"\n >\n DESCRIPTION\n </Label>\n <Textarea\n id=\"feature-description\"\n placeholder=\"Describe what this feature does...\"\n value={description}\n onChange={(e) => setDescription(e.target.value)}\n rows={4}\n disabled={isSubmitting}\n />\n </div>\n\n {/* Parent feature selector (only when features are available) */}\n {hasFeatures ? (\n <div className=\"flex flex-col gap-1.5\">\n <Label\n htmlFor=\"parent-feature\"\n className=\"text-muted-foreground text-xs font-semibold tracking-wider\"\n >\n PARENT FEATURE\n </Label>\n <ParentFeatureCombobox\n features={features}\n value={parentId}\n onChange={setParentId}\n disabled={isSubmitting}\n />\n </div>\n ) : null}\n\n {/* Auto-approve checkboxes */}\n <div className=\"flex flex-col gap-1.5\">\n <Label className=\"text-muted-foreground text-xs font-semibold tracking-wider\">\n APPROVE\n </Label>\n <CheckboxGroup\n label=\"Autonomous Mode\"\n description=\"YOLO!\"\n parentAriaLabel=\"Auto approve all\"\n options={AUTO_APPROVE_OPTIONS}\n value={approvalGates}\n onValueChange={setApprovalGates}\n disabled={isSubmitting}\n />\n </div>\n\n {/* Git options */}\n <div className=\"flex flex-col gap-1.5\">\n <Label className=\"text-muted-foreground text-xs font-semibold tracking-wider\">\n GIT\n </Label>\n <div className=\"flex flex-col gap-2\">\n <CheckboxGroupItem\n id=\"push\"\n label=\"Push\"\n description=\"Push branch to remote after implementation.\"\n checked={push || openPr}\n onCheckedChange={setPush}\n disabled={openPr || isSubmitting}\n />\n <CheckboxGroupItem\n id=\"open-pr\"\n label=\"Create PR\"\n description=\"Open a pull request after pushing.\"\n checked={openPr}\n onCheckedChange={setOpenPr}\n disabled={isSubmitting}\n />\n </div>\n </div>\n\n {/* Attachments */}\n <div className=\"flex flex-col gap-2\">\n <div className=\"flex items-center justify-between\">\n <Label className=\"text-muted-foreground text-xs font-semibold tracking-wider\">\n ATTACHMENTS\n {attachments.length > 0 && (\n <span className=\"text-muted-foreground/60 ml-1.5\">({attachments.length})</span>\n )}\n </Label>\n <Button\n type=\"button\"\n variant=\"outline\"\n size=\"xs\"\n onClick={handleAddFiles}\n disabled={isSubmitting}\n >\n <PlusIcon className=\"size-3\" />\n Add Files\n </Button>\n </div>\n\n {attachments.length > 0 && (\n <div className=\"flex flex-col gap-2\">\n {attachments.map((file) => (\n <AttachmentCard\n key={file.path}\n file={file}\n onRemove={() => handleRemoveFile(file.path)}\n disabled={isSubmitting}\n />\n ))}\n </div>\n )}\n </div>\n </form>\n </div>\n </BaseDrawer>\n );\n}\n\n/* ---------------------------------------------------------------------------\n * ParentFeatureCombobox — searchable dropdown for parent feature selection\n * ------------------------------------------------------------------------- */\n\ninterface ParentFeatureComboboxProps {\n features: ParentFeatureOption[];\n value: string | undefined;\n onChange: (id: string | undefined) => void;\n disabled?: boolean;\n}\n\nfunction ParentFeatureCombobox({\n features,\n value,\n onChange,\n disabled,\n}: ParentFeatureComboboxProps) {\n const [open, setOpen] = useState(false);\n const [query, setQuery] = useState('');\n const inputRef = useRef<HTMLInputElement>(null);\n\n const selectedFeature = features.find((f) => f.id === value);\n\n const filtered = query.trim()\n ? features.filter(\n (f) =>\n f.name.toLowerCase().includes(query.toLowerCase()) ||\n f.id.toLowerCase().includes(query.toLowerCase())\n )\n : features;\n\n const handleSelect = useCallback(\n (id: string | undefined) => {\n onChange(id);\n setOpen(false);\n setQuery('');\n },\n [onChange]\n );\n\n useEffect(() => {\n if (open) {\n setTimeout(() => inputRef.current?.focus(), 0);\n } else {\n setQuery('');\n }\n }, [open]);\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <button\n id=\"parent-feature\"\n type=\"button\"\n role=\"combobox\"\n aria-expanded={open}\n aria-label=\"Parent Feature\"\n disabled={disabled}\n data-testid=\"parent-feature-combobox\"\n className={cn(\n 'border-input bg-background ring-offset-background focus:ring-ring flex h-9 w-full items-center justify-between rounded-md border px-3 py-2 text-sm focus:ring-2 focus:ring-offset-2 focus:outline-none disabled:cursor-not-allowed disabled:opacity-50',\n !selectedFeature && 'text-muted-foreground'\n )}\n >\n <span className=\"truncate\">\n {selectedFeature\n ? `${selectedFeature.name} (${selectedFeature.id.slice(0, 8)})`\n : 'Select parent feature...'}\n </span>\n <ChevronsUpDown className=\"ml-2 h-4 w-4 shrink-0 opacity-50\" />\n </button>\n </PopoverTrigger>\n <PopoverContent\n className=\"w-80 p-0\"\n align=\"start\"\n data-testid=\"parent-feature-combobox-content\"\n >\n <div className=\"flex flex-col\">\n {/* Search input */}\n <div className=\"border-b p-2\">\n <Input\n ref={inputRef}\n placeholder=\"Search features...\"\n value={query}\n onChange={(e) => setQuery(e.target.value)}\n className=\"h-8 border-0 p-0 text-sm shadow-none focus-visible:ring-0\"\n data-testid=\"parent-feature-search\"\n />\n </div>\n\n {/* Options list */}\n <div className=\"max-h-48 overflow-y-auto py-1\" role=\"listbox\" aria-label=\"Features\">\n {/* No parent option */}\n <button\n type=\"button\"\n role=\"option\"\n aria-selected={value === undefined}\n onClick={() => handleSelect(undefined)}\n className={cn(\n 'hover:bg-accent hover:text-accent-foreground flex w-full items-center gap-2 px-3 py-2 text-sm',\n value === undefined && 'bg-accent/50'\n )}\n data-testid=\"parent-feature-option-none\"\n >\n <CheckIcon className={cn('h-4 w-4 shrink-0', value !== undefined && 'invisible')} />\n <span className=\"text-muted-foreground italic\">No parent</span>\n </button>\n\n {filtered.length === 0 && query ? (\n <p className=\"text-muted-foreground px-3 py-2 text-sm\">No features found.</p>\n ) : (\n filtered.map((f) => (\n <button\n key={f.id}\n type=\"button\"\n role=\"option\"\n aria-selected={value === f.id}\n onClick={() => handleSelect(f.id)}\n className={cn(\n 'hover:bg-accent hover:text-accent-foreground flex w-full items-center gap-2 px-3 py-2 text-sm',\n value === f.id && 'bg-accent/50'\n )}\n data-testid={`parent-feature-option-${f.id}`}\n >\n <CheckIcon className={cn('h-4 w-4 shrink-0', value !== f.id && 'invisible')} />\n <span className=\"truncate\">\n {f.name}{' '}\n <span className=\"text-muted-foreground font-mono text-xs\">\n ({f.id.slice(0, 8)})\n </span>\n </span>\n </button>\n ))\n )}\n </div>\n </div>\n </PopoverContent>\n </Popover>\n );\n}\n\n/* ---------------------------------------------------------------------------\n * Private sub-components & utilities\n * ------------------------------------------------------------------------- */\n\nfunction AttachmentCard({\n file,\n onRemove,\n disabled,\n}: {\n file: FileAttachment;\n onRemove: () => void;\n disabled?: boolean;\n}) {\n const ext = getExtension(file.name);\n const Icon = getFileIcon(ext);\n const iconColorClass = getFileIconColor(ext);\n\n return (\n <div className=\"flex items-center gap-3 rounded-md border p-2\">\n <div\n className={cn('flex h-8 w-8 shrink-0 items-center justify-center rounded', iconColorClass)}\n >\n <Icon className=\"h-4 w-4\" />\n </div>\n <div className=\"flex min-w-0 flex-1 flex-col\">\n <span className=\"truncate text-sm font-medium\">{file.name}</span>\n <span className=\"text-muted-foreground truncate text-xs\">{file.path}</span>\n <span className=\"text-muted-foreground text-xs\">{formatFileSize(file.size)}</span>\n </div>\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"icon-xs\"\n onClick={onRemove}\n disabled={disabled}\n aria-label={`Remove ${file.name}`}\n >\n <Trash2Icon className=\"h-3 w-3\" />\n </Button>\n </div>\n );\n}\n\nfunction getExtension(filename: string): string {\n const dot = filename.lastIndexOf('.');\n return dot >= 0 ? filename.slice(dot).toLowerCase() : '';\n}\n\nconst IMAGE_EXTS = new Set(['.png', '.jpg', '.jpeg', '.gif', '.svg', '.webp', '.ico', '.bmp']);\nconst CODE_EXTS = new Set([\n '.ts',\n '.tsx',\n '.js',\n '.jsx',\n '.json',\n '.yaml',\n '.yml',\n '.xml',\n '.html',\n '.css',\n '.md',\n]);\n\nfunction getFileIcon(ext: string): LucideIcon {\n if (IMAGE_EXTS.has(ext)) return ImageIcon;\n if (ext === '.pdf') return FileTextIcon;\n if (CODE_EXTS.has(ext)) return CodeIcon;\n return FileIcon;\n}\n\nfunction getFileIconColor(ext: string): string {\n if (ext === '.pdf') return 'bg-red-50 text-red-600';\n if (IMAGE_EXTS.has(ext)) return 'bg-blue-50 text-blue-600';\n if (CODE_EXTS.has(ext)) return 'bg-emerald-50 text-emerald-600';\n return 'bg-gray-50 text-gray-600';\n}\n\nfunction formatFileSize(bytes: number): string {\n if (bytes === 0) return '0 B';\n const units = ['B', 'KB', 'MB', 'GB'];\n const i = Math.floor(Math.log(bytes) / Math.log(1024));\n return `${(bytes / Math.pow(1024, i)).toFixed(i === 0 ? 0 : 1)} ${units[i]}`;\n}\n","// packages/react/use-previous/src/use-previous.tsx\nimport * as React from \"react\";\nfunction usePrevious(value) {\n const ref = React.useRef({ value, previous: value });\n return React.useMemo(() => {\n if (ref.current.value !== value) {\n ref.current.previous = ref.current.value;\n ref.current.value = value;\n }\n return ref.current.previous;\n }, [value]);\n}\nexport {\n usePrevious\n};\n//# sourceMappingURL=index.mjs.map\n","import * as React from 'react';\n\nimport { cn } from '@/lib/utils';\n\nfunction Textarea({ className, ...props }: React.ComponentProps<'textarea'>) {\n return (\n <textarea\n data-slot=\"textarea\"\n className={cn(\n 'placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input field-sizing-content min-h-[80px] w-full rounded-md border bg-transparent px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm',\n 'focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]',\n 'aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive',\n className\n )}\n {...props}\n />\n );\n}\n\nexport { Textarea };\n","import type { FileAttachment } from '@shepai/core/infrastructure/services/file-dialog.service';\n\n/**\n * Opens a native OS file picker dialog via API route.\n * Returns the selected files with metadata, or null if the user cancelled.\n */\nexport async function pickFiles(): Promise<FileAttachment[] | null> {\n const res = await fetch('/api/dialog/pick-files', { method: 'POST' });\n\n if (!res.ok) {\n throw new Error('Failed to open file dialog');\n }\n\n const data: { files: FileAttachment[] | null; cancelled: boolean } = await res.json();\n return data.cancelled ? null : data.files;\n}\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'm16 18 6-6-6-6', key: 'eg8j8' }],\n ['path', { d: 'm8 6-6 6 6 6', key: 'ppft3o' }],\n];\n\n/**\n * @component @name Code\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/code\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Code = createLucideIcon('code', __iconNode);\n\nexport default Code;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [['path', { d: 'M5 12h14', key: '1ays0h' }]];\n\n/**\n * @component @name Minus\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/minus\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Minus = createLucideIcon('minus', __iconNode);\n\nexport default Minus;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'm7 15 5 5 5-5', key: '1hf1tw' }],\n ['path', { d: 'm7 9 5-5 5 5', key: 'sgt6xg' }],\n];\n\n/**\n * @component @name ChevronsUpDown\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/chevrons-up-down\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ChevronsUpDown = createLucideIcon('chevrons-up-down', __iconNode);\n\nexport default ChevronsUpDown;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['rect', { width: '18', height: '18', x: '3', y: '3', rx: '2', ry: '2', key: '1m3agn' }],\n ['circle', { cx: '9', cy: '9', r: '2', key: 'af1f0g' }],\n ['path', { d: 'm21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21', key: '1xmnt7' }],\n];\n\n/**\n * @component @name Image\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/image\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Image = createLucideIcon('image', __iconNode);\n\nexport default Image;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z',\n key: '1oefj6',\n },\n ],\n ['path', { d: 'M14 2v5a1 1 0 0 0 1 1h5', key: 'wfsgrz' }],\n];\n\n/**\n * @component @name File\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/file\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst File = createLucideIcon('file', __iconNode);\n\nexport default File;\n"],"names":[],"mappings":"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","ignoreList":[1,3,8,11,14,15,16,17,18]}
|