@shepai/cli 1.11.0 → 1.13.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 (230) hide show
  1. package/README.md +1 -0
  2. package/dist/src/presentation/web/app/layout.d.ts.map +1 -1
  3. package/dist/src/presentation/web/app/layout.js +2 -1
  4. package/dist/src/presentation/web/app/page.js +1 -1
  5. package/dist/src/presentation/web/app/version/page.js +1 -1
  6. package/dist/src/presentation/web/components/common/empty-state/empty-state.d.ts +9 -0
  7. package/dist/src/presentation/web/components/common/empty-state/empty-state.d.ts.map +1 -0
  8. package/dist/src/presentation/web/components/common/empty-state/empty-state.js +5 -0
  9. package/dist/src/presentation/web/components/common/empty-state/empty-state.stories.d.ts +11 -0
  10. package/dist/src/presentation/web/components/common/empty-state/empty-state.stories.d.ts.map +1 -0
  11. package/dist/src/presentation/web/components/common/empty-state/empty-state.stories.js +45 -0
  12. package/dist/src/presentation/web/components/common/empty-state/index.d.ts +2 -0
  13. package/dist/src/presentation/web/components/common/empty-state/index.d.ts.map +1 -0
  14. package/dist/src/presentation/web/components/common/empty-state/index.js +1 -0
  15. package/dist/src/presentation/web/components/common/loading-skeleton/index.d.ts +2 -0
  16. package/dist/src/presentation/web/components/common/loading-skeleton/index.d.ts.map +1 -0
  17. package/dist/src/presentation/web/components/common/loading-skeleton/index.js +1 -0
  18. package/dist/src/presentation/web/components/common/loading-skeleton/loading-skeleton.d.ts +14 -0
  19. package/dist/src/presentation/web/components/common/loading-skeleton/loading-skeleton.d.ts.map +1 -0
  20. package/dist/src/presentation/web/components/common/loading-skeleton/loading-skeleton.js +13 -0
  21. package/dist/src/presentation/web/components/common/loading-skeleton/loading-skeleton.stories.d.ts +11 -0
  22. package/dist/src/presentation/web/components/common/loading-skeleton/loading-skeleton.stories.d.ts.map +1 -0
  23. package/dist/src/presentation/web/components/common/loading-skeleton/loading-skeleton.stories.js +48 -0
  24. package/dist/src/presentation/web/components/common/page-header/index.d.ts +2 -0
  25. package/dist/src/presentation/web/components/common/page-header/index.d.ts.map +1 -0
  26. package/dist/src/presentation/web/components/common/page-header/index.js +1 -0
  27. package/dist/src/presentation/web/components/common/page-header/page-header.d.ts +8 -0
  28. package/dist/src/presentation/web/components/common/page-header/page-header.d.ts.map +1 -0
  29. package/dist/src/presentation/web/components/common/page-header/page-header.js +5 -0
  30. package/dist/src/presentation/web/components/common/page-header/page-header.stories.d.ts +25 -0
  31. package/dist/src/presentation/web/components/common/page-header/page-header.stories.d.ts.map +1 -0
  32. package/dist/src/presentation/web/components/common/page-header/page-header.stories.js +46 -0
  33. package/dist/src/presentation/web/components/common/theme-toggle/index.d.ts.map +1 -0
  34. package/dist/src/presentation/web/components/common/theme-toggle/theme-toggle.d.ts.map +1 -0
  35. package/dist/src/presentation/web/components/common/theme-toggle/theme-toggle.stories.d.ts.map +1 -0
  36. package/dist/src/presentation/web/components/{features → common}/theme-toggle/theme-toggle.stories.js +1 -1
  37. package/dist/src/presentation/web/{app → components/features}/version/version-page-client.d.ts +1 -1
  38. package/dist/src/presentation/web/components/features/version/version-page-client.d.ts.map +1 -0
  39. package/dist/src/presentation/web/components/features/version/version-page-client.js +13 -0
  40. package/dist/src/presentation/web/components/layouts/app-shell/app-shell.d.ts +7 -0
  41. package/dist/src/presentation/web/components/layouts/app-shell/app-shell.d.ts.map +1 -0
  42. package/dist/src/presentation/web/components/layouts/app-shell/app-shell.js +13 -0
  43. package/dist/src/presentation/web/components/layouts/app-shell/index.d.ts +2 -0
  44. package/dist/src/presentation/web/components/layouts/app-shell/index.d.ts.map +1 -0
  45. package/dist/src/presentation/web/components/layouts/app-shell/index.js +1 -0
  46. package/dist/src/presentation/web/components/layouts/dashboard-layout/dashboard-layout.d.ts +13 -0
  47. package/dist/src/presentation/web/components/layouts/dashboard-layout/dashboard-layout.d.ts.map +1 -0
  48. package/dist/src/presentation/web/components/layouts/dashboard-layout/dashboard-layout.js +7 -0
  49. package/dist/src/presentation/web/components/layouts/dashboard-layout/dashboard-layout.stories.d.ts +9 -0
  50. package/dist/src/presentation/web/components/layouts/dashboard-layout/dashboard-layout.stories.d.ts.map +1 -0
  51. package/dist/src/presentation/web/components/layouts/dashboard-layout/dashboard-layout.stories.js +41 -0
  52. package/dist/src/presentation/web/components/layouts/dashboard-layout/index.d.ts +2 -0
  53. package/dist/src/presentation/web/components/layouts/dashboard-layout/index.d.ts.map +1 -0
  54. package/dist/src/presentation/web/components/layouts/dashboard-layout/index.js +1 -0
  55. package/dist/src/presentation/web/components/layouts/header/header.d.ts +10 -0
  56. package/dist/src/presentation/web/components/layouts/header/header.d.ts.map +1 -0
  57. package/dist/src/presentation/web/components/layouts/header/header.js +5 -0
  58. package/dist/src/presentation/web/components/layouts/header/header.stories.d.ts +10 -0
  59. package/dist/src/presentation/web/components/layouts/header/header.stories.d.ts.map +1 -0
  60. package/dist/src/presentation/web/components/layouts/header/header.stories.js +35 -0
  61. package/dist/src/presentation/web/components/layouts/header/index.d.ts +2 -0
  62. package/dist/src/presentation/web/components/layouts/header/index.d.ts.map +1 -0
  63. package/dist/src/presentation/web/components/layouts/header/index.js +1 -0
  64. package/dist/src/presentation/web/components/layouts/sidebar/index.d.ts +3 -0
  65. package/dist/src/presentation/web/components/layouts/sidebar/index.d.ts.map +1 -0
  66. package/dist/src/presentation/web/components/layouts/sidebar/index.js +1 -0
  67. package/dist/src/presentation/web/components/layouts/sidebar/sidebar.d.ts +14 -0
  68. package/dist/src/presentation/web/components/layouts/sidebar/sidebar.d.ts.map +1 -0
  69. package/dist/src/presentation/web/components/layouts/sidebar/sidebar.js +10 -0
  70. package/dist/src/presentation/web/components/layouts/sidebar/sidebar.stories.d.ts +10 -0
  71. package/dist/src/presentation/web/components/layouts/sidebar/sidebar.stories.d.ts.map +1 -0
  72. package/dist/src/presentation/web/components/layouts/sidebar/sidebar.stories.js +44 -0
  73. package/dist/src/presentation/web/components/ui/accordion.stories.js +1 -1
  74. package/dist/src/presentation/web/components/ui/alert.stories.js +1 -1
  75. package/dist/src/presentation/web/components/ui/badge.stories.js +1 -1
  76. package/dist/src/presentation/web/components/ui/button.stories.js +1 -1
  77. package/dist/src/presentation/web/components/ui/card.stories.js +1 -1
  78. package/dist/src/presentation/web/components/ui/dialog.stories.js +1 -1
  79. package/dist/src/presentation/web/components/ui/input.stories.js +1 -1
  80. package/dist/src/presentation/web/components/ui/label.stories.js +1 -1
  81. package/dist/src/presentation/web/components/ui/popover.stories.js +1 -1
  82. package/dist/src/presentation/web/components/ui/select.stories.js +1 -1
  83. package/dist/src/presentation/web/components/ui/sonner.stories.js +1 -1
  84. package/dist/src/presentation/web/components/ui/tabs.stories.js +1 -1
  85. package/dist/tsconfig.build.tsbuildinfo +1 -1
  86. package/package.json +4 -1
  87. package/web/.next/BUILD_ID +1 -1
  88. package/web/.next/build-manifest.json +6 -6
  89. package/web/.next/cache/.previewinfo +1 -1
  90. package/web/.next/cache/.rscinfo +1 -1
  91. package/web/.next/cache/.tsbuildinfo +1 -1
  92. package/web/.next/cache/config.json +3 -3
  93. package/web/.next/fallback-build-manifest.json +2 -2
  94. package/web/.next/next-server.js.nft.json +1 -1
  95. package/web/.next/prerender-manifest.json +3 -3
  96. package/web/.next/required-server-files.js +1 -1
  97. package/web/.next/required-server-files.json +1 -1
  98. package/web/.next/server/app/_global-error/page/build-manifest.json +4 -4
  99. package/web/.next/server/app/_global-error/page.js +1 -1
  100. package/web/.next/server/app/_global-error/page.js.nft.json +1 -1
  101. package/web/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  102. package/web/.next/server/app/_global-error.html +2 -2
  103. package/web/.next/server/app/_global-error.rsc +1 -1
  104. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  105. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  106. package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  107. package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  108. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  109. package/web/.next/server/app/_not-found/page/build-manifest.json +4 -4
  110. package/web/.next/server/app/_not-found/page.js +2 -2
  111. package/web/.next/server/app/_not-found/page.js.nft.json +1 -1
  112. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  113. package/web/.next/server/app/_not-found.html +2 -2
  114. package/web/.next/server/app/_not-found.rsc +13 -12
  115. package/web/.next/server/app/_not-found.segments/_full.segment.rsc +13 -12
  116. package/web/.next/server/app/_not-found.segments/_head.segment.rsc +3 -3
  117. package/web/.next/server/app/_not-found.segments/_index.segment.rsc +5 -4
  118. package/web/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
  119. package/web/.next/server/app/_not-found.segments/_not-found.segment.rsc +3 -3
  120. package/web/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  121. package/web/.next/server/app/index.html +2 -2
  122. package/web/.next/server/app/index.rsc +14 -13
  123. package/web/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  124. package/web/.next/server/app/index.segments/_full.segment.rsc +14 -13
  125. package/web/.next/server/app/index.segments/_head.segment.rsc +1 -1
  126. package/web/.next/server/app/index.segments/_index.segment.rsc +5 -4
  127. package/web/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  128. package/web/.next/server/app/page/build-manifest.json +4 -4
  129. package/web/.next/server/app/page.js +2 -2
  130. package/web/.next/server/app/page.js.nft.json +1 -1
  131. package/web/.next/server/app/page_client-reference-manifest.js +1 -1
  132. package/web/.next/server/app/version/page/build-manifest.json +4 -4
  133. package/web/.next/server/app/version/page.js +3 -3
  134. package/web/.next/server/app/version/page.js.nft.json +1 -1
  135. package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  136. package/web/.next/server/app/version.html +2 -2
  137. package/web/.next/server/app/version.rsc +14 -13
  138. package/web/.next/server/app/version.segments/_full.segment.rsc +14 -13
  139. package/web/.next/server/app/version.segments/_head.segment.rsc +1 -1
  140. package/web/.next/server/app/version.segments/_index.segment.rsc +5 -4
  141. package/web/.next/server/app/version.segments/_tree.segment.rsc +2 -2
  142. package/web/.next/server/app/version.segments/version/__PAGE__.segment.rsc +2 -2
  143. package/web/.next/server/app/version.segments/version.segment.rsc +1 -1
  144. package/web/.next/server/chunks/ssr/0d4d2_route-modules_app-page_vendored_ssr_react-server-dom-turbopack-client_105312e6.js +3 -0
  145. package/web/.next/server/chunks/ssr/0d4d2_route-modules_app-page_vendored_ssr_react-server-dom-turbopack-client_105312e6.js.map +1 -0
  146. package/web/.next/server/chunks/ssr/403f9_next_dist_e28a27cf._.js +3 -0
  147. package/web/.next/server/chunks/ssr/403f9_next_dist_e28a27cf._.js.map +1 -0
  148. package/web/.next/server/chunks/ssr/{403f9_next_dist_2ff794b1._.js → 403f9_next_dist_esm_ceb2fa1e._.js} +2 -2
  149. package/web/.next/server/chunks/ssr/403f9_next_dist_esm_ceb2fa1e._.js.map +1 -0
  150. package/web/.next/server/chunks/ssr/403f9_next_dist_server_route-modules_app-page_vendored_ssr_c0d9b5b7._.js +3 -0
  151. package/web/.next/server/chunks/ssr/403f9_next_dist_server_route-modules_app-page_vendored_ssr_c0d9b5b7._.js.map +1 -0
  152. package/web/.next/server/chunks/ssr/[root-of-the-server]__06cb2b2c._.js +3 -0
  153. package/web/.next/server/chunks/ssr/[root-of-the-server]__06cb2b2c._.js.map +1 -0
  154. package/web/.next/server/chunks/ssr/[root-of-the-server]__0b188e6d._.js +3 -0
  155. package/web/.next/server/chunks/ssr/[root-of-the-server]__0b188e6d._.js.map +1 -0
  156. package/web/.next/server/chunks/ssr/[root-of-the-server]__36b65e3a._.js +3 -0
  157. package/web/.next/server/chunks/ssr/[root-of-the-server]__36b65e3a._.js.map +1 -0
  158. package/web/.next/server/chunks/ssr/{[root-of-the-server]__2328b471._.js → [root-of-the-server]__479da921._.js} +2 -2
  159. package/web/.next/server/chunks/ssr/[root-of-the-server]__479da921._.js.map +1 -0
  160. package/web/.next/server/chunks/ssr/{[root-of-the-server]__3acee9dd._.js → [root-of-the-server]__659cf841._.js} +2 -2
  161. package/web/.next/server/chunks/ssr/[root-of-the-server]__659cf841._.js.map +1 -0
  162. package/web/.next/server/chunks/ssr/_0f02ab66._.js +1 -1
  163. package/web/.next/server/chunks/ssr/_0f02ab66._.js.map +1 -1
  164. package/web/.next/server/chunks/ssr/_19be0743._.js +3 -0
  165. package/web/.next/server/chunks/ssr/_19be0743._.js.map +1 -0
  166. package/web/.next/server/chunks/ssr/_938886f2._.js +3 -0
  167. package/web/.next/server/chunks/ssr/_938886f2._.js.map +1 -0
  168. package/web/.next/server/chunks/ssr/_a0c04017._.js +6 -0
  169. package/web/.next/server/chunks/ssr/_a0c04017._.js.map +1 -0
  170. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_version_version-page-client_tsx_fe9db753._.js +3 -0
  171. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_version_version-page-client_tsx_fe9db753._.js.map +1 -0
  172. package/web/.next/server/chunks/ssr/src_presentation_web_372075f9._.js +13 -0
  173. package/web/.next/server/chunks/ssr/src_presentation_web_372075f9._.js.map +1 -0
  174. package/web/.next/server/middleware-build-manifest.js +4 -4
  175. package/web/.next/server/pages/404.html +2 -2
  176. package/web/.next/server/pages/500.html +2 -2
  177. package/web/.next/server/server-reference-manifest.js +1 -1
  178. package/web/.next/server/server-reference-manifest.json +1 -1
  179. package/web/.next/static/chunks/07f00e2e73d322d2.js +4 -0
  180. package/web/.next/static/chunks/26dea72d1da677f0.js +1 -0
  181. package/web/.next/static/chunks/4635405104cd73cd.js +1 -0
  182. package/web/.next/static/chunks/5353ec32bd6fc978.js +1 -0
  183. package/web/.next/static/chunks/68c8622bb8338459.js +2 -0
  184. package/web/.next/static/chunks/abd08b52c2746061.css +1 -0
  185. package/web/.next/static/chunks/b602eefc57a3dcc6.js +1 -0
  186. package/web/.next/static/chunks/cfef0d24c122a550.js +1 -0
  187. package/web/.next/static/chunks/{turbopack-76ba02c6b131eee4.js → turbopack-a05629c8cdde7f2b.js} +2 -2
  188. package/web/.next/trace +1 -1
  189. package/web/.next/trace-build +1 -1
  190. package/dist/src/presentation/web/app/version/version-page-client.d.ts.map +0 -1
  191. package/dist/src/presentation/web/app/version/version-page-client.js +0 -13
  192. package/dist/src/presentation/web/components/features/index.d.ts.map +0 -1
  193. package/dist/src/presentation/web/components/features/index.js +0 -2
  194. package/dist/src/presentation/web/components/features/theme-toggle/index.d.ts +0 -2
  195. package/dist/src/presentation/web/components/features/theme-toggle/index.d.ts.map +0 -1
  196. package/dist/src/presentation/web/components/features/theme-toggle/theme-toggle.d.ts.map +0 -1
  197. package/dist/src/presentation/web/components/features/theme-toggle/theme-toggle.stories.d.ts.map +0 -1
  198. package/dist/src/presentation/web/components/ui/index.d.ts +0 -13
  199. package/dist/src/presentation/web/components/ui/index.d.ts.map +0 -1
  200. package/dist/src/presentation/web/components/ui/index.js +0 -14
  201. package/web/.next/server/chunks/ssr/403f9_next_dist_2ff794b1._.js.map +0 -1
  202. package/web/.next/server/chunks/ssr/[root-of-the-server]__205a2636._.js +0 -3
  203. package/web/.next/server/chunks/ssr/[root-of-the-server]__205a2636._.js.map +0 -1
  204. package/web/.next/server/chunks/ssr/[root-of-the-server]__2328b471._.js.map +0 -1
  205. package/web/.next/server/chunks/ssr/[root-of-the-server]__3acee9dd._.js.map +0 -1
  206. package/web/.next/server/chunks/ssr/[root-of-the-server]__8297ff30._.js +0 -3
  207. package/web/.next/server/chunks/ssr/[root-of-the-server]__8297ff30._.js.map +0 -1
  208. package/web/.next/server/chunks/ssr/[root-of-the-server]__d6257aad._.js +0 -3
  209. package/web/.next/server/chunks/ssr/[root-of-the-server]__d6257aad._.js.map +0 -1
  210. package/web/.next/server/chunks/ssr/_ccea5183._.js +0 -3
  211. package/web/.next/server/chunks/ssr/_ccea5183._.js.map +0 -1
  212. package/web/.next/server/chunks/ssr/node_modules__pnpm_522e4103._.js +0 -3
  213. package/web/.next/server/chunks/ssr/node_modules__pnpm_522e4103._.js.map +0 -1
  214. package/web/.next/server/chunks/ssr/src_presentation_web_app_layout_tsx_aa3a06bd._.js +0 -13
  215. package/web/.next/server/chunks/ssr/src_presentation_web_app_layout_tsx_aa3a06bd._.js.map +0 -1
  216. package/web/.next/server/chunks/ssr/src_presentation_web_app_version_version-page-client_tsx_bd5ab0cf._.js +0 -3
  217. package/web/.next/server/chunks/ssr/src_presentation_web_app_version_version-page-client_tsx_bd5ab0cf._.js.map +0 -1
  218. package/web/.next/static/chunks/51816495a9eb288c.css +0 -1
  219. package/web/.next/static/chunks/70993ebedee7eab0.js +0 -2
  220. package/web/.next/static/chunks/71462f20e38a4262.js +0 -4
  221. package/web/.next/static/chunks/86484b9b4aa9f859.js +0 -1
  222. package/web/.next/static/chunks/8ec8e211eedf31cc.js +0 -1
  223. /package/dist/src/presentation/web/components/{features → common/theme-toggle}/index.d.ts +0 -0
  224. /package/dist/src/presentation/web/components/{features → common}/theme-toggle/index.js +0 -0
  225. /package/dist/src/presentation/web/components/{features → common}/theme-toggle/theme-toggle.d.ts +0 -0
  226. /package/dist/src/presentation/web/components/{features → common}/theme-toggle/theme-toggle.js +0 -0
  227. /package/dist/src/presentation/web/components/{features → common}/theme-toggle/theme-toggle.stories.d.ts +0 -0
  228. /package/web/.next/static/{iEA2_vSa-mo23-0YXN0hL → NPoGKKPZqjVtoh4TrElhz}/_buildManifest.js +0 -0
  229. /package/web/.next/static/{iEA2_vSa-mo23-0YXN0hL → NPoGKKPZqjVtoh4TrElhz}/_clientMiddlewareManifest.json +0 -0
  230. /package/web/.next/static/{iEA2_vSa-mo23-0YXN0hL → NPoGKKPZqjVtoh4TrElhz}/_ssgManifest.js +0 -0
package/README.md CHANGED
@@ -187,6 +187,7 @@ See [CI/CD Documentation](./docs/development/cicd.md) for details.
187
187
  | [Guides](./docs/guides/) | User guides and tutorials |
188
188
  | [Development](./docs/development/) | Contributing and development setup |
189
189
  | [API Reference](./docs/api/) | Interface and model documentation |
190
+ | [POC: Feature Flow](./docs/poc/) | Interactive feature lifecycle demo |
190
191
 
191
192
  ## Contributing
192
193
 
@@ -1 +1 @@
1
- {"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/web/app/layout.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,eAAe,CAAC;AAEvB,eAAO,MAAM,QAAQ,EAAE,QAItB,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,EACjC,QAAQ,GACT,EAAE,QAAQ,CAAC;IACV,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,CAAC,2CAuBD"}
1
+ {"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/web/app/layout.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,eAAe,CAAC;AAGvB,eAAO,MAAM,QAAQ,EAAE,QAItB,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,EACjC,QAAQ,GACT,EAAE,QAAQ,CAAC;IACV,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,CAAC,2CAyBD"}
@@ -1,5 +1,6 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import './globals.css';
3
+ import { AppShell } from '../components/layouts/app-shell';
3
4
  export const metadata = {
4
5
  title: 'Shep AI',
5
6
  description: 'Autonomous AI Native SDLC Platform - Automate the development cycle from idea to deploy',
@@ -17,5 +18,5 @@ export default function RootLayout({ children, }) {
17
18
  } catch (e) {}
18
19
  })();
19
20
  `,
20
- } }) }), _jsx("body", { className: "min-h-screen antialiased", children: children })] }));
21
+ } }) }), _jsx("body", { className: "min-h-screen antialiased", children: _jsx(AppShell, { children: children }) })] }));
21
22
  }
@@ -2,5 +2,5 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import Link from 'next/link';
3
3
  import { Button } from '../components/ui/button';
4
4
  export default function HomePage() {
5
- return (_jsx("main", { className: "flex min-h-screen flex-col items-center justify-center p-4", children: _jsxs("div", { className: "text-center", children: [_jsx("h1", { className: "text-4xl font-bold tracking-tight", children: "Shep AI" }), _jsx("p", { className: "text-muted-foreground mt-4 text-lg", children: "Autonomous AI Native SDLC Platform" }), _jsx("p", { className: "text-muted-foreground mt-2 text-sm", children: "Web UI Component Library" }), _jsx("div", { className: "mt-6", children: _jsx(Button, { asChild: true, variant: "outline", children: _jsx(Link, { href: "/version", children: "View Version" }) }) })] }) }));
5
+ return (_jsx("div", { className: "flex flex-col items-center justify-center p-4", children: _jsxs("div", { className: "text-center", children: [_jsx("h1", { className: "text-4xl font-bold tracking-tight", children: "Shep AI" }), _jsx("p", { className: "text-muted-foreground mt-4 text-lg", children: "Autonomous AI Native SDLC Platform" }), _jsx("p", { className: "text-muted-foreground mt-2 text-sm", children: "Web UI Component Library" }), _jsx("div", { className: "mt-6", children: _jsx(Button, { asChild: true, variant: "outline", children: _jsx(Link, { href: "/version", children: "View Version" }) }) })] }) }));
6
6
  }
@@ -1,6 +1,6 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { getVersionInfo, getSystemInfo } from '../../lib/version';
3
- import VersionPageClient from './version-page-client';
3
+ import VersionPageClient from '../../components/features/version/version-page-client';
4
4
  export default function VersionPage() {
5
5
  const versionInfo = getVersionInfo();
6
6
  const systemInfo = getSystemInfo();
@@ -0,0 +1,9 @@
1
+ import type { ReactNode, HTMLAttributes } from 'react';
2
+ export interface EmptyStateProps extends HTMLAttributes<HTMLDivElement> {
3
+ icon?: ReactNode;
4
+ title: string;
5
+ description?: string;
6
+ action?: ReactNode;
7
+ }
8
+ export declare function EmptyState({ icon, title, description, action, className, ...props }: EmptyStateProps): import("react/jsx-runtime").JSX.Element;
9
+ //# sourceMappingURL=empty-state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"empty-state.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/empty-state/empty-state.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAGvD,MAAM,WAAW,eAAgB,SAAQ,cAAc,CAAC,cAAc,CAAC;IACrE,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,SAAS,CAAC;CACpB;AAED,wBAAgB,UAAU,CAAC,EACzB,IAAI,EACJ,KAAK,EACL,WAAW,EACX,MAAM,EACN,SAAS,EACT,GAAG,KAAK,EACT,EAAE,eAAe,2CAYjB"}
@@ -0,0 +1,5 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { cn } from '../../../lib/utils';
3
+ export function EmptyState({ icon, title, description, action, className, ...props }) {
4
+ return (_jsxs("div", { className: cn('flex flex-col items-center gap-4 px-4 py-12 text-center', className), ...props, children: [icon && _jsx("div", { className: "text-muted-foreground", children: icon }), _jsx("h3", { className: "text-lg font-semibold", children: title }), description && _jsx("p", { className: "text-muted-foreground max-w-md text-sm", children: description }), action && _jsx("div", { className: "mt-2", children: action })] }));
5
+ }
@@ -0,0 +1,11 @@
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
+ import { EmptyState } from './empty-state';
3
+ declare const meta: Meta<typeof EmptyState>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof meta>;
6
+ export declare const Default: Story;
7
+ export declare const WithIcon: Story;
8
+ export declare const WithDescription: Story;
9
+ export declare const WithAction: Story;
10
+ export declare const FullExample: Story;
11
+ //# sourceMappingURL=empty-state.stories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"empty-state.stories.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/empty-state/empty-state.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAG3C,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,UAAU,CAOjC,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,OAAO,EAAE,KAIrB,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,KAKtB,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,KAK7B,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,KAWxB,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,KAazB,CAAC"}
@@ -0,0 +1,45 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Inbox, FileQuestion, Plus } from 'lucide-react';
3
+ import { EmptyState } from './empty-state';
4
+ import { Button } from '../../ui/button';
5
+ const meta = {
6
+ title: 'Composed/EmptyState',
7
+ component: EmptyState,
8
+ parameters: {
9
+ layout: 'centered',
10
+ },
11
+ tags: ['autodocs'],
12
+ };
13
+ export default meta;
14
+ export const Default = {
15
+ args: {
16
+ title: 'No items found',
17
+ },
18
+ };
19
+ export const WithIcon = {
20
+ args: {
21
+ icon: _jsx(Inbox, { className: "h-12 w-12" }),
22
+ title: 'Your inbox is empty',
23
+ },
24
+ };
25
+ export const WithDescription = {
26
+ args: {
27
+ title: 'No results',
28
+ description: 'Try adjusting your search or filter to find what you are looking for.',
29
+ },
30
+ };
31
+ export const WithAction = {
32
+ args: {
33
+ title: 'No projects yet',
34
+ description: 'Get started by creating your first project.',
35
+ action: (_jsxs(Button, { children: [_jsx(Plus, { className: "mr-2 h-4 w-4" }), "Create Project"] })),
36
+ },
37
+ };
38
+ export const FullExample = {
39
+ args: {
40
+ icon: _jsx(FileQuestion, { className: "h-12 w-12" }),
41
+ title: 'No features found',
42
+ description: 'It looks like you have not created any features yet. Start by creating a new feature to track your development workflow.',
43
+ action: (_jsxs(Button, { children: [_jsx(Plus, { className: "mr-2 h-4 w-4" }), "New Feature"] })),
44
+ },
45
+ };
@@ -0,0 +1,2 @@
1
+ export { EmptyState, type EmptyStateProps } from './empty-state';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/empty-state/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1 @@
1
+ export { EmptyState } from './empty-state';
@@ -0,0 +1,2 @@
1
+ export { LoadingSkeleton } from './loading-skeleton';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/loading-skeleton/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1 @@
1
+ export { LoadingSkeleton } from './loading-skeleton';
@@ -0,0 +1,14 @@
1
+ declare const variantStyles: {
2
+ readonly line: "h-4 w-full rounded-md";
3
+ readonly circle: "size-12 rounded-full";
4
+ readonly card: "h-32 w-full rounded-lg";
5
+ };
6
+ interface LoadingSkeletonProps {
7
+ variant?: keyof typeof variantStyles;
8
+ width?: string;
9
+ height?: string;
10
+ className?: string;
11
+ }
12
+ export declare function LoadingSkeleton({ variant, width, height, className, }: LoadingSkeletonProps): import("react/jsx-runtime").JSX.Element;
13
+ export {};
14
+ //# sourceMappingURL=loading-skeleton.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loading-skeleton.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/loading-skeleton/loading-skeleton.tsx"],"names":[],"mappings":"AAEA,QAAA,MAAM,aAAa;;;;CAIT,CAAC;AAEX,UAAU,oBAAoB;IAC5B,OAAO,CAAC,EAAE,MAAM,OAAO,aAAa,CAAC;IACrC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,eAAe,CAAC,EAC9B,OAAgB,EAChB,KAAK,EACL,MAAM,EACN,SAAS,GACV,EAAE,oBAAoB,2CAYtB"}
@@ -0,0 +1,13 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { cn } from '../../../lib/utils';
3
+ const variantStyles = {
4
+ line: 'h-4 w-full rounded-md',
5
+ circle: 'size-12 rounded-full',
6
+ card: 'h-32 w-full rounded-lg',
7
+ };
8
+ export function LoadingSkeleton({ variant = 'line', width, height, className, }) {
9
+ return (_jsx("div", { role: "status", "aria-label": "Loading", className: cn('bg-muted animate-pulse', variantStyles[variant], className), style: {
10
+ ...(width ? { width } : {}),
11
+ ...(height ? { height } : {}),
12
+ } }));
13
+ }
@@ -0,0 +1,11 @@
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
+ import { LoadingSkeleton } from './loading-skeleton';
3
+ declare const meta: Meta<typeof LoadingSkeleton>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof meta>;
6
+ export declare const Line: Story;
7
+ export declare const Circle: Story;
8
+ export declare const Card: Story;
9
+ export declare const CustomDimensions: Story;
10
+ export declare const Group: Story;
11
+ //# sourceMappingURL=loading-skeleton.stories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loading-skeleton.stories.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/loading-skeleton/loading-skeleton.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,eAAe,CAmBtC,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,IAAI,EAAE,KAIlB,CAAC;AAEF,eAAO,MAAM,MAAM,EAAE,KAIpB,CAAC;AAEF,eAAO,MAAM,IAAI,EAAE,KAIlB,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,KAM9B,CAAC;AAEF,eAAO,MAAM,KAAK,EAAE,KAkBnB,CAAC"}
@@ -0,0 +1,48 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { LoadingSkeleton } from './loading-skeleton';
3
+ const meta = {
4
+ title: 'Composed/LoadingSkeleton',
5
+ component: LoadingSkeleton,
6
+ parameters: {
7
+ layout: 'padded',
8
+ },
9
+ tags: ['autodocs'],
10
+ argTypes: {
11
+ variant: {
12
+ control: 'select',
13
+ options: ['line', 'circle', 'card'],
14
+ },
15
+ width: {
16
+ control: 'text',
17
+ },
18
+ height: {
19
+ control: 'text',
20
+ },
21
+ },
22
+ };
23
+ export default meta;
24
+ export const Line = {
25
+ args: {
26
+ variant: 'line',
27
+ },
28
+ };
29
+ export const Circle = {
30
+ args: {
31
+ variant: 'circle',
32
+ },
33
+ };
34
+ export const Card = {
35
+ args: {
36
+ variant: 'card',
37
+ },
38
+ };
39
+ export const CustomDimensions = {
40
+ args: {
41
+ variant: 'line',
42
+ width: '250px',
43
+ height: '20px',
44
+ },
45
+ };
46
+ export const Group = {
47
+ render: () => (_jsxs("div", { className: "space-y-4", children: [_jsxs("div", { className: "flex items-center gap-4", children: [_jsx(LoadingSkeleton, { variant: "circle" }), _jsxs("div", { className: "flex-1 space-y-2", children: [_jsx(LoadingSkeleton, { variant: "line", width: "60%" }), _jsx(LoadingSkeleton, { variant: "line", width: "40%" })] })] }), _jsx(LoadingSkeleton, { variant: "card" }), _jsxs("div", { className: "space-y-2", children: [_jsx(LoadingSkeleton, { variant: "line" }), _jsx(LoadingSkeleton, { variant: "line", width: "80%" }), _jsx(LoadingSkeleton, { variant: "line", width: "90%" })] })] })),
48
+ };
@@ -0,0 +1,2 @@
1
+ export { PageHeader } from './page-header';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/page-header/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1 @@
1
+ export { PageHeader } from './page-header';
@@ -0,0 +1,8 @@
1
+ export interface PageHeaderProps {
2
+ title: string;
3
+ description?: string;
4
+ children?: React.ReactNode;
5
+ className?: string;
6
+ }
7
+ export declare function PageHeader({ title, description, children, className }: PageHeaderProps): import("react/jsx-runtime").JSX.Element;
8
+ //# sourceMappingURL=page-header.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page-header.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/page-header/page-header.tsx"],"names":[],"mappings":"AAEA,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,UAAU,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,eAAe,2CAUtF"}
@@ -0,0 +1,5 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { cn } from '../../../lib/utils';
3
+ export function PageHeader({ title, description, children, className }) {
4
+ return (_jsxs("header", { className: cn('flex items-center justify-between gap-4', className), children: [_jsxs("div", { className: "space-y-1", children: [_jsx("h1", { className: "text-2xl font-bold tracking-tight", children: title }), description && _jsx("p", { className: "text-muted-foreground", children: description })] }), children && _jsx("div", { "data-slot": "actions", children: children })] }));
5
+ }
@@ -0,0 +1,25 @@
1
+ import type { StoryObj } from '@storybook/react';
2
+ import { PageHeader } from './page-header';
3
+ declare const meta: {
4
+ title: string;
5
+ component: typeof PageHeader;
6
+ parameters: {
7
+ layout: string;
8
+ };
9
+ tags: string[];
10
+ argTypes: {
11
+ title: {
12
+ control: "text";
13
+ };
14
+ description: {
15
+ control: "text";
16
+ };
17
+ };
18
+ };
19
+ export default meta;
20
+ type Story = StoryObj<typeof meta>;
21
+ export declare const Default: Story;
22
+ export declare const WithDescription: Story;
23
+ export declare const WithAction: Story;
24
+ export declare const FullExample: Story;
25
+ //# sourceMappingURL=page-header.stories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page-header.stories.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/page-header/page-header.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAG3C,QAAA,MAAM,IAAI;;;;;;;;;;;;;;;CAeyB,CAAC;AAEpC,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,OAAO,EAAE,KAIrB,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,KAK7B,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,KAMxB,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,KAYzB,CAAC"}
@@ -0,0 +1,46 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { PageHeader } from './page-header';
3
+ import { Button } from '../../ui/button';
4
+ const meta = {
5
+ title: 'Composed/PageHeader',
6
+ component: PageHeader,
7
+ parameters: {
8
+ layout: 'padded',
9
+ },
10
+ tags: ['autodocs'],
11
+ argTypes: {
12
+ title: {
13
+ control: 'text',
14
+ },
15
+ description: {
16
+ control: 'text',
17
+ },
18
+ },
19
+ };
20
+ export default meta;
21
+ export const Default = {
22
+ args: {
23
+ title: 'Dashboard',
24
+ },
25
+ };
26
+ export const WithDescription = {
27
+ args: {
28
+ title: 'Projects',
29
+ description: 'Manage and monitor all your active projects.',
30
+ },
31
+ };
32
+ export const WithAction = {
33
+ args: {
34
+ title: 'Features',
35
+ description: 'Track features through the development lifecycle.',
36
+ children: _jsx(Button, { children: "Create Feature" }),
37
+ },
38
+ };
39
+ export const FullExample = {
40
+ args: {
41
+ title: 'Settings',
42
+ description: 'Configure your application preferences and integrations.',
43
+ className: 'border-b pb-4',
44
+ children: (_jsxs("div", { className: "flex gap-2", children: [_jsx(Button, { variant: "outline", children: "Cancel" }), _jsx(Button, { children: "Save Changes" })] })),
45
+ },
46
+ };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/theme-toggle/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme-toggle.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/theme-toggle/theme-toggle.tsx"],"names":[],"mappings":"AAMA,wBAAgB,WAAW,4CAyB1B"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme-toggle.stories.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/theme-toggle/theme-toggle.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,WAAW,CAOlC,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,OAAO,EAAE,KAErB,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,KAOvB,CAAC"}
@@ -1,7 +1,7 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { ThemeToggle } from './theme-toggle';
3
3
  const meta = {
4
- title: 'Features/ThemeToggle',
4
+ title: 'Composed/ThemeToggle',
5
5
  component: ThemeToggle,
6
6
  parameters: {
7
7
  layout: 'centered',
@@ -1,4 +1,4 @@
1
- import type { VersionInfo, SystemInfo } from '../../lib/version';
1
+ import type { VersionInfo, SystemInfo } from '../../../lib/version';
2
2
  interface VersionPageClientProps {
3
3
  versionInfo: VersionInfo;
4
4
  systemInfo: SystemInfo;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version-page-client.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/version/version-page-client.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAsB7D,UAAU,sBAAsB;IAC9B,WAAW,EAAE,WAAW,CAAC;IACzB,UAAU,EAAE,UAAU,CAAC;CACxB;AAED,MAAM,CAAC,OAAO,UAAU,iBAAiB,CAAC,EAAE,WAAW,EAAE,UAAU,EAAE,EAAE,sBAAsB,2CAsG5F"}
@@ -0,0 +1,13 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import Link from 'next/link';
4
+ import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '../../ui/card';
5
+ import { Badge } from '../../ui/badge';
6
+ import { Button } from '../../ui/button';
7
+ import { Tabs, TabsContent, TabsList, TabsTrigger } from '../../ui/tabs';
8
+ function InfoRow({ label, value, badge, badgeVariant = 'secondary' }) {
9
+ return (_jsxs("div", { className: "flex items-center justify-between py-2", children: [_jsx("span", { className: "text-muted-foreground text-sm", children: label }), badge ? (_jsx(Badge, { variant: badgeVariant, children: value })) : (_jsx("span", { className: "font-mono text-sm", children: value }))] }));
10
+ }
11
+ export default function VersionPageClient({ versionInfo, systemInfo }) {
12
+ return (_jsx("div", { className: "flex flex-col items-center justify-center p-4", children: _jsxs("div", { className: "w-full max-w-2xl space-y-6", children: [_jsxs("div", { className: "text-center", children: [_jsx("h1", { className: "text-3xl font-bold tracking-tight", children: versionInfo.name }), _jsx("p", { className: "text-muted-foreground mt-2", children: versionInfo.description }), _jsx("div", { className: "mt-4", children: _jsxs(Badge, { variant: "default", "data-testid": "version-badge", children: ["v", versionInfo.version] }) })] }), _jsxs(Tabs, { defaultValue: "overview", className: "w-full", children: [_jsxs(TabsList, { className: "grid w-full grid-cols-3", children: [_jsx(TabsTrigger, { value: "overview", children: "Overview" }), _jsx(TabsTrigger, { value: "system", children: "System" }), _jsx(TabsTrigger, { value: "features", children: "Features" })] }), _jsx(TabsContent, { value: "overview", children: _jsxs(Card, { children: [_jsxs(CardHeader, { children: [_jsx(CardTitle, { children: "Package Information" }), _jsx(CardDescription, { children: "Details about the Shep AI CLI package" })] }), _jsxs(CardContent, { className: "space-y-1", children: [_jsx(InfoRow, { label: "Package", value: versionInfo.name }), _jsx(InfoRow, { label: "Version", value: `v${versionInfo.version}`, badge: true, badgeVariant: "default" }), _jsx(InfoRow, { label: "License", value: "MIT", badge: true, badgeVariant: "outline" }), _jsx(InfoRow, { label: "Author", value: "Shep AI" })] })] }) }), _jsx(TabsContent, { value: "system", children: _jsxs(Card, { children: [_jsxs(CardHeader, { children: [_jsx(CardTitle, { children: "System Information" }), _jsx(CardDescription, { children: "Runtime environment details" })] }), _jsxs(CardContent, { className: "space-y-1", children: [_jsx(InfoRow, { label: "Node.js", value: systemInfo.nodeVersion, badge: true, badgeVariant: "secondary" }), _jsx(InfoRow, { label: "Platform", value: `${systemInfo.platform} ${systemInfo.arch}` })] })] }) }), _jsx(TabsContent, { value: "features", children: _jsxs(Card, { children: [_jsxs(CardHeader, { children: [_jsx(CardTitle, { children: "Key Features" }), _jsx(CardDescription, { children: "What Shep AI can do for you" })] }), _jsx(CardContent, { children: _jsxs("ul", { className: "space-y-2 text-sm", children: [_jsxs("li", { className: "flex items-center gap-2", children: [_jsx(Badge, { variant: "outline", children: "AI" }), _jsx("span", { children: "Autonomous code generation" })] }), _jsxs("li", { className: "flex items-center gap-2", children: [_jsx(Badge, { variant: "outline", children: "SDLC" }), _jsx("span", { children: "Full development lifecycle automation" })] }), _jsxs("li", { className: "flex items-center gap-2", children: [_jsx(Badge, { variant: "outline", children: "CLI" }), _jsx("span", { children: "Powerful command-line interface" })] }), _jsxs("li", { className: "flex items-center gap-2", children: [_jsx(Badge, { variant: "outline", children: "Web" }), _jsx("span", { children: "Modern web UI dashboard" })] })] }) })] }) })] }), _jsxs("div", { className: "flex justify-center gap-4", children: [_jsx(Button, { asChild: true, variant: "outline", children: _jsx(Link, { href: "/", children: "Back to Home" }) }), _jsx(Button, { asChild: true, children: _jsx("a", { href: "https://github.com/shep-ai/cli", target: "_blank", rel: "noopener noreferrer", children: "View on GitHub" }) })] })] }) }));
13
+ }
@@ -0,0 +1,7 @@
1
+ import type { ReactNode } from 'react';
2
+ interface AppShellProps {
3
+ children: ReactNode;
4
+ }
5
+ export declare function AppShell({ children }: AppShellProps): import("react/jsx-runtime").JSX.Element;
6
+ export {};
7
+ //# sourceMappingURL=app-shell.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app-shell.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/layouts/app-shell/app-shell.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAWvC,UAAU,aAAa;IACrB,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED,wBAAgB,QAAQ,CAAC,EAAE,QAAQ,EAAE,EAAE,aAAa,2CAanD"}
@@ -0,0 +1,13 @@
1
+ 'use client';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { usePathname } from 'next/navigation';
4
+ import { DashboardLayout } from '../../layouts/dashboard-layout';
5
+ import { ThemeToggle } from '../../common/theme-toggle';
6
+ const navItems = [
7
+ { label: 'Home', href: '/' },
8
+ { label: 'Version', href: '/version' },
9
+ ];
10
+ export function AppShell({ children }) {
11
+ const pathname = usePathname();
12
+ return (_jsx(DashboardLayout, { sidebarItems: navItems, pathname: pathname, title: "Shep AI", actions: _jsx(ThemeToggle, {}), children: children }));
13
+ }
@@ -0,0 +1,2 @@
1
+ export { AppShell } from './app-shell';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/layouts/app-shell/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1 @@
1
+ export { AppShell } from './app-shell';
@@ -0,0 +1,13 @@
1
+ import type { ReactNode } from 'react';
2
+ import type { NavItem } from '../../layouts/sidebar';
3
+ interface DashboardLayoutProps {
4
+ sidebarItems: NavItem[];
5
+ pathname: string;
6
+ title: string;
7
+ actions?: ReactNode;
8
+ children: ReactNode;
9
+ className?: string;
10
+ }
11
+ export declare function DashboardLayout({ sidebarItems, pathname, title, actions, children, className, }: DashboardLayoutProps): import("react/jsx-runtime").JSX.Element;
12
+ export {};
13
+ //# sourceMappingURL=dashboard-layout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dashboard-layout.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/layouts/dashboard-layout/dashboard-layout.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AAG5D,UAAU,oBAAoB;IAC5B,YAAY,EAAE,OAAO,EAAE,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,QAAQ,EAAE,SAAS,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,eAAe,CAAC,EAC9B,YAAY,EACZ,QAAQ,EACR,KAAK,EACL,OAAO,EACP,QAAQ,EACR,SAAS,GACV,EAAE,oBAAoB,2CAYtB"}
@@ -0,0 +1,7 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { cn } from '../../../lib/utils';
3
+ import { Sidebar } from '../../layouts/sidebar';
4
+ import { Header } from '../../layouts/header';
5
+ export function DashboardLayout({ sidebarItems, pathname, title, actions, children, className, }) {
6
+ return (_jsxs("div", { className: cn('flex h-screen', className), children: [_jsx("aside", { className: "w-64 border-r", children: _jsx(Sidebar, { items: sidebarItems, pathname: pathname }) }), _jsxs("div", { className: "flex flex-1 flex-col", children: [_jsx(Header, { title: title, actions: actions }), _jsx("main", { className: "flex-1 overflow-auto p-6", children: children })] })] }));
7
+ }
@@ -0,0 +1,9 @@
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
+ import { DashboardLayout } from './dashboard-layout';
3
+ declare const meta: Meta<typeof DashboardLayout>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof meta>;
6
+ export declare const Default: Story;
7
+ export declare const WithContent: Story;
8
+ export declare const WithActions: Story;
9
+ //# sourceMappingURL=dashboard-layout.stories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dashboard-layout.stories.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/layouts/dashboard-layout/dashboard-layout.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,eAAe,CAOtC,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAQnC,eAAO,MAAM,OAAO,EAAE,KAOrB,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,KAsBzB,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,KAYzB,CAAC"}
@@ -0,0 +1,41 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { DashboardLayout } from './dashboard-layout';
3
+ const meta = {
4
+ title: 'Layout/DashboardLayout',
5
+ component: DashboardLayout,
6
+ parameters: {
7
+ layout: 'fullscreen',
8
+ },
9
+ tags: ['autodocs'],
10
+ };
11
+ export default meta;
12
+ const sidebarItems = [
13
+ { label: 'Dashboard', href: '/dashboard' },
14
+ { label: 'Features', href: '/features' },
15
+ { label: 'Settings', href: '/settings' },
16
+ ];
17
+ export const Default = {
18
+ args: {
19
+ sidebarItems,
20
+ pathname: '/dashboard',
21
+ title: 'Dashboard',
22
+ children: _jsx("p", { className: "text-muted-foreground", children: "Select a feature to get started." }),
23
+ },
24
+ };
25
+ export const WithContent = {
26
+ args: {
27
+ sidebarItems,
28
+ pathname: '/features',
29
+ title: 'Features',
30
+ children: (_jsxs("div", { className: "grid gap-4 md:grid-cols-2 lg:grid-cols-3", children: [_jsxs("div", { className: "rounded-lg border p-4", children: [_jsx("h3", { className: "font-semibold", children: "Auth Module" }), _jsx("p", { className: "text-muted-foreground text-sm", children: "User authentication and authorization" })] }), _jsxs("div", { className: "rounded-lg border p-4", children: [_jsx("h3", { className: "font-semibold", children: "Dashboard" }), _jsx("p", { className: "text-muted-foreground text-sm", children: "Analytics and reporting" })] }), _jsxs("div", { className: "rounded-lg border p-4", children: [_jsx("h3", { className: "font-semibold", children: "API Gateway" }), _jsx("p", { className: "text-muted-foreground text-sm", children: "Request routing and rate limiting" })] })] })),
31
+ },
32
+ };
33
+ export const WithActions = {
34
+ args: {
35
+ sidebarItems,
36
+ pathname: '/features',
37
+ title: 'Features',
38
+ actions: (_jsx("button", { className: "bg-primary text-primary-foreground rounded-md px-4 py-2 text-sm", children: "New Feature" })),
39
+ children: _jsx("p", { className: "text-muted-foreground", children: "No features yet. Create one to get started." }),
40
+ },
41
+ };
@@ -0,0 +1,2 @@
1
+ export { DashboardLayout } from './dashboard-layout';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/layouts/dashboard-layout/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1 @@
1
+ export { DashboardLayout } from './dashboard-layout';
@@ -0,0 +1,10 @@
1
+ import type { ReactNode } from 'react';
2
+ interface HeaderProps {
3
+ title: string;
4
+ breadcrumbs?: ReactNode;
5
+ actions?: ReactNode;
6
+ className?: string;
7
+ }
8
+ export declare function Header({ title, breadcrumbs, actions, className }: HeaderProps): import("react/jsx-runtime").JSX.Element;
9
+ export {};
10
+ //# sourceMappingURL=header.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"header.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/layouts/header/header.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC,UAAU,WAAW;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,MAAM,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,WAAW,2CAU7E"}
@@ -0,0 +1,5 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { cn } from '../../../lib/utils';
3
+ export function Header({ title, breadcrumbs, actions, className }) {
4
+ return (_jsxs("header", { className: cn('flex flex-col gap-2 px-6 py-4', className), children: [breadcrumbs && _jsx("div", { "data-slot": "breadcrumbs", children: breadcrumbs }), _jsxs("div", { className: "flex items-center justify-between", children: [_jsx("h1", { className: "text-2xl font-bold tracking-tight", children: title }), actions && _jsx("div", { "data-slot": "actions", children: actions })] })] }));
5
+ }
@@ -0,0 +1,10 @@
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
+ import { Header } from './header';
3
+ declare const meta: Meta<typeof Header>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof meta>;
6
+ export declare const Default: Story;
7
+ export declare const WithBreadcrumbs: Story;
8
+ export declare const WithActions: Story;
9
+ export declare const FullExample: Story;
10
+ //# sourceMappingURL=header.stories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"header.stories.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/layouts/header/header.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,MAAM,CAO7B,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,OAAO,EAAE,KAIrB,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,KAS7B,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,KASzB,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,KAiBzB,CAAC"}