@shepai/cli 1.201.0-pr600.2bbad7b → 1.202.0-pr601.3b893d1

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 (367) hide show
  1. package/package.json +2 -1
  2. package/web/.next/BUILD_ID +1 -1
  3. package/web/.next/build-manifest.json +2 -2
  4. package/web/.next/fallback-build-manifest.json +2 -2
  5. package/web/.next/prerender-manifest.json +3 -3
  6. package/web/.next/required-server-files.js +2 -2
  7. package/web/.next/required-server-files.json +2 -2
  8. package/web/.next/server/app/(dashboard)/@drawer/adopt/page/react-loadable-manifest.json +4 -4
  9. package/web/.next/server/app/(dashboard)/@drawer/adopt/page/server-reference-manifest.json +37 -37
  10. package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js.nft.json +1 -1
  11. package/web/.next/server/app/(dashboard)/@drawer/adopt/page_client-reference-manifest.js +1 -1
  12. package/web/.next/server/app/(dashboard)/@drawer/chat/page/react-loadable-manifest.json +4 -4
  13. package/web/.next/server/app/(dashboard)/@drawer/chat/page/server-reference-manifest.json +35 -35
  14. package/web/.next/server/app/(dashboard)/@drawer/chat/page.js.nft.json +1 -1
  15. package/web/.next/server/app/(dashboard)/@drawer/chat/page_client-reference-manifest.js +1 -1
  16. package/web/.next/server/app/(dashboard)/@drawer/create/page/react-loadable-manifest.json +4 -4
  17. package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +38 -38
  18. package/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
  19. package/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
  20. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/react-loadable-manifest.json +4 -4
  21. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/server-reference-manifest.json +47 -47
  22. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  23. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  24. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/react-loadable-manifest.json +4 -4
  25. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +47 -47
  26. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
  27. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
  28. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page/react-loadable-manifest.json +4 -4
  29. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page/server-reference-manifest.json +36 -36
  30. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page.js.nft.json +1 -1
  31. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page_client-reference-manifest.js +1 -1
  32. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/react-loadable-manifest.json +4 -4
  33. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +36 -36
  34. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
  35. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  36. package/web/.next/server/app/(dashboard)/chat/page/react-loadable-manifest.json +4 -4
  37. package/web/.next/server/app/(dashboard)/chat/page/server-reference-manifest.json +35 -35
  38. package/web/.next/server/app/(dashboard)/chat/page.js.nft.json +1 -1
  39. package/web/.next/server/app/(dashboard)/chat/page_client-reference-manifest.js +1 -1
  40. package/web/.next/server/app/(dashboard)/control-center/page/react-loadable-manifest.json +4 -4
  41. package/web/.next/server/app/(dashboard)/control-center/page/server-reference-manifest.json +35 -35
  42. package/web/.next/server/app/(dashboard)/control-center/page.js.nft.json +1 -1
  43. package/web/.next/server/app/(dashboard)/control-center/page_client-reference-manifest.js +1 -1
  44. package/web/.next/server/app/(dashboard)/create/page/react-loadable-manifest.json +4 -4
  45. package/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +38 -38
  46. package/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
  47. package/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
  48. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page/react-loadable-manifest.json +4 -4
  49. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page/server-reference-manifest.json +47 -47
  50. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  51. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  52. package/web/.next/server/app/(dashboard)/feature/[featureId]/page/react-loadable-manifest.json +4 -4
  53. package/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +47 -47
  54. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
  55. package/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
  56. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page/react-loadable-manifest.json +4 -4
  57. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page/server-reference-manifest.json +36 -36
  58. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page.js.nft.json +1 -1
  59. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page_client-reference-manifest.js +1 -1
  60. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/react-loadable-manifest.json +4 -4
  61. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +36 -36
  62. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
  63. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  64. package/web/.next/server/app/_global-error.html +2 -2
  65. package/web/.next/server/app/_global-error.rsc +1 -1
  66. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  67. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  68. package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  69. package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  70. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  71. package/web/.next/server/app/_not-found/page/react-loadable-manifest.json +4 -4
  72. package/web/.next/server/app/_not-found/page/server-reference-manifest.json +9 -9
  73. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  74. package/web/.next/server/app/agent-questions/page/react-loadable-manifest.json +4 -4
  75. package/web/.next/server/app/agent-questions/page/server-reference-manifest.json +11 -11
  76. package/web/.next/server/app/agent-questions/page_client-reference-manifest.js +1 -1
  77. package/web/.next/server/app/agents/[agentType]/page/react-loadable-manifest.json +4 -4
  78. package/web/.next/server/app/agents/[agentType]/page/server-reference-manifest.json +13 -13
  79. package/web/.next/server/app/agents/[agentType]/page_client-reference-manifest.js +1 -1
  80. package/web/.next/server/app/agents/page/react-loadable-manifest.json +4 -4
  81. package/web/.next/server/app/agents/page/server-reference-manifest.json +10 -10
  82. package/web/.next/server/app/agents/page_client-reference-manifest.js +1 -1
  83. package/web/.next/server/app/application/[id]/page/react-loadable-manifest.json +4 -4
  84. package/web/.next/server/app/application/[id]/page/server-reference-manifest.json +18 -18
  85. package/web/.next/server/app/application/[id]/page.js.nft.json +1 -1
  86. package/web/.next/server/app/application/[id]/page_client-reference-manifest.js +1 -1
  87. package/web/.next/server/app/application/[id]/supervisor/page/react-loadable-manifest.json +4 -4
  88. package/web/.next/server/app/application/[id]/supervisor/page/server-reference-manifest.json +10 -10
  89. package/web/.next/server/app/application/[id]/supervisor/page_client-reference-manifest.js +1 -1
  90. package/web/.next/server/app/applications/page/react-loadable-manifest.json +4 -4
  91. package/web/.next/server/app/applications/page/server-reference-manifest.json +19 -19
  92. package/web/.next/server/app/applications/page.js.nft.json +1 -1
  93. package/web/.next/server/app/applications/page_client-reference-manifest.js +1 -1
  94. package/web/.next/server/app/features/page/react-loadable-manifest.json +4 -4
  95. package/web/.next/server/app/features/page/server-reference-manifest.json +31 -31
  96. package/web/.next/server/app/features/page.js.nft.json +1 -1
  97. package/web/.next/server/app/features/page_client-reference-manifest.js +1 -1
  98. package/web/.next/server/app/onboarding/page/react-loadable-manifest.json +4 -4
  99. package/web/.next/server/app/onboarding/page/server-reference-manifest.json +9 -9
  100. package/web/.next/server/app/onboarding/page_client-reference-manifest.js +1 -1
  101. package/web/.next/server/app/page/react-loadable-manifest.json +4 -4
  102. package/web/.next/server/app/page/server-reference-manifest.json +9 -9
  103. package/web/.next/server/app/page_client-reference-manifest.js +1 -1
  104. package/web/.next/server/app/projects/[slug]/items/[itemId]/page/react-loadable-manifest.json +4 -4
  105. package/web/.next/server/app/projects/[slug]/items/[itemId]/page/server-reference-manifest.json +16 -16
  106. package/web/.next/server/app/projects/[slug]/items/[itemId]/page_client-reference-manifest.js +1 -1
  107. package/web/.next/server/app/projects/[slug]/page/react-loadable-manifest.json +4 -4
  108. package/web/.next/server/app/projects/[slug]/page/server-reference-manifest.json +28 -28
  109. package/web/.next/server/app/projects/[slug]/page_client-reference-manifest.js +1 -1
  110. package/web/.next/server/app/projects/[slug]/pages/page/react-loadable-manifest.json +4 -4
  111. package/web/.next/server/app/projects/[slug]/pages/page/server-reference-manifest.json +12 -12
  112. package/web/.next/server/app/projects/[slug]/pages/page_client-reference-manifest.js +1 -1
  113. package/web/.next/server/app/projects/[slug]/settings/page/react-loadable-manifest.json +4 -4
  114. package/web/.next/server/app/projects/[slug]/settings/page/server-reference-manifest.json +18 -18
  115. package/web/.next/server/app/projects/[slug]/settings/page_client-reference-manifest.js +1 -1
  116. package/web/.next/server/app/projects/page/react-loadable-manifest.json +4 -4
  117. package/web/.next/server/app/projects/page/server-reference-manifest.json +10 -10
  118. package/web/.next/server/app/projects/page_client-reference-manifest.js +1 -1
  119. package/web/.next/server/app/settings/page/react-loadable-manifest.json +4 -4
  120. package/web/.next/server/app/settings/page/server-reference-manifest.json +15 -15
  121. package/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  122. package/web/.next/server/app/skills/page/react-loadable-manifest.json +4 -4
  123. package/web/.next/server/app/skills/page/server-reference-manifest.json +17 -17
  124. package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  125. package/web/.next/server/app/supervisor/feature/[featureId]/page/react-loadable-manifest.json +4 -4
  126. package/web/.next/server/app/supervisor/feature/[featureId]/page/server-reference-manifest.json +10 -10
  127. package/web/.next/server/app/supervisor/feature/[featureId]/page_client-reference-manifest.js +1 -1
  128. package/web/.next/server/app/supervisor/page/react-loadable-manifest.json +4 -4
  129. package/web/.next/server/app/supervisor/page/server-reference-manifest.json +10 -10
  130. package/web/.next/server/app/supervisor/page_client-reference-manifest.js +1 -1
  131. package/web/.next/server/app/supervisor/repo/[repositoryId]/page/react-loadable-manifest.json +4 -4
  132. package/web/.next/server/app/supervisor/repo/[repositoryId]/page/server-reference-manifest.json +10 -10
  133. package/web/.next/server/app/supervisor/repo/[repositoryId]/page_client-reference-manifest.js +1 -1
  134. package/web/.next/server/app/tools/page/react-loadable-manifest.json +4 -4
  135. package/web/.next/server/app/tools/page/server-reference-manifest.json +15 -15
  136. package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  137. package/web/.next/server/app/version/page/react-loadable-manifest.json +4 -4
  138. package/web/.next/server/app/version/page/server-reference-manifest.json +9 -9
  139. package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  140. package/web/.next/server/chunks/[root-of-the-server]__10e976f3._.js +1 -1
  141. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_agent-questions_page_actions_4b694f8d.js +1 -1
  142. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_agent-questions_page_actions_4b694f8d.js.map +1 -1
  143. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_agents_[agentType]_page_actions_103679a6.js +1 -1
  144. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_agents_[agentType]_page_actions_103679a6.js.map +1 -1
  145. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_projects_[slug]_pages_page_actions_19d50f6c.js +1 -1
  146. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_projects_[slug]_pages_page_actions_19d50f6c.js.map +1 -1
  147. package/web/.next/server/chunks/ssr/744ca_web_app_projects_[slug]_items_[itemId]_work-item-detail-client_tsx_d2e02407._.js +1 -1
  148. package/web/.next/server/chunks/ssr/744ca_web_app_projects_[slug]_items_[itemId]_work-item-detail-client_tsx_d2e02407._.js.map +1 -1
  149. package/web/.next/server/chunks/ssr/744ca_web_app_projects_[slug]_settings_project-settings-client_tsx_e8b85ddc._.js +1 -1
  150. package/web/.next/server/chunks/ssr/744ca_web_app_projects_[slug]_settings_project-settings-client_tsx_e8b85ddc._.js.map +1 -1
  151. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_feature-drawer-client_tsx_e9755fc8._.js +2 -2
  152. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_feature-drawer-client_tsx_e9755fc8._.js.map +1 -1
  153. package/web/.next/server/chunks/ssr/744ca_web_components_features_applications_applications-page-client_tsx_d0db9938._.js +1 -1
  154. package/web/.next/server/chunks/ssr/[root-of-the-server]__0b652a2f._.js +1 -1
  155. package/web/.next/server/chunks/ssr/[root-of-the-server]__56cf47e7._.js +1 -1
  156. package/web/.next/server/chunks/ssr/[root-of-the-server]__56cf47e7._.js.map +1 -1
  157. package/web/.next/server/chunks/ssr/[root-of-the-server]__648730d4._.js +1 -1
  158. package/web/.next/server/chunks/ssr/[root-of-the-server]__68df6415._.js +1 -1
  159. package/web/.next/server/chunks/ssr/[root-of-the-server]__68df6415._.js.map +1 -1
  160. package/web/.next/server/chunks/ssr/[root-of-the-server]__6bc6bf96._.js +1 -1
  161. package/web/.next/server/chunks/ssr/[root-of-the-server]__6bc6bf96._.js.map +1 -1
  162. package/web/.next/server/chunks/ssr/[root-of-the-server]__9852cb08._.js +2 -2
  163. package/web/.next/server/chunks/ssr/[root-of-the-server]__9852cb08._.js.map +1 -1
  164. package/web/.next/server/chunks/ssr/[root-of-the-server]__a1167cec._.js +1 -1
  165. package/web/.next/server/chunks/ssr/[root-of-the-server]__a1167cec._.js.map +1 -1
  166. package/web/.next/server/chunks/ssr/{[root-of-the-server]__796984c7._.js → [root-of-the-server]__acaaed62._.js} +2 -2
  167. package/web/.next/server/chunks/ssr/{[root-of-the-server]__796984c7._.js.map → [root-of-the-server]__acaaed62._.js.map} +1 -1
  168. package/web/.next/server/chunks/ssr/[root-of-the-server]__b0d7cca3._.js +3 -3
  169. package/web/.next/server/chunks/ssr/[root-of-the-server]__b0d7cca3._.js.map +1 -1
  170. package/web/.next/server/chunks/ssr/[root-of-the-server]__ba699bec._.js +1 -1
  171. package/web/.next/server/chunks/ssr/[root-of-the-server]__ba699bec._.js.map +1 -1
  172. package/web/.next/server/chunks/ssr/[root-of-the-server]__e0741ee1._.js +1 -1
  173. package/web/.next/server/chunks/ssr/[root-of-the-server]__e0fa59e6._.js +1 -1
  174. package/web/.next/server/chunks/ssr/[root-of-the-server]__e0fa59e6._.js.map +1 -1
  175. package/web/.next/server/chunks/ssr/[root-of-the-server]__ea26ff90._.js +3 -3
  176. package/web/.next/server/chunks/ssr/{[root-of-the-server]__abab3b61._.js → [root-of-the-server]__f83cecd5._.js} +2 -2
  177. package/web/.next/server/chunks/ssr/{[root-of-the-server]__abab3b61._.js.map → [root-of-the-server]__f83cecd5._.js.map} +1 -1
  178. package/web/.next/server/chunks/ssr/[root-of-the-server]__ff0095e3._.js +1 -1
  179. package/web/.next/server/chunks/ssr/_07036593._.js +1 -1
  180. package/web/.next/server/chunks/ssr/_07036593._.js.map +1 -1
  181. package/web/.next/server/chunks/ssr/{_7c360295._.js → _0a666f6f._.js} +2 -2
  182. package/web/.next/server/chunks/ssr/{_7c360295._.js.map → _0a666f6f._.js.map} +1 -1
  183. package/web/.next/server/chunks/ssr/_0d2a7595._.js +1 -1
  184. package/web/.next/server/chunks/ssr/_0d2a7595._.js.map +1 -1
  185. package/web/.next/server/chunks/ssr/_101de7c3._.js +1 -1
  186. package/web/.next/server/chunks/ssr/_101de7c3._.js.map +1 -1
  187. package/web/.next/server/chunks/ssr/_24fca3cf._.js +1 -1
  188. package/web/.next/server/chunks/ssr/_24fca3cf._.js.map +1 -1
  189. package/web/.next/server/chunks/ssr/_2bc48f3d._.js +1 -1
  190. package/web/.next/server/chunks/ssr/_2bc48f3d._.js.map +1 -1
  191. package/web/.next/server/chunks/ssr/_32f66845._.js +1 -1
  192. package/web/.next/server/chunks/ssr/_408848e6._.js +1 -1
  193. package/web/.next/server/chunks/ssr/_408848e6._.js.map +1 -1
  194. package/web/.next/server/chunks/ssr/_40e02782._.js +1 -1
  195. package/web/.next/server/chunks/ssr/_40e02782._.js.map +1 -1
  196. package/web/.next/server/chunks/ssr/_486d45d6._.js +1 -1
  197. package/web/.next/server/chunks/ssr/_486d45d6._.js.map +1 -1
  198. package/web/.next/server/chunks/ssr/{_7b8add77._.js → _4c81bcc4._.js} +2 -2
  199. package/web/.next/server/chunks/ssr/{_7b8add77._.js.map → _4c81bcc4._.js.map} +1 -1
  200. package/web/.next/server/chunks/ssr/{_92c3fc3d._.js → _4cec17d6._.js} +2 -2
  201. package/web/.next/server/chunks/ssr/{_92c3fc3d._.js.map → _4cec17d6._.js.map} +1 -1
  202. package/web/.next/server/chunks/ssr/_56b9d60f._.js +1 -1
  203. package/web/.next/server/chunks/ssr/_56b9d60f._.js.map +1 -1
  204. package/web/.next/server/chunks/ssr/{_1d23a6ad._.js → _5916a65c._.js} +2 -2
  205. package/web/.next/server/chunks/ssr/{_1d23a6ad._.js.map → _5916a65c._.js.map} +1 -1
  206. package/web/.next/server/chunks/ssr/_5cbb0e22._.js +1 -1
  207. package/web/.next/server/chunks/ssr/_5cbb0e22._.js.map +1 -1
  208. package/web/.next/server/chunks/ssr/{_4a25fd2a._.js → _69d28743._.js} +2 -2
  209. package/web/.next/server/chunks/ssr/{_4a25fd2a._.js.map → _69d28743._.js.map} +1 -1
  210. package/web/.next/server/chunks/ssr/{_c37ef8be._.js → _74ee33b9._.js} +2 -2
  211. package/web/.next/server/chunks/ssr/{_c37ef8be._.js.map → _74ee33b9._.js.map} +1 -1
  212. package/web/.next/server/chunks/ssr/_7ba67729._.js +1 -1
  213. package/web/.next/server/chunks/ssr/_7ba67729._.js.map +1 -1
  214. package/web/.next/server/chunks/ssr/_805ae1aa._.js +1 -1
  215. package/web/.next/server/chunks/ssr/_805ae1aa._.js.map +1 -1
  216. package/web/.next/server/chunks/ssr/_87cf18c3._.js +1 -1
  217. package/web/.next/server/chunks/ssr/_87cf18c3._.js.map +1 -1
  218. package/web/.next/server/chunks/ssr/_8a700ff4._.js +1 -1
  219. package/web/.next/server/chunks/ssr/_8a700ff4._.js.map +1 -1
  220. package/web/.next/server/chunks/ssr/{_c77a0a62._.js → _904d6c22._.js} +2 -2
  221. package/web/.next/server/chunks/ssr/{_c77a0a62._.js.map → _904d6c22._.js.map} +1 -1
  222. package/web/.next/server/chunks/ssr/_95b97274._.js +1 -1
  223. package/web/.next/server/chunks/ssr/_95b97274._.js.map +1 -1
  224. package/web/.next/server/chunks/ssr/{_3f6a8669._.js → _a85af8c2._.js} +2 -2
  225. package/web/.next/server/chunks/ssr/{_3f6a8669._.js.map → _a85af8c2._.js.map} +1 -1
  226. package/web/.next/server/chunks/ssr/_c2e196ee._.js +1 -1
  227. package/web/.next/server/chunks/ssr/_c2e196ee._.js.map +1 -1
  228. package/web/.next/server/chunks/ssr/_ca3b7bf7._.js +1 -1
  229. package/web/.next/server/chunks/ssr/_ca3b7bf7._.js.map +1 -1
  230. package/web/.next/server/chunks/ssr/_d53224a9._.js +1 -1
  231. package/web/.next/server/chunks/ssr/_d53224a9._.js.map +1 -1
  232. package/web/.next/server/chunks/ssr/_d573dcc2._.js +1 -1
  233. package/web/.next/server/chunks/ssr/_e2671e14._.js +1 -1
  234. package/web/.next/server/chunks/ssr/_e2671e14._.js.map +1 -1
  235. package/web/.next/server/chunks/ssr/_ecd45b17._.js +1 -1
  236. package/web/.next/server/chunks/ssr/_ecd45b17._.js.map +1 -1
  237. package/web/.next/server/chunks/ssr/{_3a9f8b6f._.js → _f0bdafe2._.js} +2 -2
  238. package/web/.next/server/chunks/ssr/{_3a9f8b6f._.js.map → _f0bdafe2._.js.map} +1 -1
  239. package/web/.next/server/chunks/ssr/_f602cc9f._.js +1 -1
  240. package/web/.next/server/chunks/ssr/_f602cc9f._.js.map +1 -1
  241. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js +1 -1
  242. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js.map +1 -1
  243. package/web/.next/server/chunks/ssr/f3a1f_components_common_control-center-drawer_repository-drawer-client_tsx_39a00c03._.js +1 -1
  244. package/web/.next/server/chunks/ssr/src_presentation_web_0e291f0b._.js +1 -1
  245. package/web/.next/server/chunks/ssr/src_presentation_web_0e291f0b._.js.map +1 -1
  246. package/web/.next/server/chunks/ssr/src_presentation_web_1d8d177f._.js +1 -1
  247. package/web/.next/server/chunks/ssr/src_presentation_web_1d8d177f._.js.map +1 -1
  248. package/web/.next/server/chunks/ssr/src_presentation_web_450b58fc._.js +1 -1
  249. package/web/.next/server/chunks/ssr/src_presentation_web_450b58fc._.js.map +1 -1
  250. package/web/.next/server/chunks/ssr/src_presentation_web_47727150._.js +1 -1
  251. package/web/.next/server/chunks/ssr/src_presentation_web_47727150._.js.map +1 -1
  252. package/web/.next/server/chunks/ssr/src_presentation_web_64fcfc84._.js +1 -1
  253. package/web/.next/server/chunks/ssr/src_presentation_web_64fcfc84._.js.map +1 -1
  254. package/web/.next/server/chunks/ssr/{src_presentation_web_011b1b2b._.js → src_presentation_web_6f8efc48._.js} +2 -2
  255. package/web/.next/server/chunks/ssr/{src_presentation_web_011b1b2b._.js.map → src_presentation_web_6f8efc48._.js.map} +1 -1
  256. package/web/.next/server/chunks/ssr/src_presentation_web_74b7bdb2._.js +1 -1
  257. package/web/.next/server/chunks/ssr/src_presentation_web_74b7bdb2._.js.map +1 -1
  258. package/web/.next/server/chunks/ssr/src_presentation_web_82aeca34._.js +1 -1
  259. package/web/.next/server/chunks/ssr/src_presentation_web_82aeca34._.js.map +1 -1
  260. package/web/.next/server/chunks/ssr/src_presentation_web_8a564d47._.js +1 -1
  261. package/web/.next/server/chunks/ssr/src_presentation_web_8a564d47._.js.map +1 -1
  262. package/web/.next/server/chunks/ssr/src_presentation_web_9a543843._.js +1 -1
  263. package/web/.next/server/chunks/ssr/src_presentation_web_9a543843._.js.map +1 -1
  264. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app__not-found_page_actions_f4f3fad9.js +1 -1
  265. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app__not-found_page_actions_f4f3fad9.js.map +1 -1
  266. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_agents_page_actions_d4bd4711.js +1 -1
  267. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_agents_page_actions_d4bd4711.js.map +1 -1
  268. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_onboarding_page_actions_bb695e8d.js +1 -1
  269. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_onboarding_page_actions_bb695e8d.js.map +1 -1
  270. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_page_actions_ac47e420.js +1 -1
  271. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_page_actions_ac47e420.js.map +1 -1
  272. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_projects_page_actions_c91a23a8.js +1 -1
  273. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_projects_page_actions_c91a23a8.js.map +1 -1
  274. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_version_page_actions_63c2d912.js +1 -1
  275. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_version_page_actions_63c2d912.js.map +1 -1
  276. package/web/.next/server/chunks/ssr/src_presentation_web_a53a3da6._.js +1 -1
  277. package/web/.next/server/chunks/ssr/src_presentation_web_a53a3da6._.js.map +1 -1
  278. package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_246617fe._.js +3 -3
  279. package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_adopt-local-directory_ts_75f1f28c._.js +1 -1
  280. package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_adopt-local-directory_ts_75f1f28c._.js.map +1 -1
  281. package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_approve-feature_ts_9453ce8b._.js +1 -1
  282. package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_open-directory_ts_1209d917._.js +1 -1
  283. package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_open-directory_ts_1209d917._.js.map +1 -1
  284. package/web/.next/server/chunks/ssr/src_presentation_web_app_features_feature-tree-page-client_tsx_34c5cbbf._.js +1 -1
  285. package/web/.next/server/chunks/ssr/src_presentation_web_b1b3c26c._.js +1 -1
  286. package/web/.next/server/chunks/ssr/src_presentation_web_b1b3c26c._.js.map +1 -1
  287. package/web/.next/server/chunks/ssr/src_presentation_web_b98a4353._.js +1 -1
  288. package/web/.next/server/chunks/ssr/src_presentation_web_b98a4353._.js.map +1 -1
  289. package/web/.next/server/chunks/ssr/src_presentation_web_c96ca051._.js +1 -1
  290. package/web/.next/server/chunks/ssr/src_presentation_web_c96ca051._.js.map +1 -1
  291. package/web/.next/server/chunks/ssr/{src_presentation_web_4992017e._.js → src_presentation_web_cc905835._.js} +2 -2
  292. package/web/.next/server/chunks/ssr/{src_presentation_web_4992017e._.js.map → src_presentation_web_cc905835._.js.map} +1 -1
  293. package/web/.next/server/chunks/ssr/src_presentation_web_components_66643378._.js +1 -1
  294. package/web/.next/server/chunks/ssr/src_presentation_web_components_66643378._.js.map +1 -1
  295. package/web/.next/server/chunks/ssr/src_presentation_web_components_agent-editor_agent-editor-tabs_tsx_d5a954b4._.js +1 -1
  296. package/web/.next/server/chunks/ssr/src_presentation_web_components_agent-editor_agent-editor-tabs_tsx_d5a954b4._.js.map +1 -1
  297. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_skills_8a174cac._.js +1 -1
  298. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_skills_8a174cac._.js.map +1 -1
  299. package/web/.next/server/chunks/ssr/src_presentation_web_d3858f16._.js +1 -1
  300. package/web/.next/server/chunks/ssr/src_presentation_web_d3858f16._.js.map +1 -1
  301. package/web/.next/server/chunks/ssr/src_presentation_web_d7f8130c._.js +1 -1
  302. package/web/.next/server/chunks/ssr/src_presentation_web_d7f8130c._.js.map +1 -1
  303. package/web/.next/server/chunks/ssr/src_presentation_web_dddd8ccd._.js +1 -1
  304. package/web/.next/server/chunks/ssr/src_presentation_web_dddd8ccd._.js.map +1 -1
  305. package/web/.next/server/chunks/ssr/src_presentation_web_e13d58b0._.js +1 -1
  306. package/web/.next/server/chunks/ssr/src_presentation_web_e13d58b0._.js.map +1 -1
  307. package/web/.next/server/chunks/ssr/src_presentation_web_ee94a9aa._.js +1 -1
  308. package/web/.next/server/chunks/ssr/src_presentation_web_ee94a9aa._.js.map +1 -1
  309. package/web/.next/server/chunks/ssr/src_presentation_web_f0fcfdff._.js +1 -1
  310. package/web/.next/server/chunks/ssr/src_presentation_web_f0fcfdff._.js.map +1 -1
  311. package/web/.next/server/chunks/ssr/src_presentation_web_f17e8516._.js +1 -1
  312. package/web/.next/server/chunks/ssr/src_presentation_web_f17e8516._.js.map +1 -1
  313. package/web/.next/server/chunks/ssr/src_presentation_web_f7180fec._.js +1 -1
  314. package/web/.next/server/chunks/ssr/src_presentation_web_f7180fec._.js.map +1 -1
  315. package/web/.next/server/pages/500.html +2 -2
  316. package/web/.next/server/server-reference-manifest.js +1 -1
  317. package/web/.next/server/server-reference-manifest.json +110 -110
  318. package/web/.next/static/chunks/{a8d8f9c61ec519d7.js → 06a3ce6f0a63bb38.js} +1 -1
  319. package/web/.next/static/chunks/{a7920ec2696dea6b.js → 0872ff9e21208474.js} +1 -1
  320. package/web/.next/static/chunks/{8505947d14732a53.js → 18d0b0f66c3a5030.js} +1 -1
  321. package/web/.next/static/chunks/{21ae217482df277e.js → 1935b7e366ff3eb6.js} +1 -1
  322. package/web/.next/static/chunks/{bc7ff90acabf822e.js → 19aa3cc6df5f5833.js} +1 -1
  323. package/web/.next/static/chunks/{14ae33e3d05df7ae.js → 25277f492a8e114f.js} +1 -1
  324. package/web/.next/static/chunks/{a9b788473a1a2f74.js → 2fd21b1e8f74dddd.js} +1 -1
  325. package/web/.next/static/chunks/{73de88f5c150f826.js → 35ea128cac9da3aa.js} +1 -1
  326. package/web/.next/static/chunks/{16a0872b47a0c873.js → 3b0e5f1d61bbe5b9.js} +1 -1
  327. package/web/.next/static/chunks/{2e2bbe08a2ced79d.js → 3e4b4cc39d18c2d3.js} +1 -1
  328. package/web/.next/static/chunks/{8aa1b266648944de.js → 3fdf3bfbaa542a58.js} +1 -1
  329. package/web/.next/static/chunks/{28b1e727e07ee99e.js → 46bacb3927eb4aad.js} +1 -1
  330. package/web/.next/static/chunks/{f2eb8ed0ba27add9.js → 4e6d1ce8b909633b.js} +1 -1
  331. package/web/.next/static/chunks/{ef1c174fb55135fb.js → 506cd958e1d95d99.js} +1 -1
  332. package/web/.next/static/chunks/{eb1c0aac34a995fe.js → 558f703ea70fb12f.js} +1 -1
  333. package/web/.next/static/chunks/{46628109fd139e38.js → 55f0874ed4cff0b4.js} +1 -1
  334. package/web/.next/static/chunks/64228763c0a5b398.js +1 -0
  335. package/web/.next/static/chunks/{df57f17a33536493.js → 66a4af80ba31ab99.js} +1 -1
  336. package/web/.next/static/chunks/{a4379769c9845bed.js → 69001f2dc93cd854.js} +1 -1
  337. package/web/.next/static/chunks/{04bf00ba0dfe132e.js → 7cd5b1d4aecb605f.js} +1 -1
  338. package/web/.next/static/chunks/{98a7e6a733c1eec1.js → 8437b14aa3d30c4a.js} +1 -1
  339. package/web/.next/static/chunks/{1d767f2bf1e60119.js → 85ddd1e61b5acfa7.js} +1 -1
  340. package/web/.next/static/chunks/{3d096d025d3a4300.js → 88e44bfd13326e0a.js} +1 -1
  341. package/web/.next/static/chunks/{cd553eaf62c59330.js → 89ea6a36b13564bb.js} +3 -3
  342. package/web/.next/static/chunks/{c3f8977262e99729.js → 8e05b72447a6de2d.js} +1 -1
  343. package/web/.next/static/chunks/92b0f4ef034da238.js +1 -0
  344. package/web/.next/static/chunks/{661ae8c69fd4c6e0.js → 9955264849876242.js} +1 -1
  345. package/web/.next/static/chunks/a8bd431b98488304.js +1 -0
  346. package/web/.next/static/chunks/{b1ce1428c415689c.js → aff24d3846940734.js} +1 -1
  347. package/web/.next/static/chunks/{6b2db436783731a9.js → bed79ff1fb1474b2.js} +1 -1
  348. package/web/.next/static/chunks/{2964ed9040700d3d.js → cafa3b9f2631ead4.js} +1 -1
  349. package/web/.next/static/chunks/{444614c3115ff33e.js → cf29be39771eed74.js} +1 -1
  350. package/web/.next/static/chunks/{6724456c4ee12a6c.js → e0033d3fa646e3ba.js} +1 -1
  351. package/web/.next/static/chunks/{29d53f36d9cf3511.js → e097ae94a23d6f6e.js} +1 -1
  352. package/web/.next/static/chunks/e4d71aefcaf0bcb8.js +1 -0
  353. package/web/.next/static/chunks/{0797756ed1f6ae7c.js → e62855ec84a7075d.js} +1 -1
  354. package/web/.next/static/chunks/e648942ddca82602.js +1 -0
  355. package/web/.next/static/chunks/{f478ef3c6d77bea8.js → f039f96340b89e08.js} +1 -1
  356. package/web/.next/static/chunks/{ea31f78dde34f8e1.js → f4c2e3f10d87b772.js} +1 -1
  357. package/web/.next/static/chunks/f671dcbbfd92b775.js +1 -0
  358. package/web/.next/static/chunks/{e1fee822ce83d4e4.js → fd4d834af4d4bf63.js} +1 -1
  359. package/web/.next/static/chunks/4d7b6685af2c61f9.js +0 -1
  360. package/web/.next/static/chunks/6352e668ea0a8df7.js +0 -1
  361. package/web/.next/static/chunks/74098475a938bee3.js +0 -1
  362. package/web/.next/static/chunks/798f66a5fdd1e765.js +0 -1
  363. package/web/.next/static/chunks/b3e91925f7db1ae9.js +0 -1
  364. package/web/.next/static/chunks/c8c4ea71670c4e55.js +0 -1
  365. /package/web/.next/static/{ChVi9RNp-ZER74W2GrrbV → iJI1BMB-BwFI6JHl9YJW8}/_buildManifest.js +0 -0
  366. /package/web/.next/static/{ChVi9RNp-ZER74W2GrrbV → iJI1BMB-BwFI6JHl9YJW8}/_clientMiddlewareManifest.json +0 -0
  367. /package/web/.next/static/{ChVi9RNp-ZER74W2GrrbV → iJI1BMB-BwFI6JHl9YJW8}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../src/presentation/web/app/projects/%5Bslug%5D/settings/project-settings-client.tsx","../../../../../../../src/presentation/web/components/features/projects/project-members-panel.tsx","../../../../../../../src/presentation/web/app/actions/data%3Ad5344a%20%3Ctext/javascript%3E","../../../../../../../src/presentation/web/app/actions/data%3A594da6%20%3Ctext/javascript%3E","../../../../../../../src/presentation/web/app/actions/data%3A79ce4c%20%3Ctext/javascript%3E","../../../../../../../src/presentation/web/app/actions/data%3Acf724c%20%3Ctext/javascript%3E","../../../../../../../src/presentation/web/app/actions/data%3Adda931%20%3Ctext/javascript%3E","../../../../../../../src/presentation/web/app/actions/data%3A72685a%20%3Ctext/javascript%3E","../../../../../../../src/presentation/web/app/actions/data%3A9074fd%20%3Ctext/javascript%3E","../../../../../../../src/presentation/web/app/actions/data%3A81da15%20%3Ctext/javascript%3E"],"sourcesContent":["'use client';\n\nimport { useState, useCallback } from 'react';\nimport { useRouter } from 'next/navigation';\nimport { ArrowLeft, Settings, Trash2, Plus } from 'lucide-react';\nimport { cn } from '@/lib/utils';\nimport { Button } from '@/components/ui/button';\nimport { Input } from '@/components/ui/input';\nimport { Badge } from '@/components/ui/badge';\nimport type {\n PmProject,\n WorkItemState,\n Label,\n PmProjectMember,\n} from '@shepai/core/domain/generated/output';\nimport { EstimateSettings } from '@/components/pm/estimate-settings/estimate-settings';\nimport { ProjectMembersPanel } from '@/components/features/projects/project-members-panel';\nimport { updatePmProject } from '@/app/actions/update-pm-project';\nimport { deletePmProject } from '@/app/actions/delete-pm-project';\nimport { createWorkItemState, deleteWorkItemState } from '@/app/actions/manage-work-item-states';\nimport { createLabel, deleteLabel } from '@/app/actions/manage-labels';\nimport { addProjectMember } from '@/app/actions/add-project-member';\nimport { removeProjectMember } from '@/app/actions/remove-project-member';\nimport { updateProjectMemberRole } from '@/app/actions/update-project-member-role';\n\nexport interface ProjectSettingsClientProps {\n project: PmProject;\n states: WorkItemState[];\n labels: Label[];\n members?: PmProjectMember[];\n className?: string;\n}\n\nconst STATE_GROUP_COLORS: Record<string, string> = {\n backlog: 'bg-gray-400',\n unstarted: 'bg-blue-400',\n started: 'bg-yellow-400',\n completed: 'bg-green-400',\n cancelled: 'bg-red-400',\n};\n\nexport function ProjectSettingsClient({\n project,\n states: initialStates,\n labels: initialLabels,\n members: initialMembers = [],\n className,\n}: ProjectSettingsClientProps) {\n const router = useRouter();\n const [name, setName] = useState(project.name);\n const [description, setDescription] = useState(project.description ?? '');\n const [saving, setSaving] = useState(false);\n const [states, setStates] = useState<WorkItemState[]>(initialStates);\n const [labels, setLabels] = useState<Label[]>(initialLabels);\n const [newStateName, setNewStateName] = useState('');\n const [newLabelName, setNewLabelName] = useState('');\n const [newLabelColor, setNewLabelColor] = useState('#6366f1');\n const [deleteConfirm, setDeleteConfirm] = useState('');\n\n const handleSaveGeneral = useCallback(async () => {\n setSaving(true);\n await updatePmProject(project.id, {\n name: name.trim(),\n description: description.trim() || undefined,\n });\n setSaving(false);\n }, [project.id, name, description]);\n\n const handleAddState = useCallback(async () => {\n if (!newStateName.trim()) return;\n const result = await createWorkItemState({\n projectId: project.id,\n name: newStateName.trim(),\n color: '#6366f1',\n stateGroup: 'unstarted',\n });\n if (result.state) {\n setStates((prev) => [...prev, result.state!]);\n setNewStateName('');\n }\n }, [project.id, newStateName]);\n\n const handleDeleteState = useCallback(async (stateId: string) => {\n const result = await deleteWorkItemState(stateId);\n if (!result.error) {\n setStates((prev) => prev.filter((s) => s.id !== stateId));\n }\n }, []);\n\n const handleAddLabel = useCallback(async () => {\n if (!newLabelName.trim()) return;\n const result = await createLabel({\n projectId: project.id,\n name: newLabelName.trim(),\n color: newLabelColor,\n });\n if (result.label) {\n setLabels((prev) => [...prev, result.label!]);\n setNewLabelName('');\n }\n }, [project.id, newLabelName, newLabelColor]);\n\n const handleDeleteLabel = useCallback(async (labelId: string) => {\n const result = await deleteLabel(labelId);\n if (!result.error) {\n setLabels((prev) => prev.filter((l) => l.id !== labelId));\n }\n }, []);\n\n const handleDeleteProject = useCallback(async () => {\n if (deleteConfirm !== project.name) return;\n const result = await deletePmProject(project.id);\n if (!result.error) {\n router.push('/projects');\n }\n }, [project.id, project.name, deleteConfirm, router]);\n\n return (\n <div data-testid=\"project-settings\" className={cn('max-w-2xl space-y-8', className)}>\n {/* Header */}\n <div className=\"flex items-center gap-2\">\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-7 w-7 p-0\"\n onClick={() => router.push(`/projects/${project.slug}`)}\n data-testid=\"back-to-project\"\n >\n <ArrowLeft className=\"h-4 w-4\" />\n </Button>\n <Settings className=\"text-muted-foreground h-4 w-4\" />\n <h1 className=\"text-sm font-bold tracking-tight\">Project Settings</h1>\n <Badge variant=\"outline\" className=\"text-[10px]\">\n {project.identifierPrefix}\n </Badge>\n </div>\n\n {/* General Settings */}\n <section className=\"space-y-3\" data-testid=\"general-settings\">\n <h2 className=\"text-xs font-semibold tracking-wide uppercase\">General</h2>\n <div className=\"space-y-2\">\n <div>\n <label className=\"text-muted-foreground mb-1 block text-[10px] font-medium\">\n Project Name\n </label>\n <Input\n value={name}\n onChange={(e) => setName(e.target.value)}\n className=\"h-8 text-xs\"\n data-testid=\"project-name-input\"\n />\n </div>\n <div>\n <label className=\"text-muted-foreground mb-1 block text-[10px] font-medium\">\n Description\n </label>\n <Input\n value={description}\n onChange={(e) => setDescription(e.target.value)}\n placeholder=\"Optional description\"\n className=\"h-8 text-xs\"\n data-testid=\"project-description-input\"\n />\n </div>\n <Button\n size=\"sm\"\n className=\"h-7 text-xs\"\n onClick={handleSaveGeneral}\n disabled={saving || !name.trim()}\n data-testid=\"save-general-btn\"\n >\n {saving ? 'Saving...' : 'Save Changes'}\n </Button>\n </div>\n </section>\n\n <hr className=\"border-border\" />\n\n {/* Estimate Settings */}\n <section data-testid=\"estimate-settings-section\">\n <EstimateSettings projectId={project.id} currentEstimateType={project.estimateType} />\n </section>\n\n <hr className=\"border-border\" />\n\n {/* Work Item States */}\n <section className=\"space-y-3\" data-testid=\"states-settings\">\n <h2 className=\"text-xs font-semibold tracking-wide uppercase\">Work Item States</h2>\n <div className=\"space-y-1\">\n {states.map((state) => (\n <div\n key={state.id}\n className=\"group flex items-center gap-2 rounded-sm px-2 py-1 text-xs\"\n data-testid={`state-${state.id}`}\n >\n <span\n className=\"h-2.5 w-2.5 shrink-0 rounded-full\"\n style={{ backgroundColor: state.color }}\n />\n <span className=\"flex-1\">{state.name}</span>\n <Badge\n variant=\"outline\"\n className={cn('text-[9px]', STATE_GROUP_COLORS[state.stateGroup] ?? 'bg-gray-400')}\n >\n {state.stateGroup}\n </Badge>\n {state.isDefault ? (\n <Badge variant=\"secondary\" className=\"text-[9px]\">\n default\n </Badge>\n ) : (\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"text-destructive hidden h-5 w-5 p-0 group-hover:flex\"\n onClick={() => handleDeleteState(state.id)}\n title=\"Delete state\"\n >\n <Trash2 className=\"h-3 w-3\" />\n </Button>\n )}\n </div>\n ))}\n </div>\n <div className=\"flex items-center gap-2\">\n <Input\n value={newStateName}\n onChange={(e) => setNewStateName(e.target.value)}\n placeholder=\"New state name\"\n className=\"h-7 flex-1 text-xs\"\n data-testid=\"new-state-input\"\n onKeyDown={(e) => {\n if (e.key === 'Enter') handleAddState();\n }}\n />\n <Button\n variant=\"outline\"\n size=\"sm\"\n className=\"h-7 text-xs\"\n onClick={handleAddState}\n disabled={!newStateName.trim()}\n data-testid=\"add-state-btn\"\n >\n <Plus className=\"mr-1 h-3 w-3\" />\n Add\n </Button>\n </div>\n </section>\n\n <hr className=\"border-border\" />\n\n {/* Labels */}\n <section className=\"space-y-3\" data-testid=\"labels-settings\">\n <h2 className=\"text-xs font-semibold tracking-wide uppercase\">Labels</h2>\n {labels.length === 0 ? (\n <p className=\"text-muted-foreground text-[10px]\">No labels yet</p>\n ) : (\n <div className=\"flex flex-wrap gap-1.5\">\n {labels.map((label) => (\n <div\n key={label.id}\n className=\"group flex items-center gap-1 rounded-full border px-2 py-0.5\"\n data-testid={`label-${label.id}`}\n >\n <span className=\"h-2 w-2 rounded-full\" style={{ backgroundColor: label.color }} />\n <span className=\"text-[10px]\">{label.name}</span>\n <button\n type=\"button\"\n className=\"text-destructive ml-0.5 hidden text-xs group-hover:inline\"\n onClick={() => handleDeleteLabel(label.id)}\n title=\"Delete label\"\n >\n ×\n </button>\n </div>\n ))}\n </div>\n )}\n <div className=\"flex items-center gap-2\">\n <input\n type=\"color\"\n value={newLabelColor}\n onChange={(e) => setNewLabelColor(e.target.value)}\n className=\"h-7 w-7 cursor-pointer rounded border-0 p-0\"\n data-testid=\"new-label-color\"\n />\n <Input\n value={newLabelName}\n onChange={(e) => setNewLabelName(e.target.value)}\n placeholder=\"New label name\"\n className=\"h-7 flex-1 text-xs\"\n data-testid=\"new-label-input\"\n onKeyDown={(e) => {\n if (e.key === 'Enter') handleAddLabel();\n }}\n />\n <Button\n variant=\"outline\"\n size=\"sm\"\n className=\"h-7 text-xs\"\n onClick={handleAddLabel}\n disabled={!newLabelName.trim()}\n data-testid=\"add-label-btn\"\n >\n <Plus className=\"mr-1 h-3 w-3\" />\n Add\n </Button>\n </div>\n </section>\n\n <hr className=\"border-border\" />\n\n {/* Members */}\n <section data-testid=\"members-settings\">\n <ProjectMembersPanel\n projectId={project.id}\n members={initialMembers}\n currentUserId=\"\"\n onAddMember={addProjectMember}\n onRemoveMember={removeProjectMember}\n onUpdateRole={updateProjectMemberRole}\n />\n </section>\n\n <hr className=\"border-border\" />\n\n {/* Danger Zone */}\n <section className=\"space-y-3\" data-testid=\"danger-zone\">\n <h2 className=\"text-destructive text-xs font-semibold tracking-wide uppercase\">\n Danger Zone\n </h2>\n <div className=\"border-destructive/20 rounded-md border p-3\">\n <p className=\"mb-2 text-xs\">\n Permanently delete this project and all its work items, cycles, modules, and pages.\n </p>\n <p className=\"text-muted-foreground mb-2 text-[10px]\">\n Type <strong>{project.name}</strong> to confirm.\n </p>\n <div className=\"flex items-center gap-2\">\n <Input\n value={deleteConfirm}\n onChange={(e) => setDeleteConfirm(e.target.value)}\n placeholder={project.name}\n className=\"h-7 flex-1 text-xs\"\n data-testid=\"delete-confirm-input\"\n />\n <Button\n variant=\"destructive\"\n size=\"sm\"\n className=\"h-7 text-xs\"\n onClick={handleDeleteProject}\n disabled={deleteConfirm !== project.name}\n data-testid=\"delete-project-btn\"\n >\n <Trash2 className=\"mr-1 h-3 w-3\" />\n Delete Project\n </Button>\n </div>\n </div>\n </section>\n </div>\n );\n}\n","'use client';\n\nimport { useState, useCallback } from 'react';\nimport { Button } from '@/components/ui/button';\nimport { Input } from '@/components/ui/input';\nimport { Label } from '@/components/ui/label';\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from '@/components/ui/select';\nimport { Badge } from '@/components/ui/badge';\nimport { ProjectRole } from '@shepai/core/domain/generated/output';\nimport type { PmProjectMember } from '@shepai/core/domain/generated/output';\n\nexport interface ProjectMembersPanelProps {\n projectId: string;\n members: PmProjectMember[];\n currentUserId: string;\n onAddMember: (input: {\n projectId: string;\n userId: string;\n role: ProjectRole;\n actorId: string;\n }) => Promise<{ member?: PmProjectMember; error?: string }>;\n onRemoveMember: (input: {\n projectId: string;\n userId: string;\n actorId: string;\n }) => Promise<{ error?: string }>;\n onUpdateRole: (input: {\n projectId: string;\n userId: string;\n newRole: ProjectRole;\n actorId: string;\n }) => Promise<{ error?: string }>;\n}\n\nconst ROLE_COLORS: Record<string, string> = {\n Admin: 'bg-blue-100 text-blue-800 dark:bg-blue-900 dark:text-blue-300',\n Member: 'bg-green-100 text-green-800 dark:bg-green-900 dark:text-green-300',\n Guest: 'bg-gray-100 text-gray-800 dark:bg-gray-900 dark:text-gray-300',\n};\n\nexport function ProjectMembersPanel({\n projectId,\n members: initialMembers,\n currentUserId,\n onAddMember,\n onRemoveMember,\n onUpdateRole,\n}: ProjectMembersPanelProps) {\n const [members, setMembers] = useState<PmProjectMember[]>(initialMembers);\n const [newUserId, setNewUserId] = useState('');\n const [newRole, setNewRole] = useState<ProjectRole>(ProjectRole.Member);\n const [error, setError] = useState<string | null>(null);\n const [loading, setLoading] = useState(false);\n\n const isCurrentUserAdmin = members.some(\n (m) => m.userId === currentUserId && m.role === ProjectRole.Admin\n );\n\n const handleAdd = useCallback(async () => {\n if (!newUserId.trim()) return;\n setLoading(true);\n setError(null);\n\n const result = await onAddMember({\n projectId,\n userId: newUserId.trim(),\n role: newRole,\n actorId: currentUserId,\n });\n\n if (result.error) {\n setError(result.error);\n } else if (result.member) {\n setMembers((prev) => [...prev, result.member!]);\n setNewUserId('');\n setNewRole(ProjectRole.Member);\n }\n setLoading(false);\n }, [newUserId, newRole, projectId, currentUserId, onAddMember]);\n\n const handleRemove = useCallback(\n async (userId: string) => {\n setError(null);\n const result = await onRemoveMember({ projectId, userId, actorId: currentUserId });\n if (result.error) {\n setError(result.error);\n } else {\n setMembers((prev) => prev.filter((m) => m.userId !== userId));\n }\n },\n [projectId, currentUserId, onRemoveMember]\n );\n\n const handleRoleChange = useCallback(\n async (userId: string, role: ProjectRole) => {\n setError(null);\n const result = await onUpdateRole({\n projectId,\n userId,\n newRole: role,\n actorId: currentUserId,\n });\n if (result.error) {\n setError(result.error);\n } else {\n setMembers((prev) => prev.map((m) => (m.userId === userId ? { ...m, role } : m)));\n }\n },\n [projectId, currentUserId, onUpdateRole]\n );\n\n return (\n <div data-testid=\"project-members-panel\" className=\"space-y-4\">\n <h3 className=\"text-lg font-semibold\">Project Members</h3>\n\n {error ? (\n <div\n data-testid=\"members-error\"\n className=\"rounded border border-red-200 bg-red-50 p-3 text-sm text-red-800 dark:border-red-800 dark:bg-red-950 dark:text-red-300\"\n >\n {error}\n </div>\n ) : null}\n\n <div className=\"divide-y rounded border\">\n {members.map((member) => (\n <div\n key={member.id}\n data-testid={`member-row-${member.userId}`}\n className=\"flex items-center justify-between p-3\"\n >\n <div className=\"flex items-center gap-3\">\n <span className=\"text-sm font-medium\">{member.userId}</span>\n <Badge className={ROLE_COLORS[member.role] ?? ''} variant=\"secondary\">\n {member.role}\n </Badge>\n </div>\n\n {isCurrentUserAdmin && member.userId !== currentUserId ? (\n <div className=\"flex items-center gap-2\">\n <Select\n value={member.role}\n onValueChange={(value) => handleRoleChange(member.userId, value as ProjectRole)}\n >\n <SelectTrigger className=\"w-[120px]\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value={ProjectRole.Admin}>Admin</SelectItem>\n <SelectItem value={ProjectRole.Member}>Member</SelectItem>\n <SelectItem value={ProjectRole.Guest}>Guest</SelectItem>\n </SelectContent>\n </Select>\n <Button variant=\"destructive\" size=\"sm\" onClick={() => handleRemove(member.userId)}>\n Remove\n </Button>\n </div>\n ) : null}\n </div>\n ))}\n\n {members.length === 0 && (\n <div className=\"text-muted-foreground p-4 text-center text-sm\">\n No members in this project.\n </div>\n )}\n </div>\n\n {isCurrentUserAdmin ? (\n <div data-testid=\"add-member-form\" className=\"flex items-end gap-3 rounded border p-3\">\n <div className=\"flex-1\">\n <Label htmlFor=\"new-user-id\">User ID</Label>\n <Input\n id=\"new-user-id\"\n value={newUserId}\n onChange={(e) => setNewUserId(e.target.value)}\n placeholder=\"Enter user ID\"\n disabled={loading}\n />\n </div>\n <div className=\"w-[140px]\">\n <Label htmlFor=\"new-role\">Role</Label>\n <Select value={newRole} onValueChange={(value) => setNewRole(value as ProjectRole)}>\n <SelectTrigger id=\"new-role\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value={ProjectRole.Admin}>Admin</SelectItem>\n <SelectItem value={ProjectRole.Member}>Member</SelectItem>\n <SelectItem value={ProjectRole.Guest}>Guest</SelectItem>\n </SelectContent>\n </Select>\n </div>\n <Button onClick={handleAdd} disabled={loading || !newUserId.trim()}>\n {loading ? 'Adding...' : 'Add Member'}\n </Button>\n </div>\n ) : null}\n </div>\n );\n}\n","/* __next_internal_action_entry_do_not_use__ [{\"4001345934d380fb35782cdafcb722d43aa70ae689\":\"deletePmProject\"},\"src/presentation/web/app/actions/delete-pm-project.ts\",\"\"] */\"use turbopack no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_0=/*#__PURE__*/createServerReference(\"4001345934d380fb35782cdafcb722d43aa70ae689\",callServer,void 0,findSourceMapURL,\"deletePmProject\");export{$$RSC_SERVER_ACTION_0 as deletePmProject};","/* __next_internal_action_entry_do_not_use__ [{\"401e29c448871c22d713bac09b9531948ef6a0ff9c\":\"createWorkItemState\"},\"src/presentation/web/app/actions/manage-work-item-states.ts\",\"\"] */\"use turbopack no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_1=/*#__PURE__*/createServerReference(\"401e29c448871c22d713bac09b9531948ef6a0ff9c\",callServer,void 0,findSourceMapURL,\"createWorkItemState\");export{$$RSC_SERVER_ACTION_1 as createWorkItemState};","/* __next_internal_action_entry_do_not_use__ [{\"402f850b7243f79c857e807309f6e44c615bf3c6ee\":\"deleteWorkItemState\"},\"src/presentation/web/app/actions/manage-work-item-states.ts\",\"\"] */\"use turbopack no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_3=/*#__PURE__*/createServerReference(\"402f850b7243f79c857e807309f6e44c615bf3c6ee\",callServer,void 0,findSourceMapURL,\"deleteWorkItemState\");export{$$RSC_SERVER_ACTION_3 as deleteWorkItemState};","/* __next_internal_action_entry_do_not_use__ [{\"4019a068b60731a720a0882009cb3cac96491ac470\":\"createLabel\"},\"src/presentation/web/app/actions/manage-labels.ts\",\"\"] */\"use turbopack no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_1=/*#__PURE__*/createServerReference(\"4019a068b60731a720a0882009cb3cac96491ac470\",callServer,void 0,findSourceMapURL,\"createLabel\");export{$$RSC_SERVER_ACTION_1 as createLabel};","/* __next_internal_action_entry_do_not_use__ [{\"40e38599b350a2f204e921cd6e9b34f7ea7d29f4c5\":\"deleteLabel\"},\"src/presentation/web/app/actions/manage-labels.ts\",\"\"] */\"use turbopack no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_3=/*#__PURE__*/createServerReference(\"40e38599b350a2f204e921cd6e9b34f7ea7d29f4c5\",callServer,void 0,findSourceMapURL,\"deleteLabel\");export{$$RSC_SERVER_ACTION_3 as deleteLabel};","/* __next_internal_action_entry_do_not_use__ [{\"407d5b2d371f4af56e69928874fb5ed40fb57ad0d3\":\"addProjectMember\"},\"src/presentation/web/app/actions/add-project-member.ts\",\"\"] */\"use turbopack no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_0=/*#__PURE__*/createServerReference(\"407d5b2d371f4af56e69928874fb5ed40fb57ad0d3\",callServer,void 0,findSourceMapURL,\"addProjectMember\");export{$$RSC_SERVER_ACTION_0 as addProjectMember};","/* __next_internal_action_entry_do_not_use__ [{\"408917f924a3e5fe0e728d9b6978d612a6cc135649\":\"removeProjectMember\"},\"src/presentation/web/app/actions/remove-project-member.ts\",\"\"] */\"use turbopack no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_0=/*#__PURE__*/createServerReference(\"408917f924a3e5fe0e728d9b6978d612a6cc135649\",callServer,void 0,findSourceMapURL,\"removeProjectMember\");export{$$RSC_SERVER_ACTION_0 as removeProjectMember};","/* __next_internal_action_entry_do_not_use__ [{\"40a38e1088105fe316bd861d82dcf6785541af6524\":\"updateProjectMemberRole\"},\"src/presentation/web/app/actions/update-project-member-role.ts\",\"\"] */\"use turbopack no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_0=/*#__PURE__*/createServerReference(\"40a38e1088105fe316bd861d82dcf6785541af6524\",callServer,void 0,findSourceMapURL,\"updateProjectMemberRole\");export{$$RSC_SERVER_ACTION_0 as updateProjectMemberRole};"],"names":[],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../../../src/presentation/web/app/projects/%5Bslug%5D/settings/project-settings-client.tsx","../../../../../../../src/presentation/web/components/features/projects/project-members-panel.tsx","../../../../../../../src/presentation/web/app/actions/data%3Ad6385d%20%3Ctext/javascript%3E","../../../../../../../src/presentation/web/app/actions/data%3Abf2554%20%3Ctext/javascript%3E","../../../../../../../src/presentation/web/app/actions/data%3A4b722c%20%3Ctext/javascript%3E","../../../../../../../src/presentation/web/app/actions/data%3A29c829%20%3Ctext/javascript%3E","../../../../../../../src/presentation/web/app/actions/data%3A55ae93%20%3Ctext/javascript%3E","../../../../../../../src/presentation/web/app/actions/data%3A1a5e4d%20%3Ctext/javascript%3E","../../../../../../../src/presentation/web/app/actions/data%3Afe2ef7%20%3Ctext/javascript%3E","../../../../../../../src/presentation/web/app/actions/data%3Acb44ea%20%3Ctext/javascript%3E"],"sourcesContent":["'use client';\n\nimport { useState, useCallback } from 'react';\nimport { useRouter } from 'next/navigation';\nimport { ArrowLeft, Settings, Trash2, Plus } from 'lucide-react';\nimport { cn } from '@/lib/utils';\nimport { Button } from '@/components/ui/button';\nimport { Input } from '@/components/ui/input';\nimport { Badge } from '@/components/ui/badge';\nimport type {\n PmProject,\n WorkItemState,\n Label,\n PmProjectMember,\n} from '@shepai/core/domain/generated/output';\nimport { EstimateSettings } from '@/components/pm/estimate-settings/estimate-settings';\nimport { ProjectMembersPanel } from '@/components/features/projects/project-members-panel';\nimport { updatePmProject } from '@/app/actions/update-pm-project';\nimport { deletePmProject } from '@/app/actions/delete-pm-project';\nimport { createWorkItemState, deleteWorkItemState } from '@/app/actions/manage-work-item-states';\nimport { createLabel, deleteLabel } from '@/app/actions/manage-labels';\nimport { addProjectMember } from '@/app/actions/add-project-member';\nimport { removeProjectMember } from '@/app/actions/remove-project-member';\nimport { updateProjectMemberRole } from '@/app/actions/update-project-member-role';\n\nexport interface ProjectSettingsClientProps {\n project: PmProject;\n states: WorkItemState[];\n labels: Label[];\n members?: PmProjectMember[];\n className?: string;\n}\n\nconst STATE_GROUP_COLORS: Record<string, string> = {\n backlog: 'bg-gray-400',\n unstarted: 'bg-blue-400',\n started: 'bg-yellow-400',\n completed: 'bg-green-400',\n cancelled: 'bg-red-400',\n};\n\nexport function ProjectSettingsClient({\n project,\n states: initialStates,\n labels: initialLabels,\n members: initialMembers = [],\n className,\n}: ProjectSettingsClientProps) {\n const router = useRouter();\n const [name, setName] = useState(project.name);\n const [description, setDescription] = useState(project.description ?? '');\n const [saving, setSaving] = useState(false);\n const [states, setStates] = useState<WorkItemState[]>(initialStates);\n const [labels, setLabels] = useState<Label[]>(initialLabels);\n const [newStateName, setNewStateName] = useState('');\n const [newLabelName, setNewLabelName] = useState('');\n const [newLabelColor, setNewLabelColor] = useState('#6366f1');\n const [deleteConfirm, setDeleteConfirm] = useState('');\n\n const handleSaveGeneral = useCallback(async () => {\n setSaving(true);\n await updatePmProject(project.id, {\n name: name.trim(),\n description: description.trim() || undefined,\n });\n setSaving(false);\n }, [project.id, name, description]);\n\n const handleAddState = useCallback(async () => {\n if (!newStateName.trim()) return;\n const result = await createWorkItemState({\n projectId: project.id,\n name: newStateName.trim(),\n color: '#6366f1',\n stateGroup: 'unstarted',\n });\n if (result.state) {\n setStates((prev) => [...prev, result.state!]);\n setNewStateName('');\n }\n }, [project.id, newStateName]);\n\n const handleDeleteState = useCallback(async (stateId: string) => {\n const result = await deleteWorkItemState(stateId);\n if (!result.error) {\n setStates((prev) => prev.filter((s) => s.id !== stateId));\n }\n }, []);\n\n const handleAddLabel = useCallback(async () => {\n if (!newLabelName.trim()) return;\n const result = await createLabel({\n projectId: project.id,\n name: newLabelName.trim(),\n color: newLabelColor,\n });\n if (result.label) {\n setLabels((prev) => [...prev, result.label!]);\n setNewLabelName('');\n }\n }, [project.id, newLabelName, newLabelColor]);\n\n const handleDeleteLabel = useCallback(async (labelId: string) => {\n const result = await deleteLabel(labelId);\n if (!result.error) {\n setLabels((prev) => prev.filter((l) => l.id !== labelId));\n }\n }, []);\n\n const handleDeleteProject = useCallback(async () => {\n if (deleteConfirm !== project.name) return;\n const result = await deletePmProject(project.id);\n if (!result.error) {\n router.push('/projects');\n }\n }, [project.id, project.name, deleteConfirm, router]);\n\n return (\n <div data-testid=\"project-settings\" className={cn('max-w-2xl space-y-8', className)}>\n {/* Header */}\n <div className=\"flex items-center gap-2\">\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-7 w-7 p-0\"\n onClick={() => router.push(`/projects/${project.slug}`)}\n data-testid=\"back-to-project\"\n >\n <ArrowLeft className=\"h-4 w-4\" />\n </Button>\n <Settings className=\"text-muted-foreground h-4 w-4\" />\n <h1 className=\"text-sm font-bold tracking-tight\">Project Settings</h1>\n <Badge variant=\"outline\" className=\"text-[10px]\">\n {project.identifierPrefix}\n </Badge>\n </div>\n\n {/* General Settings */}\n <section className=\"space-y-3\" data-testid=\"general-settings\">\n <h2 className=\"text-xs font-semibold tracking-wide uppercase\">General</h2>\n <div className=\"space-y-2\">\n <div>\n <label className=\"text-muted-foreground mb-1 block text-[10px] font-medium\">\n Project Name\n </label>\n <Input\n value={name}\n onChange={(e) => setName(e.target.value)}\n className=\"h-8 text-xs\"\n data-testid=\"project-name-input\"\n />\n </div>\n <div>\n <label className=\"text-muted-foreground mb-1 block text-[10px] font-medium\">\n Description\n </label>\n <Input\n value={description}\n onChange={(e) => setDescription(e.target.value)}\n placeholder=\"Optional description\"\n className=\"h-8 text-xs\"\n data-testid=\"project-description-input\"\n />\n </div>\n <Button\n size=\"sm\"\n className=\"h-7 text-xs\"\n onClick={handleSaveGeneral}\n disabled={saving || !name.trim()}\n data-testid=\"save-general-btn\"\n >\n {saving ? 'Saving...' : 'Save Changes'}\n </Button>\n </div>\n </section>\n\n <hr className=\"border-border\" />\n\n {/* Estimate Settings */}\n <section data-testid=\"estimate-settings-section\">\n <EstimateSettings projectId={project.id} currentEstimateType={project.estimateType} />\n </section>\n\n <hr className=\"border-border\" />\n\n {/* Work Item States */}\n <section className=\"space-y-3\" data-testid=\"states-settings\">\n <h2 className=\"text-xs font-semibold tracking-wide uppercase\">Work Item States</h2>\n <div className=\"space-y-1\">\n {states.map((state) => (\n <div\n key={state.id}\n className=\"group flex items-center gap-2 rounded-sm px-2 py-1 text-xs\"\n data-testid={`state-${state.id}`}\n >\n <span\n className=\"h-2.5 w-2.5 shrink-0 rounded-full\"\n style={{ backgroundColor: state.color }}\n />\n <span className=\"flex-1\">{state.name}</span>\n <Badge\n variant=\"outline\"\n className={cn('text-[9px]', STATE_GROUP_COLORS[state.stateGroup] ?? 'bg-gray-400')}\n >\n {state.stateGroup}\n </Badge>\n {state.isDefault ? (\n <Badge variant=\"secondary\" className=\"text-[9px]\">\n default\n </Badge>\n ) : (\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"text-destructive hidden h-5 w-5 p-0 group-hover:flex\"\n onClick={() => handleDeleteState(state.id)}\n title=\"Delete state\"\n >\n <Trash2 className=\"h-3 w-3\" />\n </Button>\n )}\n </div>\n ))}\n </div>\n <div className=\"flex items-center gap-2\">\n <Input\n value={newStateName}\n onChange={(e) => setNewStateName(e.target.value)}\n placeholder=\"New state name\"\n className=\"h-7 flex-1 text-xs\"\n data-testid=\"new-state-input\"\n onKeyDown={(e) => {\n if (e.key === 'Enter') handleAddState();\n }}\n />\n <Button\n variant=\"outline\"\n size=\"sm\"\n className=\"h-7 text-xs\"\n onClick={handleAddState}\n disabled={!newStateName.trim()}\n data-testid=\"add-state-btn\"\n >\n <Plus className=\"mr-1 h-3 w-3\" />\n Add\n </Button>\n </div>\n </section>\n\n <hr className=\"border-border\" />\n\n {/* Labels */}\n <section className=\"space-y-3\" data-testid=\"labels-settings\">\n <h2 className=\"text-xs font-semibold tracking-wide uppercase\">Labels</h2>\n {labels.length === 0 ? (\n <p className=\"text-muted-foreground text-[10px]\">No labels yet</p>\n ) : (\n <div className=\"flex flex-wrap gap-1.5\">\n {labels.map((label) => (\n <div\n key={label.id}\n className=\"group flex items-center gap-1 rounded-full border px-2 py-0.5\"\n data-testid={`label-${label.id}`}\n >\n <span className=\"h-2 w-2 rounded-full\" style={{ backgroundColor: label.color }} />\n <span className=\"text-[10px]\">{label.name}</span>\n <button\n type=\"button\"\n className=\"text-destructive ml-0.5 hidden text-xs group-hover:inline\"\n onClick={() => handleDeleteLabel(label.id)}\n title=\"Delete label\"\n >\n ×\n </button>\n </div>\n ))}\n </div>\n )}\n <div className=\"flex items-center gap-2\">\n <input\n type=\"color\"\n value={newLabelColor}\n onChange={(e) => setNewLabelColor(e.target.value)}\n className=\"h-7 w-7 cursor-pointer rounded border-0 p-0\"\n data-testid=\"new-label-color\"\n />\n <Input\n value={newLabelName}\n onChange={(e) => setNewLabelName(e.target.value)}\n placeholder=\"New label name\"\n className=\"h-7 flex-1 text-xs\"\n data-testid=\"new-label-input\"\n onKeyDown={(e) => {\n if (e.key === 'Enter') handleAddLabel();\n }}\n />\n <Button\n variant=\"outline\"\n size=\"sm\"\n className=\"h-7 text-xs\"\n onClick={handleAddLabel}\n disabled={!newLabelName.trim()}\n data-testid=\"add-label-btn\"\n >\n <Plus className=\"mr-1 h-3 w-3\" />\n Add\n </Button>\n </div>\n </section>\n\n <hr className=\"border-border\" />\n\n {/* Members */}\n <section data-testid=\"members-settings\">\n <ProjectMembersPanel\n projectId={project.id}\n members={initialMembers}\n currentUserId=\"\"\n onAddMember={addProjectMember}\n onRemoveMember={removeProjectMember}\n onUpdateRole={updateProjectMemberRole}\n />\n </section>\n\n <hr className=\"border-border\" />\n\n {/* Danger Zone */}\n <section className=\"space-y-3\" data-testid=\"danger-zone\">\n <h2 className=\"text-destructive text-xs font-semibold tracking-wide uppercase\">\n Danger Zone\n </h2>\n <div className=\"border-destructive/20 rounded-md border p-3\">\n <p className=\"mb-2 text-xs\">\n Permanently delete this project and all its work items, cycles, modules, and pages.\n </p>\n <p className=\"text-muted-foreground mb-2 text-[10px]\">\n Type <strong>{project.name}</strong> to confirm.\n </p>\n <div className=\"flex items-center gap-2\">\n <Input\n value={deleteConfirm}\n onChange={(e) => setDeleteConfirm(e.target.value)}\n placeholder={project.name}\n className=\"h-7 flex-1 text-xs\"\n data-testid=\"delete-confirm-input\"\n />\n <Button\n variant=\"destructive\"\n size=\"sm\"\n className=\"h-7 text-xs\"\n onClick={handleDeleteProject}\n disabled={deleteConfirm !== project.name}\n data-testid=\"delete-project-btn\"\n >\n <Trash2 className=\"mr-1 h-3 w-3\" />\n Delete Project\n </Button>\n </div>\n </div>\n </section>\n </div>\n );\n}\n","'use client';\n\nimport { useState, useCallback } from 'react';\nimport { Button } from '@/components/ui/button';\nimport { Input } from '@/components/ui/input';\nimport { Label } from '@/components/ui/label';\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from '@/components/ui/select';\nimport { Badge } from '@/components/ui/badge';\nimport { ProjectRole } from '@shepai/core/domain/generated/output';\nimport type { PmProjectMember } from '@shepai/core/domain/generated/output';\n\nexport interface ProjectMembersPanelProps {\n projectId: string;\n members: PmProjectMember[];\n currentUserId: string;\n onAddMember: (input: {\n projectId: string;\n userId: string;\n role: ProjectRole;\n actorId: string;\n }) => Promise<{ member?: PmProjectMember; error?: string }>;\n onRemoveMember: (input: {\n projectId: string;\n userId: string;\n actorId: string;\n }) => Promise<{ error?: string }>;\n onUpdateRole: (input: {\n projectId: string;\n userId: string;\n newRole: ProjectRole;\n actorId: string;\n }) => Promise<{ error?: string }>;\n}\n\nconst ROLE_COLORS: Record<string, string> = {\n Admin: 'bg-blue-100 text-blue-800 dark:bg-blue-900 dark:text-blue-300',\n Member: 'bg-green-100 text-green-800 dark:bg-green-900 dark:text-green-300',\n Guest: 'bg-gray-100 text-gray-800 dark:bg-gray-900 dark:text-gray-300',\n};\n\nexport function ProjectMembersPanel({\n projectId,\n members: initialMembers,\n currentUserId,\n onAddMember,\n onRemoveMember,\n onUpdateRole,\n}: ProjectMembersPanelProps) {\n const [members, setMembers] = useState<PmProjectMember[]>(initialMembers);\n const [newUserId, setNewUserId] = useState('');\n const [newRole, setNewRole] = useState<ProjectRole>(ProjectRole.Member);\n const [error, setError] = useState<string | null>(null);\n const [loading, setLoading] = useState(false);\n\n const isCurrentUserAdmin = members.some(\n (m) => m.userId === currentUserId && m.role === ProjectRole.Admin\n );\n\n const handleAdd = useCallback(async () => {\n if (!newUserId.trim()) return;\n setLoading(true);\n setError(null);\n\n const result = await onAddMember({\n projectId,\n userId: newUserId.trim(),\n role: newRole,\n actorId: currentUserId,\n });\n\n if (result.error) {\n setError(result.error);\n } else if (result.member) {\n setMembers((prev) => [...prev, result.member!]);\n setNewUserId('');\n setNewRole(ProjectRole.Member);\n }\n setLoading(false);\n }, [newUserId, newRole, projectId, currentUserId, onAddMember]);\n\n const handleRemove = useCallback(\n async (userId: string) => {\n setError(null);\n const result = await onRemoveMember({ projectId, userId, actorId: currentUserId });\n if (result.error) {\n setError(result.error);\n } else {\n setMembers((prev) => prev.filter((m) => m.userId !== userId));\n }\n },\n [projectId, currentUserId, onRemoveMember]\n );\n\n const handleRoleChange = useCallback(\n async (userId: string, role: ProjectRole) => {\n setError(null);\n const result = await onUpdateRole({\n projectId,\n userId,\n newRole: role,\n actorId: currentUserId,\n });\n if (result.error) {\n setError(result.error);\n } else {\n setMembers((prev) => prev.map((m) => (m.userId === userId ? { ...m, role } : m)));\n }\n },\n [projectId, currentUserId, onUpdateRole]\n );\n\n return (\n <div data-testid=\"project-members-panel\" className=\"space-y-4\">\n <h3 className=\"text-lg font-semibold\">Project Members</h3>\n\n {error ? (\n <div\n data-testid=\"members-error\"\n className=\"rounded border border-red-200 bg-red-50 p-3 text-sm text-red-800 dark:border-red-800 dark:bg-red-950 dark:text-red-300\"\n >\n {error}\n </div>\n ) : null}\n\n <div className=\"divide-y rounded border\">\n {members.map((member) => (\n <div\n key={member.id}\n data-testid={`member-row-${member.userId}`}\n className=\"flex items-center justify-between p-3\"\n >\n <div className=\"flex items-center gap-3\">\n <span className=\"text-sm font-medium\">{member.userId}</span>\n <Badge className={ROLE_COLORS[member.role] ?? ''} variant=\"secondary\">\n {member.role}\n </Badge>\n </div>\n\n {isCurrentUserAdmin && member.userId !== currentUserId ? (\n <div className=\"flex items-center gap-2\">\n <Select\n value={member.role}\n onValueChange={(value) => handleRoleChange(member.userId, value as ProjectRole)}\n >\n <SelectTrigger className=\"w-[120px]\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value={ProjectRole.Admin}>Admin</SelectItem>\n <SelectItem value={ProjectRole.Member}>Member</SelectItem>\n <SelectItem value={ProjectRole.Guest}>Guest</SelectItem>\n </SelectContent>\n </Select>\n <Button variant=\"destructive\" size=\"sm\" onClick={() => handleRemove(member.userId)}>\n Remove\n </Button>\n </div>\n ) : null}\n </div>\n ))}\n\n {members.length === 0 && (\n <div className=\"text-muted-foreground p-4 text-center text-sm\">\n No members in this project.\n </div>\n )}\n </div>\n\n {isCurrentUserAdmin ? (\n <div data-testid=\"add-member-form\" className=\"flex items-end gap-3 rounded border p-3\">\n <div className=\"flex-1\">\n <Label htmlFor=\"new-user-id\">User ID</Label>\n <Input\n id=\"new-user-id\"\n value={newUserId}\n onChange={(e) => setNewUserId(e.target.value)}\n placeholder=\"Enter user ID\"\n disabled={loading}\n />\n </div>\n <div className=\"w-[140px]\">\n <Label htmlFor=\"new-role\">Role</Label>\n <Select value={newRole} onValueChange={(value) => setNewRole(value as ProjectRole)}>\n <SelectTrigger id=\"new-role\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value={ProjectRole.Admin}>Admin</SelectItem>\n <SelectItem value={ProjectRole.Member}>Member</SelectItem>\n <SelectItem value={ProjectRole.Guest}>Guest</SelectItem>\n </SelectContent>\n </Select>\n </div>\n <Button onClick={handleAdd} disabled={loading || !newUserId.trim()}>\n {loading ? 'Adding...' : 'Add Member'}\n </Button>\n </div>\n ) : null}\n </div>\n );\n}\n","/* __next_internal_action_entry_do_not_use__ [{\"40d8608c48530763c92c080be008938387188c2c34\":\"deletePmProject\"},\"src/presentation/web/app/actions/delete-pm-project.ts\",\"\"] */\"use turbopack no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_0=/*#__PURE__*/createServerReference(\"40d8608c48530763c92c080be008938387188c2c34\",callServer,void 0,findSourceMapURL,\"deletePmProject\");export{$$RSC_SERVER_ACTION_0 as deletePmProject};","/* __next_internal_action_entry_do_not_use__ [{\"40a8e1a0ad80c0c7c30ce362aa972bc51295c5d78d\":\"createWorkItemState\"},\"src/presentation/web/app/actions/manage-work-item-states.ts\",\"\"] */\"use turbopack no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_1=/*#__PURE__*/createServerReference(\"40a8e1a0ad80c0c7c30ce362aa972bc51295c5d78d\",callServer,void 0,findSourceMapURL,\"createWorkItemState\");export{$$RSC_SERVER_ACTION_1 as createWorkItemState};","/* __next_internal_action_entry_do_not_use__ [{\"4004a9b00f848d06080d6dcc4612700ef063f35d71\":\"deleteWorkItemState\"},\"src/presentation/web/app/actions/manage-work-item-states.ts\",\"\"] */\"use turbopack no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_3=/*#__PURE__*/createServerReference(\"4004a9b00f848d06080d6dcc4612700ef063f35d71\",callServer,void 0,findSourceMapURL,\"deleteWorkItemState\");export{$$RSC_SERVER_ACTION_3 as deleteWorkItemState};","/* __next_internal_action_entry_do_not_use__ [{\"40e6bf761dbb0ee4275b9d6b1a4aada94d45f14cd2\":\"createLabel\"},\"src/presentation/web/app/actions/manage-labels.ts\",\"\"] */\"use turbopack no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_1=/*#__PURE__*/createServerReference(\"40e6bf761dbb0ee4275b9d6b1a4aada94d45f14cd2\",callServer,void 0,findSourceMapURL,\"createLabel\");export{$$RSC_SERVER_ACTION_1 as createLabel};","/* __next_internal_action_entry_do_not_use__ [{\"40cb54bd5bc94c06b352cf5a6b007982869b0e7760\":\"deleteLabel\"},\"src/presentation/web/app/actions/manage-labels.ts\",\"\"] */\"use turbopack no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_3=/*#__PURE__*/createServerReference(\"40cb54bd5bc94c06b352cf5a6b007982869b0e7760\",callServer,void 0,findSourceMapURL,\"deleteLabel\");export{$$RSC_SERVER_ACTION_3 as deleteLabel};","/* __next_internal_action_entry_do_not_use__ [{\"40bb1397e33afd25603a70b7d424484a89065725fe\":\"addProjectMember\"},\"src/presentation/web/app/actions/add-project-member.ts\",\"\"] */\"use turbopack no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_0=/*#__PURE__*/createServerReference(\"40bb1397e33afd25603a70b7d424484a89065725fe\",callServer,void 0,findSourceMapURL,\"addProjectMember\");export{$$RSC_SERVER_ACTION_0 as addProjectMember};","/* __next_internal_action_entry_do_not_use__ [{\"40cf92437dadf75131e9512186fbd4729ee033ec7c\":\"removeProjectMember\"},\"src/presentation/web/app/actions/remove-project-member.ts\",\"\"] */\"use turbopack no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_0=/*#__PURE__*/createServerReference(\"40cf92437dadf75131e9512186fbd4729ee033ec7c\",callServer,void 0,findSourceMapURL,\"removeProjectMember\");export{$$RSC_SERVER_ACTION_0 as removeProjectMember};","/* __next_internal_action_entry_do_not_use__ [{\"40ab8ffd408ed33e78fff0970eae4b7a35b155438f\":\"updateProjectMemberRole\"},\"src/presentation/web/app/actions/update-project-member-role.ts\",\"\"] */\"use turbopack no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_0=/*#__PURE__*/createServerReference(\"40ab8ffd408ed33e78fff0970eae4b7a35b155438f\",callServer,void 0,findSourceMapURL,\"updateProjectMemberRole\");export{$$RSC_SERVER_ACTION_0 as updateProjectMemberRole};"],"names":[],"mappings":"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"}