@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.
- package/dist/src/presentation/web/components/common/base-drawer/base-drawer.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/base-drawer/base-drawer.js +21 -1
- package/dist/src/presentation/web/components/common/base-drawer/base-drawer.stories.d.ts +15 -1
- package/dist/src/presentation/web/components/common/base-drawer/base-drawer.stories.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/base-drawer/base-drawer.stories.js +16 -2
- package/dist/src/presentation/web/components/common/control-center-drawer/control-center-drawer.d.ts +12 -0
- package/dist/src/presentation/web/components/common/control-center-drawer/control-center-drawer.d.ts.map +1 -0
- package/dist/src/presentation/web/components/common/control-center-drawer/control-center-drawer.js +284 -0
- package/dist/src/presentation/web/components/common/control-center-drawer/control-center-drawer.stories.d.ts +33 -0
- package/dist/src/presentation/web/components/common/control-center-drawer/control-center-drawer.stories.d.ts.map +1 -0
- package/dist/src/presentation/web/components/common/control-center-drawer/control-center-drawer.stories.js +210 -0
- package/dist/src/presentation/web/components/common/control-center-drawer/drawer-view.d.ts +56 -0
- package/dist/src/presentation/web/components/common/control-center-drawer/drawer-view.d.ts.map +1 -0
- package/dist/src/presentation/web/components/common/control-center-drawer/drawer-view.js +32 -0
- package/dist/src/presentation/web/components/common/control-center-drawer/index.d.ts +3 -0
- package/dist/src/presentation/web/components/common/control-center-drawer/index.d.ts.map +1 -0
- package/dist/src/presentation/web/components/common/control-center-drawer/index.js +2 -0
- package/dist/src/presentation/web/components/common/drawer-action-bar/drawer-action-bar-config.d.ts +0 -4
- package/dist/src/presentation/web/components/common/drawer-action-bar/drawer-action-bar-config.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/drawer-action-bar/drawer-action-bar.d.ts +1 -1
- package/dist/src/presentation/web/components/common/drawer-action-bar/drawer-action-bar.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/drawer-action-bar/drawer-action-bar.js +18 -12
- package/dist/src/presentation/web/components/common/drawer-action-bar/drawer-action-bar.stories.d.ts +4 -6
- package/dist/src/presentation/web/components/common/drawer-action-bar/drawer-action-bar.stories.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/drawer-action-bar/drawer-action-bar.stories.js +5 -13
- package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.js +2 -13
- package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.stories.d.ts +2 -10
- package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.stories.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.stories.js +21 -1
- package/dist/src/presentation/web/components/common/feature-create-drawer/index.d.ts +1 -1
- package/dist/src/presentation/web/components/common/feature-create-drawer/index.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/feature-drawer/feature-drawer.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/feature-drawer/feature-drawer.js +14 -20
- package/dist/src/presentation/web/components/common/feature-drawer/feature-drawer.stories.d.ts +7 -1
- package/dist/src/presentation/web/components/common/feature-drawer/feature-drawer.stories.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/feature-drawer/feature-drawer.stories.js +37 -2
- package/dist/src/presentation/web/components/common/index.d.ts +1 -0
- package/dist/src/presentation/web/components/common/index.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/index.js +1 -0
- package/dist/src/presentation/web/components/common/merge-review/merge-review.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/merge-review/merge-review.js +2 -2
- package/dist/src/presentation/web/components/common/merge-review/merge-review.stories.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/merge-review/merge-review.stories.js +1 -2
- package/dist/src/presentation/web/components/common/prd-questionnaire/prd-questionnaire.js +1 -1
- package/dist/src/presentation/web/components/common/prd-questionnaire/prd-questionnaire.stories.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/prd-questionnaire/prd-questionnaire.stories.js +1 -2
- package/dist/src/presentation/web/components/common/repository-node/repository-drawer.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/repository-node/repository-drawer.js +5 -1
- package/dist/src/presentation/web/components/common/repository-node/repository-drawer.stories.d.ts +2 -0
- package/dist/src/presentation/web/components/common/repository-node/repository-drawer.stories.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/repository-node/repository-drawer.stories.js +13 -2
- package/dist/src/presentation/web/components/common/review-drawer-shell/review-drawer-shell.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/review-drawer-shell/review-drawer-shell.js +5 -2
- package/dist/src/presentation/web/components/common/review-drawer-shell/review-drawer-shell.stories.js +1 -1
- package/dist/src/presentation/web/components/common/tech-decisions-review/tech-decisions-review.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/tech-decisions-review/tech-decisions-review.js +1 -1
- package/dist/src/presentation/web/components/common/tech-decisions-review/tech-decisions-review.stories.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/tech-decisions-review/tech-decisions-review.stories.js +1 -2
- package/dist/src/presentation/web/components/features/control-center/control-center-inner.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/control-center/control-center-inner.js +20 -215
- package/dist/src/presentation/web/components/features/control-center/use-control-center-state.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/control-center/use-control-center-state.js +2 -1
- package/dist/src/presentation/web/components/features/features-canvas/features-canvas.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/features-canvas/features-canvas.js +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/web/.next/BUILD_ID +1 -1
- package/web/.next/build-manifest.json +5 -5
- package/web/.next/cache/.previewinfo +1 -1
- package/web/.next/cache/.rscinfo +1 -1
- package/web/.next/cache/.tsbuildinfo +1 -1
- package/web/.next/cache/config.json +3 -3
- package/web/.next/fallback-build-manifest.json +2 -2
- package/web/.next/prerender-manifest.json +3 -3
- package/web/.next/required-server-files.js +1 -1
- package/web/.next/required-server-files.json +1 -1
- package/web/.next/server/app/_global-error/page/build-manifest.json +3 -3
- package/web/.next/server/app/_global-error.html +2 -2
- package/web/.next/server/app/_global-error.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/web/.next/server/app/_not-found/page/build-manifest.json +3 -3
- package/web/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
- package/web/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/page/build-manifest.json +3 -3
- package/web/.next/server/app/page/server-reference-manifest.json +88 -88
- package/web/.next/server/app/page.js +1 -1
- package/web/.next/server/app/page.js.nft.json +1 -1
- package/web/.next/server/app/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/skills/page/build-manifest.json +3 -3
- package/web/.next/server/app/skills/page/server-reference-manifest.json +5 -5
- package/web/.next/server/app/skills/page.js.nft.json +1 -1
- package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/tools/page/build-manifest.json +3 -3
- package/web/.next/server/app/tools/page/server-reference-manifest.json +1 -1
- package/web/.next/server/app/tools/page.js.nft.json +1 -1
- package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/version/page/build-manifest.json +3 -3
- package/web/.next/server/app/version/page/server-reference-manifest.json +1 -1
- package/web/.next/server/app/version/page.js.nft.json +1 -1
- package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
- package/web/.next/server/chunks/ssr/403f9_next_dist_a53cb908._.js +3 -0
- package/web/.next/server/chunks/ssr/403f9_next_dist_a53cb908._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__08ba9bd3._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__08ba9bd3._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__249c74f6._.js +1 -1
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__f5830fa9._.js → [root-of-the-server]__2ffb27f1._.js} +2 -2
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__f5830fa9._.js.map → [root-of-the-server]__2ffb27f1._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__551fb7e1._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__551fb7e1._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__6b17a22d._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__6b17a22d._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__7f4180a1._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__7f4180a1._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__804c006d._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__804c006d._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__9add7c3a._.js +4 -4
- package/web/.next/server/chunks/ssr/[root-of-the-server]__9add7c3a._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__e41b5eec._.js +9 -0
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__f648005b._.js.map → [root-of-the-server]__e41b5eec._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__eaf6100f._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__eaf6100f._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_23c92688._.js +6 -0
- package/web/.next/server/chunks/ssr/_23c92688._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_28993370._.js +1 -1
- package/web/.next/server/chunks/ssr/_28993370._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_49bf495c._.js +3 -0
- package/web/.next/server/chunks/ssr/_49bf495c._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_690ea95f._.js +3 -0
- package/web/.next/server/chunks/ssr/{_2900ed94._.js.map → _690ea95f._.js.map} +1 -1
- package/web/.next/{standalone/src/presentation/web/.next/server/chunks/ssr/_c52cace8._.js → server/chunks/ssr/_725584e5._.js} +2 -2
- package/web/.next/server/chunks/ssr/_725584e5._.js.map +1 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js.map +1 -1
- package/web/.next/server/middleware-build-manifest.js +3 -3
- package/web/.next/server/pages/500.html +2 -2
- package/web/.next/server/server-reference-manifest.js +1 -1
- package/web/.next/server/server-reference-manifest.json +115 -115
- package/web/.next/standalone/src/presentation/web/.next/BUILD_ID +1 -1
- package/web/.next/standalone/src/presentation/web/.next/build-manifest.json +5 -5
- package/web/.next/standalone/src/presentation/web/.next/prerender-manifest.json +3 -3
- package/web/.next/standalone/src/presentation/web/.next/required-server-files.json +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error/page/build-manifest.json +3 -3
- package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.html +2 -2
- package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.rsc +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/_not-found/page/build-manifest.json +3 -3
- package/web/.next/standalone/src/presentation/web/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/page/build-manifest.json +3 -3
- package/web/.next/standalone/src/presentation/web/.next/server/app/page/server-reference-manifest.json +88 -88
- package/web/.next/standalone/src/presentation/web/.next/server/app/page.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/page.js.nft.json +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/skills/page/build-manifest.json +3 -3
- package/web/.next/standalone/src/presentation/web/.next/server/app/skills/page/server-reference-manifest.json +5 -5
- package/web/.next/standalone/src/presentation/web/.next/server/app/skills/page.js.nft.json +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/tools/page/build-manifest.json +3 -3
- package/web/.next/standalone/src/presentation/web/.next/server/app/tools/page/server-reference-manifest.json +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/tools/page.js.nft.json +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/version/page/build-manifest.json +3 -3
- package/web/.next/standalone/src/presentation/web/.next/server/app/version/page/server-reference-manifest.json +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/version/page.js.nft.json +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/403f9_next_dist_a53cb908._.js +3 -0
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__08ba9bd3._.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__249c74f6._.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/{[root-of-the-server]__f5830fa9._.js → [root-of-the-server]__2ffb27f1._.js} +2 -2
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__551fb7e1._.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__6b17a22d._.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__7f4180a1._.js +3 -0
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__804c006d._.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__9add7c3a._.js +4 -4
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__e41b5eec._.js +9 -0
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__eaf6100f._.js +3 -0
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_23c92688._.js +6 -0
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_28993370._.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_49bf495c._.js +3 -0
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_690ea95f._.js +3 -0
- package/web/.next/{server/chunks/ssr/_c52cace8._.js → standalone/src/presentation/web/.next/server/chunks/ssr/_725584e5._.js} +2 -2
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/middleware-build-manifest.js +3 -3
- package/web/.next/standalone/src/presentation/web/.next/server/pages/500.html +2 -2
- package/web/.next/standalone/src/presentation/web/.next/server/server-reference-manifest.js +1 -1
- package/web/.next/standalone/src/presentation/web/.next/server/server-reference-manifest.json +115 -115
- package/web/.next/standalone/src/presentation/web/components/common/base-drawer/base-drawer.stories.tsx +16 -2
- package/web/.next/standalone/src/presentation/web/components/common/base-drawer/base-drawer.tsx +35 -6
- package/web/.next/standalone/src/presentation/web/components/common/control-center-drawer/control-center-drawer.stories.tsx +285 -0
- package/web/.next/standalone/src/presentation/web/components/common/control-center-drawer/control-center-drawer.tsx +650 -0
- package/web/.next/standalone/src/presentation/web/components/common/control-center-drawer/drawer-view.ts +82 -0
- package/web/.next/standalone/src/presentation/web/components/common/control-center-drawer/index.ts +2 -0
- package/web/.next/standalone/src/presentation/web/components/common/drawer-action-bar/drawer-action-bar-config.ts +0 -4
- package/web/.next/standalone/src/presentation/web/components/common/drawer-action-bar/drawer-action-bar.stories.tsx +5 -14
- package/web/.next/standalone/src/presentation/web/components/common/drawer-action-bar/drawer-action-bar.tsx +58 -51
- package/web/.next/standalone/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.stories.tsx +42 -1
- package/web/.next/standalone/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.tsx +2 -16
- package/web/.next/standalone/src/presentation/web/components/common/feature-create-drawer/index.ts +1 -0
- package/web/.next/standalone/src/presentation/web/components/common/feature-drawer/feature-drawer.stories.tsx +55 -2
- package/web/.next/standalone/src/presentation/web/components/common/feature-drawer/feature-drawer.tsx +97 -106
- package/web/.next/standalone/src/presentation/web/components/common/index.ts +6 -0
- package/web/.next/standalone/src/presentation/web/components/common/merge-review/merge-review.stories.tsx +1 -2
- package/web/.next/standalone/src/presentation/web/components/common/merge-review/merge-review.tsx +1 -2
- package/web/.next/standalone/src/presentation/web/components/common/prd-questionnaire/prd-questionnaire.stories.tsx +1 -2
- package/web/.next/standalone/src/presentation/web/components/common/prd-questionnaire/prd-questionnaire.tsx +1 -1
- package/web/.next/standalone/src/presentation/web/components/common/repository-node/repository-drawer.stories.tsx +28 -2
- package/web/.next/standalone/src/presentation/web/components/common/repository-node/repository-drawer.tsx +7 -2
- package/web/.next/standalone/src/presentation/web/components/common/review-drawer-shell/review-drawer-shell.stories.tsx +1 -1
- package/web/.next/standalone/src/presentation/web/components/common/review-drawer-shell/review-drawer-shell.tsx +7 -6
- package/web/.next/standalone/src/presentation/web/components/common/tech-decisions-review/tech-decisions-review.stories.tsx +1 -2
- package/web/.next/standalone/src/presentation/web/components/common/tech-decisions-review/tech-decisions-review.tsx +1 -2
- package/web/.next/standalone/src/presentation/web/components/features/control-center/control-center-inner.tsx +30 -348
- package/web/.next/standalone/src/presentation/web/components/features/control-center/use-control-center-state.ts +2 -1
- package/web/.next/standalone/src/presentation/web/components/features/features-canvas/features-canvas.tsx +5 -1
- package/web/.next/standalone/src/presentation/web/server.js +1 -1
- package/web/.next/static/chunks/38ca82d1243738e3.js +1 -0
- package/web/.next/static/chunks/{35f41ba0a6d626d7.js → 491ae2bbae40857c.js} +1 -1
- package/web/.next/static/chunks/4b6cc9f65260f2bd.js +2 -0
- package/web/.next/static/chunks/67599679ca9ac863.js +1 -0
- package/web/.next/static/chunks/{e0073669b6bc24df.js → 6ece250c7d0ec203.js} +1 -1
- package/web/.next/static/chunks/a186bbb822ccb655.css +2 -0
- package/web/.next/static/chunks/a5c59952485e875e.js +1 -0
- package/web/.next/static/chunks/{8c60d1bd87239066.js → a9626385607910b3.js} +1 -1
- package/web/.next/static/chunks/c1c15470a7b058c8.js +1 -0
- package/web/.next/static/chunks/caa2e7e1618e2179.js +1 -0
- package/web/.next/static/chunks/ed799a306922f03e.js +10 -0
- package/web/.next/static/chunks/fb703cf73aba2eb8.js +1 -0
- package/web/.next/static/chunks/{turbopack-b6b5b4f015327a9a.js → turbopack-958ac34b879d0dce.js} +1 -1
- package/web/.next/trace +1 -1
- package/web/.next/trace-build +1 -1
- package/web/.next/server/chunks/ssr/403f9_next_dist_623b646a._.js +0 -3
- package/web/.next/server/chunks/ssr/403f9_next_dist_623b646a._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__6bb51fac._.js +0 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__6bb51fac._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__c1f0f2a8._.js +0 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__c1f0f2a8._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__f648005b._.js +0 -9
- package/web/.next/server/chunks/ssr/_2900ed94._.js +0 -3
- package/web/.next/server/chunks/ssr/_6978d868._.js +0 -3
- package/web/.next/server/chunks/ssr/_6978d868._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_85965278._.js +0 -6
- package/web/.next/server/chunks/ssr/_85965278._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_c52cace8._.js.map +0 -1
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/403f9_next_dist_623b646a._.js +0 -3
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__6bb51fac._.js +0 -3
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__c1f0f2a8._.js +0 -3
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__f648005b._.js +0 -9
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_2900ed94._.js +0 -3
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_6978d868._.js +0 -3
- package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_85965278._.js +0 -6
- package/web/.next/static/chunks/41a2adc09edfffaf.js +0 -1
- package/web/.next/static/chunks/5054c72b1c8f5912.js +0 -1
- package/web/.next/static/chunks/5f6d9f4647fc3093.js +0 -10
- package/web/.next/static/chunks/96f49affaceab206.css +0 -2
- package/web/.next/static/chunks/a6d1d774260fc927.js +0 -2
- package/web/.next/static/chunks/c0fdd832fc4ee8eb.js +0 -1
- package/web/.next/static/chunks/de70ba984363673f.js +0 -1
- package/web/.next/static/chunks/f5fb2f182ae9b015.js +0 -1
- /package/web/.next/static/{XGbKxw26cOCJQ-711YxBw → GdqfiIUVMj2wj_3lbrUqd}/_buildManifest.js +0 -0
- /package/web/.next/static/{XGbKxw26cOCJQ-711YxBw → GdqfiIUVMj2wj_3lbrUqd}/_clientMiddlewareManifest.json +0 -0
- /package/web/.next/static/{XGbKxw26cOCJQ-711YxBw → GdqfiIUVMj2wj_3lbrUqd}/_ssgManifest.js +0 -0
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import type { FeatureNodeData } from '@/components/common/feature-node';
|
|
2
|
+
import type { RepositoryNodeData } from '@/components/common/repository-node';
|
|
3
|
+
import type { ParentFeatureOption } from '@/components/common/feature-create-drawer/feature-create-drawer';
|
|
4
|
+
import type { WorkflowDefaults } from '@/app/actions/get-workflow-defaults';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Discriminated union representing every possible drawer state in the control center.
|
|
8
|
+
* Only one view can be active at a time.
|
|
9
|
+
*/
|
|
10
|
+
export type DrawerView =
|
|
11
|
+
/** Generic feature info (running, done, blocked, error, or unhandled action-required phases) */
|
|
12
|
+
| { type: 'feature'; node: FeatureNodeData }
|
|
13
|
+
/** requirements lifecycle + action-required → PRD questionnaire */
|
|
14
|
+
| { type: 'prd-review'; node: FeatureNodeData }
|
|
15
|
+
/** implementation lifecycle + action-required → tech decisions review */
|
|
16
|
+
| { type: 'tech-review'; node: FeatureNodeData }
|
|
17
|
+
/** review lifecycle + action-required|error → merge review */
|
|
18
|
+
| { type: 'merge-review'; node: FeatureNodeData }
|
|
19
|
+
/** Feature creation form */
|
|
20
|
+
| {
|
|
21
|
+
type: 'feature-create';
|
|
22
|
+
repositoryPath: string;
|
|
23
|
+
initialParentId?: string;
|
|
24
|
+
features: ParentFeatureOption[];
|
|
25
|
+
workflowDefaults?: WorkflowDefaults;
|
|
26
|
+
}
|
|
27
|
+
/** Repository node actions */
|
|
28
|
+
| { type: 'repository'; data: RepositoryNodeData };
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Derives the active DrawerView from control-center state.
|
|
32
|
+
* Priority: feature-create > selected-node (prd/tech/merge/feature) > repository
|
|
33
|
+
*/
|
|
34
|
+
export function computeDrawerView({
|
|
35
|
+
selectedNode,
|
|
36
|
+
isCreateDrawerOpen,
|
|
37
|
+
pendingRepositoryPath,
|
|
38
|
+
pendingParentFeatureId,
|
|
39
|
+
selectedRepoNode,
|
|
40
|
+
features,
|
|
41
|
+
workflowDefaults,
|
|
42
|
+
}: {
|
|
43
|
+
selectedNode: FeatureNodeData | null;
|
|
44
|
+
isCreateDrawerOpen: boolean;
|
|
45
|
+
pendingRepositoryPath: string;
|
|
46
|
+
pendingParentFeatureId: string | undefined;
|
|
47
|
+
selectedRepoNode: RepositoryNodeData | null;
|
|
48
|
+
features: ParentFeatureOption[];
|
|
49
|
+
workflowDefaults: WorkflowDefaults | undefined;
|
|
50
|
+
}): DrawerView | null {
|
|
51
|
+
if (isCreateDrawerOpen) {
|
|
52
|
+
return {
|
|
53
|
+
type: 'feature-create',
|
|
54
|
+
repositoryPath: pendingRepositoryPath,
|
|
55
|
+
initialParentId: pendingParentFeatureId,
|
|
56
|
+
features,
|
|
57
|
+
workflowDefaults,
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
if (selectedNode) {
|
|
62
|
+
if (selectedNode.lifecycle === 'requirements' && selectedNode.state === 'action-required') {
|
|
63
|
+
return { type: 'prd-review', node: selectedNode };
|
|
64
|
+
}
|
|
65
|
+
if (selectedNode.lifecycle === 'implementation' && selectedNode.state === 'action-required') {
|
|
66
|
+
return { type: 'tech-review', node: selectedNode };
|
|
67
|
+
}
|
|
68
|
+
if (
|
|
69
|
+
selectedNode.lifecycle === 'review' &&
|
|
70
|
+
(selectedNode.state === 'action-required' || selectedNode.state === 'error')
|
|
71
|
+
) {
|
|
72
|
+
return { type: 'merge-review', node: selectedNode };
|
|
73
|
+
}
|
|
74
|
+
return { type: 'feature', node: selectedNode };
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
if (selectedRepoNode) {
|
|
78
|
+
return { type: 'repository', data: selectedRepoNode };
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
return null;
|
|
82
|
+
}
|
|
@@ -11,14 +11,10 @@ export interface DrawerActionBarProps {
|
|
|
11
11
|
approveIcon?: ReactNode;
|
|
12
12
|
/** Placeholder for the inline revision input */
|
|
13
13
|
revisionPlaceholder?: string;
|
|
14
|
-
/** Title for the reject feedback dialog */
|
|
15
|
-
rejectDialogTitle?: string;
|
|
16
14
|
/** Whether an approval/processing operation is in flight */
|
|
17
15
|
isProcessing?: boolean;
|
|
18
16
|
/** Whether a reject operation is in flight */
|
|
19
17
|
isRejecting?: boolean;
|
|
20
|
-
/** Whether to show the reject button (defaults to true when onReject is provided) */
|
|
21
|
-
showRejectButton?: boolean;
|
|
22
18
|
/** Content rendered between revision input and action buttons (e.g. progress bar) */
|
|
23
19
|
children?: ReactNode;
|
|
24
20
|
}
|
|
@@ -4,7 +4,7 @@ import { Check } from 'lucide-react';
|
|
|
4
4
|
import { DrawerActionBar } from './drawer-action-bar';
|
|
5
5
|
|
|
6
6
|
const meta: Meta<typeof DrawerActionBar> = {
|
|
7
|
-
title: '
|
|
7
|
+
title: 'Drawers/Base/DrawerActionBar',
|
|
8
8
|
component: DrawerActionBar,
|
|
9
9
|
tags: ['autodocs'],
|
|
10
10
|
parameters: {
|
|
@@ -37,7 +37,7 @@ export const WithIcon: Story = {
|
|
|
37
37
|
},
|
|
38
38
|
};
|
|
39
39
|
|
|
40
|
-
/** With
|
|
40
|
+
/** With revision input — single line: chat input, send, approve. */
|
|
41
41
|
export const WithReject: Story = {
|
|
42
42
|
args: {
|
|
43
43
|
onReject: fn().mockName('onReject'),
|
|
@@ -45,7 +45,7 @@ export const WithReject: Story = {
|
|
|
45
45
|
},
|
|
46
46
|
};
|
|
47
47
|
|
|
48
|
-
/** Processing state —
|
|
48
|
+
/** Processing state — all controls disabled. */
|
|
49
49
|
export const Processing: Story = {
|
|
50
50
|
args: {
|
|
51
51
|
onReject: fn().mockName('onReject'),
|
|
@@ -54,7 +54,7 @@ export const Processing: Story = {
|
|
|
54
54
|
},
|
|
55
55
|
};
|
|
56
56
|
|
|
57
|
-
/** Rejecting state —
|
|
57
|
+
/** Rejecting state — all controls disabled. */
|
|
58
58
|
export const Rejecting: Story = {
|
|
59
59
|
args: {
|
|
60
60
|
onReject: fn().mockName('onReject'),
|
|
@@ -63,7 +63,7 @@ export const Rejecting: Story = {
|
|
|
63
63
|
},
|
|
64
64
|
};
|
|
65
65
|
|
|
66
|
-
/**
|
|
66
|
+
/** Custom revision placeholder. */
|
|
67
67
|
export const WithRevisionInput: Story = {
|
|
68
68
|
args: {
|
|
69
69
|
onReject: fn().mockName('onReject'),
|
|
@@ -71,12 +71,3 @@ export const WithRevisionInput: Story = {
|
|
|
71
71
|
revisionPlaceholder: 'Ask AI to revise the plan...',
|
|
72
72
|
},
|
|
73
73
|
};
|
|
74
|
-
|
|
75
|
-
/** Custom reject dialog title. */
|
|
76
|
-
export const CustomRejectTitle: Story = {
|
|
77
|
-
args: {
|
|
78
|
-
onReject: fn().mockName('onReject'),
|
|
79
|
-
approveLabel: 'Approve Plan',
|
|
80
|
-
rejectDialogTitle: 'Reject Plan',
|
|
81
|
-
},
|
|
82
|
-
};
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
3
|
import { useState } from 'react';
|
|
4
|
-
import {
|
|
4
|
+
import { Send } from 'lucide-react';
|
|
5
5
|
import { Button } from '@/components/ui/button';
|
|
6
|
-
import {
|
|
7
|
-
import { DrawerRevisionInput } from '@/components/common/drawer-revision-input';
|
|
6
|
+
import { Input } from '@/components/ui/input';
|
|
8
7
|
import { useSoundAction } from '@/hooks/use-sound-action';
|
|
9
8
|
import type { DrawerActionBarProps } from './drawer-action-bar-config';
|
|
10
9
|
|
|
@@ -14,65 +13,73 @@ export function DrawerActionBar({
|
|
|
14
13
|
approveLabel,
|
|
15
14
|
approveIcon,
|
|
16
15
|
revisionPlaceholder,
|
|
17
|
-
rejectDialogTitle,
|
|
18
16
|
isProcessing = false,
|
|
19
17
|
isRejecting = false,
|
|
20
|
-
showRejectButton = true,
|
|
21
18
|
children,
|
|
22
19
|
}: DrawerActionBarProps) {
|
|
23
|
-
const [
|
|
20
|
+
const [chatInput, setChatInput] = useState('');
|
|
24
21
|
const approveSound = useSoundAction('approve');
|
|
25
|
-
const rejectSound = useSoundAction('reject');
|
|
26
22
|
const disabled = isProcessing || isRejecting;
|
|
27
23
|
|
|
24
|
+
function handleRevisionSubmit(e: { preventDefault: () => void }) {
|
|
25
|
+
e.preventDefault();
|
|
26
|
+
const text = chatInput.trim();
|
|
27
|
+
if (!text || !onReject) return;
|
|
28
|
+
onReject(text);
|
|
29
|
+
setChatInput('');
|
|
30
|
+
}
|
|
31
|
+
|
|
28
32
|
return (
|
|
29
33
|
<div className="border-border shrink-0 border-t">
|
|
30
34
|
{children}
|
|
31
35
|
{onReject ? (
|
|
32
|
-
<
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
36
|
+
<form onSubmit={handleRevisionSubmit} className="flex items-center gap-2 p-4">
|
|
37
|
+
<Input
|
|
38
|
+
type="text"
|
|
39
|
+
placeholder={revisionPlaceholder ?? 'Ask AI to revise...'}
|
|
40
|
+
aria-label={revisionPlaceholder ?? 'Ask AI to revise...'}
|
|
41
|
+
disabled={disabled}
|
|
42
|
+
value={chatInput}
|
|
43
|
+
onChange={(e) => setChatInput(e.target.value)}
|
|
44
|
+
className="flex-1"
|
|
45
|
+
/>
|
|
46
|
+
<Button
|
|
47
|
+
type="submit"
|
|
48
|
+
variant="secondary"
|
|
49
|
+
size="icon"
|
|
50
|
+
aria-label="Send"
|
|
51
|
+
disabled={disabled}
|
|
52
|
+
>
|
|
53
|
+
<Send />
|
|
54
|
+
</Button>
|
|
55
|
+
<Button
|
|
56
|
+
type="button"
|
|
57
|
+
disabled={disabled}
|
|
58
|
+
onClick={() => {
|
|
59
|
+
approveSound.play();
|
|
60
|
+
onApprove();
|
|
61
|
+
}}
|
|
62
|
+
>
|
|
63
|
+
{approveIcon}
|
|
64
|
+
{approveLabel}
|
|
65
|
+
</Button>
|
|
66
|
+
</form>
|
|
67
|
+
) : (
|
|
68
|
+
<div className="flex items-center gap-2 px-4 pb-4">
|
|
69
|
+
<Button
|
|
70
|
+
type="button"
|
|
71
|
+
className="flex-1"
|
|
72
|
+
disabled={disabled}
|
|
73
|
+
onClick={() => {
|
|
74
|
+
approveSound.play();
|
|
75
|
+
onApprove();
|
|
76
|
+
}}
|
|
77
|
+
>
|
|
78
|
+
{approveIcon}
|
|
79
|
+
{approveLabel}
|
|
80
|
+
</Button>
|
|
81
|
+
</div>
|
|
82
|
+
)}
|
|
76
83
|
</div>
|
|
77
84
|
);
|
|
78
85
|
}
|
|
@@ -41,7 +41,7 @@ import { Button } from '@/components/ui/button';
|
|
|
41
41
|
* with full absolute paths, filenames, and sizes
|
|
42
42
|
*/
|
|
43
43
|
const meta: Meta<typeof FeatureCreateDrawer> = {
|
|
44
|
-
title: '
|
|
44
|
+
title: 'Drawers/Feature/FeatureCreateDrawer',
|
|
45
45
|
component: FeatureCreateDrawer,
|
|
46
46
|
tags: ['autodocs'],
|
|
47
47
|
parameters: {
|
|
@@ -309,6 +309,47 @@ export const WithWorkflowDefaults: Story = {
|
|
|
309
309
|
* In Storybook, the native picker won't work (no backend), but submitted data
|
|
310
310
|
* would show the paths if files were attached programmatically.
|
|
311
311
|
*/
|
|
312
|
+
/* ---------------------------------------------------------------------------
|
|
313
|
+
* In-drawer story — full page context, starts open
|
|
314
|
+
* ------------------------------------------------------------------------- */
|
|
315
|
+
|
|
316
|
+
function CreateDrawerShellTemplate() {
|
|
317
|
+
const [open, setOpen] = useState(true);
|
|
318
|
+
|
|
319
|
+
return (
|
|
320
|
+
<div style={{ height: '100vh', background: '#f8fafc', padding: '2rem' }}>
|
|
321
|
+
<button
|
|
322
|
+
type="button"
|
|
323
|
+
onClick={() => setOpen(true)}
|
|
324
|
+
style={{ padding: '8px 16px', border: '1px solid #ccc', borderRadius: '6px' }}
|
|
325
|
+
>
|
|
326
|
+
Open Drawer
|
|
327
|
+
</button>
|
|
328
|
+
<FeatureCreateDrawer
|
|
329
|
+
open={open}
|
|
330
|
+
onClose={() => {
|
|
331
|
+
setOpen(false);
|
|
332
|
+
logClose();
|
|
333
|
+
}}
|
|
334
|
+
onSubmit={(data) => {
|
|
335
|
+
logSubmit(data);
|
|
336
|
+
setOpen(false);
|
|
337
|
+
}}
|
|
338
|
+
repositoryPath="/Users/dev/my-repo"
|
|
339
|
+
/>
|
|
340
|
+
</div>
|
|
341
|
+
);
|
|
342
|
+
}
|
|
343
|
+
|
|
344
|
+
/** Feature create drawer rendered inside a full-page context — starts open. */
|
|
345
|
+
export const InDrawer: Story = {
|
|
346
|
+
render: () => <CreateDrawerShellTemplate />,
|
|
347
|
+
};
|
|
348
|
+
|
|
349
|
+
/* ---------------------------------------------------------------------------
|
|
350
|
+
* Interactive story — full paths shown in submitted data panel
|
|
351
|
+
* ------------------------------------------------------------------------- */
|
|
352
|
+
|
|
312
353
|
export const Interactive: Story = {
|
|
313
354
|
render: function InteractiveRender() {
|
|
314
355
|
const [open, setOpen] = useState(false);
|
|
@@ -22,7 +22,6 @@ import { Textarea } from '@/components/ui/textarea';
|
|
|
22
22
|
import { Label } from '@/components/ui/label';
|
|
23
23
|
import { CheckboxGroup } from '@/components/ui/checkbox-group';
|
|
24
24
|
import { CheckboxGroupItem } from '@/components/ui/checkbox-group-item';
|
|
25
|
-
import { Separator } from '@/components/ui/separator';
|
|
26
25
|
import { Badge } from '@/components/ui/badge';
|
|
27
26
|
import { Popover, PopoverContent, PopoverTrigger } from '@/components/ui/popover';
|
|
28
27
|
import type { FileAttachment } from '@shepai/core/infrastructure/services/file-dialog.service';
|
|
@@ -87,8 +86,6 @@ export function FeatureCreateDrawer({
|
|
|
87
86
|
features,
|
|
88
87
|
initialParentId,
|
|
89
88
|
}: FeatureCreateDrawerProps) {
|
|
90
|
-
const drawerOpenSound = useSoundAction('drawer-open');
|
|
91
|
-
const drawerCloseSound = useSoundAction('drawer-close');
|
|
92
89
|
const createSound = useSoundAction('create');
|
|
93
90
|
const defaultGates = workflowDefaults?.approvalGates ?? EMPTY_GATES;
|
|
94
91
|
const defaultPush = workflowDefaults?.push ?? false;
|
|
@@ -102,14 +99,6 @@ export function FeatureCreateDrawer({
|
|
|
102
99
|
const [openPr, setOpenPr] = useState(defaultOpenPr);
|
|
103
100
|
const [parentId, setParentId] = useState<string | undefined>(undefined);
|
|
104
101
|
|
|
105
|
-
// Play drawer-open sound when the drawer opens
|
|
106
|
-
const playDrawerOpen = drawerOpenSound.play;
|
|
107
|
-
useEffect(() => {
|
|
108
|
-
if (open) {
|
|
109
|
-
playDrawerOpen();
|
|
110
|
-
}
|
|
111
|
-
}, [open, playDrawerOpen]);
|
|
112
|
-
|
|
113
102
|
// Sync state when workflowDefaults load asynchronously
|
|
114
103
|
useEffect(() => {
|
|
115
104
|
if (workflowDefaults) {
|
|
@@ -137,10 +126,9 @@ export function FeatureCreateDrawer({
|
|
|
137
126
|
}, [defaultGates, defaultPush, defaultOpenPr]);
|
|
138
127
|
|
|
139
128
|
const handleClose = useCallback(() => {
|
|
140
|
-
drawerCloseSound.play();
|
|
141
129
|
resetForm();
|
|
142
130
|
onClose();
|
|
143
|
-
}, [onClose, resetForm
|
|
131
|
+
}, [onClose, resetForm]);
|
|
144
132
|
|
|
145
133
|
const handleSubmit = useCallback(
|
|
146
134
|
(e: React.FormEvent) => {
|
|
@@ -227,10 +215,8 @@ export function FeatureCreateDrawer({
|
|
|
227
215
|
</div>
|
|
228
216
|
}
|
|
229
217
|
>
|
|
230
|
-
<Separator />
|
|
231
|
-
|
|
232
218
|
{/* Form body */}
|
|
233
|
-
<div className="p-4">
|
|
219
|
+
<div className="overflow-y-auto p-4">
|
|
234
220
|
<form id="create-feature-form" onSubmit={handleSubmit} className="flex flex-col gap-4">
|
|
235
221
|
{/* Feature name */}
|
|
236
222
|
<div className="flex flex-col gap-1.5">
|
|
@@ -7,7 +7,7 @@ import type { FeatureLifecyclePhase, FeatureNodeState } from '@/components/commo
|
|
|
7
7
|
import { Button } from '@/components/ui/button';
|
|
8
8
|
|
|
9
9
|
const meta: Meta<typeof FeatureDrawer> = {
|
|
10
|
-
title: '
|
|
10
|
+
title: 'Drawers/Feature/FeatureDrawer',
|
|
11
11
|
component: FeatureDrawer,
|
|
12
12
|
tags: ['autodocs'],
|
|
13
13
|
parameters: {
|
|
@@ -91,6 +91,23 @@ const errorData: FeatureNodeData = {
|
|
|
91
91
|
branch: 'feat/email-service',
|
|
92
92
|
};
|
|
93
93
|
|
|
94
|
+
const reviewInProgressData: FeatureNodeData = {
|
|
95
|
+
name: 'Auth Module',
|
|
96
|
+
description: 'Implement OAuth2 authentication flow',
|
|
97
|
+
featureId: '#f6',
|
|
98
|
+
lifecycle: 'review',
|
|
99
|
+
state: 'running',
|
|
100
|
+
progress: 0,
|
|
101
|
+
agentType: 'claude-code',
|
|
102
|
+
repositoryPath: '/home/user/my-repo',
|
|
103
|
+
branch: 'feat/auth-module',
|
|
104
|
+
pr: {
|
|
105
|
+
url: 'https://github.com/org/repo/pull/17',
|
|
106
|
+
number: 17,
|
|
107
|
+
status: PrStatus.Open,
|
|
108
|
+
},
|
|
109
|
+
};
|
|
110
|
+
|
|
94
111
|
/* ---------------------------------------------------------------------------
|
|
95
112
|
* Trigger wrapper — starts closed, click to open
|
|
96
113
|
* ------------------------------------------------------------------------- */
|
|
@@ -112,6 +129,11 @@ function DrawerTrigger({ data, label }: { data: FeatureNodeData; label: string }
|
|
|
112
129
|
* Per-state stories
|
|
113
130
|
* ------------------------------------------------------------------------- */
|
|
114
131
|
|
|
132
|
+
/** Feature drawer rendered inside a full-page context — starts open. Primary story. */
|
|
133
|
+
export const Default: Story = {
|
|
134
|
+
render: () => <FeatureDrawerShellTemplate data={runningData} />,
|
|
135
|
+
};
|
|
136
|
+
|
|
115
137
|
export const Running: Story = {
|
|
116
138
|
render: () => <DrawerTrigger data={runningData} label="Open Running" />,
|
|
117
139
|
};
|
|
@@ -128,6 +150,11 @@ export const Blocked: Story = {
|
|
|
128
150
|
render: () => <DrawerTrigger data={blockedData} label="Open Blocked" />,
|
|
129
151
|
};
|
|
130
152
|
|
|
153
|
+
/** Review lifecycle + running state — matches the look/feel of review pending-action drawers. */
|
|
154
|
+
export const ReviewInProgress: Story = {
|
|
155
|
+
render: () => <DrawerTrigger data={reviewInProgressData} label="Open Review In Progress" />,
|
|
156
|
+
};
|
|
157
|
+
|
|
131
158
|
export const Error: Story = {
|
|
132
159
|
render: () => <DrawerTrigger data={errorData} label="Open Error" />,
|
|
133
160
|
};
|
|
@@ -340,7 +367,7 @@ function DrawerTriggerWithDelete({
|
|
|
340
367
|
);
|
|
341
368
|
}
|
|
342
369
|
|
|
343
|
-
/** FeatureDrawer with a delete button in the
|
|
370
|
+
/** FeatureDrawer with a delete icon button in the header. */
|
|
344
371
|
export const WithDeleteButton: Story = {
|
|
345
372
|
render: () => <DrawerTriggerWithDelete data={doneData} label="Open With Delete" />,
|
|
346
373
|
};
|
|
@@ -406,3 +433,29 @@ export const PrStatusOpen: Story = {
|
|
|
406
433
|
export const PrStatusMerged: Story = {
|
|
407
434
|
render: () => <DrawerTrigger data={doneWithPrData} label="Open PR Status: Merged" />,
|
|
408
435
|
};
|
|
436
|
+
|
|
437
|
+
/* ---------------------------------------------------------------------------
|
|
438
|
+
* In-drawer story — full page context, starts open
|
|
439
|
+
* ------------------------------------------------------------------------- */
|
|
440
|
+
|
|
441
|
+
function FeatureDrawerShellTemplate({ data }: { data: FeatureNodeData }) {
|
|
442
|
+
const [selected, setSelected] = useState<FeatureNodeData | null>(data);
|
|
443
|
+
|
|
444
|
+
return (
|
|
445
|
+
<div style={{ height: '100vh', background: '#f8fafc', padding: '2rem' }}>
|
|
446
|
+
<button
|
|
447
|
+
type="button"
|
|
448
|
+
onClick={() => setSelected(data)}
|
|
449
|
+
style={{ padding: '8px 16px', border: '1px solid #ccc', borderRadius: '6px' }}
|
|
450
|
+
>
|
|
451
|
+
Open Drawer
|
|
452
|
+
</button>
|
|
453
|
+
<FeatureDrawer selectedNode={selected} onClose={() => setSelected(null)} />
|
|
454
|
+
</div>
|
|
455
|
+
);
|
|
456
|
+
}
|
|
457
|
+
|
|
458
|
+
/** Feature drawer rendered inside a full-page context — starts open. */
|
|
459
|
+
export const InDrawer: Story = {
|
|
460
|
+
render: () => <FeatureDrawerShellTemplate data={runningData} />,
|
|
461
|
+
};
|