@shepai/cli 1.66.4 → 1.67.0

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 (272) hide show
  1. package/dist/src/presentation/web/components/common/base-drawer/base-drawer.d.ts.map +1 -1
  2. package/dist/src/presentation/web/components/common/base-drawer/base-drawer.js +21 -1
  3. package/dist/src/presentation/web/components/common/base-drawer/base-drawer.stories.d.ts +15 -1
  4. package/dist/src/presentation/web/components/common/base-drawer/base-drawer.stories.d.ts.map +1 -1
  5. package/dist/src/presentation/web/components/common/base-drawer/base-drawer.stories.js +16 -2
  6. package/dist/src/presentation/web/components/common/control-center-drawer/control-center-drawer.d.ts +12 -0
  7. package/dist/src/presentation/web/components/common/control-center-drawer/control-center-drawer.d.ts.map +1 -0
  8. package/dist/src/presentation/web/components/common/control-center-drawer/control-center-drawer.js +284 -0
  9. package/dist/src/presentation/web/components/common/control-center-drawer/control-center-drawer.stories.d.ts +33 -0
  10. package/dist/src/presentation/web/components/common/control-center-drawer/control-center-drawer.stories.d.ts.map +1 -0
  11. package/dist/src/presentation/web/components/common/control-center-drawer/control-center-drawer.stories.js +210 -0
  12. package/dist/src/presentation/web/components/common/control-center-drawer/drawer-view.d.ts +56 -0
  13. package/dist/src/presentation/web/components/common/control-center-drawer/drawer-view.d.ts.map +1 -0
  14. package/dist/src/presentation/web/components/common/control-center-drawer/drawer-view.js +32 -0
  15. package/dist/src/presentation/web/components/common/control-center-drawer/index.d.ts +3 -0
  16. package/dist/src/presentation/web/components/common/control-center-drawer/index.d.ts.map +1 -0
  17. package/dist/src/presentation/web/components/common/control-center-drawer/index.js +2 -0
  18. package/dist/src/presentation/web/components/common/drawer-action-bar/drawer-action-bar-config.d.ts +0 -4
  19. package/dist/src/presentation/web/components/common/drawer-action-bar/drawer-action-bar-config.d.ts.map +1 -1
  20. package/dist/src/presentation/web/components/common/drawer-action-bar/drawer-action-bar.d.ts +1 -1
  21. package/dist/src/presentation/web/components/common/drawer-action-bar/drawer-action-bar.d.ts.map +1 -1
  22. package/dist/src/presentation/web/components/common/drawer-action-bar/drawer-action-bar.js +18 -12
  23. package/dist/src/presentation/web/components/common/drawer-action-bar/drawer-action-bar.stories.d.ts +4 -6
  24. package/dist/src/presentation/web/components/common/drawer-action-bar/drawer-action-bar.stories.d.ts.map +1 -1
  25. package/dist/src/presentation/web/components/common/drawer-action-bar/drawer-action-bar.stories.js +5 -13
  26. package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.d.ts.map +1 -1
  27. package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.js +2 -13
  28. package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.stories.d.ts +2 -10
  29. package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.stories.d.ts.map +1 -1
  30. package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.stories.js +21 -1
  31. package/dist/src/presentation/web/components/common/feature-create-drawer/index.d.ts +1 -1
  32. package/dist/src/presentation/web/components/common/feature-create-drawer/index.d.ts.map +1 -1
  33. package/dist/src/presentation/web/components/common/feature-drawer/feature-drawer.d.ts.map +1 -1
  34. package/dist/src/presentation/web/components/common/feature-drawer/feature-drawer.js +14 -20
  35. package/dist/src/presentation/web/components/common/feature-drawer/feature-drawer.stories.d.ts +7 -1
  36. package/dist/src/presentation/web/components/common/feature-drawer/feature-drawer.stories.d.ts.map +1 -1
  37. package/dist/src/presentation/web/components/common/feature-drawer/feature-drawer.stories.js +37 -2
  38. package/dist/src/presentation/web/components/common/index.d.ts +1 -0
  39. package/dist/src/presentation/web/components/common/index.d.ts.map +1 -1
  40. package/dist/src/presentation/web/components/common/index.js +1 -0
  41. package/dist/src/presentation/web/components/common/merge-review/merge-review.d.ts.map +1 -1
  42. package/dist/src/presentation/web/components/common/merge-review/merge-review.js +2 -2
  43. package/dist/src/presentation/web/components/common/merge-review/merge-review.stories.d.ts.map +1 -1
  44. package/dist/src/presentation/web/components/common/merge-review/merge-review.stories.js +1 -2
  45. package/dist/src/presentation/web/components/common/prd-questionnaire/prd-questionnaire.js +1 -1
  46. package/dist/src/presentation/web/components/common/prd-questionnaire/prd-questionnaire.stories.d.ts.map +1 -1
  47. package/dist/src/presentation/web/components/common/prd-questionnaire/prd-questionnaire.stories.js +1 -2
  48. package/dist/src/presentation/web/components/common/repository-node/repository-drawer.d.ts.map +1 -1
  49. package/dist/src/presentation/web/components/common/repository-node/repository-drawer.js +5 -1
  50. package/dist/src/presentation/web/components/common/repository-node/repository-drawer.stories.d.ts +2 -0
  51. package/dist/src/presentation/web/components/common/repository-node/repository-drawer.stories.d.ts.map +1 -1
  52. package/dist/src/presentation/web/components/common/repository-node/repository-drawer.stories.js +13 -2
  53. package/dist/src/presentation/web/components/common/review-drawer-shell/review-drawer-shell.d.ts.map +1 -1
  54. package/dist/src/presentation/web/components/common/review-drawer-shell/review-drawer-shell.js +5 -2
  55. package/dist/src/presentation/web/components/common/review-drawer-shell/review-drawer-shell.stories.js +1 -1
  56. package/dist/src/presentation/web/components/common/tech-decisions-review/tech-decisions-review.d.ts.map +1 -1
  57. package/dist/src/presentation/web/components/common/tech-decisions-review/tech-decisions-review.js +1 -1
  58. package/dist/src/presentation/web/components/common/tech-decisions-review/tech-decisions-review.stories.d.ts.map +1 -1
  59. package/dist/src/presentation/web/components/common/tech-decisions-review/tech-decisions-review.stories.js +1 -2
  60. package/dist/src/presentation/web/components/features/control-center/control-center-inner.d.ts.map +1 -1
  61. package/dist/src/presentation/web/components/features/control-center/control-center-inner.js +20 -215
  62. package/dist/src/presentation/web/components/features/control-center/use-control-center-state.d.ts.map +1 -1
  63. package/dist/src/presentation/web/components/features/control-center/use-control-center-state.js +2 -1
  64. package/dist/src/presentation/web/components/features/features-canvas/features-canvas.d.ts.map +1 -1
  65. package/dist/src/presentation/web/components/features/features-canvas/features-canvas.js +1 -1
  66. package/dist/tsconfig.build.tsbuildinfo +1 -1
  67. package/package.json +1 -1
  68. package/web/.next/BUILD_ID +1 -1
  69. package/web/.next/build-manifest.json +5 -5
  70. package/web/.next/cache/.previewinfo +1 -1
  71. package/web/.next/cache/.rscinfo +1 -1
  72. package/web/.next/cache/.tsbuildinfo +1 -1
  73. package/web/.next/cache/config.json +3 -3
  74. package/web/.next/fallback-build-manifest.json +2 -2
  75. package/web/.next/prerender-manifest.json +3 -3
  76. package/web/.next/required-server-files.js +1 -1
  77. package/web/.next/required-server-files.json +1 -1
  78. package/web/.next/server/app/_global-error/page/build-manifest.json +3 -3
  79. package/web/.next/server/app/_global-error.html +2 -2
  80. package/web/.next/server/app/_global-error.rsc +1 -1
  81. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  82. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  83. package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  84. package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  85. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  86. package/web/.next/server/app/_not-found/page/build-manifest.json +3 -3
  87. package/web/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
  88. package/web/.next/server/app/_not-found/page.js.nft.json +1 -1
  89. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  90. package/web/.next/server/app/page/build-manifest.json +3 -3
  91. package/web/.next/server/app/page/server-reference-manifest.json +88 -88
  92. package/web/.next/server/app/page.js +1 -1
  93. package/web/.next/server/app/page.js.nft.json +1 -1
  94. package/web/.next/server/app/page_client-reference-manifest.js +1 -1
  95. package/web/.next/server/app/skills/page/build-manifest.json +3 -3
  96. package/web/.next/server/app/skills/page/server-reference-manifest.json +5 -5
  97. package/web/.next/server/app/skills/page.js.nft.json +1 -1
  98. package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  99. package/web/.next/server/app/tools/page/build-manifest.json +3 -3
  100. package/web/.next/server/app/tools/page/server-reference-manifest.json +1 -1
  101. package/web/.next/server/app/tools/page.js.nft.json +1 -1
  102. package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  103. package/web/.next/server/app/version/page/build-manifest.json +3 -3
  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/403f9_next_dist_a53cb908._.js +3 -0
  108. package/web/.next/server/chunks/ssr/403f9_next_dist_a53cb908._.js.map +1 -0
  109. package/web/.next/server/chunks/ssr/[root-of-the-server]__08ba9bd3._.js +1 -1
  110. package/web/.next/server/chunks/ssr/[root-of-the-server]__08ba9bd3._.js.map +1 -1
  111. package/web/.next/server/chunks/ssr/[root-of-the-server]__249c74f6._.js +1 -1
  112. package/web/.next/server/chunks/ssr/{[root-of-the-server]__f5830fa9._.js → [root-of-the-server]__2ffb27f1._.js} +2 -2
  113. package/web/.next/server/chunks/ssr/{[root-of-the-server]__f5830fa9._.js.map → [root-of-the-server]__2ffb27f1._.js.map} +1 -1
  114. package/web/.next/server/chunks/ssr/[root-of-the-server]__551fb7e1._.js +1 -1
  115. package/web/.next/server/chunks/ssr/[root-of-the-server]__551fb7e1._.js.map +1 -1
  116. package/web/.next/server/chunks/ssr/[root-of-the-server]__6b17a22d._.js +1 -1
  117. package/web/.next/server/chunks/ssr/[root-of-the-server]__6b17a22d._.js.map +1 -1
  118. package/web/.next/server/chunks/ssr/[root-of-the-server]__7f4180a1._.js +3 -0
  119. package/web/.next/server/chunks/ssr/[root-of-the-server]__7f4180a1._.js.map +1 -0
  120. package/web/.next/server/chunks/ssr/[root-of-the-server]__804c006d._.js +1 -1
  121. package/web/.next/server/chunks/ssr/[root-of-the-server]__804c006d._.js.map +1 -1
  122. package/web/.next/server/chunks/ssr/[root-of-the-server]__9add7c3a._.js +4 -4
  123. package/web/.next/server/chunks/ssr/[root-of-the-server]__9add7c3a._.js.map +1 -1
  124. package/web/.next/server/chunks/ssr/[root-of-the-server]__e41b5eec._.js +9 -0
  125. package/web/.next/server/chunks/ssr/{[root-of-the-server]__f648005b._.js.map → [root-of-the-server]__e41b5eec._.js.map} +1 -1
  126. package/web/.next/server/chunks/ssr/[root-of-the-server]__eaf6100f._.js +3 -0
  127. package/web/.next/server/chunks/ssr/[root-of-the-server]__eaf6100f._.js.map +1 -0
  128. package/web/.next/server/chunks/ssr/_23c92688._.js +6 -0
  129. package/web/.next/server/chunks/ssr/_23c92688._.js.map +1 -0
  130. package/web/.next/server/chunks/ssr/_28993370._.js +1 -1
  131. package/web/.next/server/chunks/ssr/_28993370._.js.map +1 -1
  132. package/web/.next/server/chunks/ssr/_49bf495c._.js +3 -0
  133. package/web/.next/server/chunks/ssr/_49bf495c._.js.map +1 -0
  134. package/web/.next/server/chunks/ssr/_690ea95f._.js +3 -0
  135. package/web/.next/server/chunks/ssr/{_2900ed94._.js.map → _690ea95f._.js.map} +1 -1
  136. package/web/.next/{standalone/src/presentation/web/.next/server/chunks/ssr/_c52cace8._.js → server/chunks/ssr/_725584e5._.js} +2 -2
  137. package/web/.next/server/chunks/ssr/_725584e5._.js.map +1 -0
  138. package/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js +1 -1
  139. package/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js.map +1 -1
  140. package/web/.next/server/middleware-build-manifest.js +3 -3
  141. package/web/.next/server/pages/500.html +2 -2
  142. package/web/.next/server/server-reference-manifest.js +1 -1
  143. package/web/.next/server/server-reference-manifest.json +115 -115
  144. package/web/.next/standalone/src/presentation/web/.next/BUILD_ID +1 -1
  145. package/web/.next/standalone/src/presentation/web/.next/build-manifest.json +5 -5
  146. package/web/.next/standalone/src/presentation/web/.next/prerender-manifest.json +3 -3
  147. package/web/.next/standalone/src/presentation/web/.next/required-server-files.json +1 -1
  148. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error/page/build-manifest.json +3 -3
  149. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.html +2 -2
  150. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.rsc +1 -1
  151. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  152. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  153. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  154. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  155. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  156. package/web/.next/standalone/src/presentation/web/.next/server/app/_not-found/page/build-manifest.json +3 -3
  157. package/web/.next/standalone/src/presentation/web/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
  158. package/web/.next/standalone/src/presentation/web/.next/server/app/_not-found/page.js.nft.json +1 -1
  159. package/web/.next/standalone/src/presentation/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  160. package/web/.next/standalone/src/presentation/web/.next/server/app/page/build-manifest.json +3 -3
  161. package/web/.next/standalone/src/presentation/web/.next/server/app/page/server-reference-manifest.json +88 -88
  162. package/web/.next/standalone/src/presentation/web/.next/server/app/page.js +1 -1
  163. package/web/.next/standalone/src/presentation/web/.next/server/app/page.js.nft.json +1 -1
  164. package/web/.next/standalone/src/presentation/web/.next/server/app/page_client-reference-manifest.js +1 -1
  165. package/web/.next/standalone/src/presentation/web/.next/server/app/skills/page/build-manifest.json +3 -3
  166. package/web/.next/standalone/src/presentation/web/.next/server/app/skills/page/server-reference-manifest.json +5 -5
  167. package/web/.next/standalone/src/presentation/web/.next/server/app/skills/page.js.nft.json +1 -1
  168. package/web/.next/standalone/src/presentation/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  169. package/web/.next/standalone/src/presentation/web/.next/server/app/tools/page/build-manifest.json +3 -3
  170. package/web/.next/standalone/src/presentation/web/.next/server/app/tools/page/server-reference-manifest.json +1 -1
  171. package/web/.next/standalone/src/presentation/web/.next/server/app/tools/page.js.nft.json +1 -1
  172. package/web/.next/standalone/src/presentation/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  173. package/web/.next/standalone/src/presentation/web/.next/server/app/version/page/build-manifest.json +3 -3
  174. package/web/.next/standalone/src/presentation/web/.next/server/app/version/page/server-reference-manifest.json +1 -1
  175. package/web/.next/standalone/src/presentation/web/.next/server/app/version/page.js.nft.json +1 -1
  176. package/web/.next/standalone/src/presentation/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  177. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/403f9_next_dist_a53cb908._.js +3 -0
  178. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__08ba9bd3._.js +1 -1
  179. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__249c74f6._.js +1 -1
  180. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/{[root-of-the-server]__f5830fa9._.js → [root-of-the-server]__2ffb27f1._.js} +2 -2
  181. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__551fb7e1._.js +1 -1
  182. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__6b17a22d._.js +1 -1
  183. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__7f4180a1._.js +3 -0
  184. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__804c006d._.js +1 -1
  185. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__9add7c3a._.js +4 -4
  186. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__e41b5eec._.js +9 -0
  187. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__eaf6100f._.js +3 -0
  188. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_23c92688._.js +6 -0
  189. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_28993370._.js +1 -1
  190. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_49bf495c._.js +3 -0
  191. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_690ea95f._.js +3 -0
  192. package/web/.next/{server/chunks/ssr/_c52cace8._.js → standalone/src/presentation/web/.next/server/chunks/ssr/_725584e5._.js} +2 -2
  193. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js +1 -1
  194. package/web/.next/standalone/src/presentation/web/.next/server/middleware-build-manifest.js +3 -3
  195. package/web/.next/standalone/src/presentation/web/.next/server/pages/500.html +2 -2
  196. package/web/.next/standalone/src/presentation/web/.next/server/server-reference-manifest.js +1 -1
  197. package/web/.next/standalone/src/presentation/web/.next/server/server-reference-manifest.json +115 -115
  198. package/web/.next/standalone/src/presentation/web/components/common/base-drawer/base-drawer.stories.tsx +16 -2
  199. package/web/.next/standalone/src/presentation/web/components/common/base-drawer/base-drawer.tsx +35 -6
  200. package/web/.next/standalone/src/presentation/web/components/common/control-center-drawer/control-center-drawer.stories.tsx +285 -0
  201. package/web/.next/standalone/src/presentation/web/components/common/control-center-drawer/control-center-drawer.tsx +650 -0
  202. package/web/.next/standalone/src/presentation/web/components/common/control-center-drawer/drawer-view.ts +82 -0
  203. package/web/.next/standalone/src/presentation/web/components/common/control-center-drawer/index.ts +2 -0
  204. package/web/.next/standalone/src/presentation/web/components/common/drawer-action-bar/drawer-action-bar-config.ts +0 -4
  205. package/web/.next/standalone/src/presentation/web/components/common/drawer-action-bar/drawer-action-bar.stories.tsx +5 -14
  206. package/web/.next/standalone/src/presentation/web/components/common/drawer-action-bar/drawer-action-bar.tsx +58 -51
  207. package/web/.next/standalone/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.stories.tsx +42 -1
  208. package/web/.next/standalone/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.tsx +2 -16
  209. package/web/.next/standalone/src/presentation/web/components/common/feature-create-drawer/index.ts +1 -0
  210. package/web/.next/standalone/src/presentation/web/components/common/feature-drawer/feature-drawer.stories.tsx +55 -2
  211. package/web/.next/standalone/src/presentation/web/components/common/feature-drawer/feature-drawer.tsx +97 -106
  212. package/web/.next/standalone/src/presentation/web/components/common/index.ts +6 -0
  213. package/web/.next/standalone/src/presentation/web/components/common/merge-review/merge-review.stories.tsx +1 -2
  214. package/web/.next/standalone/src/presentation/web/components/common/merge-review/merge-review.tsx +1 -2
  215. package/web/.next/standalone/src/presentation/web/components/common/prd-questionnaire/prd-questionnaire.stories.tsx +1 -2
  216. package/web/.next/standalone/src/presentation/web/components/common/prd-questionnaire/prd-questionnaire.tsx +1 -1
  217. package/web/.next/standalone/src/presentation/web/components/common/repository-node/repository-drawer.stories.tsx +28 -2
  218. package/web/.next/standalone/src/presentation/web/components/common/repository-node/repository-drawer.tsx +7 -2
  219. package/web/.next/standalone/src/presentation/web/components/common/review-drawer-shell/review-drawer-shell.stories.tsx +1 -1
  220. package/web/.next/standalone/src/presentation/web/components/common/review-drawer-shell/review-drawer-shell.tsx +7 -6
  221. package/web/.next/standalone/src/presentation/web/components/common/tech-decisions-review/tech-decisions-review.stories.tsx +1 -2
  222. package/web/.next/standalone/src/presentation/web/components/common/tech-decisions-review/tech-decisions-review.tsx +1 -2
  223. package/web/.next/standalone/src/presentation/web/components/features/control-center/control-center-inner.tsx +30 -348
  224. package/web/.next/standalone/src/presentation/web/components/features/control-center/use-control-center-state.ts +2 -1
  225. package/web/.next/standalone/src/presentation/web/components/features/features-canvas/features-canvas.tsx +5 -1
  226. package/web/.next/standalone/src/presentation/web/server.js +1 -1
  227. package/web/.next/static/chunks/38ca82d1243738e3.js +1 -0
  228. package/web/.next/static/chunks/{35f41ba0a6d626d7.js → 491ae2bbae40857c.js} +1 -1
  229. package/web/.next/static/chunks/4b6cc9f65260f2bd.js +2 -0
  230. package/web/.next/static/chunks/67599679ca9ac863.js +1 -0
  231. package/web/.next/static/chunks/{e0073669b6bc24df.js → 6ece250c7d0ec203.js} +1 -1
  232. package/web/.next/static/chunks/a186bbb822ccb655.css +2 -0
  233. package/web/.next/static/chunks/a5c59952485e875e.js +1 -0
  234. package/web/.next/static/chunks/{8c60d1bd87239066.js → a9626385607910b3.js} +1 -1
  235. package/web/.next/static/chunks/c1c15470a7b058c8.js +1 -0
  236. package/web/.next/static/chunks/caa2e7e1618e2179.js +1 -0
  237. package/web/.next/static/chunks/ed799a306922f03e.js +10 -0
  238. package/web/.next/static/chunks/fb703cf73aba2eb8.js +1 -0
  239. package/web/.next/static/chunks/{turbopack-b6b5b4f015327a9a.js → turbopack-958ac34b879d0dce.js} +1 -1
  240. package/web/.next/trace +1 -1
  241. package/web/.next/trace-build +1 -1
  242. package/web/.next/server/chunks/ssr/403f9_next_dist_623b646a._.js +0 -3
  243. package/web/.next/server/chunks/ssr/403f9_next_dist_623b646a._.js.map +0 -1
  244. package/web/.next/server/chunks/ssr/[root-of-the-server]__6bb51fac._.js +0 -3
  245. package/web/.next/server/chunks/ssr/[root-of-the-server]__6bb51fac._.js.map +0 -1
  246. package/web/.next/server/chunks/ssr/[root-of-the-server]__c1f0f2a8._.js +0 -3
  247. package/web/.next/server/chunks/ssr/[root-of-the-server]__c1f0f2a8._.js.map +0 -1
  248. package/web/.next/server/chunks/ssr/[root-of-the-server]__f648005b._.js +0 -9
  249. package/web/.next/server/chunks/ssr/_2900ed94._.js +0 -3
  250. package/web/.next/server/chunks/ssr/_6978d868._.js +0 -3
  251. package/web/.next/server/chunks/ssr/_6978d868._.js.map +0 -1
  252. package/web/.next/server/chunks/ssr/_85965278._.js +0 -6
  253. package/web/.next/server/chunks/ssr/_85965278._.js.map +0 -1
  254. package/web/.next/server/chunks/ssr/_c52cace8._.js.map +0 -1
  255. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/403f9_next_dist_623b646a._.js +0 -3
  256. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__6bb51fac._.js +0 -3
  257. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__c1f0f2a8._.js +0 -3
  258. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__f648005b._.js +0 -9
  259. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_2900ed94._.js +0 -3
  260. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_6978d868._.js +0 -3
  261. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_85965278._.js +0 -6
  262. package/web/.next/static/chunks/41a2adc09edfffaf.js +0 -1
  263. package/web/.next/static/chunks/5054c72b1c8f5912.js +0 -1
  264. package/web/.next/static/chunks/5f6d9f4647fc3093.js +0 -10
  265. package/web/.next/static/chunks/96f49affaceab206.css +0 -2
  266. package/web/.next/static/chunks/a6d1d774260fc927.js +0 -2
  267. package/web/.next/static/chunks/c0fdd832fc4ee8eb.js +0 -1
  268. package/web/.next/static/chunks/de70ba984363673f.js +0 -1
  269. package/web/.next/static/chunks/f5fb2f182ae9b015.js +0 -1
  270. /package/web/.next/static/{XGbKxw26cOCJQ-711YxBw → GdqfiIUVMj2wj_3lbrUqd}/_buildManifest.js +0 -0
  271. /package/web/.next/static/{XGbKxw26cOCJQ-711YxBw → GdqfiIUVMj2wj_3lbrUqd}/_clientMiddlewareManifest.json +0 -0
  272. /package/web/.next/static/{XGbKxw26cOCJQ-711YxBw → GdqfiIUVMj2wj_3lbrUqd}/_ssgManifest.js +0 -0
@@ -2,32 +2,14 @@
2
2
 
3
3
  import { useCallback, useEffect, useMemo, useState } from 'react';
4
4
  import type { Edge } from '@xyflow/react';
5
- import { toast } from 'sonner';
6
- import type {
7
- PrdApprovalPayload,
8
- QuestionSelectionChange,
9
- } from '@shepai/core/domain/generated/output';
10
- import { approveFeature } from '@/app/actions/approve-feature';
11
- import { rejectFeature } from '@/app/actions/reject-feature';
12
- import { getFeatureArtifact } from '@/app/actions/get-feature-artifact';
13
- import { getResearchArtifact } from '@/app/actions/get-research-artifact';
14
- import { getWorkflowDefaults } from '@/app/actions/get-workflow-defaults';
15
- import type { WorkflowDefaults } from '@/app/actions/get-workflow-defaults';
16
- import { getMergeReviewData } from '@/app/actions/get-merge-review-data';
17
- import type { TechDecisionsReviewData } from '@/components/common/tech-decisions-review';
18
- import type { MergeReviewData } from '@/components/common/merge-review';
19
5
  import { FeaturesCanvas } from '@/components/features/features-canvas';
20
6
  import type { CanvasNodeType } from '@/components/features/features-canvas';
21
7
  import type { FeatureNodeData } from '@/components/common/feature-node';
22
- import { FeatureDrawer, FeatureCreateDrawer } from '@/components/common';
23
- import { RepositoryDrawer } from '@/components/common/repository-node';
8
+ import { ControlCenterDrawer, computeDrawerView } from '@/components/common/control-center-drawer';
24
9
  import type { RepositoryNodeData } from '@/components/common/repository-node';
25
- import { PrdQuestionnaireDrawer } from '@/components/common/prd-questionnaire';
26
- import type { PrdQuestionnaireData } from '@/components/common/prd-questionnaire';
27
- import { TechDecisionsDrawer } from '@/components/common/tech-decisions-review';
28
- import { MergeReviewDrawer } from '@/components/common/merge-review';
29
10
  import { NotificationPermissionBanner } from '@/components/common/notification-permission-banner';
30
- import { useSoundAction } from '@/hooks/use-sound-action';
11
+ import { getWorkflowDefaults } from '@/app/actions/get-workflow-defaults';
12
+ import type { WorkflowDefaults } from '@/app/actions/get-workflow-defaults';
31
13
  import { ControlCenterEmptyState } from './control-center-empty-state';
32
14
  import { useControlCenterState } from './use-control-center-state';
33
15
 
@@ -60,7 +42,7 @@ export function ControlCenterInner({ initialNodes, initialEdges }: ControlCenter
60
42
  pendingParentFeatureId,
61
43
  } = useControlCenterState(initialNodes, initialEdges);
62
44
 
63
- // Extract feature list for the parent selector in the create drawer
45
+ // Feature list for the parent selector in the create drawer
64
46
  const featureOptions = useMemo(
65
47
  () =>
66
48
  nodes
@@ -69,7 +51,7 @@ export function ControlCenterInner({ initialNodes, initialEdges }: ControlCenter
69
51
  const data = n.data as FeatureNodeData;
70
52
  return { id: data.featureId, name: data.name };
71
53
  })
72
- .filter((f) => f.id && !f.id.startsWith('#')), // exclude optimistic temp nodes
54
+ .filter((f) => f.id && !f.id.startsWith('#')),
73
55
  [nodes]
74
56
  );
75
57
 
@@ -79,31 +61,14 @@ export function ControlCenterInner({ initialNodes, initialEdges }: ControlCenter
79
61
  getWorkflowDefaults()
80
62
  .then(setWorkflowDefaults)
81
63
  .catch(() => {
82
- // Settings unavailable — drawer falls back to all-false defaults
64
+ // Settings unavailable — create drawer falls back to all-false defaults
83
65
  });
84
66
  }, []);
85
67
 
86
- // PRD questionnaire drawer state
87
- const [prdSelections, setPrdSelections] = useState<Record<string, string>>({});
88
- const [questionnaireData, setQuestionnaireData] = useState<PrdQuestionnaireData | null>(null);
89
- const [isLoadingQuestionnaire, setIsLoadingQuestionnaire] = useState(false);
90
-
91
- // Reject state (shared by both drawers)
92
- const [isRejecting, setIsRejecting] = useState(false);
93
- const rejectSound = useSoundAction('reject');
94
-
95
- // Tech decisions drawer state
96
- const [techDecisionsData, setTechDecisionsData] = useState<TechDecisionsReviewData | null>(null);
97
- const [isLoadingTechDecisions, setIsLoadingTechDecisions] = useState(false);
98
-
99
- // Merge review drawer state
100
- const [mergeReviewData, setMergeReviewData] = useState<MergeReviewData | null>(null);
101
- const [isLoadingMergeReview, setIsLoadingMergeReview] = useState(false);
102
-
103
- // Repository drawer state
68
+ // Repository drawer state (independent of feature selection)
104
69
  const [selectedRepoNode, setSelectedRepoNode] = useState<RepositoryNodeData | null>(null);
105
70
 
106
- // Clear all drawers — used for pane click and canvas drag
71
+ // Close all drawers — used on pane click and canvas drag
107
72
  const handleClearDrawers = useCallback(() => {
108
73
  clearSelection();
109
74
  setSelectedRepoNode(null);
@@ -122,230 +87,16 @@ export function ControlCenterInner({ initialNodes, initialEdges }: ControlCenter
122
87
  [nodes, clearSelection]
123
88
  );
124
89
 
125
- const showPrdDrawer =
126
- selectedNode?.lifecycle === 'requirements' && selectedNode?.state === 'action-required';
127
-
128
- const showTechDecisionsDrawer =
129
- selectedNode?.lifecycle === 'implementation' && selectedNode?.state === 'action-required';
130
-
131
- const showMergeReviewDrawer =
132
- selectedNode?.lifecycle === 'review' &&
133
- (selectedNode?.state === 'action-required' || selectedNode?.state === 'error');
134
-
135
- const handlePrdSelect = useCallback((questionId: string, optionId: string) => {
136
- setPrdSelections((prev) => ({ ...prev, [questionId]: optionId }));
137
- }, []);
138
-
139
- const handlePrdApprove = useCallback(
140
- async (_actionId: string) => {
141
- const featureId = selectedNode?.featureId;
142
- if (!featureId) return;
143
-
144
- let payload: PrdApprovalPayload | undefined;
145
- if (questionnaireData) {
146
- const changedSelections: QuestionSelectionChange[] = [];
147
- for (const [questionId, optionId] of Object.entries(prdSelections)) {
148
- const question = questionnaireData.questions.find((q) => q.id === questionId);
149
- const option = question?.options.find((o) => o.id === optionId);
150
- if (question && option) {
151
- changedSelections.push({
152
- questionId: question.question,
153
- selectedOption: option.label,
154
- });
155
- }
156
- }
157
- payload = { approved: true, changedSelections };
158
- }
159
-
160
- const result = await approveFeature(featureId, payload);
161
-
162
- if (!result.approved) {
163
- toast.error(result.error ?? 'Failed to approve requirements');
164
- return;
165
- }
166
-
167
- toast.success('Requirements approved — agent resuming');
168
- clearSelection();
169
- setPrdSelections({});
170
- },
171
- [selectedNode?.featureId, clearSelection, questionnaireData, prdSelections]
172
- );
173
-
174
- // Shared reject handler — all drawers use the same rejectFeature flow
175
- const handleReject = useCallback(
176
- async (feedback: string, label: string, onDone?: () => void) => {
177
- const featureId = selectedNode?.featureId;
178
- if (!featureId) return;
179
-
180
- setIsRejecting(true);
181
- try {
182
- const result = await rejectFeature(featureId, feedback);
183
-
184
- if (!result.rejected) {
185
- toast.error(result.error ?? `Failed to reject ${label.toLowerCase()}`);
186
- return;
187
- }
188
-
189
- rejectSound.play();
190
- toast.success(`${label} rejected — agent re-iterating (iteration ${result.iteration})`);
191
- if (result.iterationWarning) {
192
- toast.warning(
193
- `Iteration ${result.iteration} — consider approving or adjusting feedback to avoid excessive iterations`
194
- );
195
- }
196
- clearSelection();
197
- onDone?.();
198
- } finally {
199
- setIsRejecting(false);
200
- }
201
- },
202
- [selectedNode?.featureId, clearSelection, rejectSound]
203
- );
204
-
205
- const handlePrdReject = useCallback(
206
- (feedback: string) => handleReject(feedback, 'Requirements', () => setPrdSelections({})),
207
- [handleReject]
208
- );
209
-
210
- const handleTechDecisionsReject = useCallback(
211
- (feedback: string) => handleReject(feedback, 'Plan'),
212
- [handleReject]
213
- );
214
-
215
- const handleMergeReject = useCallback(
216
- (feedback: string) => handleReject(feedback, 'Merge'),
217
- [handleReject]
218
- );
219
-
220
- // Shared approve handler — tech decisions and merge use identical approve flows
221
- const handleSimpleApprove = useCallback(
222
- async (label: string) => {
223
- const featureId = selectedNode?.featureId;
224
- if (!featureId) return;
225
-
226
- const result = await approveFeature(featureId);
227
-
228
- if (!result.approved) {
229
- toast.error(result.error ?? `Failed to approve ${label.toLowerCase()}`);
230
- return;
231
- }
232
-
233
- toast.success(`${label} approved — agent resuming`);
234
- clearSelection();
235
- },
236
- [selectedNode?.featureId, clearSelection]
237
- );
238
-
239
- const handleTechDecisionsApprove = useCallback(
240
- () => handleSimpleApprove('Plan'),
241
- [handleSimpleApprove]
242
- );
243
-
244
- const handleMergeApprove = useCallback(() => handleSimpleApprove('Merge'), [handleSimpleApprove]);
245
-
246
- // Fetch questionnaire data and reset selections when a different feature is selected
247
- const prdFeatureId = showPrdDrawer ? selectedNode?.featureId : null;
248
- useEffect(() => {
249
- setPrdSelections({});
250
- setQuestionnaireData(null);
251
-
252
- if (!prdFeatureId) return;
253
-
254
- let cancelled = false;
255
- setIsLoadingQuestionnaire(true);
256
- getFeatureArtifact(prdFeatureId)
257
- .then((result) => {
258
- if (cancelled) return;
259
- if (result.error) {
260
- toast.error(result.error);
261
- return;
262
- }
263
- if (result.questionnaire) {
264
- setQuestionnaireData(result.questionnaire);
265
- // Pre-select AI-recommended answers
266
- const defaults: Record<string, string> = {};
267
- for (const q of result.questionnaire.questions) {
268
- const recommended = q.options.find((o) => o.recommended);
269
- if (recommended) defaults[q.id] = recommended.id;
270
- }
271
- setPrdSelections(defaults);
272
- }
273
- })
274
- .catch(() => {
275
- if (!cancelled) toast.error('Failed to load questionnaire');
276
- })
277
- .finally(() => {
278
- if (!cancelled) setIsLoadingQuestionnaire(false);
279
- });
280
-
281
- return () => {
282
- cancelled = true;
283
- };
284
- }, [prdFeatureId]);
285
-
286
- // Fetch tech decisions data when a feature is in research + action-required
287
- const techDecisionsFeatureId = showTechDecisionsDrawer ? selectedNode?.featureId : null;
288
- useEffect(() => {
289
- setTechDecisionsData(null);
290
-
291
- if (!techDecisionsFeatureId) return;
292
-
293
- let cancelled = false;
294
- setIsLoadingTechDecisions(true);
295
- getResearchArtifact(techDecisionsFeatureId)
296
- .then((result) => {
297
- if (cancelled) return;
298
- if (result.error) {
299
- toast.error(result.error);
300
- return;
301
- }
302
- if (result.techDecisions) {
303
- setTechDecisionsData(result.techDecisions);
304
- }
305
- })
306
- .catch(() => {
307
- if (!cancelled) toast.error('Failed to load tech decisions');
308
- })
309
- .finally(() => {
310
- if (!cancelled) setIsLoadingTechDecisions(false);
311
- });
312
-
313
- return () => {
314
- cancelled = true;
315
- };
316
- }, [techDecisionsFeatureId]);
317
-
318
- // Fetch merge review data when a feature is in review + action-required
319
- const mergeFeatureId = showMergeReviewDrawer ? selectedNode?.featureId : null;
320
- useEffect(() => {
321
- setMergeReviewData(null);
322
-
323
- if (!mergeFeatureId) return;
324
-
325
- let cancelled = false;
326
- setIsLoadingMergeReview(true);
327
- getMergeReviewData(mergeFeatureId)
328
- .then((result) => {
329
- if (cancelled) return;
330
- if ('error' in result) {
331
- toast.error(result.error);
332
- return;
333
- }
334
- setMergeReviewData(result);
335
- })
336
- .catch(() => {
337
- if (!cancelled) toast.error('Failed to load merge review data');
338
- })
339
- .finally(() => {
340
- if (!cancelled) setIsLoadingMergeReview(false);
341
- });
342
-
343
- return () => {
344
- cancelled = true;
345
- };
346
- }, [mergeFeatureId]);
347
-
348
- const hasRepositories = nodes.some((n) => n.type === 'repositoryNode');
90
+ // Derive the single active drawer view from all current state
91
+ const drawerView = computeDrawerView({
92
+ selectedNode,
93
+ isCreateDrawerOpen,
94
+ pendingRepositoryPath,
95
+ pendingParentFeatureId,
96
+ selectedRepoNode,
97
+ features: featureOptions,
98
+ workflowDefaults,
99
+ });
349
100
 
350
101
  // Listen for global "open create drawer" events from the sidebar
351
102
  useEffect(() => {
@@ -374,19 +125,19 @@ export function ControlCenterInner({ initialNodes, initialEdges }: ControlCenter
374
125
  return () => window.removeEventListener('shep:select-feature', handler);
375
126
  }, [selectFeatureById]);
376
127
 
128
+ const hasRepositories = nodes.some((n) => n.type === 'repositoryNode');
129
+
377
130
  if (!hasRepositories) {
378
131
  return (
379
132
  <>
380
133
  <NotificationPermissionBanner />
381
134
  <ControlCenterEmptyState onRepositorySelect={handleAddRepository} />
382
- <FeatureCreateDrawer
383
- open={isCreateDrawerOpen}
384
- onClose={closeCreateDrawer}
385
- onSubmit={handleCreateFeatureSubmit}
386
- repositoryPath={pendingRepositoryPath}
387
- workflowDefaults={workflowDefaults}
388
- features={featureOptions}
389
- initialParentId={pendingParentFeatureId}
135
+ <ControlCenterDrawer
136
+ view={drawerView}
137
+ onClose={handleClearDrawers}
138
+ onDelete={handleDeleteFeature}
139
+ isDeleting={isDeleting}
140
+ onCreateSubmit={handleCreateFeatureSubmit}
390
141
  />
391
142
  </>
392
143
  );
@@ -408,84 +159,15 @@ export function ControlCenterInner({ initialNodes, initialEdges }: ControlCenter
408
159
  onRepositoryClick={handleRepositoryClick}
409
160
  onRepositoryDelete={handleDeleteRepository}
410
161
  onRepositorySelect={handleAddRepository}
411
- onCanvasDrag={handleClearDrawers}
412
162
  emptyState={<ControlCenterEmptyState onRepositorySelect={handleAddRepository} />}
413
163
  />
414
- <FeatureDrawer
415
- selectedNode={
416
- showPrdDrawer || showTechDecisionsDrawer || showMergeReviewDrawer ? null : selectedNode
417
- }
418
- onClose={clearSelection}
164
+ <ControlCenterDrawer
165
+ view={drawerView}
166
+ onClose={handleClearDrawers}
419
167
  onDelete={handleDeleteFeature}
420
168
  isDeleting={isDeleting}
169
+ onCreateSubmit={handleCreateFeatureSubmit}
421
170
  />
422
- {showPrdDrawer ? (
423
- <PrdQuestionnaireDrawer
424
- open
425
- onClose={clearSelection}
426
- featureName={selectedNode?.name ?? ''}
427
- featureDescription={selectedNode?.description}
428
- featureId={selectedNode?.featureId}
429
- repositoryPath={selectedNode?.repositoryPath}
430
- branch={selectedNode?.branch}
431
- specPath={selectedNode?.specPath}
432
- data={questionnaireData}
433
- selections={prdSelections}
434
- onSelect={handlePrdSelect}
435
- onApprove={handlePrdApprove}
436
- onReject={handlePrdReject}
437
- isRejecting={isRejecting}
438
- onDelete={handleDeleteFeature}
439
- isDeleting={isDeleting}
440
- isProcessing={isLoadingQuestionnaire}
441
- />
442
- ) : null}
443
- {showTechDecisionsDrawer ? (
444
- <TechDecisionsDrawer
445
- open
446
- onClose={clearSelection}
447
- featureName={selectedNode?.name ?? ''}
448
- featureId={selectedNode?.featureId}
449
- repositoryPath={selectedNode?.repositoryPath}
450
- branch={selectedNode?.branch}
451
- specPath={selectedNode?.specPath}
452
- data={techDecisionsData}
453
- onApprove={handleTechDecisionsApprove}
454
- onReject={handleTechDecisionsReject}
455
- isRejecting={isRejecting}
456
- onDelete={handleDeleteFeature}
457
- isDeleting={isDeleting}
458
- isProcessing={isLoadingTechDecisions}
459
- />
460
- ) : null}
461
- {showMergeReviewDrawer ? (
462
- <MergeReviewDrawer
463
- open
464
- onClose={clearSelection}
465
- featureName={selectedNode?.name ?? ''}
466
- featureId={selectedNode?.featureId}
467
- repositoryPath={selectedNode?.repositoryPath}
468
- branch={selectedNode?.branch}
469
- specPath={selectedNode?.specPath}
470
- data={mergeReviewData}
471
- onApprove={handleMergeApprove}
472
- onReject={handleMergeReject}
473
- isRejecting={isRejecting}
474
- onDelete={handleDeleteFeature}
475
- isDeleting={isDeleting}
476
- isProcessing={isLoadingMergeReview}
477
- />
478
- ) : null}
479
- <FeatureCreateDrawer
480
- open={isCreateDrawerOpen}
481
- onClose={closeCreateDrawer}
482
- onSubmit={handleCreateFeatureSubmit}
483
- repositoryPath={pendingRepositoryPath}
484
- workflowDefaults={workflowDefaults}
485
- features={featureOptions}
486
- initialParentId={pendingParentFeatureId}
487
- />
488
- <RepositoryDrawer data={selectedRepoNode} onClose={() => setSelectedRepoNode(null)} />
489
171
  </>
490
172
  );
491
173
  }
@@ -592,12 +592,13 @@ export function useControlCenterState(
592
592
  const repoEdge = edges.find((e) => e.target === featureNodeId);
593
593
  const repoNodeId = repoEdge?.source ?? null;
594
594
 
595
+ clickSound.play();
595
596
  setSelectedNode(null);
596
597
  setPendingRepoNodeId(repoNodeId);
597
598
  setPendingParentFeatureId(featureId);
598
599
  setIsCreateDrawerOpen(true);
599
600
  },
600
- [edges]
601
+ [edges, clickSound]
601
602
  );
602
603
 
603
604
  const handleLayout = useCallback(
@@ -145,7 +145,11 @@ export function FeaturesCanvas({
145
145
  }
146
146
 
147
147
  return (
148
- <div data-testid="features-canvas" className="h-full w-full">
148
+ <div
149
+ data-testid="features-canvas"
150
+ data-no-drawer-close
151
+ className="pointer-events-auto h-full w-full"
152
+ >
149
153
  <ReactFlowProvider>
150
154
  <ReactFlow
151
155
  nodes={enrichedNodes}
@@ -15,7 +15,7 @@ const currentPort = parseInt(process.env.PORT, 10) || 3000
15
15
  const hostname = process.env.HOSTNAME || '0.0.0.0'
16
16
 
17
17
  let keepAliveTimeout = parseInt(process.env.KEEP_ALIVE_TIMEOUT, 10)
18
- const nextConfig = {"env":{"NEXT_PUBLIC_SHEP_VERSION":"1.66.3","NEXT_PUBLIC_SHEP_PACKAGE_NAME":"@shepai/cli","NEXT_PUBLIC_SHEP_DESCRIPTION":"Autonomous AI Native SDLC Platform - Automate the development cycle from idea to deploy"},"webpack":null,"typescript":{"ignoreBuildErrors":false},"typedRoutes":true,"distDir":"./.next","cleanDistDir":true,"assetPrefix":"","cacheMaxMemorySize":52428800,"configOrigin":"next.config.ts","useFileSystemPublicRoutes":true,"generateEtags":true,"pageExtensions":["tsx","ts","jsx","js"],"poweredByHeader":true,"compress":true,"images":{"deviceSizes":[640,750,828,1080,1200,1920,2048,3840],"imageSizes":[32,48,64,96,128,256,384],"path":"/_next/image","loader":"default","loaderFile":"","domains":[],"disableStaticImages":false,"minimumCacheTTL":14400,"formats":["image/webp"],"maximumRedirects":3,"maximumResponseBody":50000000,"dangerouslyAllowLocalIP":false,"dangerouslyAllowSVG":false,"contentSecurityPolicy":"script-src 'none'; frame-src 'none'; sandbox;","contentDispositionType":"attachment","localPatterns":[{"pathname":"**","search":""}],"remotePatterns":[],"qualities":[75],"unoptimized":false},"devIndicators":{"position":"bottom-left"},"onDemandEntries":{"maxInactiveAge":60000,"pagesBufferLength":5},"basePath":"","sassOptions":{},"trailingSlash":false,"i18n":null,"productionBrowserSourceMaps":false,"excludeDefaultMomentLocales":true,"reactProductionProfiling":false,"reactStrictMode":null,"reactMaxHeadersLength":6000,"httpAgentOptions":{"keepAlive":true},"logging":{},"compiler":{},"expireTime":31536000,"staticPageGenerationTimeout":60,"output":"standalone","modularizeImports":{"@mui/icons-material":{"transform":"@mui/icons-material/{{member}}"},"lodash":{"transform":"lodash/{{member}}"}},"outputFileTracingRoot":"/home/runner/work/cli/cli","cacheComponents":false,"cacheLife":{"default":{"stale":300,"revalidate":900,"expire":4294967294},"seconds":{"stale":30,"revalidate":1,"expire":60},"minutes":{"stale":300,"revalidate":60,"expire":3600},"hours":{"stale":300,"revalidate":3600,"expire":86400},"days":{"stale":300,"revalidate":86400,"expire":604800},"weeks":{"stale":300,"revalidate":604800,"expire":2592000},"max":{"stale":300,"revalidate":2592000,"expire":31536000}},"cacheHandlers":{},"experimental":{"useSkewCookie":false,"cssChunking":true,"multiZoneDraftMode":false,"appNavFailHandling":false,"prerenderEarlyExit":true,"serverMinification":true,"linkNoTouchStart":false,"caseSensitiveRoutes":false,"dynamicOnHover":false,"preloadEntriesOnStart":true,"clientRouterFilter":true,"clientRouterFilterRedirects":false,"fetchCacheKeyPrefix":"","proxyPrefetch":"flexible","optimisticClientCache":true,"manualClientBasePath":false,"cpus":3,"memoryBasedWorkersCount":false,"imgOptConcurrency":null,"imgOptTimeoutInSeconds":7,"imgOptMaxInputPixels":268402689,"imgOptSequentialRead":null,"imgOptSkipMetadata":null,"isrFlushToDisk":true,"workerThreads":false,"optimizeCss":false,"nextScriptWorkers":false,"scrollRestoration":false,"externalDir":false,"disableOptimizedLoading":false,"gzipSize":true,"craCompat":false,"esmExternals":true,"fullySpecified":false,"swcTraceProfiling":false,"forceSwcTransforms":false,"largePageDataBytes":128000,"typedEnv":false,"parallelServerCompiles":false,"parallelServerBuildTraces":false,"ppr":false,"authInterrupts":false,"webpackMemoryOptimizations":false,"optimizeServerReact":true,"viewTransition":false,"removeUncaughtErrorAndRejectionListeners":false,"validateRSCRequestHeaders":false,"staleTimes":{"dynamic":0,"static":300},"reactDebugChannel":false,"serverComponentsHmrCache":true,"staticGenerationMaxConcurrency":8,"staticGenerationMinPagesPerWorker":25,"transitionIndicator":false,"inlineCss":false,"useCache":false,"globalNotFound":false,"browserDebugInfoInTerminal":false,"lockDistDir":true,"isolatedDevBuild":true,"proxyClientMaxBodySize":10485760,"hideLogsAfterAbort":false,"mcpServer":true,"turbopackFileSystemCacheForDev":true,"turbopackFileSystemCacheForBuild":false,"turbopackInferModuleSideEffects":false,"optimizePackageImports":["lucide-react","date-fns","lodash-es","ramda","antd","react-bootstrap","ahooks","@ant-design/icons","@headlessui/react","@headlessui-float/react","@heroicons/react/20/solid","@heroicons/react/24/solid","@heroicons/react/24/outline","@visx/visx","@tremor/react","rxjs","@mui/material","@mui/icons-material","recharts","react-use","effect","@effect/schema","@effect/platform","@effect/platform-node","@effect/platform-browser","@effect/platform-bun","@effect/sql","@effect/sql-mssql","@effect/sql-mysql2","@effect/sql-pg","@effect/sql-sqlite-node","@effect/sql-sqlite-bun","@effect/sql-sqlite-wasm","@effect/sql-sqlite-react-native","@effect/rpc","@effect/rpc-http","@effect/typeclass","@effect/experimental","@effect/opentelemetry","@material-ui/core","@material-ui/icons","@tabler/icons-react","mui-core","react-icons/ai","react-icons/bi","react-icons/bs","react-icons/cg","react-icons/ci","react-icons/di","react-icons/fa","react-icons/fa6","react-icons/fc","react-icons/fi","react-icons/gi","react-icons/go","react-icons/gr","react-icons/hi","react-icons/hi2","react-icons/im","react-icons/io","react-icons/io5","react-icons/lia","react-icons/lib","react-icons/lu","react-icons/md","react-icons/pi","react-icons/ri","react-icons/rx","react-icons/si","react-icons/sl","react-icons/tb","react-icons/tfi","react-icons/ti","react-icons/vsc","react-icons/wi"],"trustHostHeader":false,"isExperimentalCompile":false},"htmlLimitedBots":"[\\w-]+-Google|Google-[\\w-]+|Chrome-Lighthouse|Slurp|DuckDuckBot|baiduspider|yandex|sogou|bitlybot|tumblr|vkShare|quora link preview|redditbot|ia_archiver|Bingbot|BingPreview|applebot|facebookexternalhit|facebookcatalog|Twitterbot|LinkedInBot|Slackbot|Discordbot|WhatsApp|SkypeUriPreview|Yeti|googleweblight","bundlePagesRouterDependencies":false,"configFileName":"next.config.ts","turbopack":{"root":"/home/runner/work/cli/cli"},"serverExternalPackages":["tsyringe","reflect-metadata","better-sqlite3","node:os","node:child_process","node:fs"],"distDirRoot":".next"}
18
+ const nextConfig = {"env":{"NEXT_PUBLIC_SHEP_VERSION":"1.66.4","NEXT_PUBLIC_SHEP_PACKAGE_NAME":"@shepai/cli","NEXT_PUBLIC_SHEP_DESCRIPTION":"Autonomous AI Native SDLC Platform - Automate the development cycle from idea to deploy"},"webpack":null,"typescript":{"ignoreBuildErrors":false},"typedRoutes":true,"distDir":"./.next","cleanDistDir":true,"assetPrefix":"","cacheMaxMemorySize":52428800,"configOrigin":"next.config.ts","useFileSystemPublicRoutes":true,"generateEtags":true,"pageExtensions":["tsx","ts","jsx","js"],"poweredByHeader":true,"compress":true,"images":{"deviceSizes":[640,750,828,1080,1200,1920,2048,3840],"imageSizes":[32,48,64,96,128,256,384],"path":"/_next/image","loader":"default","loaderFile":"","domains":[],"disableStaticImages":false,"minimumCacheTTL":14400,"formats":["image/webp"],"maximumRedirects":3,"maximumResponseBody":50000000,"dangerouslyAllowLocalIP":false,"dangerouslyAllowSVG":false,"contentSecurityPolicy":"script-src 'none'; frame-src 'none'; sandbox;","contentDispositionType":"attachment","localPatterns":[{"pathname":"**","search":""}],"remotePatterns":[],"qualities":[75],"unoptimized":false},"devIndicators":{"position":"bottom-left"},"onDemandEntries":{"maxInactiveAge":60000,"pagesBufferLength":5},"basePath":"","sassOptions":{},"trailingSlash":false,"i18n":null,"productionBrowserSourceMaps":false,"excludeDefaultMomentLocales":true,"reactProductionProfiling":false,"reactStrictMode":null,"reactMaxHeadersLength":6000,"httpAgentOptions":{"keepAlive":true},"logging":{},"compiler":{},"expireTime":31536000,"staticPageGenerationTimeout":60,"output":"standalone","modularizeImports":{"@mui/icons-material":{"transform":"@mui/icons-material/{{member}}"},"lodash":{"transform":"lodash/{{member}}"}},"outputFileTracingRoot":"/home/runner/work/cli/cli","cacheComponents":false,"cacheLife":{"default":{"stale":300,"revalidate":900,"expire":4294967294},"seconds":{"stale":30,"revalidate":1,"expire":60},"minutes":{"stale":300,"revalidate":60,"expire":3600},"hours":{"stale":300,"revalidate":3600,"expire":86400},"days":{"stale":300,"revalidate":86400,"expire":604800},"weeks":{"stale":300,"revalidate":604800,"expire":2592000},"max":{"stale":300,"revalidate":2592000,"expire":31536000}},"cacheHandlers":{},"experimental":{"useSkewCookie":false,"cssChunking":true,"multiZoneDraftMode":false,"appNavFailHandling":false,"prerenderEarlyExit":true,"serverMinification":true,"linkNoTouchStart":false,"caseSensitiveRoutes":false,"dynamicOnHover":false,"preloadEntriesOnStart":true,"clientRouterFilter":true,"clientRouterFilterRedirects":false,"fetchCacheKeyPrefix":"","proxyPrefetch":"flexible","optimisticClientCache":true,"manualClientBasePath":false,"cpus":3,"memoryBasedWorkersCount":false,"imgOptConcurrency":null,"imgOptTimeoutInSeconds":7,"imgOptMaxInputPixels":268402689,"imgOptSequentialRead":null,"imgOptSkipMetadata":null,"isrFlushToDisk":true,"workerThreads":false,"optimizeCss":false,"nextScriptWorkers":false,"scrollRestoration":false,"externalDir":false,"disableOptimizedLoading":false,"gzipSize":true,"craCompat":false,"esmExternals":true,"fullySpecified":false,"swcTraceProfiling":false,"forceSwcTransforms":false,"largePageDataBytes":128000,"typedEnv":false,"parallelServerCompiles":false,"parallelServerBuildTraces":false,"ppr":false,"authInterrupts":false,"webpackMemoryOptimizations":false,"optimizeServerReact":true,"viewTransition":false,"removeUncaughtErrorAndRejectionListeners":false,"validateRSCRequestHeaders":false,"staleTimes":{"dynamic":0,"static":300},"reactDebugChannel":false,"serverComponentsHmrCache":true,"staticGenerationMaxConcurrency":8,"staticGenerationMinPagesPerWorker":25,"transitionIndicator":false,"inlineCss":false,"useCache":false,"globalNotFound":false,"browserDebugInfoInTerminal":false,"lockDistDir":true,"isolatedDevBuild":true,"proxyClientMaxBodySize":10485760,"hideLogsAfterAbort":false,"mcpServer":true,"turbopackFileSystemCacheForDev":true,"turbopackFileSystemCacheForBuild":false,"turbopackInferModuleSideEffects":false,"optimizePackageImports":["lucide-react","date-fns","lodash-es","ramda","antd","react-bootstrap","ahooks","@ant-design/icons","@headlessui/react","@headlessui-float/react","@heroicons/react/20/solid","@heroicons/react/24/solid","@heroicons/react/24/outline","@visx/visx","@tremor/react","rxjs","@mui/material","@mui/icons-material","recharts","react-use","effect","@effect/schema","@effect/platform","@effect/platform-node","@effect/platform-browser","@effect/platform-bun","@effect/sql","@effect/sql-mssql","@effect/sql-mysql2","@effect/sql-pg","@effect/sql-sqlite-node","@effect/sql-sqlite-bun","@effect/sql-sqlite-wasm","@effect/sql-sqlite-react-native","@effect/rpc","@effect/rpc-http","@effect/typeclass","@effect/experimental","@effect/opentelemetry","@material-ui/core","@material-ui/icons","@tabler/icons-react","mui-core","react-icons/ai","react-icons/bi","react-icons/bs","react-icons/cg","react-icons/ci","react-icons/di","react-icons/fa","react-icons/fa6","react-icons/fc","react-icons/fi","react-icons/gi","react-icons/go","react-icons/gr","react-icons/hi","react-icons/hi2","react-icons/im","react-icons/io","react-icons/io5","react-icons/lia","react-icons/lib","react-icons/lu","react-icons/md","react-icons/pi","react-icons/ri","react-icons/rx","react-icons/si","react-icons/sl","react-icons/tb","react-icons/tfi","react-icons/ti","react-icons/vsc","react-icons/wi"],"trustHostHeader":false,"isExperimentalCompile":false},"htmlLimitedBots":"[\\w-]+-Google|Google-[\\w-]+|Chrome-Lighthouse|Slurp|DuckDuckBot|baiduspider|yandex|sogou|bitlybot|tumblr|vkShare|quora link preview|redditbot|ia_archiver|Bingbot|BingPreview|applebot|facebookexternalhit|facebookcatalog|Twitterbot|LinkedInBot|Slackbot|Discordbot|WhatsApp|SkypeUriPreview|Yeti|googleweblight","bundlePagesRouterDependencies":false,"configFileName":"next.config.ts","turbopack":{"root":"/home/runner/work/cli/cli"},"serverExternalPackages":["tsyringe","reflect-metadata","better-sqlite3","node:os","node:child_process","node:fs"],"distDirRoot":".next"}
19
19
 
20
20
  process.env.__NEXT_PRIVATE_STANDALONE_CONFIG = JSON.stringify(nextConfig)
21
21
 
@@ -0,0 +1 @@
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,54793,7729,e=>{"use strict";var t=e.i(20314),n=e.i(31777);function r({icon:e,title:r,description:a,action:o,className:i,...l}){return(0,t.jsxs)("div",{className:(0,n.cn)("flex flex-col items-center gap-4 px-4 py-12 text-center",i),...l,children:[e?(0,t.jsx)("div",{className:"text-muted-foreground",children:e}):null,(0,t.jsx)("h3",{className:"text-lg font-semibold",children:r}),a?(0,t.jsx)("p",{className:"text-muted-foreground max-w-md text-sm",children:a}):null,o?(0,t.jsx)("div",{className:"mt-2",children:o}):null]})}e.s(["EmptyState",()=>r],7729),e.s([],54793)},19933,24042,64970,72714,81803,17466,99348,e=>{"use strict";var t=e.i(3645);let n=(0,t.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",()=>n],19933);let r=(0,t.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"}]]);e.s(["Play",()=>r],24042);let a=(0,t.default)("square",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}]]);e.s(["Square",()=>a],64970);var o=e.i(20314),i=e.i(83428),l=e.i(51251),u=e.i(31777),s=e.i(35364),d=e.i(8361);function c({label:e,onClick:t,loading:n,error:r,icon:a,iconOnly:c=!1,variant:f="outline",size:m="sm"}){let p=(0,d.useSoundAction)("click");return(0,o.jsxs)(s.Button,{variant:f,size:m,"aria-label":e,disabled:n,onClick:()=>{p.play(),t()},className:(0,u.cn)("gap-1.5",r&&"text-destructive hover:text-destructive",!r&&c&&"ghost"===f&&"text-muted-foreground cursor-pointer rounded-full transition-colors hover:text-blue-500"),children:[n?(0,o.jsx)(i.Loader2,{className:"size-4 animate-spin"}):r?(0,o.jsx)(l.CircleAlert,{className:"size-4"}):(0,o.jsx)(a,{className:"size-4"}),c?null:e]})}e.s(["ActionButton",()=>c],72714),e.s([],81803);var f=e.i(30702),m=e.i(17406),p=e.i(81846);function h({status:e,url:t}){switch(e){case m.DeploymentState.Booting:return(0,o.jsxs)(p.Badge,{className:"border-transparent bg-blue-50 text-blue-700 hover:bg-blue-50",children:[(0,o.jsx)(i.Loader2,{className:"mr-1 h-3.5 w-3.5 animate-spin"}),"Starting..."]});case m.DeploymentState.Ready:return(0,o.jsxs)(p.Badge,{className:"border-transparent bg-green-50 text-green-700 hover:bg-green-50",children:[(0,o.jsx)("span",{className:"mr-1 inline-block h-2 w-2 rounded-full bg-green-500"}),t?(0,o.jsxs)("a",{href:t,target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-1 hover:underline",onClick:e=>e.stopPropagation(),children:[t,(0,o.jsx)(f.ExternalLink,{className:"h-3 w-3"})]}):"Ready"]});default:return null}}e.s(["DeploymentStatusBadge",()=>h],17466),e.s([],99348)},45811,e=>{"use strict";let t;var n=e.i(20314),r=e.i(48249),a=e.i(567),o=e.i(79054);let i=o.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}),l=()=>{let e=o.default.useContext(i);if(!e)throw Error("useDrawerContext must be used within a Drawer.Root");return e};function u(){return/^((?!chrome|android).)*safari/i.test(navigator.userAgent)}function s(){return d(/^iPhone/)||d(/^iPad/)||d(/^Mac/)&&navigator.maxTouchPoints>1}function d(e){return"u">typeof window&&null!=window.navigator?e.test(window.navigator.platform):void 0}!function(e){if(!e||"u"<typeof document)return;let t=document.head||document.getElementsByTagName("head")[0],n=document.createElement("style");n.type="text/css",t.appendChild(n),n.styleSheet?n.styleSheet.cssText=e:n.appendChild(document.createTextNode(e))}("[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 c="u">typeof window?o.useLayoutEffect:o.useEffect;function f(...e){return(...t)=>{for(let n of e)"function"==typeof n&&n(...t)}}let m="u">typeof document&&window.visualViewport;function p(e){let t=window.getComputedStyle(e);return/(auto|scroll)/.test(t.overflow+t.overflowX+t.overflowY)}function h(e){for(p(e)&&(e=e.parentElement);e&&!p(e);)e=e.parentElement;return e||document.scrollingElement||document.documentElement}let v=new Set(["checkbox","radio","range","color","file","image","button","submit","reset"]),g=0;function w(e,t,n,r){return e.addEventListener(t,n,r),()=>{e.removeEventListener(t,n,r)}}function y(e){let t=document.scrollingElement||document.documentElement;for(;e&&e!==t;){let t=h(e);if(t!==document.documentElement&&t!==document.body&&t!==e){let n=t.getBoundingClientRect().top,r=e.getBoundingClientRect().top;e.getBoundingClientRect().bottom>t.getBoundingClientRect().bottom+24&&(t.scrollTop+=r-n)}e=t.parentElement}}function b(e){return e instanceof HTMLInputElement&&!v.has(e.type)||e instanceof HTMLTextAreaElement||e instanceof HTMLElement&&e.isContentEditable}function x(...e){return o.useCallback(function(...e){return t=>e.forEach(e=>{"function"==typeof e?e(t):null!=e&&(e.current=t)})}(...e),e)}let R=new WeakMap;function T(e,t,n=!1){if(!e||!(e instanceof HTMLElement))return;let r={};Object.entries(t).forEach(([t,n])=>{t.startsWith("--")?e.style.setProperty(t,n):(r[t]=e.style[t],e.style[t]=n)}),n||R.set(e,r)}let E=e=>{switch(e){case"top":case"bottom":return!0;case"left":case"right":return!1;default:return e}};function C(e,t){if(!e)return null;let n=window.getComputedStyle(e),r=n.transform||n.webkitTransform||n.mozTransform,a=r.match(/^matrix3d\((.+)\)$/);return a?parseFloat(a[1].split(", ")[E(t)?13:12]):(a=r.match(/^matrix\((.+)\)$/))?parseFloat(a[1].split(", ")[E(t)?5:4]):null}function D(e,t){if(!e)return()=>{};let n=e.style.cssText;return Object.assign(e.style,t),()=>{e.style.cssText=n}}let S=[.32,.72,0,1],j="vaul-dragging";function k(e){let t=o.default.useRef(e);return o.default.useEffect(()=>{t.current=e}),o.default.useMemo(()=>(...e)=>null==t.current?void 0:t.current.call(t,...e),[])}function $({prop:e,defaultProp:t,onChange:n=()=>{}}){let[r,a]=function({defaultProp:e,onChange:t}){let n=o.default.useState(e),[r]=n,a=o.default.useRef(r),i=k(t);return o.default.useEffect(()=>{a.current!==r&&(i(r),a.current=r)},[r,a,i]),n}({defaultProp:t,onChange:n}),i=void 0!==e,l=i?e:r,u=k(n);return[l,o.default.useCallback(t=>{if(i){let n="function"==typeof t?t(e):t;n!==e&&u(n)}else a(t)},[i,e,a,u])]}let N=()=>()=>{},M=null;function P({open:e,onOpenChange:n,children:r,onDrag:l,onRelease:d,snapPoints:p,shouldScaleBackground:v=!1,setBackgroundColorOnScale:x=!0,closeThreshold:D=.25,scrollLockTimeout:k=100,dismissible:N=!0,handleOnly:P=!1,fadeFromIndex:O=p&&p.length-1,activeSnapPoint:B,setActiveSnapPoint:L,fixed:z,modal:F=!0,onClose:A,nested:H,noBodyStyles:I=!1,direction:W="bottom",defaultOpen:q=!1,disablePreventScroll:Y=!0,snapToSequentialPoint:U=!1,preventScrollRestoration:X=!1,repositionInputs:V=!0,onAnimationEnd:K,container:_,autoFocus:G=!1}){var J,Q;let[Z=!1,ee]=$({defaultProp:q,prop:e,onChange:e=>{null==n||n(e),e||H||eN(),setTimeout(()=>{null==K||K(e)},500),e&&!F&&"u">typeof window&&window.requestAnimationFrame(()=>{document.body.style.pointerEvents="auto"}),e||(document.body.style.pointerEvents="auto")}}),[et,en]=o.default.useState(!1),[er,ea]=o.default.useState(!1),[eo,ei]=o.default.useState(!1),el=o.default.useRef(null),eu=o.default.useRef(null),es=o.default.useRef(null),ed=o.default.useRef(null),ec=o.default.useRef(null),ef=o.default.useRef(!1),em=o.default.useRef(null),ep=o.default.useRef(0),eh=o.default.useRef(!1),ev=o.default.useRef(!q),eg=o.default.useRef(0),ew=o.default.useRef(null),ey=o.default.useRef((null==(J=ew.current)?void 0:J.getBoundingClientRect().height)||0),eb=o.default.useRef((null==(Q=ew.current)?void 0:Q.getBoundingClientRect().width)||0),ex=o.default.useRef(0),eR=o.default.useCallback(e=>{p&&e===eS.length-1&&(eu.current=new Date)},[]),{activeSnapPoint:eT,activeSnapPointIndex:eE,setActiveSnapPoint:eC,onRelease:eD,snapPointsOffset:eS,onDrag:ej,shouldFade:ek,getPercentageDragged:e$}=function({activeSnapPointProp:e,setActiveSnapPointProp:t,snapPoints:n,drawerRef:r,overlayRef:a,fadeFromIndex:i,onSnapPointChange:l,direction:u="bottom",container:s,snapToSequentialPoint:d}){let[c,f]=$({prop:e,defaultProp:null==n?void 0:n[0],onChange:t}),[m,p]=o.default.useState("u">typeof window?{innerWidth:window.innerWidth,innerHeight:window.innerHeight}:void 0);o.default.useEffect(()=>{function e(){p({innerWidth:window.innerWidth,innerHeight:window.innerHeight})}return window.addEventListener("resize",e),()=>window.removeEventListener("resize",e)},[]);let h=o.default.useMemo(()=>c===(null==n?void 0:n[n.length-1])||null,[n,c]),v=o.default.useMemo(()=>{var e;return null!=(e=null==n?void 0:n.findIndex(e=>e===c))?e:null},[n,c]),g=n&&n.length>0&&(i||0===i)&&!Number.isNaN(i)&&n[i]===c||!n,w=o.default.useMemo(()=>{var e;let t=s?{width:s.getBoundingClientRect().width,height:s.getBoundingClientRect().height}:"u">typeof window?{width:window.innerWidth,height:window.innerHeight}:{width:0,height:0};return null!=(e=null==n?void 0:n.map(e=>{let n="string"==typeof e,r=0;if(n&&(r=parseInt(e,10)),E(u)){let a=n?r:m?e*t.height:0;return m?"bottom"===u?t.height-a:-t.height+a:a}let a=n?r:m?e*t.width:0;return m?"right"===u?t.width-a:-t.width+a:a}))?e:[]},[n,m,s]),y=o.default.useMemo(()=>null!==v?null==w?void 0:w[v]:null,[w,v]),b=o.default.useCallback(e=>{var t;let o=null!=(t=null==w?void 0:w.findIndex(t=>t===e))?t:null;l(o),T(r.current,{transition:`transform 0.5s cubic-bezier(${S.join(",")})`,transform:E(u)?`translate3d(0, ${e}px, 0)`:`translate3d(${e}px, 0, 0)`}),w&&o!==w.length-1&&void 0!==i&&o!==i&&o<i?T(a.current,{transition:`opacity 0.5s cubic-bezier(${S.join(",")})`,opacity:"0"}):T(a.current,{transition:`opacity 0.5s cubic-bezier(${S.join(",")})`,opacity:"1"}),f(null==n?void 0:n[Math.max(o,0)])},[r.current,n,w,i,a,f]);return o.default.useEffect(()=>{if(c||e){var t;let r=null!=(t=null==n?void 0:n.findIndex(t=>t===e||t===c))?t:-1;w&&-1!==r&&"number"==typeof w[r]&&b(w[r])}},[c,e,n,w,b]),{isLastSnapPoint:h,activeSnapPoint:c,shouldFade:g,getPercentageDragged:function(e,t){if(!n||"number"!=typeof v||!w||void 0===i)return null;let r=v===i-1;if(v>=i&&t)return 0;if(r&&!t)return 1;if(!g&&!r)return null;let a=r?v+1:v-1,o=e/Math.abs(r?w[a]-w[a-1]:w[a+1]-w[a]);return r?1-o:o},setActiveSnapPoint:f,activeSnapPointIndex:v,onRelease:function({draggedDistance:e,closeDrawer:t,velocity:r,dismissible:o}){if(void 0===i)return;let l="bottom"===u||"right"===u?(null!=y?y:0)-e:(null!=y?y:0)+e,s=v===i-1,c=0===v,f=e>0;if(s&&T(a.current,{transition:`opacity 0.5s cubic-bezier(${S.join(",")})`}),!d&&r>2&&!f)return void(o?t():b(w[0]));if(!d&&r>2&&f&&w&&n)return void b(w[n.length-1]);let m=null==w?void 0:w.reduce((e,t)=>"number"!=typeof e||"number"!=typeof t?e:Math.abs(t-l)<Math.abs(e-l)?t:e),p=E(u)?window.innerHeight:window.innerWidth;if(r>.4&&Math.abs(e)<.4*p){let e=f?1:-1;return e>0&&h&&n?void b(w[n.length-1]):void(c&&e<0&&o&&t(),null===v||b(w[v+e]))}b(m)},onDrag:function({draggedDistance:e}){if(null===y)return;let t="bottom"===u||"right"===u?y-e:y+e;("bottom"===u||"right"===u)&&t<w[w.length-1]||("top"===u||"left"===u)&&t>w[w.length-1]||T(r.current,{transform:E(u)?`translate3d(0, ${t}px, 0)`:`translate3d(${t}px, 0, 0)`})},snapPointsOffset:w}}({snapPoints:p,activeSnapPointProp:B,setActiveSnapPointProp:L,drawerRef:ew,fadeFromIndex:O,overlayRef:el,onSnapPointChange:eR,direction:W,container:_,snapToSequentialPoint:U});!function(e={}){let{isDisabled:n}=e;c(()=>{if(!n){var e,r,a;let n,o,i,l,u,d,c;return 1==++g&&s()&&(i=0,l=window.pageXOffset,u=window.pageYOffset,d=f((e=document.documentElement,r="paddingRight",a=`${window.innerWidth-document.documentElement.clientWidth}px`,n=e.style[r],e.style[r]=a,()=>{e.style[r]=n})),window.scrollTo(0,0),c=f(w(document,"touchstart",e=>{((o=h(e.target))!==document.documentElement||o!==document.body)&&(i=e.changedTouches[0].pageY)},{passive:!1,capture:!0}),w(document,"touchmove",e=>{if(!o||o===document.documentElement||o===document.body)return void e.preventDefault();let t=e.changedTouches[0].pageY,n=o.scrollTop,r=o.scrollHeight-o.clientHeight;0!==r&&((n<=0&&t>i||n>=r&&t<i)&&e.preventDefault(),i=t)},{passive:!1,capture:!0}),w(document,"touchend",e=>{let t=e.target;b(t)&&t!==document.activeElement&&(e.preventDefault(),t.style.transform="translateY(-2000px)",t.focus(),requestAnimationFrame(()=>{t.style.transform=""}))},{passive:!1,capture:!0}),w(document,"focus",e=>{let t=e.target;b(t)&&(t.style.transform="translateY(-2000px)",requestAnimationFrame(()=>{t.style.transform="",m&&(m.height<window.innerHeight?requestAnimationFrame(()=>{y(t)}):m.addEventListener("resize",()=>y(t),{once:!0}))}))},!0),w(window,"scroll",()=>{window.scrollTo(0,0)})),t=()=>{d(),c(),window.scrollTo(l,u)}),()=>{0==--g&&(null==t||t())}}},[n])}({isDisabled:!Z||er||!F||eo||!et||!V||!Y});let{restorePositionSetting:eN}=function({isOpen:e,modal:t,nested:n,hasBeenOpened:r,preventScrollRestoration:a,noBodyStyles:i}){let[l,s]=o.default.useState(()=>"u">typeof window?window.location.href:""),d=o.default.useRef(0),c=o.default.useCallback(()=>{if(u()&&null===M&&e&&!i){M={position:document.body.style.position,top:document.body.style.top,left:document.body.style.left,height:document.body.style.height,right:"unset"};let{scrollX:e,innerHeight:t}=window;document.body.style.setProperty("position","fixed","important"),Object.assign(document.body.style,{top:`${-d.current}px`,left:`${-e}px`,right:"0px",height:"auto"}),window.setTimeout(()=>window.requestAnimationFrame(()=>{let e=t-window.innerHeight;e&&d.current>=t&&(document.body.style.top=`${-(d.current+e)}px`)}),300)}},[e]),f=o.default.useCallback(()=>{if(u()&&null!==M&&!i){let e=-parseInt(document.body.style.top,10),t=-parseInt(document.body.style.left,10);Object.assign(document.body.style,M),window.requestAnimationFrame(()=>{a&&l!==window.location.href?s(window.location.href):window.scrollTo(t,e)}),M=null}},[l]);return o.default.useEffect(()=>{function e(){d.current=window.scrollY}return e(),window.addEventListener("scroll",e),()=>{window.removeEventListener("scroll",e)}},[]),o.default.useEffect(()=>{if(t)return()=>{"u"<typeof document||document.querySelector("[data-vaul-drawer]")||f()}},[t,f]),o.default.useEffect(()=>{!n&&r&&(e?(window.matchMedia("(display-mode: standalone)").matches||c(),t||window.setTimeout(()=>{f()},500)):f())},[e,r,l,t,n,c,f]),{restorePositionSetting:f}}({isOpen:Z,modal:F,nested:null!=H&&H,hasBeenOpened:et,preventScrollRestoration:X,noBodyStyles:I});function eM(){return(window.innerWidth-26)/window.innerWidth}function eP(e,t){var n;let r=e,a=null==(n=window.getSelection())?void 0:n.toString(),o=ew.current?C(ew.current,W):null,i=new Date;if("SELECT"===r.tagName||r.hasAttribute("data-vaul-no-drag")||r.closest("[data-vaul-no-drag]"))return!1;if("right"===W||"left"===W)return!0;if(eu.current&&i.getTime()-eu.current.getTime()<500)return!1;if(null!==o&&("bottom"===W?o>0:o<0))return!0;if(a&&a.length>0)return!1;if(ec.current&&i.getTime()-ec.current.getTime()<k&&0===o||t)return ec.current=i,!1;for(;r;){if(r.scrollHeight>r.clientHeight){if(0!==r.scrollTop)return ec.current=new Date,!1;if("dialog"===r.getAttribute("role"))break}r=r.parentNode}return!0}function eO(e){er&&ew.current&&(ew.current.classList.remove(j),ef.current=!1,ea(!1),ed.current=new Date),null==A||A(),e||ee(!1),setTimeout(()=>{p&&eC(p[0])},500)}function eB(){if(!ew.current)return;let e=document.querySelector("[data-vaul-drawer-wrapper]"),t=C(ew.current,W);T(ew.current,{transform:"translate3d(0, 0, 0)",transition:`transform 0.5s cubic-bezier(${S.join(",")})`}),T(el.current,{transition:`opacity 0.5s cubic-bezier(${S.join(",")})`,opacity:"1"}),v&&t&&t>0&&Z&&T(e,{borderRadius:"8px",overflow:"hidden",...E(W)?{transform:`scale(${eM()}) translate3d(0, calc(env(safe-area-inset-top) + 14px), 0)`,transformOrigin:"top"}:{transform:`scale(${eM()}) translate3d(calc(env(safe-area-inset-top) + 14px), 0, 0)`,transformOrigin:"left"},transitionProperty:"transform, border-radius",transitionDuration:"0.5s",transitionTimingFunction:`cubic-bezier(${S.join(",")})`},!0)}return o.default.useEffect(()=>{window.requestAnimationFrame(()=>{ev.current=!0})},[]),o.default.useEffect(()=>{var e;function t(){if(ew.current&&V&&(b(document.activeElement)||eh.current)){var e;let t=(null==(e=window.visualViewport)?void 0:e.height)||0,n=window.innerHeight,r=n-t,a=ew.current.getBoundingClientRect().height||0;ex.current||(ex.current=a);let o=ew.current.getBoundingClientRect().top;if(Math.abs(eg.current-r)>60&&(eh.current=!eh.current),p&&p.length>0&&eS&&eE&&(r+=eS[eE]||0),eg.current=r,a>t||eh.current){let e=ew.current.getBoundingClientRect().height,i=e;e>t&&(i=t-(a>.8*n?o:26)),z?ew.current.style.height=`${e-Math.max(r,0)}px`:ew.current.style.height=`${Math.max(i,t-o)}px`}else{let e;e=navigator.userAgent,"u">typeof window&&(/Firefox/.test(e)&&/Mobile/.test(e)||/FxiOS/.test(e))||(ew.current.style.height=`${ex.current}px`)}p&&p.length>0&&!eh.current?ew.current.style.bottom="0px":ew.current.style.bottom=`${Math.max(r,0)}px`}}return null==(e=window.visualViewport)||e.addEventListener("resize",t),()=>{var e;return null==(e=window.visualViewport)?void 0:e.removeEventListener("resize",t)}},[eE,p,eS]),o.default.useEffect(()=>(Z&&(T(document.documentElement,{scrollBehavior:"auto"}),eu.current=new Date),()=>{!function(e,t){if(!e||!(e instanceof HTMLElement))return;let n=R.get(e);n&&(e.style[t]=n[t])}(document.documentElement,"scrollBehavior")}),[Z]),o.default.useEffect(()=>{F||window.requestAnimationFrame(()=>{document.body.style.pointerEvents="auto"})},[F]),o.default.createElement(a.Root,{defaultOpen:q,onOpenChange:e=>{(N||e)&&(e?en(!0):eO(!0),ee(e))},open:Z},o.default.createElement(i.Provider,{value:{activeSnapPoint:eT,snapPoints:p,setActiveSnapPoint:eC,drawerRef:ew,overlayRef:el,onOpenChange:n,onPress:function(e){var t,n;!N&&!p||(!ew.current||ew.current.contains(e.target))&&(ey.current=(null==(t=ew.current)?void 0:t.getBoundingClientRect().height)||0,eb.current=(null==(n=ew.current)?void 0:n.getBoundingClientRect().width)||0,ea(!0),es.current=new Date,s()&&window.addEventListener("touchend",()=>ef.current=!1,{once:!0}),e.target.setPointerCapture(e.pointerId),ep.current=E(W)?e.pageY:e.pageX)},onRelease:function(e){var t,n;if(!er||!ew.current)return;ew.current.classList.remove(j),ef.current=!1,ea(!1),ed.current=new Date;let r=C(ew.current,W);if(!e||!eP(e.target,!1)||!r||Number.isNaN(r)||null===es.current)return;let a=ed.current.getTime()-es.current.getTime(),o=ep.current-(E(W)?e.pageY:e.pageX),i=Math.abs(o)/a;if(i>.05&&(ei(!0),setTimeout(()=>{ei(!1)},200)),p){eD({draggedDistance:o*("bottom"===W||"right"===W?1:-1),closeDrawer:eO,velocity:i,dismissible:N}),null==d||d(e,!0);return}if("bottom"===W||"right"===W?o>0:o<0){eB(),null==d||d(e,!0);return}if(i>.4){eO(),null==d||d(e,!1);return}let l=Math.min(null!=(t=ew.current.getBoundingClientRect().height)?t:0,window.innerHeight),u=Math.min(null!=(n=ew.current.getBoundingClientRect().width)?n:0,window.innerWidth);if(Math.abs(r)>=("left"===W||"right"===W?u:l)*D){eO(),null==d||d(e,!1);return}null==d||d(e,!0),eB()},onDrag:function(e){if(ew.current&&er){let t="bottom"===W||"right"===W?1:-1,n=(ep.current-(E(W)?e.pageY:e.pageX))*t,r=n>0,a=p&&!N&&!r;if(a&&0===eE)return;let o=Math.abs(n),i=document.querySelector("[data-vaul-drawer-wrapper]"),u=o/("bottom"===W||"top"===W?ey.current:eb.current),s=e$(o,r);if(null!==s&&(u=s),a&&u>=1||!ef.current&&!eP(e.target,r))return;if(ew.current.classList.add(j),ef.current=!0,T(ew.current,{transition:"none"}),T(el.current,{transition:"none"}),p&&ej({draggedDistance:n}),r&&!p){let e=Math.min(-(8*(Math.log(n+1)-2)*1),0)*t;T(ew.current,{transform:E(W)?`translate3d(0, ${e}px, 0)`:`translate3d(${e}px, 0, 0)`});return}let d=1-u;if((ek||O&&eE===O-1)&&(null==l||l(e,u),T(el.current,{opacity:`${d}`,transition:"none"},!0)),i&&el.current&&v){let e=Math.min(eM()+u*(1-eM()),1),t=8-8*u,n=Math.max(0,14-14*u);T(i,{borderRadius:`${t}px`,transform:E(W)?`scale(${e}) translate3d(0, ${n}px, 0)`:`scale(${e}) translate3d(${n}px, 0, 0)`,transition:"none"},!0)}if(!p){let e=o*t;T(ew.current,{transform:E(W)?`translate3d(0, ${e}px, 0)`:`translate3d(${e}px, 0, 0)`})}}},dismissible:N,shouldAnimate:ev,handleOnly:P,isOpen:Z,isDragging:er,shouldFade:ek,closeDrawer:eO,onNestedDrag:function(e,t){if(t<0)return;let n=(window.innerWidth-16)/window.innerWidth,r=n+t*(1-n),a=-16+16*t;T(ew.current,{transform:E(W)?`scale(${r}) translate3d(0, ${a}px, 0)`:`scale(${r}) translate3d(${a}px, 0, 0)`,transition:"none"})},onNestedOpenChange:function(e){let t=e?(window.innerWidth-16)/window.innerWidth:1,n=e?-16:0;em.current&&window.clearTimeout(em.current),T(ew.current,{transition:`transform 0.5s cubic-bezier(${S.join(",")})`,transform:E(W)?`scale(${t}) translate3d(0, ${n}px, 0)`:`scale(${t}) translate3d(${n}px, 0, 0)`}),!e&&ew.current&&(em.current=setTimeout(()=>{let e=C(ew.current,W);T(ew.current,{transition:"none",transform:E(W)?`translate3d(0, ${e}px, 0)`:`translate3d(${e}px, 0, 0)`})},500))},onNestedRelease:function(e,t){let n=E(W)?window.innerHeight:window.innerWidth,r=t?(n-16)/n:1,a=t?-16:0;t&&T(ew.current,{transition:`transform 0.5s cubic-bezier(${S.join(",")})`,transform:E(W)?`scale(${r}) translate3d(0, ${a}px, 0)`:`scale(${r}) translate3d(${a}px, 0, 0)`})},keyboardIsOpen:eh,modal:F,snapPointsOffset:eS,activeSnapPointIndex:eE,direction:W,shouldScaleBackground:v,setBackgroundColorOnScale:x,noBodyStyles:I,container:_,autoFocus:G}},r))}let O=o.default.forwardRef(function({...e},t){let{overlayRef:n,snapPoints:r,onRelease:i,shouldFade:u,isOpen:s,modal:d,shouldAnimate:c}=l(),f=x(t,n),m=r&&r.length>0;if(!d)return null;let p=o.default.useCallback(e=>i(e),[i]);return o.default.createElement(a.Overlay,{onMouseUp:p,ref:f,"data-vaul-overlay":"","data-vaul-snap-points":s&&m?"true":"false","data-vaul-snap-points-overlay":s&&u?"true":"false","data-vaul-animate":(null==c?void 0:c.current)?"true":"false",...e})});O.displayName="Drawer.Overlay";let B=o.default.forwardRef(function({onPointerDownOutside:e,style:t,onOpenAutoFocus:n,...r},i){let{drawerRef:u,onPress:s,onRelease:d,onDrag:c,keyboardIsOpen:f,snapPointsOffset:m,activeSnapPointIndex:p,modal:h,isOpen:v,direction:g,snapPoints:w,container:y,handleOnly:b,shouldAnimate:R,autoFocus:T}=l(),[C,j]=o.default.useState(!1),k=x(i,u),$=o.default.useRef(null),M=o.default.useRef(null),P=o.default.useRef(!1),O=w&&w.length>0;function B(e){$.current=null,P.current=!1,d(e)}return!function(){let{direction:e,isOpen:t,shouldScaleBackground:n,setBackgroundColorOnScale:r,noBodyStyles:a}=l(),i=o.default.useRef(null),u=(0,o.useMemo)(()=>document.body.style.backgroundColor,[]);function s(){return(window.innerWidth-26)/window.innerWidth}o.default.useEffect(()=>{if(t&&n){i.current&&clearTimeout(i.current);let t=document.querySelector("[data-vaul-drawer-wrapper]")||document.querySelector("[vaul-drawer-wrapper]");if(!t)return;!function(...e){}(r&&!a?D(document.body,{background:"black"}):N,D(t,{transformOrigin:E(e)?"top":"left",transitionProperty:"transform, border-radius",transitionDuration:"0.5s",transitionTimingFunction:`cubic-bezier(${S.join(",")})`}));let n=D(t,{borderRadius:"8px",overflow:"hidden",...E(e)?{transform:`scale(${s()}) translate3d(0, calc(env(safe-area-inset-top) + 14px), 0)`}:{transform:`scale(${s()}) translate3d(calc(env(safe-area-inset-top) + 14px), 0, 0)`}});return()=>{n(),i.current=window.setTimeout(()=>{u?document.body.style.background=u:document.body.style.removeProperty("background")},500)}}},[t,n,u])}(),o.default.useEffect(()=>{O&&window.requestAnimationFrame(()=>{j(!0)})},[]),o.default.createElement(a.Content,{"data-vaul-drawer-direction":g,"data-vaul-drawer":"","data-vaul-delayed-snap-points":C?"true":"false","data-vaul-snap-points":v&&O?"true":"false","data-vaul-custom-container":y?"true":"false","data-vaul-animate":(null==R?void 0:R.current)?"true":"false",...r,ref:k,style:m&&m.length>0?{"--snap-point-height":`${m[null!=p?p:0]}px`,...t}:t,onPointerDown:e=>{b||(null==r.onPointerDown||r.onPointerDown.call(r,e),$.current={x:e.pageX,y:e.pageY},s(e))},onOpenAutoFocus:e=>{null==n||n(e),T||e.preventDefault()},onPointerDownOutside:t=>{(null==e||e(t),!h||t.defaultPrevented)?t.preventDefault():f.current&&(f.current=!1)},onFocusOutside:e=>{if(!h)return void e.preventDefault()},onPointerMove:e=>{if(M.current=e,b||(null==r.onPointerMove||r.onPointerMove.call(r,e),!$.current))return;let t=e.pageY-$.current.y,n=e.pageX-$.current.x,a="touch"===e.pointerType?10:2;((e,t,n=0)=>{if(P.current)return!0;let r=Math.abs(e.y),a=Math.abs(e.x),o=a>r,i=["bottom","right"].includes(t)?1:-1;if("left"===t||"right"===t){if(!(e.x*i<0)&&a>=0&&a<=n)return o}else if(!(e.y*i<0)&&r>=0&&r<=n)return!o;return P.current=!0,!0})({x:n,y:t},g,a)?c(e):(Math.abs(n)>a||Math.abs(t)>a)&&($.current=null)},onPointerUp:e=>{null==r.onPointerUp||r.onPointerUp.call(r,e),$.current=null,P.current=!1,d(e)},onPointerOut:e=>{null==r.onPointerOut||r.onPointerOut.call(r,e),B(M.current)},onContextMenu:e=>{null==r.onContextMenu||r.onContextMenu.call(r,e),M.current&&B(M.current)}})});B.displayName="Drawer.Content";let L=o.default.forwardRef(function({preventCycle:e=!1,children:t,...n},r){let{closeDrawer:a,isDragging:i,snapPoints:u,activeSnapPoint:s,setActiveSnapPoint:d,dismissible:c,handleOnly:f,isOpen:m,onPress:p,onDrag:h}=l(),v=o.default.useRef(null),g=o.default.useRef(!1);function w(){v.current&&window.clearTimeout(v.current),g.current=!1}return o.default.createElement("div",{onClick:function(){g.current?w():window.setTimeout(()=>{!function(){if(i||e||g.current)return w();if(w(),!u||0===u.length){c||a();return}if(s===u[u.length-1]&&c)return a();let t=u.findIndex(e=>e===s);-1===t||d(u[t+1])}()},120)},onPointerCancel:w,onPointerDown:e=>{f&&p(e),v.current=window.setTimeout(()=>{g.current=!0},250)},onPointerMove:e=>{f&&h(e)},ref:r,"data-vaul-drawer-visible":m?"true":"false","data-vaul-handle":"","aria-hidden":"true",...n},o.default.createElement("span",{"data-vaul-handle-hitarea":"","aria-hidden":"true"},t))});L.displayName="Drawer.Handle";let z={Root:P,NestedRoot:function({onDrag:e,onOpenChange:t,open:n,...r}){let{onNestedDrag:a,onNestedOpenChange:i,onNestedRelease:u}=l();if(!a)throw Error("Drawer.NestedRoot must be placed in another drawer");return o.default.createElement(P,{nested:!0,open:n,onClose:()=>{i(!1)},onDrag:(t,n)=>{a(t,n),null==e||e(t,n)},onOpenChange:e=>{e&&i(e),null==t||t(e)},onRelease:u,...r})},Content:B,Overlay:O,Trigger:a.Trigger,Portal:function(e){let t=l(),{container:n=t.container,...r}=e;return o.default.createElement(a.Portal,{container:n,...r})},Handle:L,Close:a.Close,Title:a.Title,Description:a.Description};var F=e.i(31777);function A({...e}){return(0,n.jsx)(z.Root,{"data-slot":"drawer",...e})}function H({...e}){return(0,n.jsx)(z.Portal,{"data-slot":"drawer-portal",...e})}function I({className:e,...t}){return(0,n.jsx)(z.Overlay,{"data-slot":"drawer-overlay",className:(0,F.cn)("fixed inset-0 z-50 bg-black/50",e),...t})}function W({className:e,children:t,direction:a="bottom",showCloseButton:o=!0,...i}){return(0,n.jsx)(H,{children:(0,n.jsxs)(z.Content,{"data-slot":"drawer-content",className:(0,F.cn)("bg-background fixed z-50 flex flex-col shadow-lg","bottom"===a&&"inset-x-0 bottom-0 mb-24 rounded-t-lg border-t","top"===a&&"inset-x-0 top-0 mt-24 rounded-b-lg border-b","right"===a&&"inset-y-0 right-0 h-full w-3/4 border-l","left"===a&&"inset-y-0 left-0 h-full w-3/4 border-r",e),style:{"--initial-transform":"right"===a?"calc(100% + 8px)":"left"===a||"top"===a?"calc(-100% - 8px)":"calc(100% + 8px)",userSelect:"text",...i.style??{}},...i,children:[t,o?(0,n.jsxs)(z.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,n.jsx)(r.XIcon,{className:"size-4"}),(0,n.jsx)("span",{className:"sr-only",children:"Close"})]}):null]})})}function q({className:e,...t}){return(0,n.jsx)("div",{"data-slot":"drawer-header",className:(0,F.cn)("flex flex-col gap-1.5 p-4",e),...t})}function Y({className:e,...t}){return(0,n.jsx)("div",{"data-slot":"drawer-footer",className:(0,F.cn)("mt-auto flex flex-col gap-2 p-4",e),...t})}function U({className:e,...t}){return(0,n.jsx)(z.Title,{"data-slot":"drawer-title",className:(0,F.cn)("text-foreground font-semibold",e),...t})}function X({className:e,...t}){return(0,n.jsx)(z.Description,{"data-slot":"drawer-description",className:(0,F.cn)("text-muted-foreground text-sm",e),...t})}e.s(["Drawer",()=>A,"DrawerContent",()=>W,"DrawerDescription",()=>X,"DrawerFooter",()=>Y,"DrawerHeader",()=>q,"DrawerOverlay",()=>I,"DrawerTitle",()=>U],45811)},8537,e=>{"use strict";var t=e.i(79054),n=e.i(21023);let r=(0,n.createServerReference)("40c4c550c03f0c7f8a1d6de9b9f97bad926d0d0327",n.callServer,void 0,n.findSourceMapURL,"deployFeature"),a=(0,n.createServerReference)("40da0c8dab9368470112e7490db6505f83ed5c6ed9",n.callServer,void 0,n.findSourceMapURL,"deployRepository"),o=(0,n.createServerReference)("4026e0599c8bde14385e9191fe2f9303737a714483",n.callServer,void 0,n.findSourceMapURL,"stopDeployment"),i=(0,n.createServerReference)("400551e8e0a2d13a0e5cac8c3126b138c97e1716af",n.callServer,void 0,n.findSourceMapURL,"getDeploymentStatus");function l(e){let[n,l]=(0,t.useState)(!1),[u,s]=(0,t.useState)(!1),[d,c]=(0,t.useState)(null),[f,m]=(0,t.useState)(null),[p,h]=(0,t.useState)(null),v=(0,t.useRef)(null),g=(0,t.useRef)(null),w=(0,t.useRef)(!0);(0,t.useEffect)(()=>(w.current=!0,()=>{w.current=!1}),[]),(0,t.useEffect)(()=>()=>{v.current&&clearTimeout(v.current),g.current&&clearInterval(g.current)},[]);let y=(0,t.useCallback)(()=>{g.current&&(clearInterval(g.current),g.current=null)},[]),b=(0,t.useCallback)(e=>{y(),g.current=setInterval(async()=>{if(!w.current)return void y();let t=await i(e);w.current&&(t&&"Stopped"!==t.state?(m(t.state),h(t.url)):(m(null),h(null),y()))},3e3)},[y]);return{deploy:(0,t.useCallback)(async()=>{if(e&&!n){v.current&&clearTimeout(v.current),l(!0),c(null);try{let t="feature"===e.targetType?await r(e.targetId):await a(e.repositoryPath);if(!w.current)return;if(t.success)m(t.state??null),h(null),b(e.targetId);else{let e=t.error??"An unexpected error occurred";c(e),v.current=setTimeout(()=>c(null),5e3)}}catch(e){if(!w.current)return;c(e instanceof Error?e.message:"An unexpected error occurred"),v.current=setTimeout(()=>c(null),5e3)}finally{w.current&&l(!1)}}},[e,n,b]),stop:(0,t.useCallback)(async()=>{if(e&&!u){s(!0);try{let t=await o(e.targetId);if(!w.current)return;t.success&&(y(),m(null),h(null))}catch{}finally{w.current&&s(!1)}}},[e,u,y]),deployLoading:n,stopLoading:u,deployError:d,status:f,url:p}}e.s(["useDeployAction",()=>l],8537)},1650,11495,e=>{"use strict";var t=e.i(20314),n=e.i(79054),r=e.i(48249),a=e.i(24042),o=e.i(64970),i=e.i(94237),l=e.i(31777);e.i(81803);var u=e.i(72714);e.i(99348);var s=e.i(17466),d=e.i(45811),c=e.i(25235),f=e.i(2828),m=e.i(8537),p=e.i(63629);let h=(0,i.cva)("",{variants:{size:{sm:"w-96",md:"w-xl"}},defaultVariants:{size:"sm"}});function v({open:e,onClose:a,modal:o=!1,size:i,header:u,children:s,footer:f,className:m,"data-testid":v,deployTarget:w}){let y=(0,n.useRef)(null);return(0,n.useEffect)(()=>{if(!e||o)return;let t=e=>{let t=e.target;y.current?.contains(t)||t.closest('[data-no-drawer-close], [role="alertdialog"], [role="menu"], [role="listbox"], [data-radix-popper-content-wrapper]')||a()};return document.addEventListener("click",t),()=>document.removeEventListener("click",t)},[e,o,a]),(0,t.jsxs)(d.Drawer,{direction:"right",modal:o,handleOnly:!0,open:e,onOpenChange:e=>{e||a()},children:[o?(0,t.jsx)(d.DrawerOverlay,{}):null,(0,t.jsxs)(d.DrawerContent,{ref:y,direction:"right",showCloseButton:!1,className:(0,l.cn)(h({size:i}),m),"data-testid":v,children:[(0,t.jsxs)("button",{type:"button","aria-label":"Close",onClick:a,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":v?`${v}-close-button`:void 0,children:[(0,t.jsx)(r.XIcon,{className:"size-4"}),(0,t.jsx)("span",{className:"sr-only",children:"Close"})]}),u?(0,t.jsx)(d.DrawerHeader,{className:"shrink-0",children:u}):null,u?(0,t.jsx)(c.Separator,{}):null,p.featureFlags.envDeploy&&w?(0,t.jsx)(g,{deployTarget:w}):null,(0,t.jsx)("div",{className:"flex min-h-0 flex-1 flex-col",children:s}),f?(0,t.jsx)(d.DrawerFooter,{className:"shrink-0",children:f}):null]})]})}function g({deployTarget:e}){let n=(0,m.useDeployAction)(e),r="Booting"===n.status||"Ready"===n.status;return(0,t.jsxs)("div",{"data-testid":"base-drawer-deploy-bar",className:"flex items-center gap-2 px-4 pb-3",children:[(0,t.jsx)(f.TooltipProvider,{children:(0,t.jsxs)(f.Tooltip,{children:[(0,t.jsx)(f.TooltipTrigger,{asChild:!0,children:(0,t.jsx)("span",{children:(0,t.jsx)(u.ActionButton,{label:r?"Stop Dev Server":"Start Dev Server",onClick:r?n.stop:n.deploy,loading:n.deployLoading||n.stopLoading,error:!!n.deployError,icon:r?o.Square:a.Play,iconOnly:!0,variant:"outline",size:"icon-sm"})})}),(0,t.jsx)(f.TooltipContent,{children:r?"Stop Dev Server":"Start Dev Server"})]})}),r?(0,t.jsx)(s.DeploymentStatusBadge,{status:n.status,url:n.url}):null]})}e.s(["BaseDrawer",()=>v],11495),e.s([],1650)}]);