@shepai/cli 1.12.0 → 1.14.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 (343) hide show
  1. package/dist/eslint.config.mjs +28 -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/elapsed-time/elapsed-time.d.ts +7 -0
  7. package/dist/src/presentation/web/components/common/elapsed-time/elapsed-time.d.ts.map +1 -0
  8. package/dist/src/presentation/web/components/common/elapsed-time/elapsed-time.js +23 -0
  9. package/dist/src/presentation/web/components/common/elapsed-time/elapsed-time.stories.d.ts +10 -0
  10. package/dist/src/presentation/web/components/common/elapsed-time/elapsed-time.stories.d.ts.map +1 -0
  11. package/dist/src/presentation/web/components/common/elapsed-time/elapsed-time.stories.js +30 -0
  12. package/dist/src/presentation/web/components/common/elapsed-time/index.d.ts +2 -0
  13. package/dist/src/presentation/web/components/common/elapsed-time/index.d.ts.map +1 -0
  14. package/dist/src/presentation/web/components/common/elapsed-time/index.js +1 -0
  15. package/dist/src/presentation/web/components/common/empty-state/empty-state.d.ts +9 -0
  16. package/dist/src/presentation/web/components/common/empty-state/empty-state.d.ts.map +1 -0
  17. package/dist/src/presentation/web/components/common/empty-state/empty-state.js +5 -0
  18. package/dist/src/presentation/web/components/common/empty-state/empty-state.stories.d.ts +11 -0
  19. package/dist/src/presentation/web/components/common/empty-state/empty-state.stories.d.ts.map +1 -0
  20. package/dist/src/presentation/web/components/common/empty-state/empty-state.stories.js +45 -0
  21. package/dist/src/presentation/web/components/common/empty-state/index.d.ts +2 -0
  22. package/dist/src/presentation/web/components/common/empty-state/index.d.ts.map +1 -0
  23. package/dist/src/presentation/web/components/common/empty-state/index.js +1 -0
  24. package/dist/src/presentation/web/components/common/feature-list-item/feature-list-item.d.ts +10 -0
  25. package/dist/src/presentation/web/components/common/feature-list-item/feature-list-item.d.ts.map +1 -0
  26. package/dist/src/presentation/web/components/common/feature-list-item/feature-list-item.js +9 -0
  27. package/dist/src/presentation/web/components/common/feature-list-item/feature-list-item.stories.d.ts +10 -0
  28. package/dist/src/presentation/web/components/common/feature-list-item/feature-list-item.stories.d.ts.map +1 -0
  29. package/dist/src/presentation/web/components/common/feature-list-item/feature-list-item.stories.js +42 -0
  30. package/dist/src/presentation/web/components/common/feature-list-item/index.d.ts +3 -0
  31. package/dist/src/presentation/web/components/common/feature-list-item/index.d.ts.map +1 -0
  32. package/dist/src/presentation/web/components/common/feature-list-item/index.js +1 -0
  33. package/dist/src/presentation/web/components/common/feature-status-badges/feature-status-badges.d.ts +8 -0
  34. package/dist/src/presentation/web/components/common/feature-status-badges/feature-status-badges.d.ts.map +1 -0
  35. package/dist/src/presentation/web/components/common/feature-status-badges/feature-status-badges.js +13 -0
  36. package/dist/src/presentation/web/components/common/feature-status-badges/feature-status-badges.stories.d.ts +12 -0
  37. package/dist/src/presentation/web/components/common/feature-status-badges/feature-status-badges.stories.d.ts.map +1 -0
  38. package/dist/src/presentation/web/components/common/feature-status-badges/feature-status-badges.stories.js +45 -0
  39. package/dist/src/presentation/web/components/common/feature-status-badges/index.d.ts +3 -0
  40. package/dist/src/presentation/web/components/common/feature-status-badges/index.d.ts.map +1 -0
  41. package/dist/src/presentation/web/components/common/feature-status-badges/index.js +1 -0
  42. package/dist/src/presentation/web/components/common/feature-status-config.d.ts +11 -0
  43. package/dist/src/presentation/web/components/common/feature-status-config.d.ts.map +1 -0
  44. package/dist/src/presentation/web/components/common/feature-status-config.js +22 -0
  45. package/dist/src/presentation/web/components/common/feature-status-group/feature-status-group.d.ts +8 -0
  46. package/dist/src/presentation/web/components/common/feature-status-group/feature-status-group.d.ts.map +1 -0
  47. package/dist/src/presentation/web/components/common/feature-status-group/feature-status-group.js +5 -0
  48. package/dist/src/presentation/web/components/common/feature-status-group/feature-status-group.stories.d.ts +9 -0
  49. package/dist/src/presentation/web/components/common/feature-status-group/feature-status-group.stories.d.ts.map +1 -0
  50. package/dist/src/presentation/web/components/common/feature-status-group/feature-status-group.stories.js +37 -0
  51. package/dist/src/presentation/web/components/common/feature-status-group/index.d.ts +3 -0
  52. package/dist/src/presentation/web/components/common/feature-status-group/index.d.ts.map +1 -0
  53. package/dist/src/presentation/web/components/common/feature-status-group/index.js +1 -0
  54. package/dist/src/presentation/web/components/common/loading-skeleton/index.d.ts +2 -0
  55. package/dist/src/presentation/web/components/common/loading-skeleton/index.d.ts.map +1 -0
  56. package/dist/src/presentation/web/components/common/loading-skeleton/index.js +1 -0
  57. package/dist/src/presentation/web/components/common/loading-skeleton/loading-skeleton.d.ts +14 -0
  58. package/dist/src/presentation/web/components/common/loading-skeleton/loading-skeleton.d.ts.map +1 -0
  59. package/dist/src/presentation/web/components/common/loading-skeleton/loading-skeleton.js +13 -0
  60. package/dist/src/presentation/web/components/common/loading-skeleton/loading-skeleton.stories.d.ts +11 -0
  61. package/dist/src/presentation/web/components/common/loading-skeleton/loading-skeleton.stories.d.ts.map +1 -0
  62. package/dist/src/presentation/web/components/common/loading-skeleton/loading-skeleton.stories.js +48 -0
  63. package/dist/src/presentation/web/components/common/page-header/index.d.ts +2 -0
  64. package/dist/src/presentation/web/components/common/page-header/index.d.ts.map +1 -0
  65. package/dist/src/presentation/web/components/common/page-header/index.js +1 -0
  66. package/dist/src/presentation/web/components/common/page-header/page-header.d.ts +8 -0
  67. package/dist/src/presentation/web/components/common/page-header/page-header.d.ts.map +1 -0
  68. package/dist/src/presentation/web/components/common/page-header/page-header.js +5 -0
  69. package/dist/src/presentation/web/components/common/page-header/page-header.stories.d.ts +25 -0
  70. package/dist/src/presentation/web/components/common/page-header/page-header.stories.d.ts.map +1 -0
  71. package/dist/src/presentation/web/components/common/page-header/page-header.stories.js +46 -0
  72. package/dist/src/presentation/web/components/common/shep-logo/index.d.ts +3 -0
  73. package/dist/src/presentation/web/components/common/shep-logo/index.d.ts.map +1 -0
  74. package/dist/src/presentation/web/components/common/shep-logo/index.js +1 -0
  75. package/dist/src/presentation/web/components/common/shep-logo/shep-logo.d.ts +6 -0
  76. package/dist/src/presentation/web/components/common/shep-logo/shep-logo.d.ts.map +1 -0
  77. package/dist/src/presentation/web/components/common/shep-logo/shep-logo.js +5 -0
  78. package/dist/src/presentation/web/components/common/shep-logo/shep-logo.stories.d.ts +9 -0
  79. package/dist/src/presentation/web/components/common/shep-logo/shep-logo.stories.d.ts.map +1 -0
  80. package/dist/src/presentation/web/components/common/shep-logo/shep-logo.stories.js +21 -0
  81. package/dist/src/presentation/web/components/common/sidebar-collapse-toggle/index.d.ts +3 -0
  82. package/dist/src/presentation/web/components/common/sidebar-collapse-toggle/index.d.ts.map +1 -0
  83. package/dist/src/presentation/web/components/common/sidebar-collapse-toggle/index.js +1 -0
  84. package/dist/src/presentation/web/components/common/sidebar-collapse-toggle/sidebar-collapse-toggle.d.ts +5 -0
  85. package/dist/src/presentation/web/components/common/sidebar-collapse-toggle/sidebar-collapse-toggle.d.ts.map +1 -0
  86. package/dist/src/presentation/web/components/common/sidebar-collapse-toggle/sidebar-collapse-toggle.js +11 -0
  87. package/dist/src/presentation/web/components/common/sidebar-collapse-toggle/sidebar-collapse-toggle.stories.d.ts +8 -0
  88. package/dist/src/presentation/web/components/common/sidebar-collapse-toggle/sidebar-collapse-toggle.stories.d.ts.map +1 -0
  89. package/dist/src/presentation/web/components/common/sidebar-collapse-toggle/sidebar-collapse-toggle.stories.js +21 -0
  90. package/dist/src/presentation/web/components/common/sidebar-nav-item/index.d.ts +3 -0
  91. package/dist/src/presentation/web/components/common/sidebar-nav-item/index.d.ts.map +1 -0
  92. package/dist/src/presentation/web/components/common/sidebar-nav-item/index.js +1 -0
  93. package/dist/src/presentation/web/components/common/sidebar-nav-item/sidebar-nav-item.d.ts +9 -0
  94. package/dist/src/presentation/web/components/common/sidebar-nav-item/sidebar-nav-item.d.ts.map +1 -0
  95. package/dist/src/presentation/web/components/common/sidebar-nav-item/sidebar-nav-item.js +6 -0
  96. package/dist/src/presentation/web/components/common/sidebar-nav-item/sidebar-nav-item.stories.d.ts +11 -0
  97. package/dist/src/presentation/web/components/common/sidebar-nav-item/sidebar-nav-item.stories.d.ts.map +1 -0
  98. package/dist/src/presentation/web/components/common/sidebar-nav-item/sidebar-nav-item.stories.js +53 -0
  99. package/dist/src/presentation/web/components/common/sidebar-section-header/index.d.ts +3 -0
  100. package/dist/src/presentation/web/components/common/sidebar-section-header/index.d.ts.map +1 -0
  101. package/dist/src/presentation/web/components/common/sidebar-section-header/index.js +1 -0
  102. package/dist/src/presentation/web/components/common/sidebar-section-header/sidebar-section-header.d.ts +8 -0
  103. package/dist/src/presentation/web/components/common/sidebar-section-header/sidebar-section-header.d.ts.map +1 -0
  104. package/dist/src/presentation/web/components/common/sidebar-section-header/sidebar-section-header.js +11 -0
  105. package/dist/src/presentation/web/components/common/sidebar-section-header/sidebar-section-header.stories.d.ts +8 -0
  106. package/dist/src/presentation/web/components/common/sidebar-section-header/sidebar-section-header.stories.d.ts.map +1 -0
  107. package/dist/src/presentation/web/components/common/sidebar-section-header/sidebar-section-header.stories.js +31 -0
  108. package/dist/src/presentation/web/components/common/theme-toggle/index.d.ts.map +1 -0
  109. package/dist/src/presentation/web/components/common/theme-toggle/theme-toggle.d.ts.map +1 -0
  110. package/dist/src/presentation/web/components/common/theme-toggle/theme-toggle.stories.d.ts.map +1 -0
  111. package/dist/src/presentation/web/components/{features → common}/theme-toggle/theme-toggle.stories.js +1 -1
  112. package/dist/src/presentation/web/{app → components/features}/version/version-page-client.d.ts +1 -1
  113. package/dist/src/presentation/web/components/features/version/version-page-client.d.ts.map +1 -0
  114. package/dist/src/presentation/web/components/features/version/version-page-client.js +13 -0
  115. package/dist/src/presentation/web/components/layouts/app-shell/app-shell.d.ts +7 -0
  116. package/dist/src/presentation/web/components/layouts/app-shell/app-shell.d.ts.map +1 -0
  117. package/dist/src/presentation/web/components/layouts/app-shell/app-shell.js +9 -0
  118. package/dist/src/presentation/web/components/layouts/app-shell/index.d.ts +2 -0
  119. package/dist/src/presentation/web/components/layouts/app-shell/index.d.ts.map +1 -0
  120. package/dist/src/presentation/web/components/layouts/app-shell/index.js +1 -0
  121. package/dist/src/presentation/web/components/layouts/app-sidebar/app-sidebar.d.ts +17 -0
  122. package/dist/src/presentation/web/components/layouts/app-sidebar/app-sidebar.d.ts.map +1 -0
  123. package/dist/src/presentation/web/components/layouts/app-sidebar/app-sidebar.js +34 -0
  124. package/dist/src/presentation/web/components/layouts/app-sidebar/app-sidebar.stories.d.ts +11 -0
  125. package/dist/src/presentation/web/components/layouts/app-sidebar/app-sidebar.stories.d.ts.map +1 -0
  126. package/dist/src/presentation/web/components/layouts/app-sidebar/app-sidebar.stories.js +61 -0
  127. package/dist/src/presentation/web/components/layouts/app-sidebar/index.d.ts +3 -0
  128. package/dist/src/presentation/web/components/layouts/app-sidebar/index.d.ts.map +1 -0
  129. package/dist/src/presentation/web/components/layouts/app-sidebar/index.js +1 -0
  130. package/dist/src/presentation/web/components/layouts/dashboard-layout/dashboard-layout.d.ts +13 -0
  131. package/dist/src/presentation/web/components/layouts/dashboard-layout/dashboard-layout.d.ts.map +1 -0
  132. package/dist/src/presentation/web/components/layouts/dashboard-layout/dashboard-layout.js +7 -0
  133. package/dist/src/presentation/web/components/layouts/dashboard-layout/dashboard-layout.stories.d.ts +9 -0
  134. package/dist/src/presentation/web/components/layouts/dashboard-layout/dashboard-layout.stories.d.ts.map +1 -0
  135. package/dist/src/presentation/web/components/layouts/dashboard-layout/dashboard-layout.stories.js +41 -0
  136. package/dist/src/presentation/web/components/layouts/dashboard-layout/index.d.ts +2 -0
  137. package/dist/src/presentation/web/components/layouts/dashboard-layout/index.d.ts.map +1 -0
  138. package/dist/src/presentation/web/components/layouts/dashboard-layout/index.js +1 -0
  139. package/dist/src/presentation/web/components/layouts/header/header.d.ts +10 -0
  140. package/dist/src/presentation/web/components/layouts/header/header.d.ts.map +1 -0
  141. package/dist/src/presentation/web/components/layouts/header/header.js +5 -0
  142. package/dist/src/presentation/web/components/layouts/header/header.stories.d.ts +10 -0
  143. package/dist/src/presentation/web/components/layouts/header/header.stories.d.ts.map +1 -0
  144. package/dist/src/presentation/web/components/layouts/header/header.stories.js +35 -0
  145. package/dist/src/presentation/web/components/layouts/header/index.d.ts +2 -0
  146. package/dist/src/presentation/web/components/layouts/header/index.d.ts.map +1 -0
  147. package/dist/src/presentation/web/components/layouts/header/index.js +1 -0
  148. package/dist/src/presentation/web/components/layouts/sidebar/index.d.ts +3 -0
  149. package/dist/src/presentation/web/components/layouts/sidebar/index.d.ts.map +1 -0
  150. package/dist/src/presentation/web/components/layouts/sidebar/index.js +1 -0
  151. package/dist/src/presentation/web/components/layouts/sidebar/sidebar.d.ts +14 -0
  152. package/dist/src/presentation/web/components/layouts/sidebar/sidebar.d.ts.map +1 -0
  153. package/dist/src/presentation/web/components/layouts/sidebar/sidebar.js +11 -0
  154. package/dist/src/presentation/web/components/layouts/sidebar/sidebar.stories.d.ts +10 -0
  155. package/dist/src/presentation/web/components/layouts/sidebar/sidebar.stories.d.ts.map +1 -0
  156. package/dist/src/presentation/web/components/layouts/sidebar/sidebar.stories.js +44 -0
  157. package/dist/src/presentation/web/components/ui/accordion.stories.js +1 -1
  158. package/dist/src/presentation/web/components/ui/alert.js +1 -1
  159. package/dist/src/presentation/web/components/ui/alert.stories.js +1 -1
  160. package/dist/src/presentation/web/components/ui/badge.js +4 -4
  161. package/dist/src/presentation/web/components/ui/badge.stories.js +1 -1
  162. package/dist/src/presentation/web/components/ui/button.d.ts +3 -4
  163. package/dist/src/presentation/web/components/ui/button.d.ts.map +1 -1
  164. package/dist/src/presentation/web/components/ui/button.js +18 -16
  165. package/dist/src/presentation/web/components/ui/button.stories.js +1 -1
  166. package/dist/src/presentation/web/components/ui/card.stories.js +1 -1
  167. package/dist/src/presentation/web/components/ui/dialog.stories.js +1 -1
  168. package/dist/src/presentation/web/components/ui/input.d.ts +1 -1
  169. package/dist/src/presentation/web/components/ui/input.d.ts.map +1 -1
  170. package/dist/src/presentation/web/components/ui/input.js +3 -5
  171. package/dist/src/presentation/web/components/ui/input.stories.js +1 -1
  172. package/dist/src/presentation/web/components/ui/label.js +1 -1
  173. package/dist/src/presentation/web/components/ui/label.stories.js +1 -1
  174. package/dist/src/presentation/web/components/ui/popover.stories.js +1 -1
  175. package/dist/src/presentation/web/components/ui/scroll-area.d.ts +6 -0
  176. package/dist/src/presentation/web/components/ui/scroll-area.d.ts.map +1 -0
  177. package/dist/src/presentation/web/components/ui/scroll-area.js +11 -0
  178. package/dist/src/presentation/web/components/ui/select.stories.js +1 -1
  179. package/dist/src/presentation/web/components/ui/separator.d.ts +5 -0
  180. package/dist/src/presentation/web/components/ui/separator.d.ts.map +1 -0
  181. package/dist/src/presentation/web/components/ui/separator.js +8 -0
  182. package/dist/src/presentation/web/components/ui/sheet.d.ts +15 -0
  183. package/dist/src/presentation/web/components/ui/sheet.d.ts.map +1 -0
  184. package/dist/src/presentation/web/components/ui/sheet.js +40 -0
  185. package/dist/src/presentation/web/components/ui/sidebar.d.ts +70 -0
  186. package/dist/src/presentation/web/components/ui/sidebar.d.ts.map +1 -0
  187. package/dist/src/presentation/web/components/ui/sidebar.js +211 -0
  188. package/dist/src/presentation/web/components/ui/skeleton.d.ts +3 -0
  189. package/dist/src/presentation/web/components/ui/skeleton.d.ts.map +1 -0
  190. package/dist/src/presentation/web/components/ui/skeleton.js +6 -0
  191. package/dist/src/presentation/web/components/ui/sonner.stories.js +1 -1
  192. package/dist/src/presentation/web/components/ui/tabs.stories.js +1 -1
  193. package/dist/src/presentation/web/components/ui/tooltip.d.ts +8 -0
  194. package/dist/src/presentation/web/components/ui/tooltip.d.ts.map +1 -0
  195. package/dist/src/presentation/web/components/ui/tooltip.js +17 -0
  196. package/dist/src/presentation/web/hooks/use-deferred-mount.d.ts +10 -0
  197. package/dist/src/presentation/web/hooks/use-deferred-mount.d.ts.map +1 -0
  198. package/dist/src/presentation/web/hooks/use-deferred-mount.js +23 -0
  199. package/dist/src/presentation/web/hooks/use-mobile.d.ts +2 -0
  200. package/dist/src/presentation/web/hooks/use-mobile.d.ts.map +1 -0
  201. package/dist/src/presentation/web/hooks/use-mobile.js +15 -0
  202. package/dist/src/presentation/web/hooks/useTheme.d.ts +1 -2
  203. package/dist/src/presentation/web/hooks/useTheme.d.ts.map +1 -1
  204. package/dist/src/presentation/web/hooks/useTheme.js +5 -6
  205. package/dist/tsconfig.build.tsbuildinfo +1 -1
  206. package/package.json +12 -7
  207. package/web/.next/BUILD_ID +1 -1
  208. package/web/.next/build-manifest.json +5 -5
  209. package/web/.next/cache/.previewinfo +1 -1
  210. package/web/.next/cache/.rscinfo +1 -1
  211. package/web/.next/cache/.tsbuildinfo +1 -1
  212. package/web/.next/cache/config.json +3 -3
  213. package/web/.next/fallback-build-manifest.json +2 -2
  214. package/web/.next/next-server.js.nft.json +1 -1
  215. package/web/.next/prerender-manifest.json +3 -3
  216. package/web/.next/required-server-files.js +1 -1
  217. package/web/.next/required-server-files.json +1 -1
  218. package/web/.next/server/app/_global-error/page/build-manifest.json +3 -3
  219. package/web/.next/server/app/_global-error/page.js +1 -1
  220. package/web/.next/server/app/_global-error/page.js.nft.json +1 -1
  221. package/web/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  222. package/web/.next/server/app/_global-error.html +2 -2
  223. package/web/.next/server/app/_global-error.rsc +7 -7
  224. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +2 -2
  225. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +7 -7
  226. package/web/.next/server/app/_global-error.segments/_head.segment.rsc +3 -3
  227. package/web/.next/server/app/_global-error.segments/_index.segment.rsc +3 -3
  228. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  229. package/web/.next/server/app/_not-found/page/build-manifest.json +3 -3
  230. package/web/.next/server/app/_not-found/page.js +2 -2
  231. package/web/.next/server/app/_not-found/page.js.nft.json +1 -1
  232. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  233. package/web/.next/server/app/_not-found.html +2 -2
  234. package/web/.next/server/app/_not-found.rsc +13 -12
  235. package/web/.next/server/app/_not-found.segments/_full.segment.rsc +13 -12
  236. package/web/.next/server/app/_not-found.segments/_head.segment.rsc +3 -3
  237. package/web/.next/server/app/_not-found.segments/_index.segment.rsc +5 -4
  238. package/web/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
  239. package/web/.next/server/app/_not-found.segments/_not-found.segment.rsc +3 -3
  240. package/web/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  241. package/web/.next/server/app/index.html +2 -2
  242. package/web/.next/server/app/index.rsc +14 -13
  243. package/web/.next/server/app/index.segments/__PAGE__.segment.rsc +3 -3
  244. package/web/.next/server/app/index.segments/_full.segment.rsc +14 -13
  245. package/web/.next/server/app/index.segments/_head.segment.rsc +3 -3
  246. package/web/.next/server/app/index.segments/_index.segment.rsc +5 -4
  247. package/web/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  248. package/web/.next/server/app/page/build-manifest.json +3 -3
  249. package/web/.next/server/app/page.js +2 -2
  250. package/web/.next/server/app/page.js.nft.json +1 -1
  251. package/web/.next/server/app/page_client-reference-manifest.js +1 -1
  252. package/web/.next/server/app/version/page/build-manifest.json +3 -3
  253. package/web/.next/server/app/version/page.js +3 -3
  254. package/web/.next/server/app/version/page.js.nft.json +1 -1
  255. package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  256. package/web/.next/server/app/version.html +2 -2
  257. package/web/.next/server/app/version.rsc +14 -13
  258. package/web/.next/server/app/version.segments/_full.segment.rsc +14 -13
  259. package/web/.next/server/app/version.segments/_head.segment.rsc +3 -3
  260. package/web/.next/server/app/version.segments/_index.segment.rsc +5 -4
  261. package/web/.next/server/app/version.segments/_tree.segment.rsc +2 -2
  262. package/web/.next/server/app/version.segments/version/__PAGE__.segment.rsc +3 -3
  263. package/web/.next/server/app/version.segments/version.segment.rsc +3 -3
  264. package/web/.next/server/chunks/ssr/{403f9_next_dist_2ff794b1._.js → 403f9_next_dist_esm_ceb2fa1e._.js} +2 -2
  265. package/web/.next/server/chunks/ssr/403f9_next_dist_esm_ceb2fa1e._.js.map +1 -0
  266. package/web/.next/server/chunks/ssr/[root-of-the-server]__18ff2ebf._.js +3 -0
  267. package/web/.next/server/chunks/ssr/[root-of-the-server]__18ff2ebf._.js.map +1 -0
  268. package/web/.next/server/chunks/ssr/{[root-of-the-server]__2328b471._.js → [root-of-the-server]__479da921._.js} +2 -2
  269. package/web/.next/server/chunks/ssr/[root-of-the-server]__479da921._.js.map +1 -0
  270. package/web/.next/server/chunks/ssr/{[root-of-the-server]__3acee9dd._.js → [root-of-the-server]__659cf841._.js} +2 -2
  271. package/web/.next/server/chunks/ssr/[root-of-the-server]__659cf841._.js.map +1 -0
  272. package/web/.next/server/chunks/ssr/[root-of-the-server]__ab31d101._.js +3 -0
  273. package/web/.next/server/chunks/ssr/[root-of-the-server]__ab31d101._.js.map +1 -0
  274. package/web/.next/server/chunks/ssr/[root-of-the-server]__ccf8a903._.js +3 -0
  275. package/web/.next/server/chunks/ssr/[root-of-the-server]__ccf8a903._.js.map +1 -0
  276. package/web/.next/server/chunks/ssr/_0f02ab66._.js +1 -1
  277. package/web/.next/server/chunks/ssr/_0f02ab66._.js.map +1 -1
  278. package/web/.next/server/chunks/ssr/_19be0743._.js +3 -0
  279. package/web/.next/server/chunks/ssr/_19be0743._.js.map +1 -0
  280. package/web/.next/server/chunks/ssr/_4582f3c3._.js +3 -0
  281. package/web/.next/server/chunks/ssr/_4582f3c3._.js.map +1 -0
  282. package/web/.next/server/chunks/ssr/_a0c04017._.js +10 -0
  283. package/web/.next/server/chunks/ssr/_a0c04017._.js.map +1 -0
  284. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_version_version-page-client_tsx_fe9db753._.js +3 -0
  285. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_version_version-page-client_tsx_fe9db753._.js.map +1 -0
  286. package/web/.next/server/chunks/ssr/{node_modules__pnpm_522e4103._.js → node_modules__pnpm_0ce0b44d._.js} +2 -2
  287. package/web/.next/server/chunks/ssr/{node_modules__pnpm_522e4103._.js.map → node_modules__pnpm_0ce0b44d._.js.map} +1 -1
  288. package/web/.next/server/chunks/ssr/src_presentation_web_372075f9._.js +13 -0
  289. package/web/.next/server/chunks/ssr/src_presentation_web_372075f9._.js.map +1 -0
  290. package/web/.next/server/middleware-build-manifest.js +3 -3
  291. package/web/.next/server/pages/404.html +2 -2
  292. package/web/.next/server/pages/500.html +2 -2
  293. package/web/.next/server/server-reference-manifest.js +1 -1
  294. package/web/.next/server/server-reference-manifest.json +1 -1
  295. package/web/.next/static/chunks/07f00e2e73d322d2.js +4 -0
  296. package/web/.next/static/chunks/33854795ae473cf1.css +1 -0
  297. package/web/.next/static/chunks/{b3cc49b27e09fa39.js → 37bc3e283f734dca.js} +1 -1
  298. package/web/.next/static/chunks/5130d7093ad39f4a.js +5 -0
  299. package/web/.next/static/chunks/523c5cfe0570712c.js +1 -0
  300. package/web/.next/static/chunks/df7d29673e0ac11d.js +1 -0
  301. package/web/.next/static/chunks/ef1296dbe67d5aae.js +1 -0
  302. package/web/.next/static/chunks/{turbopack-76ba02c6b131eee4.js → turbopack-a5a88a85e7ac8e8d.js} +1 -1
  303. package/web/.next/trace +1 -1
  304. package/web/.next/trace-build +1 -1
  305. package/web/package.json +2 -1
  306. package/dist/src/presentation/web/app/version/version-page-client.d.ts.map +0 -1
  307. package/dist/src/presentation/web/app/version/version-page-client.js +0 -13
  308. package/dist/src/presentation/web/components/features/index.d.ts.map +0 -1
  309. package/dist/src/presentation/web/components/features/index.js +0 -2
  310. package/dist/src/presentation/web/components/features/theme-toggle/index.d.ts +0 -2
  311. package/dist/src/presentation/web/components/features/theme-toggle/index.d.ts.map +0 -1
  312. package/dist/src/presentation/web/components/features/theme-toggle/theme-toggle.d.ts.map +0 -1
  313. package/dist/src/presentation/web/components/features/theme-toggle/theme-toggle.stories.d.ts.map +0 -1
  314. package/dist/src/presentation/web/components/ui/index.d.ts +0 -13
  315. package/dist/src/presentation/web/components/ui/index.d.ts.map +0 -1
  316. package/dist/src/presentation/web/components/ui/index.js +0 -14
  317. package/web/.next/server/chunks/ssr/403f9_next_dist_2ff794b1._.js.map +0 -1
  318. package/web/.next/server/chunks/ssr/[root-of-the-server]__205a2636._.js +0 -3
  319. package/web/.next/server/chunks/ssr/[root-of-the-server]__205a2636._.js.map +0 -1
  320. package/web/.next/server/chunks/ssr/[root-of-the-server]__2328b471._.js.map +0 -1
  321. package/web/.next/server/chunks/ssr/[root-of-the-server]__3acee9dd._.js.map +0 -1
  322. package/web/.next/server/chunks/ssr/[root-of-the-server]__8297ff30._.js +0 -3
  323. package/web/.next/server/chunks/ssr/[root-of-the-server]__8297ff30._.js.map +0 -1
  324. package/web/.next/server/chunks/ssr/[root-of-the-server]__d6257aad._.js +0 -3
  325. package/web/.next/server/chunks/ssr/[root-of-the-server]__d6257aad._.js.map +0 -1
  326. package/web/.next/server/chunks/ssr/_ccea5183._.js +0 -3
  327. package/web/.next/server/chunks/ssr/_ccea5183._.js.map +0 -1
  328. package/web/.next/server/chunks/ssr/src_presentation_web_app_layout_tsx_aa3a06bd._.js +0 -13
  329. package/web/.next/server/chunks/ssr/src_presentation_web_app_layout_tsx_aa3a06bd._.js.map +0 -1
  330. package/web/.next/server/chunks/ssr/src_presentation_web_app_version_version-page-client_tsx_bd5ab0cf._.js +0 -3
  331. package/web/.next/server/chunks/ssr/src_presentation_web_app_version_version-page-client_tsx_bd5ab0cf._.js.map +0 -1
  332. package/web/.next/static/chunks/51816495a9eb288c.css +0 -1
  333. package/web/.next/static/chunks/71462f20e38a4262.js +0 -4
  334. package/web/.next/static/chunks/86484b9b4aa9f859.js +0 -1
  335. package/web/.next/static/chunks/8ec8e211eedf31cc.js +0 -1
  336. /package/dist/src/presentation/web/components/{features → common/theme-toggle}/index.d.ts +0 -0
  337. /package/dist/src/presentation/web/components/{features → common}/theme-toggle/index.js +0 -0
  338. /package/dist/src/presentation/web/components/{features → common}/theme-toggle/theme-toggle.d.ts +0 -0
  339. /package/dist/src/presentation/web/components/{features → common}/theme-toggle/theme-toggle.js +0 -0
  340. /package/dist/src/presentation/web/components/{features → common}/theme-toggle/theme-toggle.stories.d.ts +0 -0
  341. /package/web/.next/static/{oYqPsC4DYjduQ_8Je-FJh → fDnQnLH8dIxn_WXo-1RJ-}/_buildManifest.js +0 -0
  342. /package/web/.next/static/{oYqPsC4DYjduQ_8Je-FJh → fDnQnLH8dIxn_WXo-1RJ-}/_clientMiddlewareManifest.json +0 -0
  343. /package/web/.next/static/{oYqPsC4DYjduQ_8Je-FJh → fDnQnLH8dIxn_WXo-1RJ-}/_ssgManifest.js +0 -0
@@ -14,6 +14,8 @@ import prettierConfig from 'eslint-config-prettier';
14
14
  import reactPlugin from 'eslint-plugin-react';
15
15
  import reactHooksPlugin from 'eslint-plugin-react-hooks';
16
16
  import nextPlugin from '@next/eslint-plugin-next';
17
+ import tailwindPlugin from 'eslint-plugin-tailwindcss';
18
+ import storybookPlugin from 'eslint-plugin-storybook';
17
19
  export default tseslint.config(
18
20
  // =============================================================================
19
21
  // Global ignores (replaces .eslintignore)
@@ -176,6 +178,7 @@ eslint.configs.recommended,
176
178
  react: reactPlugin,
177
179
  'react-hooks': reactHooksPlugin,
178
180
  '@next/next': nextPlugin,
181
+ tailwindcss: tailwindPlugin,
179
182
  },
180
183
  languageOptions: {
181
184
  parserOptions: {
@@ -198,6 +201,11 @@ eslint.configs.recommended,
198
201
  'react/jsx-key': 'error',
199
202
  'react/no-array-index-key': 'warn',
200
203
  'react/self-closing-comp': 'warn',
204
+ 'react/jsx-no-useless-fragment': 'warn',
205
+ 'react/jsx-curly-brace-presence': ['warn', { props: 'never', children: 'never' }],
206
+ 'react/hook-use-state': 'warn',
207
+ 'react/jsx-no-leaked-render': 'warn',
208
+ 'react/no-unstable-nested-components': 'error',
201
209
  // React Hooks rules
202
210
  'react-hooks/rules-of-hooks': 'error',
203
211
  'react-hooks/exhaustive-deps': 'warn',
@@ -205,6 +213,26 @@ eslint.configs.recommended,
205
213
  '@next/next/no-html-link-for-pages': 'error',
206
214
  '@next/next/no-img-element': 'warn',
207
215
  '@next/next/no-sync-scripts': 'error',
216
+ // Tailwind CSS rules
217
+ 'tailwindcss/classnames-order': 'warn',
218
+ 'tailwindcss/no-contradicting-classname': 'error',
219
+ 'tailwindcss/no-unnecessary-arbitrary-value': 'warn',
220
+ 'tailwindcss/enforces-shorthand': 'warn',
221
+ },
222
+ },
223
+ // =============================================================================
224
+ // Storybook story files
225
+ // =============================================================================
226
+ {
227
+ files: ['**/*.stories.@(ts|tsx)'],
228
+ plugins: {
229
+ storybook: storybookPlugin,
230
+ },
231
+ rules: {
232
+ 'storybook/default-exports': 'error',
233
+ 'storybook/hierarchy-separator': 'error',
234
+ 'storybook/no-uninstalled-addons': 'error',
235
+ 'storybook/prefer-pascal-case': 'warn',
208
236
  },
209
237
  },
210
238
  // =============================================================================
@@ -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,7 @@
1
+ interface ElapsedTimeProps {
2
+ startedAt: number;
3
+ }
4
+ export declare function formatElapsed(elapsedMs: number): string;
5
+ export declare function ElapsedTime({ startedAt }: ElapsedTimeProps): import("react/jsx-runtime").JSX.Element;
6
+ export {};
7
+ //# sourceMappingURL=elapsed-time.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"elapsed-time.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/elapsed-time/elapsed-time.tsx"],"names":[],"mappings":"AAIA,UAAU,gBAAgB;IACxB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAWvD;AAED,wBAAgB,WAAW,CAAC,EAAE,SAAS,EAAE,EAAE,gBAAgB,2CAgB1D"}
@@ -0,0 +1,23 @@
1
+ 'use client';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { useState, useEffect, startTransition } from 'react';
4
+ export function formatElapsed(elapsedMs) {
5
+ const totalSeconds = Math.floor(elapsedMs / 1000);
6
+ if (totalSeconds >= 3600) {
7
+ const hours = Math.floor(totalSeconds / 3600);
8
+ return `${hours}h`;
9
+ }
10
+ const minutes = Math.floor(totalSeconds / 60);
11
+ const seconds = totalSeconds % 60;
12
+ return `${String(minutes).padStart(2, '0')}:${String(seconds).padStart(2, '0')}`;
13
+ }
14
+ export function ElapsedTime({ startedAt }) {
15
+ const [elapsed, setElapsed] = useState(() => Date.now() - startedAt);
16
+ useEffect(() => {
17
+ const id = setInterval(() => {
18
+ startTransition(() => setElapsed(Date.now() - startedAt));
19
+ }, 1000);
20
+ return () => clearInterval(id);
21
+ }, [startedAt]);
22
+ return (_jsx("span", { "data-testid": "elapsed-time", className: "tabular-nums", children: formatElapsed(elapsed) }));
23
+ }
@@ -0,0 +1,10 @@
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
+ import { ElapsedTime } from './elapsed-time';
3
+ declare const meta: Meta<typeof ElapsedTime>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof meta>;
6
+ export declare const JustStarted: Story;
7
+ export declare const FiveMinutes: Story;
8
+ export declare const ThirtyMinutes: Story;
9
+ export declare const TwoHours: Story;
10
+ //# sourceMappingURL=elapsed-time.stories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"elapsed-time.stories.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/elapsed-time/elapsed-time.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,WAAW,EAAE,KAIzB,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,KAIzB,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,KAI3B,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,KAItB,CAAC"}
@@ -0,0 +1,30 @@
1
+ import { ElapsedTime } from './elapsed-time';
2
+ const meta = {
3
+ title: 'Composed/ElapsedTime',
4
+ component: ElapsedTime,
5
+ parameters: {
6
+ layout: 'padded',
7
+ },
8
+ tags: ['autodocs'],
9
+ };
10
+ export default meta;
11
+ export const JustStarted = {
12
+ args: {
13
+ startedAt: Date.now(),
14
+ },
15
+ };
16
+ export const FiveMinutes = {
17
+ args: {
18
+ startedAt: Date.now() - 5 * 60 * 1000,
19
+ },
20
+ };
21
+ export const ThirtyMinutes = {
22
+ args: {
23
+ startedAt: Date.now() - 30 * 60 * 1000,
24
+ },
25
+ };
26
+ export const TwoHours = {
27
+ args: {
28
+ startedAt: Date.now() - 2 * 60 * 60 * 1000,
29
+ },
30
+ };
@@ -0,0 +1,2 @@
1
+ export { ElapsedTime, formatElapsed } from './elapsed-time';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/elapsed-time/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1 @@
1
+ export { ElapsedTime, formatElapsed } from './elapsed-time';
@@ -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 }) : null, _jsx("h3", { className: "text-lg font-semibold", children: title }), description ? _jsx("p", { className: "text-muted-foreground max-w-md text-sm", children: description }) : null, action ? _jsx("div", { className: "mt-2", children: action }) : null] }));
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,10 @@
1
+ import type { FeatureStatus } from '../../common/feature-status-config';
2
+ export interface FeatureListItemProps {
3
+ name: string;
4
+ status: FeatureStatus;
5
+ startedAt?: number;
6
+ duration?: string;
7
+ onClick?: () => void;
8
+ }
9
+ export declare function FeatureListItem({ name, status, startedAt, duration, onClick, }: FeatureListItemProps): import("react/jsx-runtime").JSX.Element;
10
+ //# sourceMappingURL=feature-list-item.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feature-list-item.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/feature-list-item/feature-list-item.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2CAA2C,CAAC;AAE/E,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,aAAa,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,wBAAgB,eAAe,CAAC,EAC9B,IAAI,EACJ,MAAM,EACN,SAAS,EACT,QAAQ,EACR,OAAO,GACR,EAAE,oBAAoB,2CA2BtB"}
@@ -0,0 +1,9 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { SidebarMenuItem, SidebarMenuButton } from '../../ui/sidebar';
4
+ import { ElapsedTime } from '../../common/elapsed-time';
5
+ import { featureStatusConfig } from '../../common/feature-status-config';
6
+ export function FeatureListItem({ name, status, startedAt, duration, onClick, }) {
7
+ const { icon: StatusIcon, iconClass } = featureStatusConfig[status];
8
+ return (_jsx(SidebarMenuItem, { "data-testid": "feature-list-item", children: _jsxs(SidebarMenuButton, { size: "sm", onClick: onClick, tooltip: name, className: "cursor-pointer", children: [_jsx(StatusIcon, { className: iconClass }), _jsx("span", { className: "flex-1 truncate font-medium", children: name }), status === 'in-progress' && startedAt != null ? (_jsx("span", { "data-testid": "feature-list-item-meta", className: "text-muted-foreground ml-auto text-xs tabular-nums", children: _jsx(ElapsedTime, { startedAt: startedAt }) })) : null, status === 'done' && duration ? (_jsx("span", { "data-testid": "feature-list-item-meta", className: "text-muted-foreground ml-auto text-xs tabular-nums", children: duration })) : null] }) }));
9
+ }
@@ -0,0 +1,10 @@
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
+ import { FeatureListItem } from './feature-list-item';
3
+ declare const meta: Meta<typeof FeatureListItem>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof meta>;
6
+ export declare const ActionNeeded: Story;
7
+ export declare const InProgress: Story;
8
+ export declare const Done: Story;
9
+ export declare const WithClickHandler: Story;
10
+ //# sourceMappingURL=feature-list-item.stories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feature-list-item.stories.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/feature-list-item/feature-list-item.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,eAAe,CAgBtC,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,YAAY,EAAE,KAK1B,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,KAMxB,CAAC;AAEF,eAAO,MAAM,IAAI,EAAE,KAMlB,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,KAM9B,CAAC"}
@@ -0,0 +1,42 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { SidebarProvider, SidebarMenu } from '../../ui/sidebar';
3
+ import { FeatureListItem } from './feature-list-item';
4
+ const meta = {
5
+ title: 'Composed/FeatureListItem',
6
+ component: FeatureListItem,
7
+ parameters: {
8
+ layout: 'padded',
9
+ },
10
+ tags: ['autodocs'],
11
+ decorators: [
12
+ (Story) => (_jsx(SidebarProvider, { children: _jsx(SidebarMenu, { children: _jsx(Story, {}) }) })),
13
+ ],
14
+ };
15
+ export default meta;
16
+ export const ActionNeeded = {
17
+ args: {
18
+ name: 'Auth Module',
19
+ status: 'action-needed',
20
+ },
21
+ };
22
+ export const InProgress = {
23
+ args: {
24
+ name: 'Payment Integration',
25
+ status: 'in-progress',
26
+ startedAt: Date.now() - 330_000,
27
+ },
28
+ };
29
+ export const Done = {
30
+ args: {
31
+ name: 'User Dashboard',
32
+ status: 'done',
33
+ duration: '2h',
34
+ },
35
+ };
36
+ export const WithClickHandler = {
37
+ args: {
38
+ name: 'API Gateway',
39
+ status: 'action-needed',
40
+ onClick: () => alert('Clicked!'),
41
+ },
42
+ };
@@ -0,0 +1,3 @@
1
+ export { FeatureListItem } from './feature-list-item';
2
+ export type { FeatureListItemProps } from './feature-list-item';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/feature-list-item/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,YAAY,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1 @@
1
+ export { FeatureListItem } from './feature-list-item';
@@ -0,0 +1,8 @@
1
+ import { type FeatureStatus } from '../../common/feature-status-config';
2
+ export interface FeatureStatusBadgesProps {
3
+ /** Count of features per status. */
4
+ counts: Record<FeatureStatus, number>;
5
+ className?: string;
6
+ }
7
+ export declare function FeatureStatusBadges({ counts, className }: FeatureStatusBadgesProps): import("react/jsx-runtime").JSX.Element | null;
8
+ //# sourceMappingURL=feature-status-badges.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feature-status-badges.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/feature-status-badges/feature-status-badges.tsx"],"names":[],"mappings":"AAEA,OAAO,EAGL,KAAK,aAAa,EACnB,MAAM,2CAA2C,CAAC;AAEnD,MAAM,WAAW,wBAAwB;IACvC,oCAAoC;IACpC,MAAM,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IACtC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,mBAAmB,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,wBAAwB,kDAkClF"}
@@ -0,0 +1,13 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Tooltip, TooltipContent, TooltipTrigger } from '../../ui/tooltip';
3
+ import { cn } from '../../../lib/utils';
4
+ import { featureStatusConfig, featureStatusOrder, } from '../../common/feature-status-config';
5
+ export function FeatureStatusBadges({ counts, className }) {
6
+ const visibleStatuses = featureStatusOrder.filter((s) => counts[s] > 0);
7
+ if (visibleStatuses.length === 0)
8
+ return null;
9
+ return (_jsx("div", { "data-testid": "feature-status-badges", className: cn('flex flex-col items-center gap-1.5 py-1', className), children: visibleStatuses.map((status) => {
10
+ const { icon: Icon, iconClass, bgClass, label } = featureStatusConfig[status];
11
+ return (_jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsxs("div", { "data-testid": `feature-status-badge-${status}`, className: cn('flex size-8 items-center justify-center gap-0.5 rounded-md', bgClass), children: [_jsx(Icon, { className: cn('size-3.5 shrink-0', iconClass) }), _jsx("span", { className: "text-[0.6rem] font-semibold tabular-nums", children: counts[status] })] }) }), _jsxs(TooltipContent, { side: "right", children: [label, ": ", counts[status]] })] }, status));
12
+ }) }));
13
+ }
@@ -0,0 +1,12 @@
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
+ import { FeatureStatusBadges } from './feature-status-badges';
3
+ declare const meta: Meta<typeof FeatureStatusBadges>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof meta>;
6
+ export declare const AllStatuses: Story;
7
+ export declare const ActionNeededOnly: Story;
8
+ export declare const InProgressOnly: Story;
9
+ export declare const DoneOnly: Story;
10
+ export declare const LargeCounts: Story;
11
+ export declare const Empty: Story;
12
+ //# sourceMappingURL=feature-status-badges.stories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feature-status-badges.stories.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/feature-status-badges/feature-status-badges.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAE9D,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,mBAAmB,CAgB1C,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,WAAW,EAAE,KAIzB,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,KAI9B,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,KAI5B,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,KAItB,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,KAIzB,CAAC;AAEF,eAAO,MAAM,KAAK,EAAE,KAInB,CAAC"}
@@ -0,0 +1,45 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { SidebarProvider } from '../../ui/sidebar';
3
+ import { FeatureStatusBadges } from './feature-status-badges';
4
+ const meta = {
5
+ title: 'Composed/FeatureStatusBadges',
6
+ component: FeatureStatusBadges,
7
+ parameters: {
8
+ layout: 'centered',
9
+ },
10
+ tags: ['autodocs'],
11
+ decorators: [
12
+ (Story) => (_jsx(SidebarProvider, { defaultOpen: false, children: _jsx("div", { className: "bg-sidebar flex w-12 justify-center rounded-md p-2", children: _jsx(Story, {}) }) })),
13
+ ],
14
+ };
15
+ export default meta;
16
+ export const AllStatuses = {
17
+ args: {
18
+ counts: { 'action-needed': 2, 'in-progress': 3, done: 5 },
19
+ },
20
+ };
21
+ export const ActionNeededOnly = {
22
+ args: {
23
+ counts: { 'action-needed': 4, 'in-progress': 0, done: 0 },
24
+ },
25
+ };
26
+ export const InProgressOnly = {
27
+ args: {
28
+ counts: { 'action-needed': 0, 'in-progress': 2, done: 0 },
29
+ },
30
+ };
31
+ export const DoneOnly = {
32
+ args: {
33
+ counts: { 'action-needed': 0, 'in-progress': 0, done: 7 },
34
+ },
35
+ };
36
+ export const LargeCounts = {
37
+ args: {
38
+ counts: { 'action-needed': 12, 'in-progress': 99, done: 150 },
39
+ },
40
+ };
41
+ export const Empty = {
42
+ args: {
43
+ counts: { 'action-needed': 0, 'in-progress': 0, done: 0 },
44
+ },
45
+ };
@@ -0,0 +1,3 @@
1
+ export { FeatureStatusBadges } from './feature-status-badges';
2
+ export type { FeatureStatusBadgesProps } from './feature-status-badges';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/feature-status-badges/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,YAAY,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC"}
@@ -0,0 +1 @@
1
+ export { FeatureStatusBadges } from './feature-status-badges';
@@ -0,0 +1,11 @@
1
+ import type { LucideIcon } from 'lucide-react';
2
+ export type FeatureStatus = 'action-needed' | 'in-progress' | 'done';
3
+ export interface FeatureStatusConfig {
4
+ icon: LucideIcon;
5
+ iconClass: string;
6
+ bgClass: string;
7
+ label: string;
8
+ }
9
+ export declare const featureStatusConfig: Record<FeatureStatus, FeatureStatusConfig>;
10
+ export declare const featureStatusOrder: FeatureStatus[];
11
+ //# sourceMappingURL=feature-status-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feature-status-config.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/web/components/common/feature-status-config.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/C,MAAM,MAAM,aAAa,GAAG,eAAe,GAAG,aAAa,GAAG,MAAM,CAAC;AAErE,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,UAAU,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,aAAa,EAAE,mBAAmB,CAmB1E,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,aAAa,EAA6C,CAAC"}
@@ -0,0 +1,22 @@
1
+ import { CircleAlert, Loader2, CircleCheck } from 'lucide-react';
2
+ export const featureStatusConfig = {
3
+ 'action-needed': {
4
+ icon: CircleAlert,
5
+ iconClass: 'text-amber-500',
6
+ bgClass: 'bg-amber-500/10',
7
+ label: 'Action Needed',
8
+ },
9
+ 'in-progress': {
10
+ icon: Loader2,
11
+ iconClass: 'text-blue-500 animate-spin',
12
+ bgClass: 'bg-blue-500/10',
13
+ label: 'In Progress',
14
+ },
15
+ done: {
16
+ icon: CircleCheck,
17
+ iconClass: 'text-emerald-500',
18
+ bgClass: 'bg-emerald-500/10',
19
+ label: 'Done',
20
+ },
21
+ };
22
+ export const featureStatusOrder = ['action-needed', 'in-progress', 'done'];
@@ -0,0 +1,8 @@
1
+ import type { ReactNode } from 'react';
2
+ export interface FeatureStatusGroupProps {
3
+ label: string;
4
+ count: number;
5
+ children: ReactNode;
6
+ }
7
+ export declare function FeatureStatusGroup({ label, count, children }: FeatureStatusGroupProps): import("react/jsx-runtime").JSX.Element;
8
+ //# sourceMappingURL=feature-status-group.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feature-status-group.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/feature-status-group/feature-status-group.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAQvC,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED,wBAAgB,kBAAkB,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,uBAAuB,2CAkBrF"}
@@ -0,0 +1,5 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { SidebarGroup, SidebarGroupLabel, SidebarGroupContent, SidebarMenu, } from '../../ui/sidebar';
3
+ export function FeatureStatusGroup({ label, count, children }) {
4
+ return (_jsxs(SidebarGroup, { "data-testid": "feature-status-group", className: "px-2 py-1", children: [_jsxs(SidebarGroupLabel, { className: "text-muted-foreground h-6 px-2 text-[0.65rem] font-semibold tracking-wider uppercase", children: [label, _jsx("span", { "aria-label": `${count} items`, className: "bg-sidebar-accent text-sidebar-accent-foreground ml-1.5 inline-flex h-4 min-w-4 items-center justify-center rounded-full px-1 text-[0.6rem] font-medium tabular-nums", role: "img", children: count })] }), _jsx(SidebarGroupContent, { children: _jsx(SidebarMenu, { className: "gap-0.5", children: children }) })] }));
5
+ }
@@ -0,0 +1,9 @@
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
+ import { FeatureStatusGroup } from './feature-status-group';
3
+ declare const meta: Meta<typeof FeatureStatusGroup>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof meta>;
6
+ export declare const InProgress: Story;
7
+ export declare const Done: Story;
8
+ export declare const ActionNeeded: Story;
9
+ //# sourceMappingURL=feature-status-group.stories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feature-status-group.stories.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/feature-status-group/feature-status-group.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAGvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE5D,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,kBAAkB,CAgBzC,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,UAAU,EAAE,KAWxB,CAAC;AAEF,eAAO,MAAM,IAAI,EAAE,KAYlB,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,KAW1B,CAAC"}
@@ -0,0 +1,37 @@
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { SidebarProvider } from '../../ui/sidebar';
3
+ import { FeatureListItem } from '../../common/feature-list-item';
4
+ import { FeatureStatusGroup } from './feature-status-group';
5
+ const meta = {
6
+ title: 'Composed/FeatureStatusGroup',
7
+ component: FeatureStatusGroup,
8
+ parameters: {
9
+ layout: 'padded',
10
+ },
11
+ tags: ['autodocs'],
12
+ decorators: [
13
+ (Story) => (_jsx(SidebarProvider, { children: _jsx("div", { className: "w-64", children: _jsx(Story, {}) }) })),
14
+ ],
15
+ };
16
+ export default meta;
17
+ export const InProgress = {
18
+ args: {
19
+ label: 'In Progress',
20
+ count: 2,
21
+ children: (_jsxs(_Fragment, { children: [_jsx(FeatureListItem, { name: "Dashboard", status: "in-progress", startedAt: Date.now() - 330_000 }), _jsx(FeatureListItem, { name: "API Gateway", status: "in-progress", startedAt: Date.now() - 60_000 })] })),
22
+ },
23
+ };
24
+ export const Done = {
25
+ args: {
26
+ label: 'Done',
27
+ count: 3,
28
+ children: (_jsxs(_Fragment, { children: [_jsx(FeatureListItem, { name: "Settings Page", status: "done", duration: "2h" }), _jsx(FeatureListItem, { name: "User Profile", status: "done", duration: "1h" }), _jsx(FeatureListItem, { name: "Auth Module", status: "done", duration: "30m" })] })),
29
+ },
30
+ };
31
+ export const ActionNeeded = {
32
+ args: {
33
+ label: 'Action Needed',
34
+ count: 2,
35
+ children: (_jsxs(_Fragment, { children: [_jsx(FeatureListItem, { name: "Auth Module", status: "action-needed" }), _jsx(FeatureListItem, { name: "Payment Flow", status: "action-needed" })] })),
36
+ },
37
+ };
@@ -0,0 +1,3 @@
1
+ export { FeatureStatusGroup } from './feature-status-group';
2
+ export type { FeatureStatusGroupProps } from './feature-status-group';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/feature-status-group/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,YAAY,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC"}