@shepai/cli 1.84.0-pr250.9819070 → 1.85.0-pr167.13dcff5

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.
Files changed (209) hide show
  1. package/dist/packages/core/src/application/ports/output/services/worktree-service.interface.d.ts +2 -1
  2. package/dist/packages/core/src/application/ports/output/services/worktree-service.interface.d.ts.map +1 -1
  3. package/dist/packages/core/src/application/use-cases/features/cleanup-feature-worktree.use-case.d.ts +22 -0
  4. package/dist/packages/core/src/application/use-cases/features/cleanup-feature-worktree.use-case.d.ts.map +1 -0
  5. package/dist/packages/core/src/application/use-cases/features/cleanup-feature-worktree.use-case.js +76 -0
  6. package/dist/packages/core/src/application/use-cases/features/delete-feature.use-case.d.ts +7 -2
  7. package/dist/packages/core/src/application/use-cases/features/delete-feature.use-case.d.ts.map +1 -1
  8. package/dist/packages/core/src/application/use-cases/features/delete-feature.use-case.js +29 -15
  9. package/dist/packages/core/src/infrastructure/di/container.d.ts.map +1 -1
  10. package/dist/packages/core/src/infrastructure/di/container.js +5 -0
  11. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-worker.d.ts.map +1 -1
  12. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-worker.js +3 -0
  13. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/merge/merge.node.d.ts +2 -0
  14. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/merge/merge.node.d.ts.map +1 -1
  15. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/merge/merge.node.js +3 -0
  16. package/dist/packages/core/src/infrastructure/services/git/worktree.service.d.ts +1 -1
  17. package/dist/packages/core/src/infrastructure/services/git/worktree.service.d.ts.map +1 -1
  18. package/dist/packages/core/src/infrastructure/services/git/worktree.service.js +6 -2
  19. package/dist/src/presentation/cli/commands/feat/del.command.d.ts +3 -1
  20. package/dist/src/presentation/cli/commands/feat/del.command.d.ts.map +1 -1
  21. package/dist/src/presentation/cli/commands/feat/del.command.js +19 -2
  22. package/dist/src/presentation/web/app/actions/delete-feature.d.ts +1 -1
  23. package/dist/src/presentation/web/app/actions/delete-feature.d.ts.map +1 -1
  24. package/dist/src/presentation/web/app/actions/delete-feature.js +4 -2
  25. package/dist/src/presentation/web/app/actions/get-feature-plan.d.ts +0 -10
  26. package/dist/src/presentation/web/app/actions/get-feature-plan.d.ts.map +1 -1
  27. package/dist/src/presentation/web/app/actions/get-feature-plan.js +0 -8
  28. package/dist/src/presentation/web/components/common/control-center-drawer/feature-drawer-client.d.ts.map +1 -1
  29. package/dist/src/presentation/web/components/common/control-center-drawer/feature-drawer-client.js +5 -4
  30. package/dist/src/presentation/web/components/common/delete-feature-dialog/delete-feature-dialog-config.d.ts +9 -0
  31. package/dist/src/presentation/web/components/common/delete-feature-dialog/delete-feature-dialog-config.d.ts.map +1 -0
  32. package/dist/src/presentation/web/components/common/delete-feature-dialog/delete-feature-dialog-config.js +1 -0
  33. package/dist/src/presentation/web/components/common/delete-feature-dialog/delete-feature-dialog.d.ts +3 -0
  34. package/dist/src/presentation/web/components/common/delete-feature-dialog/delete-feature-dialog.d.ts.map +1 -0
  35. package/dist/src/presentation/web/components/common/delete-feature-dialog/delete-feature-dialog.js +16 -0
  36. package/dist/src/presentation/web/components/common/delete-feature-dialog/delete-feature-dialog.stories.d.ts +8 -0
  37. package/dist/src/presentation/web/components/common/delete-feature-dialog/delete-feature-dialog.stories.d.ts.map +1 -0
  38. package/dist/src/presentation/web/components/common/delete-feature-dialog/delete-feature-dialog.stories.js +25 -0
  39. package/dist/src/presentation/web/components/common/delete-feature-dialog/index.d.ts +3 -0
  40. package/dist/src/presentation/web/components/common/delete-feature-dialog/index.d.ts.map +1 -0
  41. package/dist/src/presentation/web/components/common/delete-feature-dialog/index.js +1 -0
  42. package/dist/src/presentation/web/components/common/feature-drawer-tabs/plan-tab.d.ts.map +1 -1
  43. package/dist/src/presentation/web/components/common/feature-drawer-tabs/plan-tab.js +20 -3
  44. package/dist/src/presentation/web/components/common/feature-drawer-tabs/plan-tab.stories.d.ts.map +1 -1
  45. package/dist/src/presentation/web/components/common/feature-drawer-tabs/plan-tab.stories.js +0 -74
  46. package/dist/src/presentation/web/components/common/feature-node/feature-node-state-config.d.ts +1 -1
  47. package/dist/src/presentation/web/components/common/feature-node/feature-node-state-config.d.ts.map +1 -1
  48. package/dist/src/presentation/web/components/common/feature-node/feature-node.d.ts.map +1 -1
  49. package/dist/src/presentation/web/components/common/feature-node/feature-node.js +5 -7
  50. package/dist/src/presentation/web/components/features/control-center/use-control-center-state.d.ts +1 -1
  51. package/dist/src/presentation/web/components/features/control-center/use-control-center-state.d.ts.map +1 -1
  52. package/dist/src/presentation/web/components/features/control-center/use-control-center-state.js +2 -2
  53. package/dist/src/presentation/web/lib/derive-graph.d.ts +1 -1
  54. package/dist/src/presentation/web/lib/derive-graph.d.ts.map +1 -1
  55. package/dist/tsconfig.build.tsbuildinfo +1 -1
  56. package/package.json +1 -1
  57. package/web/.next/BUILD_ID +1 -1
  58. package/web/.next/build-manifest.json +2 -2
  59. package/web/.next/fallback-build-manifest.json +2 -2
  60. package/web/.next/prerender-manifest.json +3 -3
  61. package/web/.next/required-server-files.js +1 -1
  62. package/web/.next/required-server-files.json +1 -1
  63. package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +18 -18
  64. package/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
  65. package/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
  66. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +21 -21
  67. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
  68. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
  69. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +14 -14
  70. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
  71. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  72. package/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +18 -18
  73. package/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
  74. package/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
  75. package/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +21 -21
  76. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
  77. package/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
  78. package/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +14 -14
  79. package/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
  80. package/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
  81. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +14 -14
  82. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
  83. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  84. package/web/.next/server/app/_global-error.html +2 -2
  85. package/web/.next/server/app/_global-error.rsc +1 -1
  86. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  87. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  88. package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  89. package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  90. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  91. package/web/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
  92. package/web/.next/server/app/_not-found/page.js.nft.json +1 -1
  93. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  94. package/web/.next/server/app/api/attachments/preview/route.js.nft.json +1 -1
  95. package/web/.next/server/app/settings/page/server-reference-manifest.json +5 -5
  96. package/web/.next/server/app/settings/page.js.nft.json +1 -1
  97. package/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  98. package/web/.next/server/app/skills/page/server-reference-manifest.json +6 -6
  99. package/web/.next/server/app/skills/page.js.nft.json +1 -1
  100. package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  101. package/web/.next/server/app/tools/page/server-reference-manifest.json +6 -6
  102. package/web/.next/server/app/tools/page.js.nft.json +1 -1
  103. package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  104. package/web/.next/server/app/version/page/server-reference-manifest.json +1 -1
  105. package/web/.next/server/app/version/page.js.nft.json +1 -1
  106. package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  107. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js +1 -1
  108. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js.map +1 -1
  109. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_da7eef33.js +1 -1
  110. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_da7eef33.js.map +1 -1
  111. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_0a9251aa.js +1 -1
  112. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_0a9251aa.js.map +1 -1
  113. package/web/.next/server/chunks/ssr/[root-of-the-server]__11033878._.js +1 -1
  114. package/web/.next/server/chunks/ssr/[root-of-the-server]__11033878._.js.map +1 -1
  115. package/web/.next/server/chunks/ssr/[root-of-the-server]__17143953._.js +1 -1
  116. package/web/.next/server/chunks/ssr/[root-of-the-server]__17143953._.js.map +1 -1
  117. package/web/.next/server/chunks/ssr/[root-of-the-server]__357d99f9._.js +1 -1
  118. package/web/.next/server/chunks/ssr/[root-of-the-server]__4be9a9bb._.js +1 -1
  119. package/web/.next/server/chunks/ssr/[root-of-the-server]__4be9a9bb._.js.map +1 -1
  120. package/web/.next/server/chunks/ssr/[root-of-the-server]__5d87af2e._.js +1 -1
  121. package/web/.next/server/chunks/ssr/[root-of-the-server]__9de266fa._.js +1 -1
  122. package/web/.next/server/chunks/ssr/[root-of-the-server]__9de266fa._.js.map +1 -1
  123. package/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js +1 -1
  124. package/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js.map +1 -1
  125. package/web/.next/server/chunks/ssr/[root-of-the-server]__b3a4cef4._.js +1 -1
  126. package/web/.next/server/chunks/ssr/[root-of-the-server]__b3a4cef4._.js.map +1 -1
  127. package/web/.next/server/chunks/ssr/[root-of-the-server]__f0d8d054._.js +2 -2
  128. package/web/.next/server/chunks/ssr/[root-of-the-server]__fdc75809._.js +1 -1
  129. package/web/.next/server/chunks/ssr/[root-of-the-server]__fdc75809._.js.map +1 -1
  130. package/web/.next/server/chunks/ssr/_135edb9c._.js +3 -0
  131. package/web/.next/server/chunks/ssr/{_63868199._.js.map → _135edb9c._.js.map} +1 -1
  132. package/web/.next/server/chunks/ssr/_5860e4e2._.js +3 -0
  133. package/web/.next/server/chunks/ssr/_5860e4e2._.js.map +1 -0
  134. package/web/.next/server/chunks/ssr/_752e01fd._.js +3 -0
  135. package/web/.next/server/chunks/ssr/_752e01fd._.js.map +1 -0
  136. package/web/.next/server/chunks/ssr/_8dacd1e7._.js +1 -1
  137. package/web/.next/server/chunks/ssr/_8dacd1e7._.js.map +1 -1
  138. package/web/.next/server/chunks/ssr/_a68d7e1c._.js +1 -1
  139. package/web/.next/server/chunks/ssr/_a68d7e1c._.js.map +1 -1
  140. package/web/.next/server/chunks/ssr/{_538fb698._.js → _a89aa4ff._.js} +2 -2
  141. package/web/.next/server/chunks/ssr/_a89aa4ff._.js.map +1 -0
  142. package/web/.next/server/chunks/ssr/_cc77a143._.js +3 -0
  143. package/web/.next/server/chunks/ssr/{_1e3cf73b._.js.map → _cc77a143._.js.map} +1 -1
  144. package/web/.next/server/chunks/ssr/_e6f2da4f._.js +7 -0
  145. package/web/.next/server/chunks/ssr/{_34fbed18._.js.map → _e6f2da4f._.js.map} +1 -1
  146. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js +1 -1
  147. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js.map +1 -1
  148. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_021a05f2.js +1 -1
  149. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_021a05f2.js.map +1 -1
  150. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_1fa8042e.js +1 -1
  151. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_1fa8042e.js.map +1 -1
  152. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_24684200.js +1 -1
  153. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_24684200.js.map +1 -1
  154. package/web/.next/server/chunks/ssr/src_presentation_web_c4348b8a._.js +2 -2
  155. package/web/.next/server/chunks/ssr/src_presentation_web_c4348b8a._.js.map +1 -1
  156. package/web/.next/server/chunks/ssr/src_presentation_web_components_bf50c527._.js +3 -0
  157. package/web/.next/server/chunks/ssr/src_presentation_web_components_bf50c527._.js.map +1 -0
  158. package/web/.next/server/chunks/ssr/src_presentation_web_components_de814675._.js +3 -0
  159. package/web/.next/server/chunks/ssr/src_presentation_web_components_de814675._.js.map +1 -0
  160. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js +1 -1
  161. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js.map +1 -1
  162. package/web/.next/server/chunks/ssr/src_presentation_web_e4510d10._.js +2 -2
  163. package/web/.next/server/chunks/ssr/src_presentation_web_e4510d10._.js.map +1 -1
  164. package/web/.next/server/pages/500.html +2 -2
  165. package/web/.next/server/server-reference-manifest.js +1 -1
  166. package/web/.next/server/server-reference-manifest.json +28 -28
  167. package/web/.next/static/chunks/{b465ec0865235136.js → 0c7ff075a27be1eb.js} +1 -1
  168. package/web/.next/static/chunks/1890f388b9c7b8e5.js +1 -0
  169. package/web/.next/static/chunks/1cf313836ab93548.js +1 -0
  170. package/web/.next/static/chunks/3e3eea7add03fbe3.js +1 -0
  171. package/web/.next/static/chunks/50f89c3112f6dd23.css +2 -0
  172. package/web/.next/static/chunks/580e022ac43b698a.js +1 -0
  173. package/web/.next/static/chunks/6d156be81a831afb.js +1 -0
  174. package/web/.next/static/chunks/{80456b789ba11a6e.js → a82e857e615d28ba.js} +2 -2
  175. package/web/.next/static/chunks/{bf47ef0853f7cd07.js → ba7279972c2c9937.js} +2 -2
  176. package/web/.next/static/chunks/d770a3e8d0c547ab.js +1 -0
  177. package/web/.next/static/chunks/f90d7981a2be96b3.js +1 -0
  178. package/dist/src/presentation/web/components/common/task-progress-view/index.d.ts +0 -3
  179. package/dist/src/presentation/web/components/common/task-progress-view/index.d.ts.map +0 -1
  180. package/dist/src/presentation/web/components/common/task-progress-view/index.js +0 -1
  181. package/dist/src/presentation/web/components/common/task-progress-view/task-progress-view.d.ts +0 -6
  182. package/dist/src/presentation/web/components/common/task-progress-view/task-progress-view.d.ts.map +0 -1
  183. package/dist/src/presentation/web/components/common/task-progress-view/task-progress-view.js +0 -84
  184. package/dist/src/presentation/web/components/common/task-progress-view/task-progress-view.stories.d.ts +0 -16
  185. package/dist/src/presentation/web/components/common/task-progress-view/task-progress-view.stories.d.ts.map +0 -1
  186. package/dist/src/presentation/web/components/common/task-progress-view/task-progress-view.stories.js +0 -194
  187. package/web/.next/server/chunks/ssr/_1e3cf73b._.js +0 -3
  188. package/web/.next/server/chunks/ssr/_34fbed18._.js +0 -7
  189. package/web/.next/server/chunks/ssr/_538fb698._.js.map +0 -1
  190. package/web/.next/server/chunks/ssr/_63868199._.js +0 -3
  191. package/web/.next/server/chunks/ssr/_d42594dd._.js +0 -3
  192. package/web/.next/server/chunks/ssr/_d42594dd._.js.map +0 -1
  193. package/web/.next/server/chunks/ssr/node_modules__pnpm_d80c1060._.js +0 -3
  194. package/web/.next/server/chunks/ssr/node_modules__pnpm_d80c1060._.js.map +0 -1
  195. package/web/.next/server/chunks/ssr/src_presentation_web_components_80b5b4bc._.js +0 -3
  196. package/web/.next/server/chunks/ssr/src_presentation_web_components_80b5b4bc._.js.map +0 -1
  197. package/web/.next/server/chunks/ssr/src_presentation_web_components_82416b8f._.js +0 -3
  198. package/web/.next/server/chunks/ssr/src_presentation_web_components_82416b8f._.js.map +0 -1
  199. package/web/.next/static/chunks/1050da43c6e79e00.js +0 -1
  200. package/web/.next/static/chunks/73aa00cc7acb1da9.js +0 -1
  201. package/web/.next/static/chunks/7b3bb6b4c06f0e57.js +0 -1
  202. package/web/.next/static/chunks/810e25b8cff2ff9c.js +0 -1
  203. package/web/.next/static/chunks/91d63f8e429f5900.css +0 -2
  204. package/web/.next/static/chunks/a9be2d1787818114.js +0 -1
  205. package/web/.next/static/chunks/b7f896ba72222351.js +0 -1
  206. package/web/.next/static/chunks/ba06677158538629.js +0 -1
  207. /package/web/.next/static/{Ms9lFDwJuzxaSqweoKuIs → Wigg6jQyfuuW5Wt1mfO5Z}/_buildManifest.js +0 -0
  208. /package/web/.next/static/{Ms9lFDwJuzxaSqweoKuIs → Wigg6jQyfuuW5Wt1mfO5Z}/_clientMiddlewareManifest.json +0 -0
  209. /package/web/.next/static/{Ms9lFDwJuzxaSqweoKuIs → Wigg6jQyfuuW5Wt1mfO5Z}/_ssgManifest.js +0 -0
@@ -0,0 +1 @@
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,54277,30090,e=>{"use strict";let t=(0,e.i(3645).default)("circle-x",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"m9 9 6 6",key:"z0biqf"}]]);e.s(["default",()=>t],30090),e.s(["CircleX",()=>t],54277)},33548,e=>{"use strict";let t=(0,e.i(3645).default)("copy",[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]]);e.s(["Copy",()=>t],33548)},16298,e=>{"use strict";let t=(0,e.i(3645).default)("file-text",[["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"}],["path",{d:"M10 9H8",key:"b1mrlr"}],["path",{d:"M16 13H8",key:"t4e002"}],["path",{d:"M16 17H8",key:"z1uh3a"}]]);e.s(["default",()=>t])},53360,e=>{"use strict";let t=(0,e.i(3645).default)("zap",[["path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",key:"1xq2db"}]]);e.s(["Zap",()=>t],53360)},97667,e=>{"use strict";var t=e.i(1012);e.s(["CheckIcon",()=>t.default])},23925,1012,e=>{"use strict";let t=(0,e.i(3645).default)("check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]);e.s(["default",()=>t],1012),e.s(["Check",()=>t],23925)},23405,e=>{"use strict";var t=e.i(79054);function r(e){let r=t.useRef({value:e,previous:e});return t.useMemo(()=>(r.current.value!==e&&(r.current.previous=r.current.value,r.current.value=e),r.current.previous),[e])}e.s(["usePrevious",()=>r])},41957,e=>{"use strict";var t=e.i(20314),r=e.i(79054),a=e.i(87620),s=r.forwardRef((e,r)=>(0,t.jsx)(a.Primitive.label,{...e,ref:r,onMouseDown:t=>{t.target.closest("button, input, select, textarea")||(e.onMouseDown?.(t),!t.defaultPrevented&&t.detail>1&&t.preventDefault())}}));s.displayName="Label",e.s(["Label",()=>s,"Root",()=>s],27572);var l=e.i(27572),l=l,u=e.i(94237),i=e.i(31777);let n=(0,u.cva)("text-sm leading-none font-medium peer-disabled:cursor-not-allowed peer-disabled:opacity-70"),c=r.forwardRef(({className:e,...r},a)=>(0,t.jsx)(l.Root,{ref:a,className:(0,i.cn)(n(),e),...r}));c.displayName=l.Root.displayName,e.s(["Label",()=>c],41957)},61569,e=>{"use strict";let t=(0,e.i(3645).default)("minus",[["path",{d:"M5 12h14",key:"1ays0h"}]]);e.s(["default",()=>t])},54793,7729,e=>{"use strict";var t=e.i(20314),r=e.i(31777);function a({icon:e,title:a,description:s,action:l,className:u,...i}){return(0,t.jsxs)("div",{className:(0,r.cn)("flex flex-col items-center gap-4 px-4 py-12 text-center",u),...i,children:[e?(0,t.jsx)("div",{className:"text-muted-foreground",children:e}):null,(0,t.jsx)("h3",{className:"text-lg font-semibold",children:a}),s?(0,t.jsx)("p",{className:"text-muted-foreground max-w-md text-sm",children:s}):null,l?(0,t.jsx)("div",{className:"mt-2",children:l}):null]})}e.s(["EmptyState",()=>a],7729),e.s([],54793)},38573,e=>{"use strict";let t=(0,e.i(3645).default)("terminal",[["path",{d:"M12 19h8",key:"baeox8"}],["path",{d:"m4 17 6-6-6-6",key:"1yngyt"}]]);e.s(["Terminal",()=>t],38573)},30702,e=>{"use strict";let t=(0,e.i(3645).default)("external-link",[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]]);e.s(["ExternalLink",()=>t],30702)},81846,e=>{"use strict";var t=e.i(20314),r=e.i(94237),a=e.i(31777);let s=(0,r.cva)("inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:ring-2 focus:ring-ring focus:ring-offset-2 focus:outline-none",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground shadow hover:bg-primary/80",secondary:"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",destructive:"border-transparent bg-destructive text-destructive-foreground shadow hover:bg-destructive/80",outline:"text-foreground"}},defaultVariants:{variant:"default"}});function l({className:e,variant:r,...l}){return(0,t.jsx)("div",{className:(0,a.cn)(s({variant:r}),e),...l})}e.s(["Badge",()=>l])},1650,e=>{"use strict";e.i(11495),e.s([])},19933,e=>{"use strict";let t=(0,e.i(3645).default)("folder-open",[["path",{d:"m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2",key:"usdka0"}]]);e.s(["FolderOpen",()=>t],19933)},8986,73996,15196,37647,e=>{"use strict";let t=(0,e.i(3645).default)("code-xml",[["path",{d:"m18 16 4-4-4-4",key:"1inbqp"}],["path",{d:"m6 8-4 4 4 4",key:"15zrgr"}],["path",{d:"m14.5 4-5 16",key:"e7oirm"}]]);e.s(["Code2",()=>t],8986);var r=e.i(21023);let a=(0,r.createServerReference)("4032762ec55eb3dcd7a1d22bee5f78a9b9845da700",r.callServer,void 0,r.findSourceMapURL,"openIde");e.s(["openIde",()=>a],73996);let s=(0,r.createServerReference)("40ac0951e383ed57d3150edcd551071dbe1e0c6dcb",r.callServer,void 0,r.findSourceMapURL,"openShell");e.s(["openShell",()=>s],15196);let l=(0,r.createServerReference)("40726a076a1643949b4389bd883e8baac5b420a688",r.callServer,void 0,r.findSourceMapURL,"openFolder");e.s(["openFolder",()=>l],37647)},76852,e=>{"use strict";var t=e.i(79054),r=e.i(73996),a=e.i(15196),s=e.i(37647);function l(e){let[l,u]=(0,t.useState)(!1),[i,n]=(0,t.useState)(!1),[c,o]=(0,t.useState)(!1),[d,p]=(0,t.useState)(null),[f,h]=(0,t.useState)(null),[y,m]=(0,t.useState)(null),v=(0,t.useRef)(null),x=(0,t.useRef)(null),b=(0,t.useRef)(null);(0,t.useEffect)(()=>()=>{v.current&&clearTimeout(v.current),x.current&&clearTimeout(x.current),b.current&&clearTimeout(b.current)},[]);let k=(0,t.useCallback)(async(t,r,a,s,l)=>{if(e&&!l){s.current&&clearTimeout(s.current),r(!0),a(null);try{let e=await t();if(!e.success){let t=e.error??"An unexpected error occurred";a(t),s.current=setTimeout(()=>a(null),5e3)}}catch(e){a(e instanceof Error?e.message:"An unexpected error occurred"),s.current=setTimeout(()=>a(null),5e3)}finally{r(!1)}}},[e]);return{openInIde:(0,t.useCallback)(()=>k(()=>(0,r.openIde)({repositoryPath:e.repositoryPath}),u,p,v,l),[k,l,e]),openInShell:(0,t.useCallback)(()=>k(()=>(0,a.openShell)({repositoryPath:e.repositoryPath}),n,h,x,i),[k,i,e]),openFolder:(0,t.useCallback)(()=>k(()=>(0,s.openFolder)(e.repositoryPath),o,m,b,c),[k,c,e]),ideLoading:l,shellLoading:i,folderLoading:c,ideError:d,shellError:f,folderError:y}}e.s(["useRepositoryActions",()=>l])}]);
@@ -0,0 +1 @@
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,95230,e=>{"use strict";let t=(0,e.i(3645).default)("download",[["path",{d:"M12 15V3",key:"m9g1x1"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["path",{d:"m7 10 5 5 5-5",key:"brsn70"}]]);e.s(["default",()=>t])},11345,e=>{"use strict";let t=(0,e.i(3645).default)("chevron-left",[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]]);e.s(["ChevronLeft",()=>t],11345)},76016,e=>{"use strict";let t=(0,e.i(3645).default)("chevron-right",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]);e.s(["ChevronRight",()=>t],76016)},90382,e=>{"use strict";var t=e.i(20314),r=e.i(79054),a=e.i(91967),o=e.i(5978),s=e.i(22528),n=e.i(53532),i=e.i(41687),l=e.i(56720),d=e.i(13123),c=e.i(52740),u=e.i(39979),p=e.i(85995),h=e.i(87620),m=e.i(86874),f=e.i(36589),x=e.i(73772),g=e.i(13044),v="Popover",[b,j]=(0,s.createContextScope)(v,[c.createPopperScope]),w=(0,c.createPopperScope)(),[y,C]=b(v),k=e=>{let{__scopePopover:a,children:o,open:s,defaultOpen:n,onOpenChange:i,modal:l=!1}=e,u=w(a),p=r.useRef(null),[h,m]=r.useState(!1),[x,g]=(0,f.useControllableState)({prop:s,defaultProp:n??!1,onChange:i,caller:v});return(0,t.jsx)(c.Root,{...u,children:(0,t.jsx)(y,{scope:a,contentId:(0,d.useId)(),triggerRef:p,open:x,onOpenChange:g,onOpenToggle:r.useCallback(()=>g(e=>!e),[g]),hasCustomAnchor:h,onCustomAnchorAdd:r.useCallback(()=>m(!0),[]),onCustomAnchorRemove:r.useCallback(()=>m(!1),[]),modal:l,children:o})})};k.displayName=v;var N="PopoverAnchor",P=r.forwardRef((e,a)=>{let{__scopePopover:o,...s}=e,n=C(N,o),i=w(o),{onCustomAnchorAdd:l,onCustomAnchorRemove:d}=n;return r.useEffect(()=>(l(),()=>d()),[l,d]),(0,t.jsx)(c.Anchor,{...i,...s,ref:a})});P.displayName=N;var T="PopoverTrigger",S=r.forwardRef((e,r)=>{let{__scopePopover:s,...n}=e,i=C(T,s),l=w(s),d=(0,o.useComposedRefs)(r,i.triggerRef),u=(0,t.jsx)(h.Primitive.button,{type:"button","aria-haspopup":"dialog","aria-expanded":i.open,"aria-controls":i.contentId,"data-state":H(i.open),...n,ref:d,onClick:(0,a.composeEventHandlers)(e.onClick,i.onOpenToggle)});return i.hasCustomAnchor?u:(0,t.jsx)(c.Anchor,{asChild:!0,...l,children:u})});S.displayName=T;var R="PopoverPortal",[A,D]=b(R,{forceMount:void 0}),F=e=>{let{__scopePopover:r,forceMount:a,children:o,container:s}=e,n=C(R,r);return(0,t.jsx)(A,{scope:r,forceMount:a,children:(0,t.jsx)(p.Presence,{present:a||n.open,children:(0,t.jsx)(u.Portal,{asChild:!0,container:s,children:o})})})};F.displayName=R;var E="PopoverContent",M=r.forwardRef((e,r)=>{let a=D(E,e.__scopePopover),{forceMount:o=a.forceMount,...s}=e,n=C(E,e.__scopePopover);return(0,t.jsx)(p.Presence,{present:o||n.open,children:n.modal?(0,t.jsx)(z,{...s,ref:r}):(0,t.jsx)(I,{...s,ref:r})})});M.displayName=E;var O=(0,m.createSlot)("PopoverContent.RemoveScroll"),z=r.forwardRef((e,s)=>{let n=C(E,e.__scopePopover),i=r.useRef(null),l=(0,o.useComposedRefs)(s,i),d=r.useRef(!1);return r.useEffect(()=>{let e=i.current;if(e)return(0,x.hideOthers)(e)},[]),(0,t.jsx)(g.RemoveScroll,{as:O,allowPinchZoom:!0,children:(0,t.jsx)(L,{...e,ref:l,trapFocus:n.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:(0,a.composeEventHandlers)(e.onCloseAutoFocus,e=>{e.preventDefault(),d.current||n.triggerRef.current?.focus()}),onPointerDownOutside:(0,a.composeEventHandlers)(e.onPointerDownOutside,e=>{let t=e.detail.originalEvent,r=0===t.button&&!0===t.ctrlKey;d.current=2===t.button||r},{checkForDefaultPrevented:!1}),onFocusOutside:(0,a.composeEventHandlers)(e.onFocusOutside,e=>e.preventDefault(),{checkForDefaultPrevented:!1})})})}),I=r.forwardRef((e,a)=>{let o=C(E,e.__scopePopover),s=r.useRef(!1),n=r.useRef(!1);return(0,t.jsx)(L,{...e,ref:a,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:t=>{e.onCloseAutoFocus?.(t),t.defaultPrevented||(s.current||o.triggerRef.current?.focus(),t.preventDefault()),s.current=!1,n.current=!1},onInteractOutside:t=>{e.onInteractOutside?.(t),t.defaultPrevented||(s.current=!0,"pointerdown"===t.detail.originalEvent.type&&(n.current=!0));let r=t.target;o.triggerRef.current?.contains(r)&&t.preventDefault(),"focusin"===t.detail.originalEvent.type&&n.current&&t.preventDefault()}})}),L=r.forwardRef((e,r)=>{let{__scopePopover:a,trapFocus:o,onOpenAutoFocus:s,onCloseAutoFocus:d,disableOutsidePointerEvents:u,onEscapeKeyDown:p,onPointerDownOutside:h,onFocusOutside:m,onInteractOutside:f,...x}=e,g=C(E,a),v=w(a);return(0,i.useFocusGuards)(),(0,t.jsx)(l.FocusScope,{asChild:!0,loop:!0,trapped:o,onMountAutoFocus:s,onUnmountAutoFocus:d,children:(0,t.jsx)(n.DismissableLayer,{asChild:!0,disableOutsidePointerEvents:u,onInteractOutside:f,onEscapeKeyDown:p,onPointerDownOutside:h,onFocusOutside:m,onDismiss:()=>g.onOpenChange(!1),children:(0,t.jsx)(c.Content,{"data-state":H(g.open),role:"dialog",id:g.contentId,...v,...x,ref:r,style:{...x.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)"}})})})}),U="PopoverClose",B=r.forwardRef((e,r)=>{let{__scopePopover:o,...s}=e,n=C(U,o);return(0,t.jsx)(h.Primitive.button,{type:"button",...s,ref:r,onClick:(0,a.composeEventHandlers)(e.onClick,()=>n.onOpenChange(!1))})});B.displayName=U;var $=r.forwardRef((e,r)=>{let{__scopePopover:a,...o}=e,s=w(a);return(0,t.jsx)(c.Arrow,{...s,...o,ref:r})});function H(e){return e?"open":"closed"}$.displayName="PopoverArrow",e.s(["Anchor",()=>P,"Arrow",()=>$,"Close",()=>B,"Content",()=>M,"Popover",()=>k,"PopoverAnchor",()=>P,"PopoverArrow",()=>$,"PopoverClose",()=>B,"PopoverContent",()=>M,"PopoverPortal",()=>F,"PopoverTrigger",()=>S,"Portal",()=>F,"Root",()=>k,"Trigger",()=>S,"createPopoverScope",()=>j],89920);var q=e.i(89920),q=q,G=e.i(31777);let _=q.Root,K=q.Trigger;q.Anchor;let X=r.forwardRef(({className:e,align:r="center",sideOffset:a=4,...o},s)=>(0,t.jsx)(q.Portal,{children:(0,t.jsx)(q.Content,{ref:s,align:r,sideOffset:a,className:(0,G.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",e),...o})}));X.displayName=q.Content.displayName,e.s(["Popover",()=>_,"PopoverContent",()=>X,"PopoverTrigger",()=>K],90382)},51911,93752,90204,81376,e=>{"use strict";var t=e.i(20314),r=e.i(79054),a=e.i(91967),o=e.i(5978),s=e.i(22528),n=e.i(36589),i=e.i(23405),l=e.i(77624),d=e.i(87620),c="Switch",[u,p]=(0,s.createContextScope)(c),[h,m]=u(c),f=r.forwardRef((e,s)=>{let{__scopeSwitch:i,name:l,checked:u,defaultChecked:p,required:m,disabled:f,value:x="on",onCheckedChange:g,form:j,...w}=e,[y,C]=r.useState(null),k=(0,o.useComposedRefs)(s,e=>C(e)),N=r.useRef(!1),P=!y||j||!!y.closest("form"),[T,S]=(0,n.useControllableState)({prop:u,defaultProp:p??!1,onChange:g,caller:c});return(0,t.jsxs)(h,{scope:i,checked:T,disabled:f,children:[(0,t.jsx)(d.Primitive.button,{type:"button",role:"switch","aria-checked":T,"aria-required":m,"data-state":b(T),"data-disabled":f?"":void 0,disabled:f,value:x,...w,ref:k,onClick:(0,a.composeEventHandlers)(e.onClick,e=>{S(e=>!e),P&&(N.current=e.isPropagationStopped(),N.current||e.stopPropagation())})}),P&&(0,t.jsx)(v,{control:y,bubbles:!N.current,name:l,value:x,checked:T,required:m,disabled:f,form:j,style:{transform:"translateX(-100%)"}})]})});f.displayName=c;var x="SwitchThumb",g=r.forwardRef((e,r)=>{let{__scopeSwitch:a,...o}=e,s=m(x,a);return(0,t.jsx)(d.Primitive.span,{"data-state":b(s.checked),"data-disabled":s.disabled?"":void 0,...o,ref:r})});g.displayName=x;var v=r.forwardRef(({__scopeSwitch:e,control:a,checked:s,bubbles:n=!0,...d},c)=>{let u=r.useRef(null),p=(0,o.useComposedRefs)(u,c),h=(0,i.usePrevious)(s),m=(0,l.useSize)(a);return r.useEffect(()=>{let e=u.current;if(!e)return;let t=Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype,"checked").set;if(h!==s&&t){let r=new Event("click",{bubbles:n});t.call(e,s),e.dispatchEvent(r)}},[h,s,n]),(0,t.jsx)("input",{type:"checkbox","aria-hidden":!0,defaultChecked:s,...d,tabIndex:-1,ref:p,style:{...d.style,...m,position:"absolute",pointerEvents:"none",opacity:0,margin:0}})});function b(e){return e?"checked":"unchecked"}v.displayName="SwitchBubbleInput",e.s(["Root",()=>f,"Switch",()=>f,"SwitchThumb",()=>g,"Thumb",()=>g,"createSwitchScope",()=>p],95291);var j=e.i(95291),j=j,w=e.i(31777);function y({className:e,size:r="default",...a}){return(0,t.jsx)(j.Root,{"data-slot":"switch","data-size":r,className:(0,w.cn)("peer group/switch focus-visible:border-ring focus-visible:ring-ring/50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input dark:data-[state=unchecked]:bg-input/80 inline-flex shrink-0 cursor-pointer items-center rounded-full border border-transparent shadow-xs transition-all outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-[1.15rem] data-[size=default]:w-8 data-[size=sm]:h-3.5 data-[size=sm]:w-6",e),...a,children:(0,t.jsx)(j.Thumb,{"data-slot":"switch-thumb",className:(0,w.cn)("bg-background dark:data-[state=checked]:bg-primary-foreground dark:data-[state=unchecked]:bg-foreground pointer-events-none block rounded-full ring-0 transition-transform group-data-[size=default]/switch:size-4 group-data-[size=sm]/switch:size-3 data-[state=checked]:translate-x-[calc(100%-2px)] data-[state=unchecked]:translate-x-0")})})}e.s(["Switch",()=>y],51911);let C=(0,e.i(3645).default)("code",[["path",{d:"m16 18 6-6-6-6",key:"eg8j8"}],["path",{d:"m8 6-6 6 6 6",key:"ppft3o"}]]);e.s(["default",()=>C],93752);var k=e.i(21023);let N=(0,k.createServerReference)("002f6aab21b62afd5b83039836f3c146c3acf7121d",k.callServer,void 0,k.findSourceMapURL,"getAllAgentModels");e.s(["getAllAgentModels",()=>N],90204);let P=(0,k.createServerReference)("60a6e8251c0b74ecee046042e74a6c2857757704cc",k.callServer,void 0,k.findSourceMapURL,"updateAgentAndModel");e.s(["updateAgentAndModel",()=>P],81376)},41413,e=>{"use strict";var t=e.i(20314),r=e.i(79054),a=e.i(23925),o=e.i(11345),s=e.i(76016),n=e.i(90204),i=e.i(81376),l=e.i(86782),d=e.i(29847),c=e.i(35364),u=e.i(90382),p=e.i(31777);function h({initialAgentType:e,initialModel:h,onAgentModelChange:m,disabled:f,className:x,mode:g}){let[v,b]=r.useState(!1),[j,w]=r.useState([]),[y,C]=r.useState(!0),[k,N]=r.useState(e),[P,T]=r.useState(h),[S,R]=r.useState(null),[A,D]=r.useState(0),[F,E]=r.useState(null);r.useEffect(()=>{(0,n.getAllAgentModels)().then(w).finally(()=>C(!1))},[]),r.useEffect(()=>{if(!v){let e=setTimeout(()=>{D(0),E(null)},150);return()=>clearTimeout(e)}},[v]);let M=async(e,t)=>{if(b(!1),e!==k||t!==P){if("override"===g){N(e),T(t),m?.(e,t);return}N(e),T(t),m?.(e,t),R(null);try{let r=await (0,i.updateAgentAndModel)(e,t||null);r.ok||(N(k),T(P),m?.(k,P),R(r.error??"Failed to save"))}catch{N(k),T(P),m?.(k,P),R("Failed to save")}}},O=(0,l.getAgentTypeIcon)(k),z=j.find(e=>e.agentType===k)?.label??k,I=P?(0,d.getModelMeta)(P).displayName||P:null,L=F?j.find(e=>e.agentType===F):null;return(0,t.jsxs)("div",{className:(0,p.cn)("flex flex-col gap-1",x),children:[(0,t.jsxs)(u.Popover,{open:v,onOpenChange:b,children:[(0,t.jsx)(u.PopoverTrigger,{asChild:!0,children:(0,t.jsx)(c.Button,{variant:"outline",role:"combobox","aria-expanded":v,disabled:(f??!1)||y,className:"w-auto cursor-pointer justify-start font-normal hover:border-violet-300 hover:bg-violet-50/50 dark:hover:border-violet-700 dark:hover:bg-violet-950/30",children:(0,t.jsxs)("span",{className:"flex items-center gap-2 truncate",children:[(0,t.jsx)(O,{className:"h-4 w-4 shrink-0"}),y?"Loading…":(0,t.jsxs)("span",{className:"flex items-center gap-1",children:[(0,t.jsx)("span",{className:"text-muted-foreground text-xs",children:z}),I?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("span",{className:"text-muted-foreground/50 text-xs",children:"·"}),(0,t.jsx)("span",{className:"text-xs font-medium",children:I})]}):null]})]})})}),(0,t.jsx)(u.PopoverContent,{className:"w-(--radix-popover-trigger-width) overflow-hidden p-0",align:"start",children:(0,t.jsxs)("div",{className:"flex transition-transform duration-200 ease-in-out",style:{transform:`translateX(${1===A?"-50%":"0%"})`,width:"200%"},children:[(0,t.jsxs)("div",{className:"w-1/2 shrink-0",children:[(0,t.jsx)("div",{className:"text-muted-foreground border-b px-3 py-2 text-xs font-medium",children:"Select agent"}),j.map(e=>{let r=(0,l.getAgentTypeIcon)(e.agentType),o=k===e.agentType,n=e.models.length>0;return(0,t.jsxs)("button",{type:"button",className:(0,p.cn)("flex w-full cursor-pointer items-center gap-2.5 px-3 py-2 text-xs transition-colors","hover:bg-accent hover:text-accent-foreground",o&&"bg-accent/50"),onClick:()=>{n?(E(e.agentType),requestAnimationFrame(()=>{requestAnimationFrame(()=>D(1))})):M(e.agentType,"")},children:[(0,t.jsx)(r,{className:"h-4 w-4 shrink-0"}),(0,t.jsx)("span",{className:"flex-1 text-left",children:e.label}),o&&!n?(0,t.jsx)(a.Check,{className:"text-primary h-3.5 w-3.5 shrink-0"}):null,n?(0,t.jsx)(s.ChevronRight,{className:"text-muted-foreground h-3.5 w-3.5 shrink-0"}):null]},e.agentType)})]}),(0,t.jsx)("div",{className:"w-1/2 shrink-0",children:L?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("button",{type:"button",className:"text-muted-foreground hover:text-foreground flex w-full cursor-pointer items-center gap-1.5 border-b px-3 py-2 text-xs font-medium transition-colors",onClick:()=>{D(0),setTimeout(()=>E(null),220)},children:[(0,t.jsx)(o.ChevronLeft,{className:"h-3.5 w-3.5"}),L.label]}),L.models.map(e=>{let r=k===L.agentType&&P===e.id;return(0,t.jsxs)("button",{type:"button",className:(0,p.cn)("flex w-full cursor-pointer items-center gap-3 px-3 py-2 text-left transition-colors","hover:bg-accent hover:text-accent-foreground",r&&"bg-accent/50"),onClick:()=>M(L.agentType,e.id),children:[(0,t.jsxs)("div",{className:"flex min-w-0 flex-1 flex-col",children:[(0,t.jsx)("span",{className:"text-xs font-medium",children:e.displayName}),(0,t.jsx)("span",{className:"text-muted-foreground text-xs",children:e.description})]}),r?(0,t.jsx)(a.Check,{className:"text-primary h-3.5 w-3.5 shrink-0"}):null]},e.id)})]}):null})]})})]}),!!S&&(0,t.jsx)("p",{className:"text-destructive text-sm",children:S})]})}e.s(["AgentModelPicker",()=>h])},15203,e=>{"use strict";var t=e.i(20314),r=e.i(79054),a=e.i(31406),o=e.i(60112),s=e.i(21023);let n=(0,s.createServerReference)("407e1d80a44a79674af4327fe17ce8b8380fab2160",s.callServer,void 0,s.findSourceMapURL,"createFeature");var i=e.i(3645);let l=(0,i.default)("paperclip",[["path",{d:"m16 6-8.414 8.586a2 2 0 0 0 2.829 2.829l8.414-8.586a4 4 0 1 0-5.657-5.657l-8.379 8.551a6 6 0 1 0 8.485 8.485l8.379-8.551",key:"1miecu"}]]),d=(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 c=e.i(97667),u=e.i(53360),p=e.i(31777),h=e.i(8361);e.i(1650);var m=e.i(11495),f=e.i(45811),x=e.i(35364),g=e.i(98127);function v({className:e,...r}){return(0,t.jsx)("textarea",{"data-slot":"textarea",className:(0,p.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",e),...r})}var b=e.i(41957),j=e.i(81846),w=e.i(90382),y=e.i(51911),C=e.i(2828),k=e.i(30153),N=e.i(60253),P=e.i(15506),P=P,T=e.i(95230),T=T,S=e.i(2287),R=e.i(1693),R=R;let A=(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 D=e.i(16298),D=D;let F=(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"}]]);var E=e.i(93752),E=E;let M=new Set([".png",".jpg",".jpeg",".gif",".svg",".webp",".ico",".bmp"]),O=new Set([".ts",".tsx",".js",".jsx",".json",".yaml",".yml",".xml",".html",".css",".md"]);function z(e){if(0===e)return"0 B";let t=Math.floor(Math.log(e)/Math.log(1024));return`${(e/Math.pow(1024,t)).toFixed(+(0!==t))} ${["B","KB","MB","GB"][t]}`}let I=new Set([".png",".jpg",".jpeg",".gif",".svg",".webp",".ico",".bmp"]);function L(e,t){let r=new URLSearchParams({path:e,mimeType:t});return`/api/attachments/preview?${r.toString()}`}function U({name:e,size:r,mimeType:a,path:o,onRemove:s,loading:n=!1,disabled:i=!1}){let l,d,c=(l=e.lastIndexOf("."))>=0?e.slice(l).toLowerCase():"",u=M.has(c)?F:".pdf"===c?D.default:O.has(c)?E.default:A,h=".pdf"===c?"bg-red-50 text-red-600":M.has(c)?"bg-blue-50 text-blue-600":O.has(c)?"bg-emerald-50 text-emerald-600":"bg-gray-50 text-gray-600",m=(d=e.lastIndexOf("."))>=0&&I.has(e.slice(d).toLowerCase());return n?(0,t.jsx)("div",{className:"flex h-12 w-12 items-center justify-center rounded-md border",children:(0,t.jsx)(P.default,{className:"text-muted-foreground h-5 w-5 animate-spin"})}):m?(0,t.jsxs)(S.Dialog,{children:[(0,t.jsxs)("div",{className:"group relative",children:[(0,t.jsx)(S.DialogTrigger,{asChild:!0,children:(0,t.jsx)("img",{src:L(o,a),alt:e,title:e,className:"h-12 w-12 cursor-pointer rounded-md border object-cover transition-opacity hover:opacity-80"})}),!i&&(0,t.jsx)("button",{type:"button",onClick:s,className:"absolute -top-1.5 -right-1.5 hidden h-5 w-5 cursor-pointer items-center justify-center rounded-full bg-black/70 text-white group-hover:flex","aria-label":`Remove ${e}`,children:(0,t.jsx)(N.X,{className:"h-3 w-3"})})]}),(0,t.jsxs)(S.DialogContent,{className:"max-w-3xl gap-0 overflow-hidden border-0 p-0 [&>button:last-child]:!cursor-pointer [&>button:last-child]:!rounded-full [&>button:last-child]:!bg-black/70 [&>button:last-child]:!p-1.5 [&>button:last-child]:!text-white [&>button:last-child]:!opacity-100 [&>button:last-child]:!shadow-lg [&>button:last-child]:!backdrop-blur-md [&>button:last-child]:hover:!bg-black/90",children:[(0,t.jsx)(R.Root,{children:(0,t.jsxs)(S.DialogTitle,{children:["Preview: ",e]})}),(0,t.jsx)("div",{className:"relative bg-black/90",children:(0,t.jsx)("img",{src:L(o,a),alt:e,className:"h-auto max-h-[70vh] w-full object-contain"})}),(0,t.jsxs)("div",{className:"bg-background flex items-center gap-3 px-4 py-3",children:[(0,t.jsxs)("div",{className:"flex min-w-0 flex-1 flex-col",children:[(0,t.jsx)("span",{className:"truncate text-sm font-medium",children:e}),(0,t.jsx)("span",{className:"text-muted-foreground text-xs",children:z(r)})]}),(0,t.jsx)("a",{href:L(o,a),download:e,className:"text-muted-foreground hover:text-foreground shrink-0 cursor-pointer rounded p-1.5 transition-colors","aria-label":`Download ${e}`,children:(0,t.jsx)(T.default,{className:"h-4 w-4"})})]})]})]}):(0,t.jsxs)("div",{className:"group relative flex items-center gap-2 rounded-full border py-1 pr-3 pl-2",children:[(0,t.jsx)("div",{className:(0,p.cn)("flex h-6 w-6 shrink-0 items-center justify-center rounded-full",h),children:(0,t.jsx)(u,{className:"h-3 w-3"})}),(0,t.jsx)("span",{className:"max-w-[120px] truncate text-sm",children:e}),(0,t.jsx)("span",{className:"text-muted-foreground text-xs",children:z(r)}),!i&&(0,t.jsx)("button",{type:"button",onClick:s,className:"absolute -top-1.5 -right-1.5 hidden h-5 w-5 cursor-pointer items-center justify-center rounded-full bg-black/70 text-white group-hover:flex","aria-label":`Remove ${e}`,children:(0,t.jsx)(N.X,{className:"h-3 w-3"})})]})}var B=e.i(41413);async function $(){let e=await fetch("/api/dialog/pick-files",{method:"POST"});if(!e.ok)throw Error("Failed to open file dialog");let t=await e.json();return t.cancelled?null:t.files}let H=new Set([".png",".jpg",".jpeg",".gif",".webp",".svg",".bmp",".ico",".pdf",".doc",".docx",".xls",".xlsx",".ppt",".pptx",".txt",".md",".csv",".json",".yaml",".yml",".xml",".ts",".tsx",".js",".jsx",".py",".rb",".go",".rs",".java",".c",".cpp",".h",".hpp",".cs",".swift",".kt",".html",".css",".scss",".less",".sh",".bash",".zsh",".fish",".toml",".ini",".cfg",".conf",".env",".zip",".tar",".gz",".log"]),q=[{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."}],G={allowPrd:!1,allowPlan:!1,allowMerge:!1};function _({open:e,onClose:a,onSubmit:o,repositoryPath:s,isSubmitting:n=!1,workflowDefaults:i,features:d,initialParentId:c,currentAgentType:g,currentModel:w}){let N=(0,h.useSoundAction)("create"),P=i?.approvalGates??G,T=i?.push??!1,S=i?.openPr??!1,[R,A]=(0,r.useState)(""),[D,F]=(0,r.useState)([]),[E,M]=(0,r.useState)({...P}),[O,z]=(0,r.useState)(T),[I,L]=(0,r.useState)(S),[_,X]=(0,r.useState)(void 0),[V,W]=(0,r.useState)(!1),[Z,Y]=(0,r.useState)(void 0),[J,Q]=(0,r.useState)(void 0),[ee,et]=(0,r.useState)(!1),[er,ea]=(0,r.useState)(null),eo=(0,r.useRef)(crypto.randomUUID()),es=(0,r.useRef)(0);(0,r.useEffect)(()=>{i&&(M({...i.approvalGates}),z(i.push),L(i.openPr))},[i]),(0,r.useEffect)(()=>{e&&c&&X(c)},[e,c]);let en=(0,r.useCallback)(()=>{A(""),F([]),M({...P}),z(T),L(S),X(void 0),W(!1),Y(void 0),Q(void 0),ea(null),es.current=0,et(!1)},[P,T,S]),ei=""!==R.trim()||D.length>0,{attemptClose:el}=(0,k.useGuardedDrawerClose)({open:e,isDirty:ei,onClose:a,onReset:en}),ed=(0,r.useCallback)(async e=>{for(let t of(ea(null),e)){if(t.size>0xa00000)return void ea(`"${t.name}" exceeds 10 MB limit`);let e=function(e){let t=e.lastIndexOf(".");return t>=0?e.slice(t).toLowerCase():""}(t.name);if(e&&!H.has(e))return void ea(`File type "${e}" is not allowed`)}for(let t of e){let e=crypto.randomUUID();F(r=>[...r,{id:e,name:t.name,size:t.size,mimeType:t.type||"application/octet-stream",path:"",loading:!0}]);try{let r=new FormData;r.append("file",t),r.append("sessionId",eo.current);let a=await fetch("/api/attachments/upload",{method:"POST",body:r});if(!a.ok){let t=await a.json().catch(()=>({error:"Upload failed"}));F(t=>t.filter(t=>t.id!==e)),ea(t.error??"Upload failed");return}let o=await a.json();F(t=>t.some(t=>t.id!==e&&t.path===o.path)?t.filter(t=>t.id!==e):t.map(t=>t.id===e?{...o,id:e,loading:!1}:t))}catch{F(t=>t.filter(t=>t.id!==e)),ea("Upload failed")}}},[]),ec=(0,r.useCallback)(e=>{e.preventDefault(),e.stopPropagation(),es.current+=1,1===es.current&&et(!0)},[]),eu=(0,r.useCallback)(e=>{e.preventDefault(),e.stopPropagation(),es.current-=1,0===es.current&&et(!1)},[]),ep=(0,r.useCallback)(e=>{e.preventDefault(),e.stopPropagation()},[]),eh=(0,r.useCallback)(e=>{e.preventDefault(),e.stopPropagation(),es.current=0,et(!1);let t=Array.from(e.dataTransfer.files);t.length>0&&ed(t)},[ed]),em=(0,r.useCallback)(e=>{let t=e.clipboardData?.items;if(!t)return;let r=[];for(let e of Array.from(t))if("file"===e.kind){let t=e.getAsFile();t&&r.push(t)}r.length>0&&(e.preventDefault(),ed(r))},[ed]),ef=(0,r.useCallback)(e=>{e.preventDefault(),R.trim()&&(N.play(),o({description:R.trim(),attachments:D.filter(e=>!e.loading),repositoryPath:s,approvalGates:{allowPrd:E.allowPrd??!1,allowPlan:E.allowPlan??!1,allowMerge:E.allowMerge??!1},push:O||I,openPr:I,fast:V,...Z?{agentType:Z}:{},...J?{model:J}:{},..._?{parentId:_}:{},sessionId:eo.current}),en())},[R,D,E,s,o,O,I,V,Z,J,_,N,en]),ex=(0,r.useCallback)(async()=>{try{let e=await $();e&&F(t=>{let r=new Set(t.map(e=>e.path)),a=e.filter(e=>!r.has(e.path)).map(e=>({id:crypto.randomUUID(),name:e.name,size:e.size,mimeType:"application/octet-stream",path:e.path}));return a.length>0?[...t,...a]:t})}catch{}},[]),eg=(0,r.useCallback)(e=>{F(t=>t.filter(t=>t.id!==e))},[]),ev=(0,r.useRef)(null),eb=(0,r.useCallback)(e=>{(e.ctrlKey||e.metaKey)&&"Enter"===e.key&&(e.preventDefault(),ev.current?.requestSubmit())},[]),ej=d&&d.length>0;return(0,t.jsx)(m.BaseDrawer,{open:e,onClose:el,size:"md",modal:!1,dismissOnOutsideClick:!0,"data-testid":"feature-create-drawer",header:(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)("div",{className:"h-2.5 w-2.5 shrink-0 rounded-full bg-blue-500"}),(0,t.jsx)(f.DrawerTitle,{children:"NEW FEATURE"})]}),n?(0,t.jsx)(f.DrawerDescription,{asChild:!0,children:(0,t.jsx)("div",{children:(0,t.jsx)(j.Badge,{variant:"secondary",children:"Creating..."})})}):null]}),footer:(0,t.jsxs)("div",{className:"flex flex-row justify-end gap-2",children:[(0,t.jsx)(x.Button,{variant:"outline",onClick:el,disabled:n,children:"Cancel"}),(0,t.jsx)(x.Button,{type:"submit",form:"create-feature-form",disabled:!R.trim()||n,children:n?"Creating...":"+ Create Feature"})]}),children:(0,t.jsx)("div",{className:"overflow-y-auto p-4",children:(0,t.jsx)(C.TooltipProvider,{delayDuration:400,children:(0,t.jsxs)("form",{ref:ev,id:"create-feature-form",onSubmit:ef,className:"flex flex-col gap-4",children:[(0,t.jsxs)("div",{role:"region","aria-label":"File drop zone","data-drag-over":ee?"true":"false",onDragEnter:ec,onDragLeave:eu,onDragOver:ep,onDrop:eh,className:(0,p.cn)("flex flex-col gap-1.5 rounded-md border-2 border-transparent p-1 transition-colors",ee&&"border-primary/50 bg-primary/5"),children:[(0,t.jsx)(b.Label,{htmlFor:"feature-description",className:"text-muted-foreground text-xs font-semibold tracking-wider",children:"DESCRIBE YOUR FEATURE"}),(0,t.jsxs)("div",{className:"border-input focus-within:ring-ring/50 focus-within:border-ring flex h-56 flex-col overflow-hidden rounded-md border shadow-xs transition-[color,box-shadow] focus-within:ring-[3px]",children:[(0,t.jsx)(v,{id:"feature-description",placeholder:"e.g. Add GitHub OAuth login with callback handling and token refresh...",value:R,onChange:e=>A(e.target.value),onKeyDown:eb,onPaste:em,required:!0,disabled:n,className:"min-h-0 flex-1 resize-none rounded-none border-0 shadow-none focus-visible:ring-0"}),D.length>0&&(0,t.jsx)("div",{className:"flex flex-wrap items-center gap-1.5 px-3 py-2",children:D.map(e=>(0,t.jsx)(U,{name:e.name,size:e.size,mimeType:e.mimeType,path:e.path,onRemove:()=>eg(e.id),disabled:n,loading:e.loading},e.id))}),er?(0,t.jsx)("p",{className:"text-destructive px-3 pb-2 text-xs",children:er}):null,(0,t.jsxs)("div",{className:"border-input flex items-center gap-3 border-t px-3 py-1.5",children:[(0,t.jsx)(B.AgentModelPicker,{initialAgentType:Z??g??"claude-code",initialModel:J??w??"claude-sonnet-4-6",mode:"override",onAgentModelChange:(e,t)=>{Y(e),Q(t)},disabled:n,className:"w-55"}),(0,t.jsxs)(C.Tooltip,{children:[(0,t.jsx)(C.TooltipTrigger,{asChild:!0,children:(0,t.jsxs)("div",{className:"ml-auto flex cursor-pointer items-center gap-2",children:[(0,t.jsx)(y.Switch,{id:"fast-mode",checked:V,onCheckedChange:W,disabled:n}),(0,t.jsxs)(b.Label,{htmlFor:"fast-mode",className:"flex cursor-pointer items-center gap-1 text-sm font-medium",children:[(0,t.jsx)(u.Zap,{className:"h-3.5 w-3.5"}),"Fast Mode"]})]})}),(0,t.jsx)(C.TooltipContent,{side:"bottom",children:"Skip SDLC phases and implement directly from your prompt."})]}),(0,t.jsxs)(C.Tooltip,{children:[(0,t.jsx)(C.TooltipTrigger,{asChild:!0,children:(0,t.jsx)("button",{type:"button",onClick:ex,disabled:n,"aria-label":"Attach files",className:"text-muted-foreground hover:text-foreground cursor-pointer rounded p-1 transition-colors",children:(0,t.jsx)(l,{className:"h-4 w-4"})})}),(0,t.jsx)(C.TooltipContent,{side:"bottom",children:"Attach files"})]})]})]})]}),ej&&void 0!==c?(0,t.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,t.jsx)(b.Label,{htmlFor:"parent-feature",className:"text-muted-foreground text-xs font-semibold tracking-wider",children:"PARENT FEATURE"}),(0,t.jsx)(K,{features:d,value:_,onChange:X,disabled:n})]}):null,(0,t.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,t.jsxs)("div",{className:"border-input flex items-center gap-4 rounded-md border px-3 py-2.5",children:[(0,t.jsxs)(C.Tooltip,{children:[(0,t.jsx)(C.TooltipTrigger,{asChild:!0,children:(0,t.jsx)("span",{className:"text-muted-foreground w-16 shrink-0 cursor-default text-xs font-semibold tracking-wider",children:"APPROVE"})}),(0,t.jsx)(C.TooltipContent,{side:"bottom",children:"Auto-approve phase transitions without manual review."})]}),(0,t.jsx)("div",{className:"flex flex-1 items-center gap-4",children:q.map(e=>(0,t.jsxs)(C.Tooltip,{children:[(0,t.jsx)(C.TooltipTrigger,{asChild:!0,children:(0,t.jsxs)("div",{className:"flex cursor-pointer items-center gap-1.5",children:[(0,t.jsx)(y.Switch,{id:`approve-${e.id}`,size:"sm",checked:E[e.id]??!1,onCheckedChange:t=>M(r=>({...r,[e.id]:t})),disabled:n||V&&("allowPrd"===e.id||"allowPlan"===e.id)}),(0,t.jsx)(b.Label,{htmlFor:`approve-${e.id}`,className:"cursor-pointer text-xs font-medium",children:e.label})]})}),(0,t.jsx)(C.TooltipContent,{side:"bottom",children:V&&("allowPrd"===e.id||"allowPlan"===e.id)?"Skipped in Fast Mode":e.description})]},e.id))}),(0,t.jsxs)(C.Tooltip,{children:[(0,t.jsx)(C.TooltipTrigger,{asChild:!0,children:(0,t.jsx)("button",{type:"button",onClick:()=>{let e=q.every(e=>E[e.id]),t={};for(let r of q)t[r.id]=!e;M(t)},disabled:n,className:(0,p.cn)("text-muted-foreground hover:text-foreground cursor-pointer rounded px-1.5 py-0.5 text-[10px] font-semibold tracking-wider uppercase transition-colors",q.every(e=>E[e.id])&&"text-primary"),children:"All"})}),(0,t.jsx)(C.TooltipContent,{side:"bottom",children:"Toggle all approval gates"})]})]}),(0,t.jsxs)("div",{className:"border-input flex items-center gap-4 rounded-md border px-3 py-2.5",children:[(0,t.jsx)("span",{className:"text-muted-foreground w-16 shrink-0 text-xs font-semibold tracking-wider",children:"GIT"}),(0,t.jsxs)("div",{className:"flex flex-1 items-center gap-4",children:[(0,t.jsxs)(C.Tooltip,{children:[(0,t.jsx)(C.TooltipTrigger,{asChild:!0,children:(0,t.jsxs)("div",{className:"flex cursor-pointer items-center gap-1.5",children:[(0,t.jsx)(y.Switch,{id:"push",size:"sm",checked:O||I,onCheckedChange:e=>{z(e),!e&&I&&L(!1)},disabled:n}),(0,t.jsx)(b.Label,{htmlFor:"push",className:"cursor-pointer text-xs font-medium",children:"Push"})]})}),(0,t.jsx)(C.TooltipContent,{side:"bottom",children:"Push branch to remote after implementation."})]}),(0,t.jsxs)(C.Tooltip,{children:[(0,t.jsx)(C.TooltipTrigger,{asChild:!0,children:(0,t.jsxs)("div",{className:"flex cursor-pointer items-center gap-1.5",children:[(0,t.jsx)(y.Switch,{id:"open-pr",size:"sm",checked:I,onCheckedChange:L,disabled:n}),(0,t.jsx)(b.Label,{htmlFor:"open-pr",className:"cursor-pointer text-xs font-medium",children:"PR"})]})}),(0,t.jsx)(C.TooltipContent,{side:"bottom",children:"Open a pull request after pushing."})]})]})]})]})]})})})})}function K({features:e,value:a,onChange:o,disabled:s}){let[n,i]=(0,r.useState)(!1),[l,u]=(0,r.useState)(""),h=(0,r.useRef)(null),m=e.find(e=>e.id===a),f=l.trim()?e.filter(e=>e.name.toLowerCase().includes(l.toLowerCase())||e.id.toLowerCase().includes(l.toLowerCase())):e,x=(0,r.useCallback)(e=>{o(e),i(!1),u("")},[o]);return(0,r.useEffect)(()=>{n?setTimeout(()=>h.current?.focus(),0):u("")},[n]),(0,t.jsxs)(w.Popover,{open:n,onOpenChange:i,children:[(0,t.jsx)(w.PopoverTrigger,{asChild:!0,children:(0,t.jsxs)("button",{id:"parent-feature",type:"button",role:"combobox","aria-expanded":n,"aria-label":"Parent Feature",disabled:s,"data-testid":"parent-feature-combobox",className:(0,p.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",!m&&"text-muted-foreground"),children:[(0,t.jsx)("span",{className:"truncate",children:m?`${m.name} (${m.id.slice(0,8)})`:"Select parent feature..."}),(0,t.jsx)(d,{className:"ml-2 h-4 w-4 shrink-0 opacity-50"})]})}),(0,t.jsx)(w.PopoverContent,{className:"w-80 p-0",align:"start","data-testid":"parent-feature-combobox-content",children:(0,t.jsxs)("div",{className:"flex flex-col",children:[(0,t.jsx)("div",{className:"border-b p-2",children:(0,t.jsx)(g.Input,{ref:h,placeholder:"Search features...",value:l,onChange:e=>u(e.target.value),className:"h-8 border-0 p-0 text-sm shadow-none focus-visible:ring-0","data-testid":"parent-feature-search"})}),(0,t.jsxs)("div",{className:"max-h-48 overflow-y-auto py-1",role:"listbox","aria-label":"Features",children:[(0,t.jsxs)("button",{type:"button",role:"option","aria-selected":void 0===a,onClick:()=>x(void 0),className:(0,p.cn)("hover:bg-accent hover:text-accent-foreground flex w-full items-center gap-2 px-3 py-2 text-sm",void 0===a&&"bg-accent/50"),"data-testid":"parent-feature-option-none",children:[(0,t.jsx)(c.CheckIcon,{className:(0,p.cn)("h-4 w-4 shrink-0",void 0!==a&&"invisible")}),(0,t.jsx)("span",{className:"text-muted-foreground italic",children:"No parent"})]}),0===f.length&&l?(0,t.jsx)("p",{className:"text-muted-foreground px-3 py-2 text-sm",children:"No features found."}):f.map(e=>(0,t.jsxs)("button",{type:"button",role:"option","aria-selected":a===e.id,onClick:()=>x(e.id),className:(0,p.cn)("hover:bg-accent hover:text-accent-foreground flex w-full items-center gap-2 px-3 py-2 text-sm",a===e.id&&"bg-accent/50"),"data-testid":`parent-feature-option-${e.id}`,children:[(0,t.jsx)(c.CheckIcon,{className:(0,p.cn)("h-4 w-4 shrink-0",a!==e.id&&"invisible")}),(0,t.jsxs)("span",{className:"truncate",children:[e.name," ",(0,t.jsxs)("span",{className:"text-muted-foreground font-mono text-xs",children:["(",e.id.slice(0,8),")"]})]})]},e.id))]})]})})]})}function X({repositoryPath:e,initialParentId:s,features:i,workflowDefaults:l,currentAgentType:d,currentModel:c}){let u=(0,a.useRouter)(),[p,h]=(0,r.useState)(!1),m=(0,a.usePathname)().startsWith("/create"),f=!p&&m;(0,r.useEffect)(()=>{!m&&p&&h(!1)},[m,p]);let x=(0,r.useCallback)(()=>{u.push("/")},[u]),g=(0,r.useCallback)(e=>{h(!0),u.push("/"),n(e).then(t=>{t.error?o.toast.error(t.error):window.dispatchEvent(new CustomEvent("shep:feature-created",{detail:{featureId:t.feature.id,name:t.feature.name,description:t.feature.description,repositoryPath:t.feature.repositoryPath,parentId:e.parentId}}))}).catch(()=>{o.toast.error("Failed to create feature"),h(!1)})},[u]);return(0,t.jsx)(_,{open:f,onClose:x,onSubmit:g,repositoryPath:e,features:i,workflowDefaults:l,initialParentId:s,isSubmitting:p,currentAgentType:d,currentModel:c})}e.s(["CreateDrawerClient",()=>X],15203)}]);
@@ -1,3 +0,0 @@
1
- export { TaskProgressView } from './task-progress-view.js';
2
- export type { TaskProgressViewProps } from './task-progress-view.js';
3
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/task-progress-view/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,YAAY,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC"}
@@ -1 +0,0 @@
1
- export { TaskProgressView } from './task-progress-view.js';
@@ -1,6 +0,0 @@
1
- import type { PlanTaskData } from '../../../app/actions/get-feature-plan.js';
2
- export interface TaskProgressViewProps {
3
- tasks: PlanTaskData[];
4
- }
5
- export declare function TaskProgressView({ tasks }: TaskProgressViewProps): import("react/jsx-runtime").JSX.Element;
6
- //# sourceMappingURL=task-progress-view.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"task-progress-view.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/task-progress-view/task-progress-view.tsx"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,YAAY,EAAkB,MAAM,gCAAgC,CAAC;AAEnF,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,YAAY,EAAE,CAAC;CACvB;AA8CD,wBAAgB,gBAAgB,CAAC,EAAE,KAAK,EAAE,EAAE,qBAAqB,2CAmBhE"}
@@ -1,84 +0,0 @@
1
- 'use client';
2
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import { useState, useCallback, useMemo } from 'react';
4
- import { Loader2, Circle, Check, Eye, ChevronRight, CheckCircle2, CircleDashed, } from 'lucide-react';
5
- import { cn } from '../../../lib/utils.js';
6
- const taskStateConfig = {
7
- Todo: {
8
- icon: Circle,
9
- colorClass: 'text-muted-foreground',
10
- borderClass: 'border-border',
11
- label: 'Todo',
12
- },
13
- 'Work in Progress': {
14
- icon: Loader2,
15
- colorClass: 'text-blue-600',
16
- borderClass: 'border-blue-200',
17
- spinning: true,
18
- label: 'In Progress',
19
- },
20
- Done: {
21
- icon: Check,
22
- colorClass: 'text-emerald-600',
23
- borderClass: 'border-emerald-200',
24
- label: 'Done',
25
- },
26
- Review: {
27
- icon: Eye,
28
- colorClass: 'text-amber-600',
29
- borderClass: 'border-amber-200',
30
- label: 'Review',
31
- },
32
- };
33
- const defaultTaskConfig = {
34
- icon: Circle,
35
- colorClass: 'text-muted-foreground',
36
- borderClass: 'border-border',
37
- label: 'Unknown',
38
- };
39
- export function TaskProgressView({ tasks }) {
40
- if (tasks.length === 0) {
41
- return (_jsx("div", { className: "flex flex-col items-center justify-center gap-2 py-4", children: _jsx("p", { className: "text-muted-foreground text-sm", children: "No tasks defined yet" }) }));
42
- }
43
- return (_jsxs("div", { "data-testid": "task-progress-view", className: "flex flex-col gap-3", children: [_jsx(ProgressSummary, { tasks: tasks }), _jsx("div", { "data-testid": "task-progress-list", className: "flex flex-col gap-2", children: tasks.map((task, index) => (_jsx(TaskCard, { task: task, index: index }, task.title || `task-${index}`))) })] }));
44
- }
45
- // ── Progress Summary ─────────────────────────────────────────────────
46
- function ProgressSummary({ tasks }) {
47
- const counts = useMemo(() => {
48
- const done = tasks.filter((t) => t.state === 'Done').length;
49
- const wip = tasks.filter((t) => t.state === 'Work in Progress').length;
50
- const review = tasks.filter((t) => t.state === 'Review').length;
51
- const todo = tasks.filter((t) => t.state !== 'Done' && t.state !== 'Work in Progress' && t.state !== 'Review').length;
52
- const total = tasks.length;
53
- const percent = total > 0 ? Math.round((done / total) * 100) : 0;
54
- return { done, wip, review, todo, total, percent };
55
- }, [tasks]);
56
- return (_jsxs("div", { "data-testid": "task-progress-summary", className: "flex flex-col gap-2", children: [_jsxs("div", { className: "flex items-center justify-between", children: [_jsx("span", { className: "text-muted-foreground text-xs font-medium", children: "Task Progress" }), _jsxs("span", { className: "text-muted-foreground text-xs", children: [counts.done, " of ", counts.total, " done"] })] }), _jsx("div", { className: "bg-muted h-2 w-full overflow-hidden rounded-full", children: _jsx("div", { "data-testid": "task-progress-bar", className: "h-full rounded-full bg-emerald-500 transition-all", style: { width: `${counts.percent}%` } }) }), _jsxs("div", { className: "flex flex-wrap gap-3", children: [counts.done > 0 ? (_jsx(StatChip, { icon: Check, label: "Done", count: counts.done, className: "text-emerald-600" })) : null, counts.wip > 0 ? (_jsx(StatChip, { icon: Loader2, label: "In Progress", count: counts.wip, className: "text-blue-600" })) : null, counts.review > 0 ? (_jsx(StatChip, { icon: Eye, label: "Review", count: counts.review, className: "text-amber-600" })) : null, counts.todo > 0 ? (_jsx(StatChip, { icon: Circle, label: "Todo", count: counts.todo, className: "text-muted-foreground" })) : null] })] }));
57
- }
58
- function StatChip({ icon: Icon, label, count, className, }) {
59
- return (_jsxs("span", { className: cn('flex items-center gap-1 text-xs', className), children: [_jsx(Icon, { className: "h-3 w-3" }), count, " ", label] }));
60
- }
61
- // ── Task Card ────────────────────────────────────────────────────────
62
- function TaskCard({ task, index }) {
63
- const [expanded, setExpanded] = useState(false);
64
- const config = taskStateConfig[task.state] ?? defaultTaskConfig;
65
- const Icon = config.icon;
66
- const hasDetails = task.actionItems.length > 0;
67
- const handleToggle = useCallback(() => {
68
- if (hasDetails) {
69
- setExpanded((prev) => !prev);
70
- }
71
- }, [hasDetails]);
72
- return (_jsxs("div", { "data-testid": `task-card-${index}`, className: cn('rounded-lg border', config.borderClass), children: [_jsxs("button", { type: "button", onClick: handleToggle, disabled: !hasDetails, className: cn('flex w-full items-start gap-2 px-3 py-2.5 text-left', hasDetails && 'hover:bg-muted/50 cursor-pointer transition-colors'), children: [_jsx(Icon, { className: cn('mt-0.5 h-4 w-4 shrink-0', config.colorClass, config.spinning && 'animate-spin') }), _jsxs("div", { className: "flex min-w-0 flex-1 flex-col gap-0.5", children: [_jsx("span", { className: cn('text-sm font-medium', config.colorClass), children: task.title }), task.description ? (_jsx("span", { className: "text-muted-foreground text-xs", children: task.description })) : null] }), hasDetails ? (_jsx(ChevronRight, { className: cn('text-muted-foreground mt-0.5 h-4 w-4 shrink-0 transition-transform', expanded && 'rotate-90') })) : null] }), expanded && hasDetails ? (_jsx("div", { className: "border-t px-3 py-2.5", children: _jsx("div", { className: "flex flex-col gap-2", children: task.actionItems.map((item, aiIndex) => (_jsx(ActionItemRow, { item: item }, item.name || `ai-${aiIndex}`))) }) })) : null] }));
73
- }
74
- // ── Action Item Row ──────────────────────────────────────────────────
75
- function ActionItemRow({ item }) {
76
- const totalCriteria = item.acceptanceCriteria.length;
77
- const verifiedCriteria = item.acceptanceCriteria.filter((ac) => ac.verified).length;
78
- const allVerified = totalCriteria > 0 && verifiedCriteria === totalCriteria;
79
- return (_jsxs("div", { "data-testid": "action-item", className: "flex flex-col gap-1.5", children: [_jsxs("div", { className: "flex items-start gap-2", children: [allVerified ? (_jsx(CheckCircle2, { className: "mt-0.5 h-3.5 w-3.5 shrink-0 text-emerald-600" })) : (_jsx(CircleDashed, { className: "text-muted-foreground mt-0.5 h-3.5 w-3.5 shrink-0" })), _jsxs("div", { className: "flex min-w-0 flex-col gap-0.5", children: [_jsx("span", { className: "text-xs font-medium", children: item.name }), item.description ? (_jsx("span", { className: "text-muted-foreground text-[11px]", children: item.description })) : null] }), totalCriteria > 0 ? (_jsxs("span", { className: "text-muted-foreground ml-auto shrink-0 text-[11px]", children: [verifiedCriteria, "/", totalCriteria] })) : null] }), totalCriteria > 0 ? (_jsx("div", { className: "ml-5.5 flex flex-col gap-1", children: item.acceptanceCriteria.map((ac, acIndex) => (_jsx(AcceptanceCriterionRow, { criterion: ac }, ac.description || `ac-${acIndex}`))) })) : null] }));
80
- }
81
- // ── Acceptance Criterion Row ─────────────────────────────────────────
82
- function AcceptanceCriterionRow({ criterion, }) {
83
- return (_jsxs("div", { "data-testid": "acceptance-criterion", className: "flex items-start gap-1.5", children: [criterion.verified ? (_jsx(Check, { className: "mt-0.5 h-3 w-3 shrink-0 text-emerald-600" })) : (_jsx(Circle, { className: "text-muted-foreground mt-0.5 h-3 w-3 shrink-0" })), _jsx("span", { className: cn('text-[11px]', criterion.verified ? 'text-muted-foreground line-through' : 'text-foreground'), children: criterion.description })] }));
84
- }
@@ -1,16 +0,0 @@
1
- import type { Meta, StoryObj } from '@storybook/react';
2
- import { TaskProgressView } from './task-progress-view.js';
3
- declare const meta: Meta<typeof TaskProgressView>;
4
- export default meta;
5
- type Story = StoryObj<typeof TaskProgressView>;
6
- /** Default — tasks in mixed states with action items and acceptance criteria. */
7
- export declare const Default: Story;
8
- /** All tasks completed. */
9
- export declare const AllDone: Story;
10
- /** All tasks in Todo state. */
11
- export declare const AllTodo: Story;
12
- /** Empty — no tasks defined. */
13
- export declare const Empty: Story;
14
- /** Single task with detailed action items. */
15
- export declare const SingleTaskDetailed: Story;
16
- //# sourceMappingURL=task-progress-view.stories.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"task-progress-view.stories.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/task-progress-view/task-progress-view.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAGxD,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,gBAAgB,CAYvC,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,gBAAgB,CAAC,CAAC;AA+J/C,iFAAiF;AACjF,eAAO,MAAM,OAAO,EAAE,KAIrB,CAAC;AAEF,2BAA2B;AAC3B,eAAO,MAAM,OAAO,EAAE,KAIrB,CAAC;AAEF,+BAA+B;AAC/B,eAAO,MAAM,OAAO,EAAE,KAIrB,CAAC;AAEF,gCAAgC;AAChC,eAAO,MAAM,KAAK,EAAE,KAInB,CAAC;AAEF,8CAA8C;AAC9C,eAAO,MAAM,kBAAkB,EAAE,KAIhC,CAAC"}
@@ -1,194 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { TaskProgressView } from './task-progress-view.js';
3
- const meta = {
4
- title: 'Composed/TaskProgressView',
5
- component: TaskProgressView,
6
- tags: ['autodocs'],
7
- parameters: { layout: 'padded' },
8
- decorators: [
9
- (Story) => (_jsx("div", { style: { width: '400px', border: '1px solid var(--color-border)', padding: '16px' }, children: _jsx(Story, {}) })),
10
- ],
11
- };
12
- export default meta;
13
- /* ---------------------------------------------------------------------------
14
- * Data fixtures
15
- * ------------------------------------------------------------------------- */
16
- const mixedTasks = [
17
- {
18
- title: 'Set up OAuth provider configuration',
19
- description: 'Configure Google and GitHub OAuth apps with client IDs and secrets',
20
- state: 'Done',
21
- actionItems: [
22
- {
23
- name: 'Create OAuth config module',
24
- description: 'Define provider configuration schema and load from env',
25
- acceptanceCriteria: [
26
- { description: 'Config loads from environment variables', verified: true },
27
- { description: 'Validation rejects missing client ID or secret', verified: true },
28
- ],
29
- },
30
- {
31
- name: 'Register OAuth apps',
32
- description: 'Register apps with Google and GitHub developer consoles',
33
- acceptanceCriteria: [
34
- { description: 'Google OAuth app created with correct scopes', verified: true },
35
- { description: 'GitHub OAuth app created with correct callback URL', verified: true },
36
- ],
37
- },
38
- ],
39
- },
40
- {
41
- title: 'Implement callback handler',
42
- description: 'Handle OAuth callback with authorization code exchange',
43
- state: 'Done',
44
- actionItems: [
45
- {
46
- name: 'Build callback endpoint',
47
- description: 'GET /auth/callback with code exchange logic',
48
- acceptanceCriteria: [
49
- { description: 'Exchanges authorization code for tokens', verified: true },
50
- ],
51
- },
52
- ],
53
- },
54
- {
55
- title: 'Add token refresh logic',
56
- description: 'Implement silent token refresh using refresh tokens stored in httpOnly cookies',
57
- state: 'Work in Progress',
58
- actionItems: [
59
- {
60
- name: 'Implement refresh endpoint',
61
- description: 'POST /auth/refresh to issue new access token',
62
- acceptanceCriteria: [
63
- { description: 'Returns new access token when refresh token is valid', verified: true },
64
- { description: 'Returns 401 when refresh token is expired', verified: false },
65
- ],
66
- },
67
- {
68
- name: 'Add httpOnly cookie handling',
69
- description: 'Store refresh tokens in secure httpOnly cookies',
70
- acceptanceCriteria: [
71
- { description: 'Cookies are set with Secure and HttpOnly flags', verified: false },
72
- ],
73
- },
74
- ],
75
- },
76
- {
77
- title: 'Create user profile sync',
78
- description: 'Sync user profile data from identity providers on login',
79
- state: 'Todo',
80
- actionItems: [
81
- {
82
- name: 'Fetch profile from provider',
83
- description: 'Use access token to retrieve user profile from Google/GitHub',
84
- acceptanceCriteria: [
85
- { description: 'Retrieves name, email, and avatar from Google', verified: false },
86
- { description: 'Retrieves name, email, and avatar from GitHub', verified: false },
87
- ],
88
- },
89
- ],
90
- },
91
- {
92
- title: 'Write integration tests',
93
- description: 'Test the full OAuth flow with mocked providers',
94
- state: 'Todo',
95
- actionItems: [],
96
- },
97
- {
98
- title: 'Update API documentation',
99
- description: 'Document new authentication endpoints and flows',
100
- state: 'Review',
101
- actionItems: [
102
- {
103
- name: 'Document auth endpoints',
104
- description: 'Add OpenAPI specs for all auth routes',
105
- acceptanceCriteria: [
106
- { description: 'All endpoints have OpenAPI documentation', verified: true },
107
- { description: 'Examples included for each endpoint', verified: true },
108
- ],
109
- },
110
- ],
111
- },
112
- ];
113
- const allDoneTasks = [
114
- {
115
- title: 'Design sliding window algorithm',
116
- description: 'Implement Redis-backed sliding window counter',
117
- state: 'Done',
118
- actionItems: [
119
- {
120
- name: 'Implement counter',
121
- description: 'Redis ZADD-based sliding window',
122
- acceptanceCriteria: [
123
- { description: 'Counts requests in time window', verified: true },
124
- { description: 'Cleans up expired entries', verified: true },
125
- ],
126
- },
127
- ],
128
- },
129
- {
130
- title: 'Add rate limit middleware',
131
- description: 'Express middleware that checks rate limits per IP',
132
- state: 'Done',
133
- actionItems: [],
134
- },
135
- {
136
- title: 'Configure limits per endpoint',
137
- description: 'Set different rate limits for public vs authenticated endpoints',
138
- state: 'Done',
139
- actionItems: [],
140
- },
141
- ];
142
- const allTodoTasks = [
143
- {
144
- title: 'Define notification types',
145
- description: 'Enumerate all notification events and their payloads',
146
- state: 'Todo',
147
- actionItems: [],
148
- },
149
- {
150
- title: 'Set up WebSocket server',
151
- description: 'Configure Socket.io with Redis adapter',
152
- state: 'Todo',
153
- actionItems: [],
154
- },
155
- {
156
- title: 'Implement notification store',
157
- description: 'Persist notifications in database',
158
- state: 'Todo',
159
- actionItems: [],
160
- },
161
- ];
162
- /* ---------------------------------------------------------------------------
163
- * Stories
164
- * ------------------------------------------------------------------------- */
165
- /** Default — tasks in mixed states with action items and acceptance criteria. */
166
- export const Default = {
167
- args: {
168
- tasks: mixedTasks,
169
- },
170
- };
171
- /** All tasks completed. */
172
- export const AllDone = {
173
- args: {
174
- tasks: allDoneTasks,
175
- },
176
- };
177
- /** All tasks in Todo state. */
178
- export const AllTodo = {
179
- args: {
180
- tasks: allTodoTasks,
181
- },
182
- };
183
- /** Empty — no tasks defined. */
184
- export const Empty = {
185
- args: {
186
- tasks: [],
187
- },
188
- };
189
- /** Single task with detailed action items. */
190
- export const SingleTaskDetailed = {
191
- args: {
192
- tasks: [mixedTasks[2]],
193
- },
194
- };
@@ -1,3 +0,0 @@
1
- module.exports=[45670,2807,a=>{"use strict";var b=a.i(10973),c=a.i(96960),d=a.i(71335),e=a.i(89868);a.s(["X",()=>e.default],2807);var e=e,f=a.i(85536);let g=d.Dialog.Root,h=d.Dialog.Trigger,i=d.Dialog.Portal,j=d.Dialog.Close,k=c.forwardRef(({className:a,onClick:c,...e},g)=>(0,b.jsx)(d.Dialog.Overlay,{ref:g,className:(0,f.cn)("fixed inset-0 z-50 bg-black/80",a),onClick:a=>{a.stopPropagation(),c?.(a)},...e}));k.displayName=d.Dialog.Overlay.displayName;let l=c.forwardRef(({className:a,children:c,...g},h)=>(0,b.jsxs)(i,{children:[(0,b.jsx)(k,{}),(0,b.jsxs)(d.Dialog.Content,{ref:h,className:(0,f.cn)("bg-background fixed top-[50%] left-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border p-6 shadow-lg sm:rounded-lg",a),...g,children:[c,(0,b.jsxs)(d.Dialog.Close,{className:"ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 cursor-pointer rounded-sm opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-none disabled:pointer-events-none",children:[(0,b.jsx)(e.default,{className:"h-4 w-4"}),(0,b.jsx)("span",{className:"sr-only",children:"Close"})]})]})]}));l.displayName=d.Dialog.Content.displayName;let m=({className:a,...c})=>(0,b.jsx)("div",{className:(0,f.cn)("flex flex-col space-y-1.5 text-center sm:text-left",a),...c});m.displayName="DialogHeader";let n=({className:a,...c})=>(0,b.jsx)("div",{className:(0,f.cn)("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",a),...c});n.displayName="DialogFooter";let o=c.forwardRef(({className:a,...c},e)=>(0,b.jsx)(d.Dialog.Title,{ref:e,className:(0,f.cn)("text-lg leading-none font-semibold tracking-tight",a),...c}));o.displayName=d.Dialog.Title.displayName;let p=c.forwardRef(({className:a,...c},e)=>(0,b.jsx)(d.Dialog.Description,{ref:e,className:(0,f.cn)("text-muted-foreground text-sm",a),...c}));p.displayName=d.Dialog.Description.displayName,a.s(["Dialog",()=>g,"DialogClose",()=>j,"DialogContent",()=>l,"DialogDescription",()=>p,"DialogFooter",()=>n,"DialogHeader",()=>m,"DialogTitle",()=>o,"DialogTrigger",()=>h],45670)},50490,5698,a=>{"use strict";var b=a.i(25700);let c=(0,b.default)("play",[["path",{d:"M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z",key:"10ikf1"}]]);a.s(["Play",()=>c],50490);let d=(0,b.default)("square",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}]]);a.s(["Square",()=>d],5698)},69029,5623,a=>{"use strict";var b=a.i(10973),c=a.i(88064),d=a.i(82697),e=a.i(85536),f=a.i(18948),g=a.i(19884);function h({label:a,onClick:h,loading:i,error:j,icon:k,iconOnly:l=!1,variant:m="outline",size:n="sm"}){let o=(0,g.useSoundAction)("click");return(0,b.jsxs)(f.Button,{variant:m,size:n,"aria-label":a,disabled:i,onClick:()=>{o.play(),h()},className:(0,e.cn)("gap-1.5",j&&"text-destructive hover:text-destructive",!j&&l&&"ghost"===m&&"text-muted-foreground cursor-pointer rounded-full transition-colors hover:text-blue-500"),children:[i?(0,b.jsx)(c.Loader2,{className:"size-4 animate-spin"}):j?(0,b.jsx)(d.CircleAlert,{className:"size-4"}):(0,b.jsx)(k,{className:"size-4"}),l?null:a]})}a.s(["ActionButton",()=>h],5623),a.s([],69029)},49235,85080,a=>{"use strict";var b=a.i(10973),c=a.i(96960),d=a.i(88064),e=a.i(71238),f=a.i(63698),g=a.i(46847),h=a.i(58339),i=a.i(45670),j=a.i(25674);let k=(0,j.createServerReference)("40c2a4aca555bd380b545cdaef39cde1fdcb175e6e",j.callServer,void 0,j.findSourceMapURL,"getDeploymentLogs");function l({open:a,onOpenChange:d,targetId:e}){let{logs:f,isConnected:g}=function(a){let[b,d]=(0,c.useState)([]),[e,f]=(0,c.useState)(!1),g=(0,c.useRef)(null),h=(0,c.useCallback)(()=>{g.current&&(g.current.close(),g.current=null),f(!1)},[]);return(0,c.useEffect)(()=>{if(!a){d([]),f(!1);return}k(a).then(a=>{a&&d(a)}).catch(()=>{});let b=new EventSource(`/api/deployment-logs?targetId=${a}`);return g.current=b,b.onopen=()=>{f(!0)},b.addEventListener("log",a=>{let b=JSON.parse(a.data);d(a=>[...a,b])}),b.onerror=()=>{f(!1)},()=>{b.close(),g.current=null}},[a,h]),{logs:b,isConnected:e}}(a?e:null);return(0,b.jsx)(m,{open:a,onOpenChange:d,logs:f,isConnected:g})}function m({open:a,onOpenChange:d,logs:e,isConnected:g}){let h=(0,c.useRef)(null),j=(0,c.useRef)(!0),k=(0,c.useCallback)(()=>{let a=h.current;a&&(j.current=a.scrollTop+a.clientHeight>=a.scrollHeight-50)},[]);return(0,c.useEffect)(()=>{j.current&&h.current&&(h.current.scrollTop=h.current.scrollHeight)},[e]),(0,b.jsx)(i.Dialog,{open:a,onOpenChange:d,children:(0,b.jsxs)(i.DialogContent,{className:"flex h-[calc(100vh-48px)] max-h-[calc(100vh-48px)] w-full max-w-[calc(100vw-48px)] flex-col gap-0 bg-zinc-950 p-0 text-zinc-100 sm:rounded-lg","aria-describedby":void 0,children:[(0,b.jsxs)(i.DialogHeader,{className:"flex flex-row items-center justify-between border-b border-zinc-800 px-4 py-3",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)(f.Terminal,{className:"h-4 w-4 text-zinc-400"}),(0,b.jsx)(i.DialogTitle,{className:"text-sm font-medium text-zinc-100",children:"Server Logs"})]}),(0,b.jsxs)("div",{className:"flex items-center gap-2 pr-8",children:[(0,b.jsx)("span",{className:`inline-block h-2 w-2 rounded-full ${g?"bg-green-500":"bg-zinc-500"}`}),(0,b.jsx)("span",{className:"text-xs text-zinc-400",children:g?"Connected":"Disconnected"})]})]}),(0,b.jsxs)("div",{ref:h,onScroll:k,className:"flex-1 overflow-auto p-4 font-mono text-sm leading-relaxed",children:[0===e.length?(0,b.jsx)("p",{className:"text-zinc-500",children:"Waiting for log output..."}):e.map(a=>(0,b.jsx)(n,{entry:a},`${a.timestamp}-${a.stream}-${a.line}`)),!g&&e.length>0&&(0,b.jsx)("div",{className:"mt-2 border-t border-zinc-800 pt-2 text-zinc-500",children:"[Server stopped]"})]})]})})}function n({entry:a}){return(0,b.jsx)("div",{"data-stream":a.stream,className:"stderr"===a.stream?"text-red-400":"text-zinc-200",children:(0,b.jsx)("span",{className:"break-all whitespace-pre-wrap",children:a.line})})}function o({status:a,url:i,targetId:j}){let[k,m]=(0,c.useState)(!1),n=j&&(a===g.DeploymentState.Booting||a===g.DeploymentState.Ready);switch(a){case g.DeploymentState.Booting:return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)(h.Badge,{className:"border-transparent bg-blue-50 text-blue-700 hover:bg-blue-50",children:[(0,b.jsx)(d.Loader2,{className:"mr-1 h-3.5 w-3.5 animate-spin"}),"Starting...",n?(0,b.jsx)("button",{type:"button","aria-label":"View server logs",className:"ml-1.5 inline-flex items-center rounded-sm p-0.5 hover:bg-blue-100",onClick:a=>{a.stopPropagation(),m(!0)},children:(0,b.jsx)(f.Terminal,{className:"h-3 w-3"})}):null]}),n?(0,b.jsx)(l,{open:k,onOpenChange:m,targetId:j}):null]});case g.DeploymentState.Ready:return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)(h.Badge,{className:"border-transparent bg-green-50 text-green-700 hover:bg-green-50",children:[(0,b.jsx)("span",{className:"mr-1 inline-block h-2 w-2 rounded-full bg-green-500"}),i?(0,b.jsxs)("a",{href:i,target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-1 hover:underline",onClick:a=>a.stopPropagation(),children:[i,(0,b.jsx)(e.ExternalLink,{className:"h-3 w-3"})]}):"Ready",n?(0,b.jsx)("button",{type:"button","aria-label":"View server logs",className:"ml-1.5 inline-flex items-center rounded-sm p-0.5 hover:bg-green-100",onClick:a=>{a.stopPropagation(),m(!0)},children:(0,b.jsx)(f.Terminal,{className:"h-3 w-3"})}):null]}),n?(0,b.jsx)(l,{open:k,onOpenChange:m,targetId:j}):null]});default:return null}}a.s(["DeploymentStatusBadge",()=>o],85080),a.s([],49235)},18662,a=>{"use strict";var b=a.i(96960),c=a.i(87139),d=a.i(25674);let e=(0,d.createServerReference)("40f902742aae0ef2c9f22b8b44a89fe6ab7dfaff0f",d.callServer,void 0,d.findSourceMapURL,"deployFeature"),f=(0,d.createServerReference)("4065bcf6d67e41fadfb46c87bfde6a25e1969d6533",d.callServer,void 0,d.findSourceMapURL,"deployRepository"),g=(0,d.createServerReference)("4043fbe81bc2e97272daee673985cfe5b7706bafd8",d.callServer,void 0,d.findSourceMapURL,"stopDeployment"),h=(0,d.createServerReference)("40bf71177b0d37c730a505655da8970d57fcddcd6d",d.callServer,void 0,d.findSourceMapURL,"getDeploymentStatus"),i=(0,c.createLogger)("[useDeployAction]");function j(a){let[c,d]=(0,b.useState)(!1),[j,k]=(0,b.useState)(!1),[l,m]=(0,b.useState)(null),[n,o]=(0,b.useState)(null),[p,q]=(0,b.useState)(null),r=(0,b.useRef)(null),s=(0,b.useRef)(null),t=(0,b.useRef)(!0),u=(0,b.useRef)(n);(0,b.useEffect)(()=>{u.current=n},[n]),(0,b.useEffect)(()=>(t.current=!0,()=>{t.current=!1}),[]),(0,b.useEffect)(()=>()=>{r.current&&clearTimeout(r.current),s.current&&clearInterval(s.current)},[]);let v=(0,b.useCallback)(()=>{s.current&&(i.debug("stopping polling"),clearInterval(s.current),s.current=null)},[]),w=(0,b.useCallback)(a=>{v(),i.debug(`starting polling for "${a}" every 3000ms`),s.current=setInterval(async()=>{if(!t.current)return void v();let b=await h(a);t.current&&(b&&"Stopped"!==b.state?(b.state!==u.current&&i.info(`poll state changed: ${u.current} → ${b.state}, url=${b.url}`),o(b.state),q(b.url)):(i.info(`poll result: ${b?`state=${b.state}`:"null (deployment gone)"} — stopping poll`),o(null),q(null),v()))},3e3)},[v]),x=(0,b.useCallback)(async()=>{if(!a)return void i.warn("deploy() called but input is null — no-op");if(c)return void i.warn("deploy() called but already loading — no-op");i.info(`deploy() — targetType="${a.targetType}", targetId="${a.targetId}", repositoryPath="${a.repositoryPath}"`),r.current&&clearTimeout(r.current),d(!0),m(null);try{let b="feature"===a.targetType?await e(a.targetId):await f(a.repositoryPath);if(i.info("server action result:",b),!t.current)return void i.warn("component unmounted after deploy — discarding result");if(b.success)i.info(`deploy succeeded — initial state=${b.state}, starting polling`),o(b.state??null),q(null),w(a.targetId);else{let a=b.error??"An unexpected error occurred";i.error(`deploy failed: ${a}`),m(a),r.current=setTimeout(()=>m(null),5e3)}}catch(b){if(!t.current)return;let a=b instanceof Error?b.message:"An unexpected error occurred";i.error(`deploy threw exception: ${a}`,b),m(a),r.current=setTimeout(()=>m(null),5e3)}finally{t.current&&d(!1)}},[a,c,w]),y=(0,b.useCallback)(async()=>{if(a&&!j){i.info(`stop() — targetId="${a.targetId}"`),k(!0);try{let b=await g(a.targetId);if(i.info("stop result:",b),!t.current)return;b.success&&(v(),o(null),q(null))}catch(a){i.warn("stop error (non-critical):",a)}finally{t.current&&k(!1)}}},[a,j,v]);return{deploy:x,stop:y,deployLoading:c,stopLoading:j,deployError:l,status:n,url:p}}a.s(["useDeployAction",()=>j],18662)},2824,a=>{"use strict";let b;var c=a.i(10973),d=a.i(10568),e=a.i(40093),f=a.i(96960);let g=f.default.createContext({drawerRef:{current:null},overlayRef:{current:null},onPress:()=>{},onRelease:()=>{},onDrag:()=>{},onNestedDrag:()=>{},onNestedOpenChange:()=>{},onNestedRelease:()=>{},openProp:void 0,dismissible:!1,isOpen:!1,isDragging:!1,keyboardIsOpen:{current:!1},snapPointsOffset:null,snapPoints:null,handleOnly:!1,modal:!1,shouldFade:!1,activeSnapPoint:null,onOpenChange:()=>{},setActiveSnapPoint:()=>{},closeDrawer:()=>{},direction:"bottom",shouldAnimate:{current:!0},shouldScaleBackground:!1,setBackgroundColorOnScale:!0,noBodyStyles:!1,container:null,autoFocus:!1}),h=()=>{let a=f.default.useContext(g);if(!a)throw Error("useDrawerContext must be used within a Drawer.Root");return a};function i(){return/^((?!chrome|android).)*safari/i.test(navigator.userAgent)}function j(){return k(/^iPhone/)||k(/^iPad/)||k(/^Mac/)&&navigator.maxTouchPoints>1}function k(a){}!function(a){if(!a||"u"<typeof document)return;let b=document.head||document.getElementsByTagName("head")[0],c=document.createElement("style");c.type="text/css",b.appendChild(c),c.styleSheet?c.styleSheet.cssText=a:c.appendChild(document.createTextNode(a))}("[data-vaul-drawer]{touch-action:none;will-change:transform;transition:transform .5s cubic-bezier(.32, .72, 0, 1);animation-duration:.5s;animation-timing-function:cubic-bezier(0.32,0.72,0,1)}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=bottom][data-state=open]{animation-name:slideFromBottom}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=bottom][data-state=closed]{animation-name:slideToBottom}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=top][data-state=open]{animation-name:slideFromTop}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=top][data-state=closed]{animation-name:slideToTop}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=left][data-state=open]{animation-name:slideFromLeft}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=left][data-state=closed]{animation-name:slideToLeft}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=right][data-state=open]{animation-name:slideFromRight}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=right][data-state=closed]{animation-name:slideToRight}[data-vaul-drawer][data-vaul-snap-points=true][data-vaul-drawer-direction=bottom]{transform:translate3d(0,var(--initial-transform,100%),0)}[data-vaul-drawer][data-vaul-snap-points=true][data-vaul-drawer-direction=top]{transform:translate3d(0,calc(var(--initial-transform,100%) * -1),0)}[data-vaul-drawer][data-vaul-snap-points=true][data-vaul-drawer-direction=left]{transform:translate3d(calc(var(--initial-transform,100%) * -1),0,0)}[data-vaul-drawer][data-vaul-snap-points=true][data-vaul-drawer-direction=right]{transform:translate3d(var(--initial-transform,100%),0,0)}[data-vaul-drawer][data-vaul-delayed-snap-points=true][data-vaul-drawer-direction=top]{transform:translate3d(0,var(--snap-point-height,0),0)}[data-vaul-drawer][data-vaul-delayed-snap-points=true][data-vaul-drawer-direction=bottom]{transform:translate3d(0,var(--snap-point-height,0),0)}[data-vaul-drawer][data-vaul-delayed-snap-points=true][data-vaul-drawer-direction=left]{transform:translate3d(var(--snap-point-height,0),0,0)}[data-vaul-drawer][data-vaul-delayed-snap-points=true][data-vaul-drawer-direction=right]{transform:translate3d(var(--snap-point-height,0),0,0)}[data-vaul-overlay][data-vaul-snap-points=false]{animation-duration:.5s;animation-timing-function:cubic-bezier(0.32,0.72,0,1)}[data-vaul-overlay][data-vaul-snap-points=false][data-state=open]{animation-name:fadeIn}[data-vaul-overlay][data-state=closed]{animation-name:fadeOut}[data-vaul-animate=false]{animation:none!important}[data-vaul-overlay][data-vaul-snap-points=true]{opacity:0;transition:opacity .5s cubic-bezier(.32, .72, 0, 1)}[data-vaul-overlay][data-vaul-snap-points=true]{opacity:1}[data-vaul-drawer]:not([data-vaul-custom-container=true])::after{content:'';position:absolute;background:inherit;background-color:inherit}[data-vaul-drawer][data-vaul-drawer-direction=top]::after{top:initial;bottom:100%;left:0;right:0;height:200%}[data-vaul-drawer][data-vaul-drawer-direction=bottom]::after{top:100%;bottom:initial;left:0;right:0;height:200%}[data-vaul-drawer][data-vaul-drawer-direction=left]::after{left:initial;right:100%;top:0;bottom:0;width:200%}[data-vaul-drawer][data-vaul-drawer-direction=right]::after{left:100%;right:initial;top:0;bottom:0;width:200%}[data-vaul-overlay][data-vaul-snap-points=true]:not([data-vaul-snap-points-overlay=true]):not(\n[data-state=closed]\n){opacity:0}[data-vaul-overlay][data-vaul-snap-points-overlay=true]{opacity:1}[data-vaul-handle]{display:block;position:relative;opacity:.7;background:#e2e2e4;margin-left:auto;margin-right:auto;height:5px;width:32px;border-radius:1rem;touch-action:pan-y}[data-vaul-handle]:active,[data-vaul-handle]:hover{opacity:1}[data-vaul-handle-hitarea]{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:max(100%,2.75rem);height:max(100%,2.75rem);touch-action:inherit}@media (hover:hover) and (pointer:fine){[data-vaul-drawer]{user-select:none}}@media (pointer:fine){[data-vaul-handle-hitarea]:{width:100%;height:100%}}@keyframes fadeIn{from{opacity:0}to{opacity:1}}@keyframes fadeOut{to{opacity:0}}@keyframes slideFromBottom{from{transform:translate3d(0,var(--initial-transform,100%),0)}to{transform:translate3d(0,0,0)}}@keyframes slideToBottom{to{transform:translate3d(0,var(--initial-transform,100%),0)}}@keyframes slideFromTop{from{transform:translate3d(0,calc(var(--initial-transform,100%) * -1),0)}to{transform:translate3d(0,0,0)}}@keyframes slideToTop{to{transform:translate3d(0,calc(var(--initial-transform,100%) * -1),0)}}@keyframes slideFromLeft{from{transform:translate3d(calc(var(--initial-transform,100%) * -1),0,0)}to{transform:translate3d(0,0,0)}}@keyframes slideToLeft{to{transform:translate3d(calc(var(--initial-transform,100%) * -1),0,0)}}@keyframes slideFromRight{from{transform:translate3d(var(--initial-transform,100%),0,0)}to{transform:translate3d(0,0,0)}}@keyframes slideToRight{to{transform:translate3d(var(--initial-transform,100%),0,0)}}");let l=f.useEffect;"u">typeof document&&window.visualViewport;let m=new Set(["checkbox","radio","range","color","file","image","button","submit","reset"]),n=0;function o(...a){return f.useCallback(function(...a){return b=>a.forEach(a=>{"function"==typeof a?a(b):null!=a&&(a.current=b)})}(...a),a)}let p=new WeakMap;function q(a,b,c=!1){if(!a||!(a instanceof HTMLElement))return;let d={};Object.entries(b).forEach(([b,c])=>{b.startsWith("--")?a.style.setProperty(b,c):(d[b]=a.style[b],a.style[b]=c)}),c||p.set(a,d)}let r=a=>{switch(a){case"top":case"bottom":return!0;case"left":case"right":return!1;default:return a}};function s(a,b){if(!a)return null;let c=window.getComputedStyle(a),d=c.transform||c.webkitTransform||c.mozTransform,e=d.match(/^matrix3d\((.+)\)$/);return e?parseFloat(e[1].split(", ")[r(b)?13:12]):(e=d.match(/^matrix\((.+)\)$/))?parseFloat(e[1].split(", ")[r(b)?5:4]):null}function t(a,b){if(!a)return()=>{};let c=a.style.cssText;return Object.assign(a.style,b),()=>{a.style.cssText=c}}let u=[.32,.72,0,1],v="vaul-dragging";function w(a){let b=f.default.useRef(a);return f.default.useEffect(()=>{b.current=a}),f.default.useMemo(()=>(...a)=>null==b.current?void 0:b.current.call(b,...a),[])}function x({prop:a,defaultProp:b,onChange:c=()=>{}}){let[d,e]=function({defaultProp:a,onChange:b}){let c=f.default.useState(a),[d]=c,e=f.default.useRef(d),g=w(b);return f.default.useEffect(()=>{e.current!==d&&(g(d),e.current=d)},[d,e,g]),c}({defaultProp:b,onChange:c}),g=void 0!==a,h=g?a:d,i=w(c);return[h,f.default.useCallback(b=>{if(g){let c="function"==typeof b?b(a):b;c!==a&&i(c)}else e(b)},[g,a,e,i])]}let y=()=>()=>{},z=null;function A({open:a,onOpenChange:c,children:d,onDrag:h,onRelease:k,snapPoints:o,shouldScaleBackground:t=!1,setBackgroundColorOnScale:w=!0,closeThreshold:y=.25,scrollLockTimeout:A=100,dismissible:B=!0,handleOnly:C=!1,fadeFromIndex:D=o&&o.length-1,activeSnapPoint:E,setActiveSnapPoint:F,fixed:G,modal:H=!0,onClose:I,nested:J,noBodyStyles:K=!1,direction:L="bottom",defaultOpen:M=!1,disablePreventScroll:N=!0,snapToSequentialPoint:O=!1,preventScrollRestoration:P=!1,repositionInputs:Q=!0,onAnimationEnd:R,container:S,autoFocus:T=!1}){var U,V;let[W=!1,X]=x({defaultProp:M,prop:a,onChange:a=>{null==c||c(a),a||J||aA(),setTimeout(()=>{null==R||R(a)},500),a||(document.body.style.pointerEvents="auto")}}),[Y,Z]=f.default.useState(!1),[$,_]=f.default.useState(!1),[aa,ab]=f.default.useState(!1),ac=f.default.useRef(null),ad=f.default.useRef(null),ae=f.default.useRef(null),af=f.default.useRef(null),ag=f.default.useRef(null),ah=f.default.useRef(!1),ai=f.default.useRef(null),aj=f.default.useRef(0),ak=f.default.useRef(!1),al=f.default.useRef(!M),am=f.default.useRef(0),an=f.default.useRef(null),ao=f.default.useRef((null==(U=an.current)?void 0:U.getBoundingClientRect().height)||0),ap=f.default.useRef((null==(V=an.current)?void 0:V.getBoundingClientRect().width)||0),aq=f.default.useRef(0),ar=f.default.useCallback(a=>{o&&a===aw.length-1&&(ad.current=new Date)},[]),{activeSnapPoint:as,activeSnapPointIndex:at,setActiveSnapPoint:au,onRelease:av,snapPointsOffset:aw,onDrag:ax,shouldFade:ay,getPercentageDragged:az}=function({activeSnapPointProp:a,setActiveSnapPointProp:b,snapPoints:c,drawerRef:d,overlayRef:e,fadeFromIndex:g,onSnapPointChange:h,direction:i="bottom",container:j,snapToSequentialPoint:k}){let[l,m]=x({prop:a,defaultProp:null==c?void 0:c[0],onChange:b}),[n,o]=f.default.useState(void 0);f.default.useEffect(()=>{function a(){o({innerWidth:window.innerWidth,innerHeight:window.innerHeight})}return window.addEventListener("resize",a),()=>window.removeEventListener("resize",a)},[]);let p=f.default.useMemo(()=>l===(null==c?void 0:c[c.length-1])||null,[c,l]),s=f.default.useMemo(()=>{var a;return null!=(a=null==c?void 0:c.findIndex(a=>a===l))?a:null},[c,l]),t=c&&c.length>0&&(g||0===g)&&!Number.isNaN(g)&&c[g]===l||!c,v=f.default.useMemo(()=>{var a;let b=j?{width:j.getBoundingClientRect().width,height:j.getBoundingClientRect().height}:{width:0,height:0};return null!=(a=null==c?void 0:c.map(a=>{let c="string"==typeof a,d=0;if(c&&(d=parseInt(a,10)),r(i)){let e=c?d:n?a*b.height:0;return n?"bottom"===i?b.height-e:-b.height+e:e}let e=c?d:n?a*b.width:0;return n?"right"===i?b.width-e:-b.width+e:e}))?a:[]},[c,n,j]),w=f.default.useMemo(()=>null!==s?null==v?void 0:v[s]:null,[v,s]),y=f.default.useCallback(a=>{var b;let f=null!=(b=null==v?void 0:v.findIndex(b=>b===a))?b:null;h(f),q(d.current,{transition:`transform 0.5s cubic-bezier(${u.join(",")})`,transform:r(i)?`translate3d(0, ${a}px, 0)`:`translate3d(${a}px, 0, 0)`}),v&&f!==v.length-1&&void 0!==g&&f!==g&&f<g?q(e.current,{transition:`opacity 0.5s cubic-bezier(${u.join(",")})`,opacity:"0"}):q(e.current,{transition:`opacity 0.5s cubic-bezier(${u.join(",")})`,opacity:"1"}),m(null==c?void 0:c[Math.max(f,0)])},[d.current,c,v,g,e,m]);return f.default.useEffect(()=>{if(l||a){var b;let d=null!=(b=null==c?void 0:c.findIndex(b=>b===a||b===l))?b:-1;v&&-1!==d&&"number"==typeof v[d]&&y(v[d])}},[l,a,c,v,y]),{isLastSnapPoint:p,activeSnapPoint:l,shouldFade:t,getPercentageDragged:function(a,b){if(!c||"number"!=typeof s||!v||void 0===g)return null;let d=s===g-1;if(s>=g&&b)return 0;if(d&&!b)return 1;if(!t&&!d)return null;let e=d?s+1:s-1,f=a/Math.abs(d?v[e]-v[e-1]:v[e+1]-v[e]);return d?1-f:f},setActiveSnapPoint:m,activeSnapPointIndex:s,onRelease:function({draggedDistance:a,closeDrawer:b,velocity:d,dismissible:f}){if(void 0===g)return;let h="bottom"===i||"right"===i?(null!=w?w:0)-a:(null!=w?w:0)+a,j=s===g-1,l=0===s,m=a>0;if(j&&q(e.current,{transition:`opacity 0.5s cubic-bezier(${u.join(",")})`}),!k&&d>2&&!m)return void(f?b():y(v[0]));if(!k&&d>2&&m&&v&&c)return void y(v[c.length-1]);let n=null==v?void 0:v.reduce((a,b)=>"number"!=typeof a||"number"!=typeof b?a:Math.abs(b-h)<Math.abs(a-h)?b:a),o=r(i)?window.innerHeight:window.innerWidth;if(d>.4&&Math.abs(a)<.4*o){let a=m?1:-1;return a>0&&p&&c?void y(v[c.length-1]):void(l&&a<0&&f&&b(),null===s||y(v[s+a]))}y(n)},onDrag:function({draggedDistance:a}){if(null===w)return;let b="bottom"===i||"right"===i?w-a:w+a;("bottom"===i||"right"===i)&&b<v[v.length-1]||("top"===i||"left"===i)&&b>v[v.length-1]||q(d.current,{transform:r(i)?`translate3d(0, ${b}px, 0)`:`translate3d(${b}px, 0, 0)`})},snapPointsOffset:v}}({snapPoints:o,activeSnapPointProp:E,setActiveSnapPointProp:F,drawerRef:an,fadeFromIndex:D,overlayRef:ac,onSnapPointChange:ar,direction:L,container:S,snapToSequentialPoint:O});!function(a={}){let{isDisabled:c}=a;l(()=>{if(!c)return 1==++n&&j(),()=>{0==--n&&(null==b||b())}},[c])}({isDisabled:!W||$||!H||aa||!Y||!Q||!N});let{restorePositionSetting:aA}=function({isOpen:a,modal:b,nested:c,hasBeenOpened:d,preventScrollRestoration:e,noBodyStyles:g}){let[h,j]=f.default.useState(()=>""),k=f.default.useRef(0),l=f.default.useCallback(()=>{if(i()&&null===z&&a&&!g){z={position:document.body.style.position,top:document.body.style.top,left:document.body.style.left,height:document.body.style.height,right:"unset"};let{scrollX:a,innerHeight:b}=window;document.body.style.setProperty("position","fixed","important"),Object.assign(document.body.style,{top:`${-k.current}px`,left:`${-a}px`,right:"0px",height:"auto"}),window.setTimeout(()=>window.requestAnimationFrame(()=>{let a=b-window.innerHeight;a&&k.current>=b&&(document.body.style.top=`${-(k.current+a)}px`)}),300)}},[a]),m=f.default.useCallback(()=>{if(i()&&null!==z&&!g){let a=-parseInt(document.body.style.top,10),b=-parseInt(document.body.style.left,10);Object.assign(document.body.style,z),window.requestAnimationFrame(()=>{e&&h!==window.location.href?j(window.location.href):window.scrollTo(b,a)}),z=null}},[h]);return f.default.useEffect(()=>{function a(){k.current=window.scrollY}return a(),window.addEventListener("scroll",a),()=>{window.removeEventListener("scroll",a)}},[]),f.default.useEffect(()=>{if(b)return()=>{"u"<typeof document||document.querySelector("[data-vaul-drawer]")||m()}},[b,m]),f.default.useEffect(()=>{!c&&d&&(a?(window.matchMedia("(display-mode: standalone)").matches||l(),b||window.setTimeout(()=>{m()},500)):m())},[a,d,h,b,c,l,m]),{restorePositionSetting:m}}({isOpen:W,modal:H,nested:null!=J&&J,hasBeenOpened:Y,preventScrollRestoration:P,noBodyStyles:K});function aB(){return(window.innerWidth-26)/window.innerWidth}function aC(a,b){var c;let d=a,e=null==(c=window.getSelection())?void 0:c.toString(),f=an.current?s(an.current,L):null,g=new Date;if("SELECT"===d.tagName||d.hasAttribute("data-vaul-no-drag")||d.closest("[data-vaul-no-drag]"))return!1;if("right"===L||"left"===L)return!0;if(ad.current&&g.getTime()-ad.current.getTime()<500)return!1;if(null!==f&&("bottom"===L?f>0:f<0))return!0;if(e&&e.length>0)return!1;if(ag.current&&g.getTime()-ag.current.getTime()<A&&0===f||b)return ag.current=g,!1;for(;d;){if(d.scrollHeight>d.clientHeight){if(0!==d.scrollTop)return ag.current=new Date,!1;if("dialog"===d.getAttribute("role"))break}d=d.parentNode}return!0}function aD(a){$&&an.current&&(an.current.classList.remove(v),ah.current=!1,_(!1),af.current=new Date),null==I||I(),a||X(!1),setTimeout(()=>{o&&au(o[0])},500)}function aE(){if(!an.current)return;let a=document.querySelector("[data-vaul-drawer-wrapper]"),b=s(an.current,L);q(an.current,{transform:"translate3d(0, 0, 0)",transition:`transform 0.5s cubic-bezier(${u.join(",")})`}),q(ac.current,{transition:`opacity 0.5s cubic-bezier(${u.join(",")})`,opacity:"1"}),t&&b&&b>0&&W&&q(a,{borderRadius:"8px",overflow:"hidden",...r(L)?{transform:`scale(${aB()}) translate3d(0, calc(env(safe-area-inset-top) + 14px), 0)`,transformOrigin:"top"}:{transform:`scale(${aB()}) translate3d(calc(env(safe-area-inset-top) + 14px), 0, 0)`,transformOrigin:"left"},transitionProperty:"transform, border-radius",transitionDuration:"0.5s",transitionTimingFunction:`cubic-bezier(${u.join(",")})`},!0)}return f.default.useEffect(()=>{window.requestAnimationFrame(()=>{al.current=!0})},[]),f.default.useEffect(()=>{var a;function b(){var a,b;if(an.current&&Q&&((a=document.activeElement)instanceof HTMLInputElement&&!m.has(a.type)||a instanceof HTMLTextAreaElement||a instanceof HTMLElement&&a.isContentEditable||ak.current)){let a=(null==(b=window.visualViewport)?void 0:b.height)||0,c=window.innerHeight,d=c-a,e=an.current.getBoundingClientRect().height||0;aq.current||(aq.current=e);let f=an.current.getBoundingClientRect().top;if(Math.abs(am.current-d)>60&&(ak.current=!ak.current),o&&o.length>0&&aw&&at&&(d+=aw[at]||0),am.current=d,e>a||ak.current){let b=an.current.getBoundingClientRect().height,g=b;b>a&&(g=a-(e>.8*c?f:26)),G?an.current.style.height=`${b-Math.max(d,0)}px`:an.current.style.height=`${Math.max(g,a-f)}px`}else navigator.userAgent,an.current.style.height=`${aq.current}px`;o&&o.length>0&&!ak.current?an.current.style.bottom="0px":an.current.style.bottom=`${Math.max(d,0)}px`}}return null==(a=window.visualViewport)||a.addEventListener("resize",b),()=>{var a;return null==(a=window.visualViewport)?void 0:a.removeEventListener("resize",b)}},[at,o,aw]),f.default.useEffect(()=>(W&&(q(document.documentElement,{scrollBehavior:"auto"}),ad.current=new Date),()=>{!function(a,b){if(!a||!(a instanceof HTMLElement))return;let c=p.get(a);c&&(a.style[b]=c[b])}(document.documentElement,"scrollBehavior")}),[W]),f.default.useEffect(()=>{H||window.requestAnimationFrame(()=>{document.body.style.pointerEvents="auto"})},[H]),f.default.createElement(e.Root,{defaultOpen:M,onOpenChange:a=>{(B||a)&&(a?Z(!0):aD(!0),X(a))},open:W},f.default.createElement(g.Provider,{value:{activeSnapPoint:as,snapPoints:o,setActiveSnapPoint:au,drawerRef:an,overlayRef:ac,onOpenChange:c,onPress:function(a){var b,c;!B&&!o||(!an.current||an.current.contains(a.target))&&(ao.current=(null==(b=an.current)?void 0:b.getBoundingClientRect().height)||0,ap.current=(null==(c=an.current)?void 0:c.getBoundingClientRect().width)||0,_(!0),ae.current=new Date,j(),a.target.setPointerCapture(a.pointerId),aj.current=r(L)?a.pageY:a.pageX)},onRelease:function(a){var b,c;if(!$||!an.current)return;an.current.classList.remove(v),ah.current=!1,_(!1),af.current=new Date;let d=s(an.current,L);if(!a||!aC(a.target,!1)||!d||Number.isNaN(d)||null===ae.current)return;let e=af.current.getTime()-ae.current.getTime(),f=aj.current-(r(L)?a.pageY:a.pageX),g=Math.abs(f)/e;if(g>.05&&(ab(!0),setTimeout(()=>{ab(!1)},200)),o){av({draggedDistance:f*("bottom"===L||"right"===L?1:-1),closeDrawer:aD,velocity:g,dismissible:B}),null==k||k(a,!0);return}if("bottom"===L||"right"===L?f>0:f<0){aE(),null==k||k(a,!0);return}if(g>.4){aD(),null==k||k(a,!1);return}let h=Math.min(null!=(b=an.current.getBoundingClientRect().height)?b:0,window.innerHeight),i=Math.min(null!=(c=an.current.getBoundingClientRect().width)?c:0,window.innerWidth);if(Math.abs(d)>=("left"===L||"right"===L?i:h)*y){aD(),null==k||k(a,!1);return}null==k||k(a,!0),aE()},onDrag:function(a){if(an.current&&$){let b="bottom"===L||"right"===L?1:-1,c=(aj.current-(r(L)?a.pageY:a.pageX))*b,d=c>0,e=o&&!B&&!d;if(e&&0===at)return;let f=Math.abs(c),g=document.querySelector("[data-vaul-drawer-wrapper]"),i=f/("bottom"===L||"top"===L?ao.current:ap.current),j=az(f,d);if(null!==j&&(i=j),e&&i>=1||!ah.current&&!aC(a.target,d))return;if(an.current.classList.add(v),ah.current=!0,q(an.current,{transition:"none"}),q(ac.current,{transition:"none"}),o&&ax({draggedDistance:c}),d&&!o){let a=Math.min(-(8*(Math.log(c+1)-2)*1),0)*b;q(an.current,{transform:r(L)?`translate3d(0, ${a}px, 0)`:`translate3d(${a}px, 0, 0)`});return}let k=1-i;if((ay||D&&at===D-1)&&(null==h||h(a,i),q(ac.current,{opacity:`${k}`,transition:"none"},!0)),g&&ac.current&&t){let a=Math.min(aB()+i*(1-aB()),1),b=8-8*i,c=Math.max(0,14-14*i);q(g,{borderRadius:`${b}px`,transform:r(L)?`scale(${a}) translate3d(0, ${c}px, 0)`:`scale(${a}) translate3d(${c}px, 0, 0)`,transition:"none"},!0)}if(!o){let a=f*b;q(an.current,{transform:r(L)?`translate3d(0, ${a}px, 0)`:`translate3d(${a}px, 0, 0)`})}}},dismissible:B,shouldAnimate:al,handleOnly:C,isOpen:W,isDragging:$,shouldFade:ay,closeDrawer:aD,onNestedDrag:function(a,b){if(b<0)return;let c=(window.innerWidth-16)/window.innerWidth,d=c+b*(1-c),e=-16+16*b;q(an.current,{transform:r(L)?`scale(${d}) translate3d(0, ${e}px, 0)`:`scale(${d}) translate3d(${e}px, 0, 0)`,transition:"none"})},onNestedOpenChange:function(a){let b=a?(window.innerWidth-16)/window.innerWidth:1,c=a?-16:0;ai.current&&window.clearTimeout(ai.current),q(an.current,{transition:`transform 0.5s cubic-bezier(${u.join(",")})`,transform:r(L)?`scale(${b}) translate3d(0, ${c}px, 0)`:`scale(${b}) translate3d(${c}px, 0, 0)`}),!a&&an.current&&(ai.current=setTimeout(()=>{let a=s(an.current,L);q(an.current,{transition:"none",transform:r(L)?`translate3d(0, ${a}px, 0)`:`translate3d(${a}px, 0, 0)`})},500))},onNestedRelease:function(a,b){let c=r(L)?window.innerHeight:window.innerWidth,d=b?(c-16)/c:1,e=b?-16:0;b&&q(an.current,{transition:`transform 0.5s cubic-bezier(${u.join(",")})`,transform:r(L)?`scale(${d}) translate3d(0, ${e}px, 0)`:`scale(${d}) translate3d(${e}px, 0, 0)`})},keyboardIsOpen:ak,modal:H,snapPointsOffset:aw,activeSnapPointIndex:at,direction:L,shouldScaleBackground:t,setBackgroundColorOnScale:w,noBodyStyles:K,container:S,autoFocus:T}},d))}let B=f.default.forwardRef(function({...a},b){let{overlayRef:c,snapPoints:d,onRelease:g,shouldFade:i,isOpen:j,modal:k,shouldAnimate:l}=h(),m=o(b,c),n=d&&d.length>0;if(!k)return null;let p=f.default.useCallback(a=>g(a),[g]);return f.default.createElement(e.Overlay,{onMouseUp:p,ref:m,"data-vaul-overlay":"","data-vaul-snap-points":j&&n?"true":"false","data-vaul-snap-points-overlay":j&&i?"true":"false","data-vaul-animate":(null==l?void 0:l.current)?"true":"false",...a})});B.displayName="Drawer.Overlay";let C=f.default.forwardRef(function({onPointerDownOutside:a,style:b,onOpenAutoFocus:c,...d},g){let{drawerRef:i,onPress:j,onRelease:k,onDrag:l,keyboardIsOpen:m,snapPointsOffset:n,activeSnapPointIndex:p,modal:q,isOpen:s,direction:v,snapPoints:w,container:x,handleOnly:z,shouldAnimate:A,autoFocus:B}=h(),[C,D]=f.default.useState(!1),E=o(g,i),F=f.default.useRef(null),G=f.default.useRef(null),H=f.default.useRef(!1),I=w&&w.length>0;function J(a){F.current=null,H.current=!1,k(a)}return!function(){let{direction:a,isOpen:b,shouldScaleBackground:c,setBackgroundColorOnScale:d,noBodyStyles:e}=h(),g=f.default.useRef(null),i=(0,f.useMemo)(()=>document.body.style.backgroundColor,[]);function j(){return(window.innerWidth-26)/window.innerWidth}f.default.useEffect(()=>{if(b&&c){g.current&&clearTimeout(g.current);let b=document.querySelector("[data-vaul-drawer-wrapper]")||document.querySelector("[vaul-drawer-wrapper]");if(!b)return;!function(...a){}(d&&!e?t(document.body,{background:"black"}):y,t(b,{transformOrigin:r(a)?"top":"left",transitionProperty:"transform, border-radius",transitionDuration:"0.5s",transitionTimingFunction:`cubic-bezier(${u.join(",")})`}));let c=t(b,{borderRadius:"8px",overflow:"hidden",...r(a)?{transform:`scale(${j()}) translate3d(0, calc(env(safe-area-inset-top) + 14px), 0)`}:{transform:`scale(${j()}) translate3d(calc(env(safe-area-inset-top) + 14px), 0, 0)`}});return()=>{c(),g.current=window.setTimeout(()=>{i?document.body.style.background=i:document.body.style.removeProperty("background")},500)}}},[b,c,i])}(),f.default.useEffect(()=>{I&&window.requestAnimationFrame(()=>{D(!0)})},[]),f.default.createElement(e.Content,{"data-vaul-drawer-direction":v,"data-vaul-drawer":"","data-vaul-delayed-snap-points":C?"true":"false","data-vaul-snap-points":s&&I?"true":"false","data-vaul-custom-container":x?"true":"false","data-vaul-animate":(null==A?void 0:A.current)?"true":"false",...d,ref:E,style:n&&n.length>0?{"--snap-point-height":`${n[null!=p?p:0]}px`,...b}:b,onPointerDown:a=>{z||(null==d.onPointerDown||d.onPointerDown.call(d,a),F.current={x:a.pageX,y:a.pageY},j(a))},onOpenAutoFocus:a=>{null==c||c(a),B||a.preventDefault()},onPointerDownOutside:b=>{(null==a||a(b),!q||b.defaultPrevented)?b.preventDefault():m.current&&(m.current=!1)},onFocusOutside:a=>{if(!q)return void a.preventDefault()},onPointerMove:a=>{if(G.current=a,z||(null==d.onPointerMove||d.onPointerMove.call(d,a),!F.current))return;let b=a.pageY-F.current.y,c=a.pageX-F.current.x,e="touch"===a.pointerType?10:2;((a,b,c=0)=>{if(H.current)return!0;let d=Math.abs(a.y),e=Math.abs(a.x),f=e>d,g=["bottom","right"].includes(b)?1:-1;if("left"===b||"right"===b){if(!(a.x*g<0)&&e>=0&&e<=c)return f}else if(!(a.y*g<0)&&d>=0&&d<=c)return!f;return H.current=!0,!0})({x:c,y:b},v,e)?l(a):(Math.abs(c)>e||Math.abs(b)>e)&&(F.current=null)},onPointerUp:a=>{null==d.onPointerUp||d.onPointerUp.call(d,a),F.current=null,H.current=!1,k(a)},onPointerOut:a=>{null==d.onPointerOut||d.onPointerOut.call(d,a),J(G.current)},onContextMenu:a=>{null==d.onContextMenu||d.onContextMenu.call(d,a),G.current&&J(G.current)}})});C.displayName="Drawer.Content";let D=f.default.forwardRef(function({preventCycle:a=!1,children:b,...c},d){let{closeDrawer:e,isDragging:g,snapPoints:i,activeSnapPoint:j,setActiveSnapPoint:k,dismissible:l,handleOnly:m,isOpen:n,onPress:o,onDrag:p}=h(),q=f.default.useRef(null),r=f.default.useRef(!1);function s(){q.current&&window.clearTimeout(q.current),r.current=!1}return f.default.createElement("div",{onClick:function(){r.current?s():window.setTimeout(()=>{!function(){if(g||a||r.current)return s();if(s(),!i||0===i.length){l||e();return}if(j===i[i.length-1]&&l)return e();let b=i.findIndex(a=>a===j);-1===b||k(i[b+1])}()},120)},onPointerCancel:s,onPointerDown:a=>{m&&o(a),q.current=window.setTimeout(()=>{r.current=!0},250)},onPointerMove:a=>{m&&p(a)},ref:d,"data-vaul-drawer-visible":n?"true":"false","data-vaul-handle":"","aria-hidden":"true",...c},f.default.createElement("span",{"data-vaul-handle-hitarea":"","aria-hidden":"true"},b))});D.displayName="Drawer.Handle";let E={Root:A,NestedRoot:function({onDrag:a,onOpenChange:b,open:c,...d}){let{onNestedDrag:e,onNestedOpenChange:g,onNestedRelease:i}=h();if(!e)throw Error("Drawer.NestedRoot must be placed in another drawer");return f.default.createElement(A,{nested:!0,open:c,onClose:()=>{g(!1)},onDrag:(b,c)=>{e(b,c),null==a||a(b,c)},onOpenChange:a=>{a&&g(a),null==b||b(a)},onRelease:i,...d})},Content:C,Overlay:B,Trigger:e.Trigger,Portal:function(a){let b=h(),{container:c=b.container,...d}=a;return f.default.createElement(e.Portal,{container:c,...d})},Handle:D,Close:e.Close,Title:e.Title,Description:e.Description};var F=a.i(85536);function G({...a}){return(0,c.jsx)(E.Root,{"data-slot":"drawer",...a})}function H({...a}){return(0,c.jsx)(E.Portal,{"data-slot":"drawer-portal",...a})}function I({className:a,...b}){return(0,c.jsx)(E.Overlay,{"data-slot":"drawer-overlay",className:(0,F.cn)("fixed inset-0 z-50 bg-black/50",a),...b})}function J({className:a,children:b,direction:e="bottom",showCloseButton:f=!0,...g}){return(0,c.jsx)(H,{children:(0,c.jsxs)(E.Content,{"data-slot":"drawer-content",className:(0,F.cn)("bg-background fixed z-50 flex flex-col shadow-lg","bottom"===e&&"inset-x-0 bottom-0 mb-24 rounded-t-lg border-t","top"===e&&"inset-x-0 top-0 mt-24 rounded-b-lg border-b","right"===e&&"inset-y-0 right-0 h-full w-3/4 border-l","left"===e&&"inset-y-0 left-0 h-full w-3/4 border-r",a),style:{"--initial-transform":"right"===e?"calc(100% + 8px)":"left"===e||"top"===e?"calc(-100% - 8px)":"calc(100% + 8px)",userSelect:"text",...g.style??{}},...g,children:[b,f?(0,c.jsxs)(E.Close,{className:"ring-offset-background focus:ring-ring absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none",children:[(0,c.jsx)(d.XIcon,{className:"size-4"}),(0,c.jsx)("span",{className:"sr-only",children:"Close"})]}):null]})})}function K({className:a,...b}){return(0,c.jsx)("div",{"data-slot":"drawer-header",className:(0,F.cn)("flex flex-col gap-1.5 p-4",a),...b})}function L({className:a,...b}){return(0,c.jsx)("div",{"data-slot":"drawer-footer",className:(0,F.cn)("mt-auto flex flex-col gap-2 p-4",a),...b})}function M({className:a,...b}){return(0,c.jsx)(E.Title,{"data-slot":"drawer-title",className:(0,F.cn)("text-foreground font-semibold",a),...b})}function N({className:a,...b}){return(0,c.jsx)(E.Description,{"data-slot":"drawer-description",className:(0,F.cn)("text-muted-foreground text-sm",a),...b})}a.s(["Drawer",()=>G,"DrawerContent",()=>J,"DrawerDescription",()=>N,"DrawerFooter",()=>L,"DrawerHeader",()=>K,"DrawerOverlay",()=>I,"DrawerTitle",()=>M],2824)},24255,a=>{"use strict";var b=a.i(10973),c=a.i(96960),d=a.i(10568),e=a.i(50490),f=a.i(5698),g=a.i(42261),h=a.i(85536);a.i(69029);var i=a.i(5623);a.i(49235);var j=a.i(85080),k=a.i(2824),l=a.i(13126),m=a.i(82934),n=a.i(18662),o=a.i(21333);let p=(0,g.cva)("",{variants:{size:{sm:"w-96",md:"w-xl"}},defaultVariants:{size:"sm"}});function q({open:a,onClose:e,modal:f=!1,dismissOnOutsideClick:g=!1,title:i="Drawer",size:j,header:m,children:n,footer:q,className:s,"data-testid":t,deployTarget:u}){let v=(0,o.useFeatureFlags)(),w=(0,c.useRef)(null);return(0,c.useEffect)(()=>{if(!a||f)return;let b=a=>{let b=a.target;!document.body.contains(b)||w.current?.contains(b)||b.closest(g?'[role="alertdialog"], [role="dialog"], [role="menu"], [role="listbox"], [data-radix-popper-content-wrapper]':'[data-no-drawer-close], [role="alertdialog"], [role="dialog"], [role="menu"], [role="listbox"], [data-radix-popper-content-wrapper]')||e()};return document.addEventListener("click",b),()=>document.removeEventListener("click",b)},[a,f,e,g]),(0,b.jsxs)(k.Drawer,{direction:"right",modal:f,handleOnly:!0,open:a,onOpenChange:a=>{a||e()},children:[f?(0,b.jsx)(k.DrawerOverlay,{}):null,(0,b.jsxs)(k.DrawerContent,{ref:w,direction:"right",showCloseButton:!1,className:(0,h.cn)(p({size:j}),s),"data-testid":t,onInteractOutside:f?void 0:a=>a.preventDefault(),children:[(0,b.jsx)(k.DrawerTitle,{asChild:!0,children:(0,b.jsx)("span",{className:"sr-only",children:i})}),(0,b.jsx)(k.DrawerDescription,{asChild:!0,children:(0,b.jsx)("span",{className:"sr-only",children:i})}),(0,b.jsxs)("button",{type:"button","aria-label":"Close",onClick:e,className:"ring-offset-background focus:ring-ring absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden","data-testid":t?`${t}-close-button`:void 0,children:[(0,b.jsx)(d.XIcon,{className:"size-4"}),(0,b.jsx)("span",{className:"sr-only",children:"Close"})]}),m?(0,b.jsx)(k.DrawerHeader,{className:"shrink-0",children:m}):null,m?(0,b.jsx)(l.Separator,{}):null,v.envDeploy&&u?(0,b.jsx)(r,{deployTarget:u}):null,(0,b.jsx)("div",{className:"flex min-h-0 flex-1 flex-col overflow-hidden",children:n}),q?(0,b.jsx)(k.DrawerFooter,{className:"shrink-0",children:q}):null]})]})}function r({deployTarget:a}){let c=(0,n.useDeployAction)(a),d="Booting"===c.status||"Ready"===c.status;return(0,b.jsxs)("div",{"data-testid":"base-drawer-deploy-bar",className:"flex items-center gap-2 px-4 pb-3",children:[(0,b.jsx)(m.TooltipProvider,{children:(0,b.jsxs)(m.Tooltip,{children:[(0,b.jsx)(m.TooltipTrigger,{asChild:!0,children:(0,b.jsx)("span",{children:(0,b.jsx)(i.ActionButton,{label:d?"Stop Dev Server":"Start Dev Server",onClick:d?c.stop:c.deploy,loading:c.deployLoading||c.stopLoading,error:!!c.deployError,icon:d?f.Square:e.Play,iconOnly:!0,variant:"outline",size:"icon-sm"})})}),(0,b.jsx)(m.TooltipContent,{children:d?"Stop Dev Server":"Start Dev Server"})]})}),d?(0,b.jsx)(j.DeploymentStatusBadge,{status:c.status,url:c.url,targetId:a.targetId}):null]})}a.s(["BaseDrawer",()=>q])}];
2
-
3
- //# sourceMappingURL=_1e3cf73b._.js.map
@@ -1,7 +0,0 @@
1
- module.exports=[13126,a=>{"use strict";var b=a.i(10973),c=a.i(96960),d=a.i(66873),e="horizontal",f=["horizontal","vertical"],g=c.forwardRef((a,c)=>{var g;let{decorative:h,orientation:i=e,...j}=a,k=(g=i,f.includes(g))?i:e;return(0,b.jsx)(d.Primitive.div,{"data-orientation":k,...h?{role:"none"}:{"aria-orientation":"vertical"===k?k:void 0,role:"separator"},...j,ref:c})});g.displayName="Separator",a.s(["Root",()=>g,"Separator",()=>g],1443);var h=a.i(1443),h=h,i=a.i(85536);function j({className:a,orientation:c="horizontal",decorative:d=!0,...e}){return(0,b.jsx)(h.Root,{"data-slot":"separator",decorative:d,orientation:c,className:(0,i.cn)("bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px",a),...e})}a.s(["Separator",()=>j],13126)},89868,a=>{"use strict";let b=(0,a.i(25700).default)("x",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]);a.s(["default",()=>b])},10568,a=>{"use strict";var b=a.i(89868);a.s(["XIcon",()=>b.default])},40093,a=>{"use strict";var b=a.i(96960),c=a.i(59653),d=a.i(6175),e=a.i(7420),f=a.i(5472),g=a.i(17329),h=a.i(58761),i=a.i(59675),j=a.i(80930),k=a.i(14272),l=a.i(66873),m=a.i(51473),n=a.i(45291),o=a.i(16164),p=a.i(90986),q=a.i(10973),r="Dialog",[s,t]=(0,e.createContextScope)(r),[u,v]=s(r),w=a=>{let{__scopeDialog:c,children:d,open:e,defaultOpen:h,onOpenChange:i,modal:j=!0}=a,k=b.useRef(null),l=b.useRef(null),[m,n]=(0,g.useControllableState)({prop:e,defaultProp:h??!1,onChange:i,caller:r});return(0,q.jsx)(u,{scope:c,triggerRef:k,contentRef:l,contentId:(0,f.useId)(),titleId:(0,f.useId)(),descriptionId:(0,f.useId)(),open:m,onOpenChange:n,onOpenToggle:b.useCallback(()=>n(a=>!a),[n]),modal:j,children:d})};w.displayName=r;var x="DialogTrigger",y=b.forwardRef((a,b)=>{let{__scopeDialog:e,...f}=a,g=v(x,e),h=(0,d.useComposedRefs)(b,g.triggerRef);return(0,q.jsx)(l.Primitive.button,{type:"button","aria-haspopup":"dialog","aria-expanded":g.open,"aria-controls":g.contentId,"data-state":S(g.open),...f,ref:h,onClick:(0,c.composeEventHandlers)(a.onClick,g.onOpenToggle)})});y.displayName=x;var z="DialogPortal",[A,B]=s(z,{forceMount:void 0}),C=a=>{let{__scopeDialog:c,forceMount:d,children:e,container:f}=a,g=v(z,c);return(0,q.jsx)(A,{scope:c,forceMount:d,children:b.Children.map(e,a=>(0,q.jsx)(k.Presence,{present:d||g.open,children:(0,q.jsx)(j.Portal,{asChild:!0,container:f,children:a})}))})};C.displayName=z;var D="DialogOverlay",E=b.forwardRef((a,b)=>{let c=B(D,a.__scopeDialog),{forceMount:d=c.forceMount,...e}=a,f=v(D,a.__scopeDialog);return f.modal?(0,q.jsx)(k.Presence,{present:d||f.open,children:(0,q.jsx)(G,{...e,ref:b})}):null});E.displayName=D;var F=(0,p.createSlot)("DialogOverlay.RemoveScroll"),G=b.forwardRef((a,b)=>{let{__scopeDialog:c,...d}=a,e=v(D,c);return(0,q.jsx)(n.RemoveScroll,{as:F,allowPinchZoom:!0,shards:[e.contentRef],children:(0,q.jsx)(l.Primitive.div,{"data-state":S(e.open),...d,ref:b,style:{pointerEvents:"auto",...d.style}})})}),H="DialogContent",I=b.forwardRef((a,b)=>{let c=B(H,a.__scopeDialog),{forceMount:d=c.forceMount,...e}=a,f=v(H,a.__scopeDialog);return(0,q.jsx)(k.Presence,{present:d||f.open,children:f.modal?(0,q.jsx)(J,{...e,ref:b}):(0,q.jsx)(K,{...e,ref:b})})});I.displayName=H;var J=b.forwardRef((a,e)=>{let f=v(H,a.__scopeDialog),g=b.useRef(null),h=(0,d.useComposedRefs)(e,f.contentRef,g);return b.useEffect(()=>{let a=g.current;if(a)return(0,o.hideOthers)(a)},[]),(0,q.jsx)(L,{...a,ref:h,trapFocus:f.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:(0,c.composeEventHandlers)(a.onCloseAutoFocus,a=>{a.preventDefault(),f.triggerRef.current?.focus()}),onPointerDownOutside:(0,c.composeEventHandlers)(a.onPointerDownOutside,a=>{let b=a.detail.originalEvent,c=0===b.button&&!0===b.ctrlKey;(2===b.button||c)&&a.preventDefault()}),onFocusOutside:(0,c.composeEventHandlers)(a.onFocusOutside,a=>a.preventDefault())})}),K=b.forwardRef((a,c)=>{let d=v(H,a.__scopeDialog),e=b.useRef(!1),f=b.useRef(!1);return(0,q.jsx)(L,{...a,ref:c,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:b=>{a.onCloseAutoFocus?.(b),b.defaultPrevented||(e.current||d.triggerRef.current?.focus(),b.preventDefault()),e.current=!1,f.current=!1},onInteractOutside:b=>{a.onInteractOutside?.(b),b.defaultPrevented||(e.current=!0,"pointerdown"===b.detail.originalEvent.type&&(f.current=!0));let c=b.target;d.triggerRef.current?.contains(c)&&b.preventDefault(),"focusin"===b.detail.originalEvent.type&&f.current&&b.preventDefault()}})}),L=b.forwardRef((a,c)=>{let{__scopeDialog:e,trapFocus:f,onOpenAutoFocus:g,onCloseAutoFocus:j,...k}=a,l=v(H,e),n=b.useRef(null),o=(0,d.useComposedRefs)(c,n);return(0,m.useFocusGuards)(),(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(i.FocusScope,{asChild:!0,loop:!0,trapped:f,onMountAutoFocus:g,onUnmountAutoFocus:j,children:(0,q.jsx)(h.DismissableLayer,{role:"dialog",id:l.contentId,"aria-describedby":l.descriptionId,"aria-labelledby":l.titleId,"data-state":S(l.open),...k,ref:o,onDismiss:()=>l.onOpenChange(!1)})}),(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(W,{titleId:l.titleId}),(0,q.jsx)(X,{contentRef:n,descriptionId:l.descriptionId})]})]})}),M="DialogTitle",N=b.forwardRef((a,b)=>{let{__scopeDialog:c,...d}=a,e=v(M,c);return(0,q.jsx)(l.Primitive.h2,{id:e.titleId,...d,ref:b})});N.displayName=M;var O="DialogDescription",P=b.forwardRef((a,b)=>{let{__scopeDialog:c,...d}=a,e=v(O,c);return(0,q.jsx)(l.Primitive.p,{id:e.descriptionId,...d,ref:b})});P.displayName=O;var Q="DialogClose",R=b.forwardRef((a,b)=>{let{__scopeDialog:d,...e}=a,f=v(Q,d);return(0,q.jsx)(l.Primitive.button,{type:"button",...e,ref:b,onClick:(0,c.composeEventHandlers)(a.onClick,()=>f.onOpenChange(!1))})});function S(a){return a?"open":"closed"}R.displayName=Q;var T="DialogTitleWarning",[U,V]=(0,e.createContext)(T,{contentName:H,titleName:M,docsSlug:"dialog"}),W=({titleId:a})=>{let c=V(T),d=`\`${c.contentName}\` requires a \`${c.titleName}\` for the component to be accessible for screen reader users.
2
-
3
- If you want to hide the \`${c.titleName}\`, you can wrap it with our VisuallyHidden component.
4
-
5
- For more information, see https://radix-ui.com/primitives/docs/components/${c.docsSlug}`;return b.useEffect(()=>{a&&(document.getElementById(a)||console.error(d))},[d,a]),null},X=({contentRef:a,descriptionId:c})=>{let d=V("DialogDescriptionWarning"),e=`Warning: Missing \`Description\` or \`aria-describedby={undefined}\` for {${d.contentName}}.`;return b.useEffect(()=>{let b=a.current?.getAttribute("aria-describedby");c&&b&&(document.getElementById(c)||console.warn(e))},[e,a,c]),null};a.s(["Close",()=>R,"Content",()=>I,"Description",()=>P,"Dialog",()=>w,"DialogClose",()=>R,"DialogContent",()=>I,"DialogDescription",()=>P,"DialogOverlay",()=>E,"DialogPortal",()=>C,"DialogTitle",()=>N,"DialogTrigger",()=>y,"Overlay",()=>E,"Portal",()=>C,"Root",()=>w,"Title",()=>N,"Trigger",()=>y,"WarningProvider",()=>U,"createDialogScope",()=>t])},71335,a=>{"use strict";var b=a.i(40093);a.s(["Dialog",0,b])},82697,76234,a=>{"use strict";let b=(0,a.i(25700).default)("circle-alert",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]]);a.s(["default",()=>b],76234),a.s(["CircleAlert",()=>b],82697)},88064,7052,a=>{"use strict";let b=(0,a.i(25700).default)("loader-circle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]]);a.s(["default",()=>b],7052),a.s(["Loader2",()=>b],88064)},19884,2103,87139,a=>{"use strict";var b=a.i(96960);let c="shep-sound-enabled",d="shep:sound-toggle";function e(){let[a,e]=(0,b.useState)(!0);(0,b.useEffect)(()=>{"false"===localStorage.getItem(c)&&e(!1);let a=a=>{e(a.detail)};return window.addEventListener(d,a),()=>window.removeEventListener(d,a)},[]);let f=(0,b.useCallback)(()=>{let b=!a;localStorage.setItem(c,String(b)),e(b),window.dispatchEvent(new CustomEvent(d,{detail:b}))},[a]);return{enabled:a,toggle:f}}a.s(["useSoundEnabled",()=>e],2103);let f={navigate:{sound:"tap_01",volume:.2},"menu-item":{sound:"tap_01",volume:.2},select:{sound:"select",volume:.3},"toggle-on":{sound:"toggle_on",volume:.3},"toggle-off":{sound:"toggle_off",volume:.3},click:{sound:"tap_01",volume:.3},cancel:{sound:"transition_down",volume:.3},expand:{sound:"swipe",volume:.3},collapse:{sound:"swipe",volume:.3},"menu-open":{sound:"select",volume:.3},copy:{sound:"select",volume:.3},"drawer-open":{sound:"transition_up",volume:.4},"drawer-close":{sound:"transition_down",volume:.4},submit:{sound:"button",volume:.4},approve:{sound:"celebration",volume:.5},reject:{sound:"caution",volume:.5},create:{sound:"transition_up",volume:.5},delete:{sound:"transition_down",volume:.5},"notification-success":{sound:"celebration",volume:.5},"notification-error":{sound:"caution",volume:.5},"notification-warning":{sound:"notification",volume:.5},"notification-info":{sound:"button",volume:.5}};function g(a){let{sound:c,volume:d}=f[a];return function(a,c={}){let{volume:d=1,loop:f=!1}=c,{enabled:g}=e(),h=(0,b.useRef)(null),i=(0,b.useRef)(!1);return(0,b.useEffect)(()=>{},[a,f,d]),{play:(0,b.useCallback)(()=>{if(!g)return;let a=h.current;a&&(a.currentTime=0,a.play()?.catch(a=>{}),i.current=!0)},[g,a]),stop:(0,b.useCallback)(()=>{let a=h.current;a&&(a.pause(),a.currentTime=0,i.current=!1)},[]),isPlaying:i.current}}(c,{volume:d})}a.s(["useSoundAction",()=>g],19884);let h=!!process.env.NEXT_PUBLIC_DEBUG,i=()=>void 0;function j(a){return{info:h?(...b)=>console.info(a,...b):i,debug:h?(...b)=>console.debug(a,...b):i,warn:(...b)=>console.warn(a,...b),error:(...b)=>console.error(a,...b)}}a.s(["createLogger",()=>j],87139)},21333,a=>{"use strict";var b=a.i(10973),c=a.i(96960);let d=(0,c.createContext)({skills:!1,envDeploy:!1,debug:!1});function e({children:a,flags:c}){return(0,b.jsx)(d.Provider,{value:c,children:a})}function f(){return(0,c.useContext)(d)}a.s(["FeatureFlagsProvider",()=>e,"useFeatureFlags",()=>f])}];
6
-
7
- //# sourceMappingURL=_34fbed18._.js.map