@shepai/cli 1.202.1-pr606.60460ac → 1.202.2

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 (372) hide show
  1. package/package.json +1 -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 +20 -20
  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/744ca_web_components_features_applications_applications-page-client_tsx_d0db9938._.js.map +1 -1
  155. package/web/.next/server/chunks/ssr/[root-of-the-server]__0af8610a._.js +3 -3
  156. package/web/.next/server/chunks/ssr/[root-of-the-server]__0af8610a._.js.map +1 -1
  157. package/web/.next/server/chunks/ssr/[root-of-the-server]__0b652a2f._.js +1 -1
  158. package/web/.next/server/chunks/ssr/{[root-of-the-server]__8b73253b._.js → [root-of-the-server]__2e388ba3._.js} +2 -2
  159. package/web/.next/server/chunks/ssr/{[root-of-the-server]__8b73253b._.js.map → [root-of-the-server]__2e388ba3._.js.map} +1 -1
  160. package/web/.next/server/chunks/ssr/[root-of-the-server]__56cf47e7._.js +1 -1
  161. package/web/.next/server/chunks/ssr/[root-of-the-server]__56cf47e7._.js.map +1 -1
  162. package/web/.next/server/chunks/ssr/[root-of-the-server]__648730d4._.js +1 -1
  163. package/web/.next/server/chunks/ssr/[root-of-the-server]__68df6415._.js +1 -1
  164. package/web/.next/server/chunks/ssr/[root-of-the-server]__68df6415._.js.map +1 -1
  165. package/web/.next/server/chunks/ssr/[root-of-the-server]__6bc6bf96._.js +1 -1
  166. package/web/.next/server/chunks/ssr/[root-of-the-server]__6bc6bf96._.js.map +1 -1
  167. package/web/.next/server/chunks/ssr/[root-of-the-server]__9852cb08._.js +2 -2
  168. package/web/.next/server/chunks/ssr/[root-of-the-server]__9852cb08._.js.map +1 -1
  169. package/web/.next/server/chunks/ssr/[root-of-the-server]__a1167cec._.js +1 -1
  170. package/web/.next/server/chunks/ssr/[root-of-the-server]__a1167cec._.js.map +1 -1
  171. package/web/.next/server/chunks/ssr/[root-of-the-server]__a12d0ad7._.js +3 -0
  172. package/web/.next/server/chunks/ssr/{[root-of-the-server]__52ca7f88._.js.map → [root-of-the-server]__a12d0ad7._.js.map} +1 -1
  173. package/web/.next/server/chunks/ssr/[root-of-the-server]__ba699bec._.js +1 -1
  174. package/web/.next/server/chunks/ssr/[root-of-the-server]__ba699bec._.js.map +1 -1
  175. package/web/.next/server/chunks/ssr/[root-of-the-server]__e0741ee1._.js +1 -1
  176. package/web/.next/server/chunks/ssr/[root-of-the-server]__e0fa59e6._.js +1 -1
  177. package/web/.next/server/chunks/ssr/[root-of-the-server]__e0fa59e6._.js.map +1 -1
  178. package/web/.next/server/chunks/ssr/[root-of-the-server]__ea26ff90._.js +3 -3
  179. package/web/.next/server/chunks/ssr/[root-of-the-server]__ff0095e3._.js +1 -1
  180. package/web/.next/server/chunks/ssr/_07036593._.js +1 -1
  181. package/web/.next/server/chunks/ssr/_07036593._.js.map +1 -1
  182. package/web/.next/server/chunks/ssr/_0d2a7595._.js +1 -1
  183. package/web/.next/server/chunks/ssr/_0d2a7595._.js.map +1 -1
  184. package/web/.next/server/chunks/ssr/_101de7c3._.js +1 -1
  185. package/web/.next/server/chunks/ssr/_101de7c3._.js.map +1 -1
  186. package/web/.next/server/chunks/ssr/{_db111d21._.js → _10f54ace._.js} +2 -2
  187. package/web/.next/server/chunks/ssr/{_db111d21._.js.map → _10f54ace._.js.map} +1 -1
  188. package/web/.next/server/chunks/ssr/_24fca3cf._.js +1 -1
  189. package/web/.next/server/chunks/ssr/_24fca3cf._.js.map +1 -1
  190. package/web/.next/server/chunks/ssr/{_6ff832ad._.js → _2759af76._.js} +2 -2
  191. package/web/.next/server/chunks/ssr/{_6ff832ad._.js.map → _2759af76._.js.map} +1 -1
  192. package/web/.next/server/chunks/ssr/_2bc48f3d._.js +1 -1
  193. package/web/.next/server/chunks/ssr/_2bc48f3d._.js.map +1 -1
  194. package/web/.next/server/chunks/ssr/{_fb539286._.js → _2bef1982._.js} +2 -2
  195. package/web/.next/server/chunks/ssr/{_fb539286._.js.map → _2bef1982._.js.map} +1 -1
  196. package/web/.next/server/chunks/ssr/_32f66845._.js +1 -1
  197. package/web/.next/server/chunks/ssr/_408848e6._.js +1 -1
  198. package/web/.next/server/chunks/ssr/_408848e6._.js.map +1 -1
  199. package/web/.next/server/chunks/ssr/_40e02782._.js +1 -1
  200. package/web/.next/server/chunks/ssr/_40e02782._.js.map +1 -1
  201. package/web/.next/server/chunks/ssr/_486d45d6._.js +1 -1
  202. package/web/.next/server/chunks/ssr/_486d45d6._.js.map +1 -1
  203. package/web/.next/server/chunks/ssr/{_824d5772._.js → _498cba11._.js} +2 -2
  204. package/web/.next/server/chunks/ssr/{_824d5772._.js.map → _498cba11._.js.map} +1 -1
  205. package/web/.next/server/chunks/ssr/_56b9d60f._.js +1 -1
  206. package/web/.next/server/chunks/ssr/_56b9d60f._.js.map +1 -1
  207. package/web/.next/server/chunks/ssr/_5cbb0e22._.js +1 -1
  208. package/web/.next/server/chunks/ssr/_5cbb0e22._.js.map +1 -1
  209. package/web/.next/server/chunks/ssr/{_5a3edc88._.js → _673be4f1._.js} +2 -2
  210. package/web/.next/server/chunks/ssr/{_5a3edc88._.js.map → _673be4f1._.js.map} +1 -1
  211. package/web/.next/server/chunks/ssr/_7ba67729._.js +1 -1
  212. package/web/.next/server/chunks/ssr/_7ba67729._.js.map +1 -1
  213. package/web/.next/server/chunks/ssr/_805ae1aa._.js +1 -1
  214. package/web/.next/server/chunks/ssr/_805ae1aa._.js.map +1 -1
  215. package/web/.next/server/chunks/ssr/_87cf18c3._.js +1 -1
  216. package/web/.next/server/chunks/ssr/_87cf18c3._.js.map +1 -1
  217. package/web/.next/server/chunks/ssr/_8a700ff4._.js +1 -1
  218. package/web/.next/server/chunks/ssr/_8a700ff4._.js.map +1 -1
  219. package/web/.next/server/chunks/ssr/_95b97274._.js +1 -1
  220. package/web/.next/server/chunks/ssr/_95b97274._.js.map +1 -1
  221. package/web/.next/server/chunks/ssr/{_fbcfaf3a._.js → _9d18d1b1._.js} +2 -2
  222. package/web/.next/server/chunks/ssr/{_fbcfaf3a._.js.map → _9d18d1b1._.js.map} +1 -1
  223. package/web/.next/server/chunks/ssr/{_70ff64a1._.js → _a93687e6._.js} +2 -2
  224. package/web/.next/server/chunks/ssr/{_70ff64a1._.js.map → _a93687e6._.js.map} +1 -1
  225. package/web/.next/server/chunks/ssr/_c2e196ee._.js +1 -1
  226. package/web/.next/server/chunks/ssr/_c2e196ee._.js.map +1 -1
  227. package/web/.next/server/chunks/ssr/_ca3b7bf7._.js +1 -1
  228. package/web/.next/server/chunks/ssr/_ca3b7bf7._.js.map +1 -1
  229. package/web/.next/server/chunks/ssr/_d53224a9._.js +1 -1
  230. package/web/.next/server/chunks/ssr/_d53224a9._.js.map +1 -1
  231. package/web/.next/server/chunks/ssr/_d573dcc2._.js +1 -1
  232. package/web/.next/server/chunks/ssr/_e2671e14._.js +1 -1
  233. package/web/.next/server/chunks/ssr/_e2671e14._.js.map +1 -1
  234. package/web/.next/server/chunks/ssr/_ecd45b17._.js +1 -1
  235. package/web/.next/server/chunks/ssr/_ecd45b17._.js.map +1 -1
  236. package/web/.next/server/chunks/ssr/{_f0d45e47._.js → _f46d2018._.js} +2 -2
  237. package/web/.next/server/chunks/ssr/{_f0d45e47._.js.map → _f46d2018._.js.map} +1 -1
  238. package/web/.next/server/chunks/ssr/_f602cc9f._.js +1 -1
  239. package/web/.next/server/chunks/ssr/_f602cc9f._.js.map +1 -1
  240. package/web/.next/server/chunks/ssr/{_20a56008._.js → _f71954a5._.js} +2 -2
  241. package/web/.next/server/chunks/ssr/{_20a56008._.js.map → _f71954a5._.js.map} +1 -1
  242. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js +1 -1
  243. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js.map +1 -1
  244. package/web/.next/server/chunks/ssr/f3a1f_components_common_control-center-drawer_repository-drawer-client_tsx_39a00c03._.js +1 -1
  245. package/web/.next/server/chunks/ssr/src_presentation_web_0e291f0b._.js +1 -1
  246. package/web/.next/server/chunks/ssr/src_presentation_web_0e291f0b._.js.map +1 -1
  247. package/web/.next/server/chunks/ssr/{src_presentation_web_40673f0c._.js → src_presentation_web_16c83ab4._.js} +2 -2
  248. package/web/.next/server/chunks/ssr/{src_presentation_web_40673f0c._.js.map → src_presentation_web_16c83ab4._.js.map} +1 -1
  249. package/web/.next/server/chunks/ssr/src_presentation_web_1d8d177f._.js +1 -1
  250. package/web/.next/server/chunks/ssr/src_presentation_web_1d8d177f._.js.map +1 -1
  251. package/web/.next/server/chunks/ssr/src_presentation_web_450b58fc._.js +1 -1
  252. package/web/.next/server/chunks/ssr/src_presentation_web_450b58fc._.js.map +1 -1
  253. package/web/.next/server/chunks/ssr/src_presentation_web_47727150._.js +1 -1
  254. package/web/.next/server/chunks/ssr/src_presentation_web_47727150._.js.map +1 -1
  255. package/web/.next/server/chunks/ssr/src_presentation_web_64fcfc84._.js +1 -1
  256. package/web/.next/server/chunks/ssr/src_presentation_web_64fcfc84._.js.map +1 -1
  257. package/web/.next/server/chunks/ssr/src_presentation_web_74b7bdb2._.js +1 -1
  258. package/web/.next/server/chunks/ssr/src_presentation_web_74b7bdb2._.js.map +1 -1
  259. package/web/.next/server/chunks/ssr/src_presentation_web_82aeca34._.js +1 -1
  260. package/web/.next/server/chunks/ssr/src_presentation_web_82aeca34._.js.map +1 -1
  261. package/web/.next/server/chunks/ssr/src_presentation_web_8a564d47._.js +1 -1
  262. package/web/.next/server/chunks/ssr/src_presentation_web_8a564d47._.js.map +1 -1
  263. package/web/.next/server/chunks/ssr/src_presentation_web_9a543843._.js +1 -1
  264. package/web/.next/server/chunks/ssr/src_presentation_web_9a543843._.js.map +1 -1
  265. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app__not-found_page_actions_f4f3fad9.js +1 -1
  266. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app__not-found_page_actions_f4f3fad9.js.map +1 -1
  267. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_agents_page_actions_d4bd4711.js +1 -1
  268. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_agents_page_actions_d4bd4711.js.map +1 -1
  269. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_onboarding_page_actions_bb695e8d.js +1 -1
  270. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_onboarding_page_actions_bb695e8d.js.map +1 -1
  271. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_page_actions_ac47e420.js +1 -1
  272. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_page_actions_ac47e420.js.map +1 -1
  273. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_projects_page_actions_c91a23a8.js +1 -1
  274. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_projects_page_actions_c91a23a8.js.map +1 -1
  275. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_version_page_actions_63c2d912.js +1 -1
  276. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_version_page_actions_63c2d912.js.map +1 -1
  277. package/web/.next/server/chunks/ssr/src_presentation_web_a53a3da6._.js +1 -1
  278. package/web/.next/server/chunks/ssr/src_presentation_web_a53a3da6._.js.map +1 -1
  279. package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_246617fe._.js +3 -3
  280. package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_adopt-local-directory_ts_75f1f28c._.js +1 -1
  281. package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_adopt-local-directory_ts_75f1f28c._.js.map +1 -1
  282. package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_approve-feature_ts_9453ce8b._.js +1 -1
  283. package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_open-directory_ts_1209d917._.js +1 -1
  284. package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_open-directory_ts_1209d917._.js.map +1 -1
  285. package/web/.next/server/chunks/ssr/src_presentation_web_app_features_feature-tree-page-client_tsx_34c5cbbf._.js +1 -1
  286. package/web/.next/server/chunks/ssr/src_presentation_web_b1b3c26c._.js +1 -1
  287. package/web/.next/server/chunks/ssr/src_presentation_web_b1b3c26c._.js.map +1 -1
  288. package/web/.next/server/chunks/ssr/src_presentation_web_b98a4353._.js +1 -1
  289. package/web/.next/server/chunks/ssr/src_presentation_web_b98a4353._.js.map +1 -1
  290. package/web/.next/server/chunks/ssr/src_presentation_web_c96ca051._.js +1 -1
  291. package/web/.next/server/chunks/ssr/src_presentation_web_c96ca051._.js.map +1 -1
  292. package/web/.next/server/chunks/ssr/{src_presentation_web_e812a69b._.js → src_presentation_web_cb0d2c28._.js} +2 -2
  293. package/web/.next/server/chunks/ssr/{src_presentation_web_e812a69b._.js.map → src_presentation_web_cb0d2c28._.js.map} +1 -1
  294. package/web/.next/server/chunks/ssr/src_presentation_web_components_66643378._.js +1 -1
  295. package/web/.next/server/chunks/ssr/src_presentation_web_components_66643378._.js.map +1 -1
  296. package/web/.next/server/chunks/ssr/src_presentation_web_components_agent-editor_agent-editor-tabs_tsx_d5a954b4._.js +1 -1
  297. package/web/.next/server/chunks/ssr/src_presentation_web_components_agent-editor_agent-editor-tabs_tsx_d5a954b4._.js.map +1 -1
  298. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_skills_8a174cac._.js +1 -1
  299. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_skills_8a174cac._.js.map +1 -1
  300. package/web/.next/server/chunks/ssr/src_presentation_web_d3858f16._.js +1 -1
  301. package/web/.next/server/chunks/ssr/src_presentation_web_d3858f16._.js.map +1 -1
  302. package/web/.next/server/chunks/ssr/src_presentation_web_d7f8130c._.js +1 -1
  303. package/web/.next/server/chunks/ssr/src_presentation_web_d7f8130c._.js.map +1 -1
  304. package/web/.next/server/chunks/ssr/src_presentation_web_dddd8ccd._.js +1 -1
  305. package/web/.next/server/chunks/ssr/src_presentation_web_dddd8ccd._.js.map +1 -1
  306. package/web/.next/server/chunks/ssr/src_presentation_web_e13d58b0._.js +1 -1
  307. package/web/.next/server/chunks/ssr/src_presentation_web_e13d58b0._.js.map +1 -1
  308. package/web/.next/server/chunks/ssr/src_presentation_web_ee94a9aa._.js +1 -1
  309. package/web/.next/server/chunks/ssr/src_presentation_web_ee94a9aa._.js.map +1 -1
  310. package/web/.next/server/chunks/ssr/src_presentation_web_f0fcfdff._.js +1 -1
  311. package/web/.next/server/chunks/ssr/src_presentation_web_f0fcfdff._.js.map +1 -1
  312. package/web/.next/server/chunks/ssr/src_presentation_web_f17e8516._.js +1 -1
  313. package/web/.next/server/chunks/ssr/src_presentation_web_f17e8516._.js.map +1 -1
  314. package/web/.next/server/chunks/ssr/src_presentation_web_f7180fec._.js +1 -1
  315. package/web/.next/server/chunks/ssr/src_presentation_web_f7180fec._.js.map +1 -1
  316. package/web/.next/server/pages/500.html +2 -2
  317. package/web/.next/server/server-reference-manifest.js +1 -1
  318. package/web/.next/server/server-reference-manifest.json +111 -111
  319. package/web/.next/static/chunks/{5faa828877b1e669.js → 03dda23205877d8b.js} +1 -1
  320. package/web/.next/static/chunks/{4bf4f333302e24a4.js → 054e3a5f5ff4db71.js} +1 -1
  321. package/web/.next/static/chunks/{a868014dbe1b4e42.js → 06e58041911c290b.js} +1 -1
  322. package/web/.next/static/chunks/{b5ff852fee23795d.js → 089ef5b749d79ebd.js} +1 -1
  323. package/web/.next/static/chunks/{1a093b13a9d6952e.js → 0d106010c498c198.js} +2 -2
  324. package/web/.next/static/chunks/193e5a0540757f5e.js +1 -0
  325. package/web/.next/static/chunks/{9abc3e68af98e636.js → 25111a2f2597f500.js} +1 -1
  326. package/web/.next/static/chunks/285e724d07901ef6.js +1 -0
  327. package/web/.next/static/chunks/{3c396f63ebefe875.js → 2b2bfc0465b18a7d.js} +1 -1
  328. package/web/.next/static/chunks/{6af99a08ccacdbce.js → 2b436562e69d2827.js} +1 -1
  329. package/web/.next/static/chunks/{8c96a835b3b0dc44.js → 2e3844d0ac487ac7.js} +1 -1
  330. package/web/.next/static/chunks/325859b8a9482427.js +1 -0
  331. package/web/.next/static/chunks/{2773e7b2587bc9cc.js → 44ab458ceb89d85d.js} +1 -1
  332. package/web/.next/static/chunks/4fdf36904f5421a6.js +1 -0
  333. package/web/.next/static/chunks/59004c65d552581c.js +1 -0
  334. package/web/.next/static/chunks/{0edcdc8a2dd06b7a.js → 5c4837e88a3431b8.js} +1 -1
  335. package/web/.next/static/chunks/{a131f868af7f1f7c.js → 74cdd562eb663f72.js} +1 -1
  336. package/web/.next/static/chunks/{0315591c972888a6.js → 7670d76d4ee743e6.js} +1 -1
  337. package/web/.next/static/chunks/{02d88da9fd656fcd.js → 83fc784ce05a701e.js} +1 -1
  338. package/web/.next/static/chunks/{460cedaa85c821e7.js → 8dd4fdd20b103a66.js} +1 -1
  339. package/web/.next/static/chunks/9336bdc7fc319282.js +1 -0
  340. package/web/.next/static/chunks/9d285565922b2de7.js +1 -0
  341. package/web/.next/static/chunks/{45eeca36eabbed23.js → 9f7f2a11937d87eb.js} +1 -1
  342. package/web/.next/static/chunks/{c3931fdbae836be6.js → a7c7bcfb6f7696a3.js} +1 -1
  343. package/web/.next/static/chunks/{9f7985e2a73929a2.js → a8f57d2a12849f32.js} +1 -1
  344. package/web/.next/static/chunks/{0e1c933065a1100a.js → abe98954ccdf29db.js} +1 -1
  345. package/web/.next/static/chunks/{4378715fa2b5e7de.js → b05808da85e8b34c.js} +1 -1
  346. package/web/.next/static/chunks/{b5dc7979d66caa38.js → b5f83e5e1dad23d5.js} +1 -1
  347. package/web/.next/static/chunks/{6d2074fa3453d333.js → b8293a56f257e5a2.js} +1 -1
  348. package/web/.next/static/chunks/{bc5b87e4068ba11d.js → c61c5e97c76dc733.js} +1 -1
  349. package/web/.next/static/chunks/c6b411bf31744ca7.js +1 -0
  350. package/web/.next/static/chunks/{bdaa907bf3d1d932.js → c732d6cc4c5e4343.js} +1 -1
  351. package/web/.next/static/chunks/{25a200f055ae5cba.js → d214d6a670f48d79.js} +1 -1
  352. package/web/.next/static/chunks/{6901861cb53ab483.js → d7b17a93a26e97c8.js} +1 -1
  353. package/web/.next/static/chunks/{a0325f77bbccc63d.js → d8f14fac959a6bd0.js} +1 -1
  354. package/web/.next/static/chunks/{24ea54516dc249c0.js → d98912f5b6cf4938.js} +1 -1
  355. package/web/.next/static/chunks/{21500b3fe3754296.js → df79667c16344317.js} +1 -1
  356. package/web/.next/static/chunks/{05e8df10619fb980.js → ec8f19328ad1ecd4.js} +1 -1
  357. package/web/.next/static/chunks/{e6e6ba783b2e4d14.js → f0157331838ac962.js} +1 -1
  358. package/web/.next/static/chunks/{c687ed21b9518d73.js → f757d865fae71faf.js} +1 -1
  359. package/web/.next/static/chunks/fb3cbb7f575a7128.js +1 -0
  360. package/web/.next/server/chunks/ssr/[root-of-the-server]__52ca7f88._.js +0 -3
  361. package/web/.next/static/chunks/03d7b81c2554d52f.js +0 -1
  362. package/web/.next/static/chunks/15acdaaea57bb459.js +0 -1
  363. package/web/.next/static/chunks/39fe1c1397d5483b.js +0 -1
  364. package/web/.next/static/chunks/495883829026f13f.js +0 -1
  365. package/web/.next/static/chunks/4b3a4f416a6eb1ac.js +0 -1
  366. package/web/.next/static/chunks/4b4160f36cf2a3d6.js +0 -1
  367. package/web/.next/static/chunks/7269537b2188650d.js +0 -1
  368. package/web/.next/static/chunks/b1534b2f3d814fef.js +0 -1
  369. package/web/.next/static/chunks/f6dc1ba364203bb2.js +0 -1
  370. /package/web/.next/static/{My4IQDygZ4BFTXkkKanja → 9zd-B2rWybTaAgE74IKiK}/_buildManifest.js +0 -0
  371. /package/web/.next/static/{My4IQDygZ4BFTXkkKanja → 9zd-B2rWybTaAgE74IKiK}/_clientMiddlewareManifest.json +0 -0
  372. /package/web/.next/static/{My4IQDygZ4BFTXkkKanja → 9zd-B2rWybTaAgE74IKiK}/_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%3Aa0b22a%20%3Ctext/javascript%3E","../../../../../../../src/presentation/web/app/actions/data%3Ade3e15%20%3Ctext/javascript%3E","../../../../../../../src/presentation/web/app/actions/data%3A9d4302%20%3Ctext/javascript%3E","../../../../../../../src/presentation/web/app/actions/data%3A6997b0%20%3Ctext/javascript%3E","../../../../../../../src/presentation/web/app/actions/data%3Add2349%20%3Ctext/javascript%3E","../../../../../../../src/presentation/web/app/actions/data%3A202644%20%3Ctext/javascript%3E","../../../../../../../src/presentation/web/app/actions/data%3Aa6d492%20%3Ctext/javascript%3E","../../../../../../../src/presentation/web/app/actions/data%3A7f6fef%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__ [{\"40289a4e863f54f78381dfbe15c63e8a178430576a\":\"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(\"40289a4e863f54f78381dfbe15c63e8a178430576a\",callServer,void 0,findSourceMapURL,\"deletePmProject\");export{$$RSC_SERVER_ACTION_0 as deletePmProject};","/* __next_internal_action_entry_do_not_use__ [{\"4030a2f311e416baf7edadcebe8c87c71dc09539fb\":\"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(\"4030a2f311e416baf7edadcebe8c87c71dc09539fb\",callServer,void 0,findSourceMapURL,\"createWorkItemState\");export{$$RSC_SERVER_ACTION_1 as createWorkItemState};","/* __next_internal_action_entry_do_not_use__ [{\"402e71f701be517941a93d5eef136a547831f34527\":\"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(\"402e71f701be517941a93d5eef136a547831f34527\",callServer,void 0,findSourceMapURL,\"deleteWorkItemState\");export{$$RSC_SERVER_ACTION_3 as deleteWorkItemState};","/* __next_internal_action_entry_do_not_use__ [{\"40d046f0c0e592036d89328c22271fd61610900338\":\"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(\"40d046f0c0e592036d89328c22271fd61610900338\",callServer,void 0,findSourceMapURL,\"createLabel\");export{$$RSC_SERVER_ACTION_1 as createLabel};","/* __next_internal_action_entry_do_not_use__ [{\"40d2670c7ce03e2093c350e67b3c5d659067343118\":\"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(\"40d2670c7ce03e2093c350e67b3c5d659067343118\",callServer,void 0,findSourceMapURL,\"deleteLabel\");export{$$RSC_SERVER_ACTION_3 as deleteLabel};","/* __next_internal_action_entry_do_not_use__ [{\"408a61da1b8e721521f0bed672fc7870960ed3ed89\":\"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(\"408a61da1b8e721521f0bed672fc7870960ed3ed89\",callServer,void 0,findSourceMapURL,\"addProjectMember\");export{$$RSC_SERVER_ACTION_0 as addProjectMember};","/* __next_internal_action_entry_do_not_use__ [{\"40e07ae6b9d836379d413f0ed53da44b07e0f06b26\":\"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(\"40e07ae6b9d836379d413f0ed53da44b07e0f06b26\",callServer,void 0,findSourceMapURL,\"removeProjectMember\");export{$$RSC_SERVER_ACTION_0 as removeProjectMember};","/* __next_internal_action_entry_do_not_use__ [{\"406d28830ca590cdcd0368927f56f1b8f2eadb6ed2\":\"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(\"406d28830ca590cdcd0368927f56f1b8f2eadb6ed2\",callServer,void 0,findSourceMapURL,\"updateProjectMemberRole\");export{$$RSC_SERVER_ACTION_0 as updateProjectMemberRole};"],"names":[],"mappings":"0DAEA,EAAA,EAAA,CAAA,CAAA,QACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,QAAA,EAAA,EAAA,CAAA,CAAA,QAAA,EAAA,EAAA,CAAA,CAAA,QAAA,EAAA,EAAA,CAAA,CAAA,QACA,EAAA,EAAA,CAAA,CAAA,QACA,EAAA,EAAA,CAAA,CAAA,QACA,EAAA,EAAA,CAAA,CAAA,QACA,EAAA,EAAA,CAAA,CAAA,QAOA,EAAA,EAAA,CAAA,CAAA,QCVA,EAAA,EAAA,CAAA,CAAA,QACA,EAAA,EAAA,CAAA,CAAA,QAQA,EAAA,EAAA,CAAA,CAAA,QA0BA,IAAM,EAAsC,CAC1C,MAAO,gEACP,OAAQ,oEACR,MAAO,+DACT,EAEO,SAAS,EAAoB,WAClC,CAAS,CACT,QAAS,CAAc,eACvB,CAAa,aACb,CAAW,gBACX,CAAc,cACd,CAAY,CACa,EACzB,GAAM,CAAC,EAAS,EAAW,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAoB,GACpD,CAAC,EAAW,EAAa,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAC,IACrC,CAAC,EAAS,EAAW,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAc,EAAA,WAAW,CAAC,MAAM,EAChE,CAAC,EAAO,EAAS,CAAG,CAAA,EAAA,EAAA,QAAQ,AAAR,EAAwB,MAC5C,CAAC,EAAS,EAAW,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,GAAC,GAEjC,EAAqB,EAAQ,IAAI,CACrC,AAAC,GAAM,EAAE,MAAM,GAAK,GAAiB,EAAE,IAAI,GAAK,EAAA,WAAW,CAAC,KAAK,EAG7D,EAAY,CAAA,EAAA,EAAA,WAAW,AAAX,EAAY,UAC5B,GAAI,CAAC,EAAU,IAAI,GAAI,OACvB,GAAW,GACX,EAAS,MAET,IAAM,EAAS,MAAM,EAAY,WAC/B,EACA,OAAQ,EAAU,IAAI,GACtB,KAAM,EACN,QAAS,CACX,GAEI,EAAO,KAAK,CACd,CADgB,CACP,EAAO,KAAK,EACZ,EAAO,MAAM,EAAE,CACxB,EAAW,AAAC,GAAS,IAAI,EAAM,EAAO,MAAM,CAAE,EAC9C,EAAa,IACb,EAAW,EAAA,WAAW,CAAC,MAAM,GAE/B,GAAW,EACb,EAAG,CAAC,EAAW,EAAS,EAAW,EAAe,EAAY,EAExD,EAAe,CAAA,EAAA,EAAA,WAAA,AAAW,EAC9B,MAAO,IACL,EAAS,MACT,IAAM,EAAS,MAAM,EAAe,WAAE,SAAW,EAAQ,QAAS,CAAc,GAC5E,EAAO,KAAK,CACd,CADgB,CACP,EAAO,KAAK,EAErB,EAAW,AAAC,GAAS,EAAK,MAAM,CAAC,AAAC,GAAM,EAAE,MAAM,GAAK,GAEzD,EACA,CAAC,EAAW,EAAe,EAAe,EAGtC,EAAmB,CAAA,EAAA,EAAA,WAAA,AAAW,EAClC,MAAO,EAAgB,KACrB,EAAS,MACT,IAAM,EAAS,MAAM,EAAa,CAChC,YACA,SACA,QAAS,EACT,QAAS,CACX,GACI,EAAO,KAAK,CACd,CADgB,CACP,EAAO,KAAK,EAErB,EAAW,AAAC,GAAS,EAAK,GAAG,CAAC,AAAC,GAAO,EAAE,MAAM,GAAK,EAAS,CAAE,GAAG,CAAC,MAAE,CAAK,EAAI,GAEjF,EACA,CAAC,EAAW,EAAe,EAAa,EAG1C,MACE,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,cAAY,wBAAwB,UAAU,sBACjD,CAAA,EAAA,EAAA,GAAA,EAAC,KAAA,CAAG,UAAU,iCAAwB,oBAErC,EACC,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CACC,cAAY,gBACZ,UAAU,kIAET,IAED,KAEJ,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,oCACZ,EAAQ,GAAG,CAAC,AAAC,GACZ,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAEC,cAAa,CAAC,WAAW,EAAE,EAAO,MAAM,CAAA,CAAE,CAC1C,UAAU,kDAEV,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,oCACb,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,+BAAuB,EAAO,MAAM,GACpD,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,KAAK,CAAA,CAAC,UAAW,CAAW,CAAC,EAAO,IAAI,CAAC,EAAI,GAAI,QAAQ,qBACvD,EAAO,IAAI,MAIf,GAAsB,EAAO,MAAM,GAAK,EACvC,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,oCACb,CAAA,EAAA,EAAA,IAAA,EAAC,EAAA,MAAM,CAAA,CACL,MAAO,EAAO,IAAI,CAClB,cAAe,AAAC,GAAU,EAAiB,EAAO,MAAM,CAAE,aAE1D,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,aAAa,CAAA,CAAC,UAAU,qBACvB,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,WAAW,CAAA,CAAA,KAEd,CAAA,EAAA,EAAA,IAAA,EAAC,EAAA,aAAa,CAAA,WACZ,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,UAAU,CAAA,CAAC,MAAO,EAAA,WAAW,CAAC,KAAK,UAAE,UACtC,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,UAAU,CAAA,CAAC,MAAO,EAAA,WAAW,CAAC,MAAM,UAAE,WACvC,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,UAAU,CAAA,CAAC,MAAO,EAAA,WAAW,CAAC,KAAK,UAAE,gBAG1C,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,MAAM,CAAA,CAAC,QAAQ,cAAc,KAAK,KAAK,QAAS,IAAM,EAAa,EAAO,MAAM,WAAG,cAIpF,OA9BC,EAAO,EAAE,GAkCE,AAAnB,MAAQ,MAAM,EACb,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,UAAU,yDAAgD,mCAMlE,EACC,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,cAAY,kBAAkB,UAAU,oDAC3C,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,mBACb,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,KAAK,CAAA,CAAC,QAAQ,uBAAc,YAC7B,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,KAAK,CAAA,CACJ,GAAG,cACH,MAAO,EACP,SAAW,AAAD,GAAO,EAAa,EAAE,MAAM,CAAC,KAAK,EAC5C,YAAY,gBACZ,SAAU,OAGd,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,sBACb,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,KAAK,CAAA,CAAC,QAAQ,oBAAW,SAC1B,CAAA,EAAA,EAAA,IAAA,EAAC,EAAA,MAAM,CAAA,CAAC,MAAO,EAAS,cAAe,AAAC,GAAU,EAAW,aAC3D,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,aAAa,CAAA,CAAC,GAAG,oBAChB,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,WAAW,CAAA,CAAA,KAEd,CAAA,EAAA,EAAA,IAAA,EAAC,EAAA,aAAa,CAAA,WACZ,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,UAAU,CAAA,CAAC,MAAO,EAAA,WAAW,CAAC,KAAK,UAAE,UACtC,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,UAAU,CAAA,CAAC,MAAO,EAAA,WAAW,CAAC,MAAM,UAAE,WACvC,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,UAAU,CAAA,CAAC,MAAO,EAAA,WAAW,CAAC,KAAK,UAAE,mBAI5C,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,MAAM,CAAA,CAAC,QAAS,EAAW,SAAU,GAAW,CAAC,EAAU,IAAI,YAC7D,EAAU,YAAc,kBAG3B,OAGV,CD7LA,IAAA,EAAA,EAAA,CAAA,CAAA,QEjB6M,EAAA,EAAA,CAAA,CAAA,QAAsG,IAAM,EAAmC,CAAA,EAAA,EAAA,iBAAb,IAAa,AAAqB,EAAC,KAAxB,wCAAqE,EAAA,UAAU,CAAC,KAAK,EAAE,EAAA,gBAAgB,CAAC,mBCA/H,EAAmC,CAAA,EAAA,EAAA,iBAAb,IAAa,AAAqB,EAAC,KAAxB,wCAAqE,EAAA,UAAU,CAAC,KAAK,EAAE,EAAA,gBAAgB,CAAC,uBCAzI,EAAmC,CAAA,EAAA,EAAA,iBAAb,IAAa,AAAqB,EAAC,KAAxB,wCAAqE,EAAA,UAAU,CAAC,KAAK,EAAE,EAAA,gBAAgB,CAAC,uBCA3J,EAAmC,CAAA,EAAA,EAAA,kBAAb,GAAa,AAAqB,EAAC,MAAxB,uCAAqE,EAAA,UAAU,CAAC,KAAK,EAAE,EAAA,gBAAgB,CAAC,eCAzI,EAAmC,CAAA,EAAA,EAAA,kBAAb,GAAkC,AAArB,EAAsB,MAAxB,uCAAqE,EAAA,UAAU,CAAC,KAAK,EAAE,EAAA,gBAAgB,CAAC,eCA/H,EAAmC,CAAA,EAAA,EAAA,kBAAb,GAAkC,AAArB,EAAsB,MAAxB,uCAAqE,EAAA,UAAU,CAAC,KAAK,EAAE,EAAA,gBAAgB,CAAC,oBCAnI,EAAmC,CAAA,EAAA,EAAA,kBAAb,GAAkC,AAArB,EAAsB,MAAxB,uCAAqE,EAAA,UAAU,CAAC,KAAK,EAAE,EAAA,gBAAgB,CAAC,uBCAhI,EAAmC,CAAA,EAAA,EAAA,kBAAb,GAAa,AAAqB,EAAC,MAAxB,uCAAqE,EAAA,UAAU,CAAC,KAAK,EAAE,EAAA,gBAAgB,CAAC,2BTiC7c,EAA6C,CACjD,QAAS,cACT,UAAW,cACX,QAAS,gBACT,UAAW,eACX,UAAW,YACb,EAEO,SAAS,EAAsB,SACpC,CAAO,CACP,OAAQ,CAAa,CACrB,OAAQ,CAAa,CACrB,QAAS,EAAiB,EAAE,WAC5B,CAAS,CACkB,EAC3B,IAAM,EAAS,CAAA,EAAA,EAAA,SAAA,AAAS,IAClB,CAAC,EAAM,EAAQ,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAC,EAAQ,IAAI,EACvC,CAAC,EAAa,EAAe,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAC,EAAQ,WAAW,EAAI,IAChE,CAAC,EAAQ,EAAU,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,GAAC,GAC/B,CAAC,EAAQ,EAAU,CAAG,CAAA,EAAA,EAAA,QAAQ,AAAR,EAA0B,GAChD,CAAC,EAAQ,EAAU,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAU,GACxC,CAAC,EAAc,EAAgB,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAC,IAC3C,CAAC,EAAc,EAAgB,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAC,IAC3C,CAAC,EAAe,EAAiB,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAC,WAC7C,CAAC,EAAe,EAAiB,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAC,IAE7C,EAAoB,CAAA,EAAA,EAAA,WAAA,AAAW,EAAC,UACpC,GAAU,GACV,MAAM,CAAA,EAAA,EAAA,eAAA,AAAe,EAAC,EAAQ,EAAE,CAAE,CAChC,KAAM,EAAK,IAAI,GACf,YAAa,EAAY,IAAI,IAAM,MACrC,GACA,GAAU,EACZ,EAAG,CAAC,EAAQ,EAAE,CAAE,EAAM,EAAY,EAE5B,EAAiB,CAAA,EAAA,EAAA,WAAW,AAAX,EAAY,UACjC,GAAI,CAAC,EAAa,IAAI,GAAI,OAC1B,IAAM,EAAS,MAAM,EAAoB,CACvC,UAAW,EAAQ,EAAE,CACrB,KAAM,EAAa,IAAI,GACvB,MAAO,UACP,WAAY,WACd,GACI,EAAO,KAAK,EAAE,CAChB,EAAU,AAAC,GAAS,IAAI,EAAM,EAAO,KAAK,CAAE,EAC5C,EAAgB,IAEpB,EAAG,CAAC,EAAQ,EAAE,CAAE,EAAa,EAEvB,EAAoB,CAAA,EAAA,EAAA,WAAA,AAAW,EAAC,MAAO,IAEvC,AAAC,CADU,MAAM,EAAoB,EAAA,EAC7B,KAAK,EACf,AADiB,EACN,AAAD,GAAU,EAAK,MAAM,CAAC,AAAC,GAAM,EAAE,EAAE,GAAK,GAEpD,EAAG,EAAE,EAEC,EAAiB,CAAA,EAAA,EAAA,WAAA,AAAW,EAAC,UACjC,GAAI,CAAC,EAAa,IAAI,GAAI,OAC1B,IAAM,EAAS,MAAM,EAAY,CAC/B,UAAW,EAAQ,EAAE,CACrB,KAAM,EAAa,IAAI,GACvB,MAAO,CACT,GACI,EAAO,KAAK,EAAE,CAChB,EAAU,AAAC,GAAS,IAAI,EAAM,EAAO,KAAK,CAAE,EAC5C,EAAgB,IAEpB,EAAG,CAAC,EAAQ,EAAE,CAAE,EAAc,EAAc,EAEtC,EAAoB,CAAA,EAAA,EAAA,WAAA,AAAW,EAAC,MAAO,IAEvC,AAAC,CADU,MAAM,EAAY,EAAA,EACrB,KAAK,EAAE,AACjB,EAAU,AAAC,GAAS,EAAK,MAAM,CAAC,AAAC,GAAM,EAAE,EAAE,GAAK,GAEpD,EAAG,EAAE,EAEC,EAAsB,CAAA,EAAA,EAAA,WAAA,AAAW,EAAC,UACtC,AAAI,IAAkB,EAAQ,IAAI,EAAE,AAE/B,CADU,MAAM,EAAgB,EAAQ,GAAE,EACnC,KAAK,EACf,AADiB,EACV,IAAI,CAAC,YAEhB,EAAG,CAAC,EAAQ,EAAE,CAAE,EAAQ,IAAI,CAAE,EAAe,EAAO,EAEpD,MACE,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,cAAY,mBAAmB,UAAW,CAAA,EAAA,EAAA,EAAA,AAAE,EAAC,sBAAuB,aAEvE,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,oCACb,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,MAAM,CAAA,CACL,QAAQ,QACR,KAAK,KACL,UAAU,cACV,QAAS,IAAM,EAAO,IAAI,CAAC,CAAC,UAAU,EAAE,EAAQ,IAAI,CAAA,CAAE,EACtD,cAAY,2BAEZ,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,SAAS,CAAA,CAAC,UAAU,cAEvB,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,QAAQ,CAAA,CAAC,UAAU,kCACpB,CAAA,EAAA,EAAA,GAAA,EAAC,KAAA,CAAG,UAAU,4CAAmC,qBACjD,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,KAAK,CAAA,CAAC,QAAQ,UAAU,UAAU,uBAChC,EAAQ,gBAAgB,MAK7B,CAAA,EAAA,EAAA,IAAA,EAAC,UAAA,CAAQ,UAAU,YAAY,cAAY,6BACzC,CAAA,EAAA,EAAA,GAAA,EAAC,KAAA,CAAG,UAAU,yDAAgD,YAC9D,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,sBACb,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,WACC,CAAA,EAAA,EAAA,GAAA,EAAC,QAAA,CAAM,UAAU,oEAA2D,iBAG5E,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,KAAK,CAAA,CACJ,MAAO,EACP,SAAU,AAAC,GAAM,EAAQ,EAAE,MAAM,CAAC,KAAK,EACvC,UAAU,cACV,cAAY,0BAGhB,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,WACC,CAAA,EAAA,EAAA,GAAA,EAAC,QAAA,CAAM,UAAU,oEAA2D,gBAG5E,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,KAAK,CAAA,CACJ,MAAO,EACP,SAAU,AAAC,GAAM,EAAe,EAAE,MAAM,CAAC,KAAK,EAC9C,YAAY,uBACZ,UAAU,cACV,cAAY,iCAGhB,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,MAAM,CAAA,CACL,KAAK,KACL,UAAU,cACV,QAAS,EACT,SAAU,GAAU,CAAC,EAAK,IAAI,GAC9B,cAAY,4BAEX,EAAS,YAAc,uBAK9B,CAAA,EAAA,EAAA,GAAA,EAAC,KAAA,CAAG,UAAU,kBAGd,CAAA,EAAA,EAAA,GAAA,EAAC,UAAA,CAAQ,cAAY,qCACnB,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,gBAAgB,CAAA,CAAC,UAAW,EAAQ,EAAE,CAAE,oBAAqB,EAAQ,YAAY,KAGpF,CAAA,EAAA,EAAA,GAAA,EAAC,KAAA,CAAG,UAAU,kBAGd,CAAA,EAAA,EAAA,IAAA,EAAC,UAAA,CAAQ,UAAU,YAAY,cAAY,4BACzC,CAAA,EAAA,EAAA,GAAA,EAAC,KAAA,CAAG,UAAU,yDAAgD,qBAC9D,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,UAAU,qBACZ,EAAO,GAAG,CAAC,AAAC,GACX,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAEC,UAAU,6DACV,cAAa,CAAC,MAAM,EAAE,EAAM,EAAE,CAAA,CAAE,WAEhC,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CACC,UAAU,oCACV,MAAO,CAAE,gBAAiB,EAAM,KAAK,AAAC,IAExC,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,kBAAU,EAAM,IAAI,GACpC,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,KAAK,CAAA,CACJ,QAAQ,UACR,UAAW,CAAA,EAAA,EAAA,EAAA,AAAE,EAAC,aAAc,CAAkB,CAAC,EAAM,UAAU,CAAC,EAAI,wBAEnE,EAAM,UAAU,GAElB,EAAM,SAAS,CACd,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,KAAK,CAAA,CAAC,QAAQ,YAAY,UAAU,sBAAa,YAIlD,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,MAAM,CAAA,CACL,QAAQ,QACR,KAAK,KACL,UAAU,uDACV,QAAS,IAAM,EAAkB,EAAM,EAAE,EACzC,MAAM,wBAEN,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,MAAM,CAAA,CAAC,UAAU,gBA3BjB,EAAM,EAAE,KAiCnB,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,oCACb,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,KAAK,CAAA,CACJ,MAAO,EACP,SAAU,AAAC,GAAM,EAAgB,EAAE,MAAM,CAAC,KAAK,EAC/C,YAAY,iBACZ,UAAU,qBACV,cAAY,kBACZ,UAAW,AAAC,IACI,UAAV,EAAE,GAAG,EAAc,GACzB,IAEF,CAAA,EAAA,EAAA,IAAA,EAAC,EAAA,MAAM,CAAA,CACL,QAAQ,UACR,KAAK,KACL,UAAU,cACV,QAAS,EACT,SAAU,CAAC,EAAa,IAAI,GAC5B,cAAY,0BAEZ,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,IAAI,CAAA,CAAC,UAAU,iBAAiB,eAMvC,CAAA,EAAA,EAAA,GAAA,EAAC,KAAA,CAAG,UAAU,kBAGd,CAAA,EAAA,EAAA,IAAA,EAAC,UAAA,CAAQ,UAAU,YAAY,cAAY,4BACzC,CAAA,EAAA,EAAA,GAAA,EAAC,KAAA,CAAG,UAAU,yDAAgD,WAC3C,IAAlB,EAAO,MAAM,CACZ,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,CAAE,UAAU,6CAAoC,kBAEjD,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,UAAU,kCACZ,EAAO,GAAG,CAAC,AAAC,GACX,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAEC,UAAU,gEACV,cAAa,CAAC,MAAM,EAAE,EAAM,EAAE,CAAA,CAAE,WAEhC,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,uBAAuB,MAAO,CAAE,gBAAiB,EAAM,KAAK,AAAC,IAC7E,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,uBAAe,EAAM,IAAI,GACzC,CAAA,EAAA,EAAA,GAAA,EAAC,SAAA,CACC,KAAK,SACL,UAAU,4DACV,QAAS,IAAM,EAAkB,EAAM,EAAE,EACzC,MAAM,wBACP,QAXI,EAAM,EAAE,KAkBrB,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,oCACb,CAAA,EAAA,EAAA,GAAA,EAAC,QAAA,CACC,KAAK,QACL,MAAO,EACP,SAAU,AAAC,GAAM,EAAiB,EAAE,MAAM,CAAC,KAAK,EAChD,UAAU,8CACV,cAAY,oBAEd,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,KAAK,CAAA,CACJ,MAAO,EACP,SAAU,AAAC,GAAM,EAAgB,EAAE,MAAM,CAAC,KAAK,EAC/C,YAAY,iBACZ,UAAU,qBACV,cAAY,kBACZ,UAAW,AAAC,IACI,UAAV,EAAE,GAAG,EAAc,GACzB,IAEF,CAAA,EAAA,EAAA,IAAA,EAAC,EAAA,MAAM,CAAA,CACL,QAAQ,UACR,KAAK,KACL,UAAU,cACV,QAAS,EACT,SAAU,CAAC,EAAa,IAAI,GAC5B,cAAY,0BAEZ,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,IAAI,CAAA,CAAC,UAAU,iBAAiB,eAMvC,CAAA,EAAA,EAAA,GAAA,EAAC,KAAA,CAAG,UAAU,kBAGd,CAAA,EAAA,EAAA,GAAA,EAAC,UAAA,CAAQ,cAAY,4BACnB,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CACC,UAAW,EAAQ,EAAE,CACrB,QAAS,EACT,cAAc,GACd,YAAa,EACb,eAAgB,EAChB,aAAc,MAIlB,CAAA,EAAA,EAAA,GAAA,EAAC,KAAA,CAAG,UAAU,kBAGd,CAAA,EAAA,EAAA,IAAA,EAAC,UAAA,CAAQ,UAAU,YAAY,cAAY,wBACzC,CAAA,EAAA,EAAA,GAAA,EAAC,KAAA,CAAG,UAAU,0EAAiE,gBAG/E,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,wDACb,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,CAAE,UAAU,wBAAe,wFAG5B,CAAA,EAAA,EAAA,IAAA,EAAC,IAAA,CAAE,UAAU,mDAAyC,QAC/C,CAAA,EAAA,EAAA,GAAA,EAAC,SAAA,UAAQ,EAAQ,IAAI,GAAU,kBAEtC,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,oCACb,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,KAAK,CAAA,CACJ,MAAO,EACP,SAAU,AAAC,GAAM,EAAiB,EAAE,MAAM,CAAC,KAAK,EAChD,YAAa,EAAQ,IAAI,CACzB,UAAU,qBACV,cAAY,yBAEd,CAAA,EAAA,EAAA,IAAA,EAAC,EAAA,MAAM,CAAA,CACL,QAAQ,cACR,KAAK,KACL,UAAU,cACV,QAAS,EACT,SAAU,IAAkB,EAAQ,IAAI,CACxC,cAAY,+BAEZ,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,MAAM,CAAA,CAAC,UAAU,iBAAiB,+BAQjD"}
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%3A4794a5%20%3Ctext/javascript%3E","../../../../../../../src/presentation/web/app/actions/data%3A62e32a%20%3Ctext/javascript%3E","../../../../../../../src/presentation/web/app/actions/data%3A50d39f%20%3Ctext/javascript%3E","../../../../../../../src/presentation/web/app/actions/data%3A60c546%20%3Ctext/javascript%3E","../../../../../../../src/presentation/web/app/actions/data%3Ab975a9%20%3Ctext/javascript%3E","../../../../../../../src/presentation/web/app/actions/data%3A467e97%20%3Ctext/javascript%3E","../../../../../../../src/presentation/web/app/actions/data%3A0016a4%20%3Ctext/javascript%3E","../../../../../../../src/presentation/web/app/actions/data%3Afbf8e3%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__ [{\"4017a70c5c1e2da830ce1a9c053d40c3f67e72d9cb\":\"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(\"4017a70c5c1e2da830ce1a9c053d40c3f67e72d9cb\",callServer,void 0,findSourceMapURL,\"deletePmProject\");export{$$RSC_SERVER_ACTION_0 as deletePmProject};","/* __next_internal_action_entry_do_not_use__ [{\"40ef962d6872be283839fc987699032959d5b66114\":\"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(\"40ef962d6872be283839fc987699032959d5b66114\",callServer,void 0,findSourceMapURL,\"createWorkItemState\");export{$$RSC_SERVER_ACTION_1 as createWorkItemState};","/* __next_internal_action_entry_do_not_use__ [{\"40aab04f82dea5df4c7b0f176bf9d7e9c590c52ea7\":\"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(\"40aab04f82dea5df4c7b0f176bf9d7e9c590c52ea7\",callServer,void 0,findSourceMapURL,\"deleteWorkItemState\");export{$$RSC_SERVER_ACTION_3 as deleteWorkItemState};","/* __next_internal_action_entry_do_not_use__ [{\"4097ac3d9da3a1fd6741976ecb84042481a920e8a6\":\"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(\"4097ac3d9da3a1fd6741976ecb84042481a920e8a6\",callServer,void 0,findSourceMapURL,\"createLabel\");export{$$RSC_SERVER_ACTION_1 as createLabel};","/* __next_internal_action_entry_do_not_use__ [{\"4036ad604274b05ade8b75c7ed91b1aa99550036da\":\"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(\"4036ad604274b05ade8b75c7ed91b1aa99550036da\",callServer,void 0,findSourceMapURL,\"deleteLabel\");export{$$RSC_SERVER_ACTION_3 as deleteLabel};","/* __next_internal_action_entry_do_not_use__ [{\"40b559ec5522a09d854d7b046575eceb8610c57161\":\"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(\"40b559ec5522a09d854d7b046575eceb8610c57161\",callServer,void 0,findSourceMapURL,\"addProjectMember\");export{$$RSC_SERVER_ACTION_0 as addProjectMember};","/* __next_internal_action_entry_do_not_use__ [{\"40a2d46892357d491f2e95c0b6d19147256a62e455\":\"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(\"40a2d46892357d491f2e95c0b6d19147256a62e455\",callServer,void 0,findSourceMapURL,\"removeProjectMember\");export{$$RSC_SERVER_ACTION_0 as removeProjectMember};","/* __next_internal_action_entry_do_not_use__ [{\"402f9a6fffdda99b6fbaba4f7d41f10bbc70d8cc38\":\"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(\"402f9a6fffdda99b6fbaba4f7d41f10bbc70d8cc38\",callServer,void 0,findSourceMapURL,\"updateProjectMemberRole\");export{$$RSC_SERVER_ACTION_0 as updateProjectMemberRole};"],"names":[],"mappings":"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"}