@shepai/cli 1.172.0 → 1.174.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (282) hide show
  1. package/dist/src/presentation/web/app/features/feature-tree-page-client.d.ts +7 -1
  2. package/dist/src/presentation/web/app/features/feature-tree-page-client.d.ts.map +1 -1
  3. package/dist/src/presentation/web/app/features/feature-tree-page-client.js +142 -3
  4. package/dist/src/presentation/web/app/features/get-feature-tree-data.d.ts.map +1 -1
  5. package/dist/src/presentation/web/app/features/get-feature-tree-data.js +4 -1
  6. package/dist/src/presentation/web/components/common/repo-group/repo-group.js +1 -1
  7. package/dist/src/presentation/web/components/features/feature-tree-table/feature-tree-table.d.ts +21 -5
  8. package/dist/src/presentation/web/components/features/feature-tree-table/feature-tree-table.d.ts.map +1 -1
  9. package/dist/src/presentation/web/components/features/feature-tree-table/feature-tree-table.js +169 -87
  10. package/dist/src/presentation/web/components/features/feature-tree-table/index.d.ts +2 -2
  11. package/dist/src/presentation/web/components/features/feature-tree-table/index.d.ts.map +1 -1
  12. package/dist/src/presentation/web/components/features/feature-tree-table/index.js +1 -1
  13. package/dist/tsconfig.build.tsbuildinfo +1 -1
  14. package/package.json +1 -1
  15. package/web/.next/BUILD_ID +1 -1
  16. package/web/.next/build-manifest.json +4 -4
  17. package/web/.next/fallback-build-manifest.json +2 -2
  18. package/web/.next/prerender-manifest.json +3 -3
  19. package/web/.next/required-server-files.js +2 -2
  20. package/web/.next/required-server-files.json +2 -2
  21. package/web/.next/server/app/(dashboard)/@drawer/adopt/page/build-manifest.json +2 -2
  22. package/web/.next/server/app/(dashboard)/@drawer/adopt/page/server-reference-manifest.json +29 -29
  23. package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js.nft.json +1 -1
  24. package/web/.next/server/app/(dashboard)/@drawer/adopt/page_client-reference-manifest.js +1 -1
  25. package/web/.next/server/app/(dashboard)/@drawer/chat/page/build-manifest.json +2 -2
  26. package/web/.next/server/app/(dashboard)/@drawer/chat/page/server-reference-manifest.json +27 -27
  27. package/web/.next/server/app/(dashboard)/@drawer/chat/page.js.nft.json +1 -1
  28. package/web/.next/server/app/(dashboard)/@drawer/chat/page_client-reference-manifest.js +1 -1
  29. package/web/.next/server/app/(dashboard)/@drawer/create/page/build-manifest.json +2 -2
  30. package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +30 -30
  31. package/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
  32. package/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
  33. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/build-manifest.json +2 -2
  34. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/server-reference-manifest.json +38 -38
  35. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  36. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  37. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/build-manifest.json +2 -2
  38. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +38 -38
  39. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
  40. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
  41. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page/build-manifest.json +2 -2
  42. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page/server-reference-manifest.json +28 -28
  43. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page.js.nft.json +1 -1
  44. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page_client-reference-manifest.js +1 -1
  45. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/build-manifest.json +2 -2
  46. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +28 -28
  47. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
  48. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  49. package/web/.next/server/app/(dashboard)/chat/page/build-manifest.json +2 -2
  50. package/web/.next/server/app/(dashboard)/chat/page/server-reference-manifest.json +27 -27
  51. package/web/.next/server/app/(dashboard)/chat/page.js.nft.json +1 -1
  52. package/web/.next/server/app/(dashboard)/chat/page_client-reference-manifest.js +1 -1
  53. package/web/.next/server/app/(dashboard)/create/page/build-manifest.json +2 -2
  54. package/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +30 -30
  55. package/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
  56. package/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
  57. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page/build-manifest.json +2 -2
  58. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page/server-reference-manifest.json +38 -38
  59. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  60. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  61. package/web/.next/server/app/(dashboard)/feature/[featureId]/page/build-manifest.json +2 -2
  62. package/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +38 -38
  63. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
  64. package/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
  65. package/web/.next/server/app/(dashboard)/page/build-manifest.json +2 -2
  66. package/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +27 -27
  67. package/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
  68. package/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
  69. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page/build-manifest.json +2 -2
  70. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page/server-reference-manifest.json +28 -28
  71. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page.js.nft.json +1 -1
  72. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page_client-reference-manifest.js +1 -1
  73. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/build-manifest.json +2 -2
  74. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +28 -28
  75. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
  76. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  77. package/web/.next/server/app/_global-error/page/build-manifest.json +2 -2
  78. package/web/.next/server/app/_global-error.html +2 -2
  79. package/web/.next/server/app/_global-error.rsc +1 -1
  80. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  81. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  82. package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  83. package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  84. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  85. package/web/.next/server/app/_not-found/page/build-manifest.json +2 -2
  86. package/web/.next/server/app/_not-found/page/server-reference-manifest.json +6 -6
  87. package/web/.next/server/app/_not-found/page.js.nft.json +1 -1
  88. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  89. package/web/.next/server/app/features/page/build-manifest.json +2 -2
  90. package/web/.next/server/app/features/page/server-reference-manifest.json +6 -6
  91. package/web/.next/server/app/features/page.js.nft.json +1 -1
  92. package/web/.next/server/app/features/page_client-reference-manifest.js +1 -1
  93. package/web/.next/server/app/settings/page/build-manifest.json +2 -2
  94. package/web/.next/server/app/settings/page/server-reference-manifest.json +9 -9
  95. package/web/.next/server/app/settings/page.js.nft.json +1 -1
  96. package/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  97. package/web/.next/server/app/skills/page/build-manifest.json +2 -2
  98. package/web/.next/server/app/skills/page/server-reference-manifest.json +13 -13
  99. package/web/.next/server/app/skills/page.js.nft.json +1 -1
  100. package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  101. package/web/.next/server/app/tools/page/build-manifest.json +2 -2
  102. package/web/.next/server/app/tools/page/server-reference-manifest.json +11 -11
  103. package/web/.next/server/app/tools/page.js.nft.json +1 -1
  104. package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  105. package/web/.next/server/app/version/page/build-manifest.json +2 -2
  106. package/web/.next/server/app/version/page/server-reference-manifest.json +6 -6
  107. package/web/.next/server/app/version/page.js.nft.json +1 -1
  108. package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  109. package/web/.next/server/chunks/[root-of-the-server]__a402b567._.js +1 -1
  110. package/web/.next/server/chunks/ssr/403f9_next_dist_a53cb908._.js +1 -1
  111. package/web/.next/server/chunks/ssr/403f9_next_dist_esm_ceb2fa1e._.js +1 -1
  112. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js +1 -1
  113. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js.map +1 -1
  114. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_feature-drawer-client_tsx_e9755fc8._.js +2 -2
  115. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_feature-drawer-client_tsx_e9755fc8._.js.map +1 -1
  116. package/web/.next/server/chunks/ssr/[root-of-the-server]__08c912ab._.js +1 -1
  117. package/web/.next/server/chunks/ssr/[root-of-the-server]__08c912ab._.js.map +1 -1
  118. package/web/.next/server/chunks/ssr/[root-of-the-server]__0c5452c3._.js +1 -1
  119. package/web/.next/server/chunks/ssr/[root-of-the-server]__1cd4327c._.js +1 -1
  120. package/web/.next/server/chunks/ssr/[root-of-the-server]__1cd4327c._.js.map +1 -1
  121. package/web/.next/server/chunks/ssr/[root-of-the-server]__1f389e5d._.js +1 -1
  122. package/web/.next/server/chunks/ssr/[root-of-the-server]__1f389e5d._.js.map +1 -1
  123. package/web/.next/server/chunks/ssr/[root-of-the-server]__22d17c66._.js +3 -0
  124. package/web/.next/server/chunks/ssr/[root-of-the-server]__22d17c66._.js.map +1 -0
  125. package/web/.next/server/chunks/ssr/[root-of-the-server]__357d99f9._.js +1 -1
  126. package/web/.next/server/chunks/ssr/[root-of-the-server]__4fb81977._.js +1 -1
  127. package/web/.next/server/chunks/ssr/[root-of-the-server]__4fb81977._.js.map +1 -1
  128. package/web/.next/server/chunks/ssr/[root-of-the-server]__6c7d3936._.js +1 -1
  129. package/web/.next/server/chunks/ssr/[root-of-the-server]__6c7d3936._.js.map +1 -1
  130. package/web/.next/server/chunks/ssr/[root-of-the-server]__7dcd0917._.js +1 -1
  131. package/web/.next/server/chunks/ssr/[root-of-the-server]__7dcd0917._.js.map +1 -1
  132. package/web/.next/server/chunks/ssr/[root-of-the-server]__851f6adb._.js +1 -1
  133. package/web/.next/server/chunks/ssr/[root-of-the-server]__86ff0bc5._.js +2 -2
  134. package/web/.next/server/chunks/ssr/[root-of-the-server]__92ffd5ee._.js +2 -2
  135. package/web/.next/server/chunks/ssr/[root-of-the-server]__92ffd5ee._.js.map +1 -1
  136. package/web/.next/server/chunks/ssr/[root-of-the-server]__b020c17d._.js +2 -2
  137. package/web/.next/server/chunks/ssr/[root-of-the-server]__b020c17d._.js.map +1 -1
  138. package/web/.next/server/chunks/ssr/[root-of-the-server]__b7b96453._.js +1 -1
  139. package/web/.next/server/chunks/ssr/[root-of-the-server]__b7b96453._.js.map +1 -1
  140. package/web/.next/server/chunks/ssr/[root-of-the-server]__ba7f5873._.js +1 -1
  141. package/web/.next/server/chunks/ssr/[root-of-the-server]__ba7f5873._.js.map +1 -1
  142. package/web/.next/server/chunks/ssr/[root-of-the-server]__c5e09f6f._.js +1 -1
  143. package/web/.next/server/chunks/ssr/[root-of-the-server]__c5e09f6f._.js.map +1 -1
  144. package/web/.next/server/chunks/ssr/_02e01240._.js +1 -1
  145. package/web/.next/server/chunks/ssr/_02e01240._.js.map +1 -1
  146. package/web/.next/server/chunks/ssr/_05c23ad9._.js +1 -1
  147. package/web/.next/server/chunks/ssr/_05c23ad9._.js.map +1 -1
  148. package/web/.next/server/chunks/ssr/_073183f4._.js +3 -0
  149. package/web/.next/server/chunks/ssr/_073183f4._.js.map +1 -0
  150. package/web/.next/server/chunks/ssr/_16eb4fec._.js +1 -1
  151. package/web/.next/server/chunks/ssr/_16eb4fec._.js.map +1 -1
  152. package/web/.next/server/chunks/ssr/_1879404a._.js +1 -1
  153. package/web/.next/server/chunks/ssr/_18886033._.js +1 -1
  154. package/web/.next/server/chunks/ssr/_18886033._.js.map +1 -1
  155. package/web/.next/server/chunks/ssr/_1b7dae9a._.js +1 -1
  156. package/web/.next/server/chunks/ssr/_22e00a14._.js +1 -1
  157. package/web/.next/server/chunks/ssr/_22e00a14._.js.map +1 -1
  158. package/web/.next/server/chunks/ssr/{_5119a3df._.js → _295fffde._.js} +2 -2
  159. package/web/.next/server/chunks/ssr/_295fffde._.js.map +1 -0
  160. package/web/.next/server/chunks/ssr/{_7b946eeb._.js → _3a71f39b._.js} +3 -3
  161. package/web/.next/server/chunks/ssr/{_7b946eeb._.js.map → _3a71f39b._.js.map} +1 -1
  162. package/web/.next/server/chunks/ssr/_43ba79e7._.js +1 -1
  163. package/web/.next/server/chunks/ssr/{_6f35fb9a._.js → _49b8d085._.js} +2 -2
  164. package/web/.next/server/chunks/ssr/{_6f35fb9a._.js.map → _49b8d085._.js.map} +1 -1
  165. package/web/.next/server/chunks/ssr/_4cbb7f95._.js +1 -1
  166. package/web/.next/server/chunks/ssr/_4cbb7f95._.js.map +1 -1
  167. package/web/.next/server/chunks/ssr/_56b9d60f._.js +1 -1
  168. package/web/.next/server/chunks/ssr/_56b9d60f._.js.map +1 -1
  169. package/web/.next/server/chunks/ssr/_6abfa39e._.js +3 -0
  170. package/web/.next/server/chunks/ssr/_6abfa39e._.js.map +1 -0
  171. package/web/.next/server/chunks/ssr/_7476c702._.js +3 -0
  172. package/web/.next/server/chunks/ssr/_7476c702._.js.map +1 -0
  173. package/web/.next/server/chunks/ssr/{_40918326._.js → _7953be4d._.js} +3 -3
  174. package/web/.next/server/chunks/ssr/{_40918326._.js.map → _7953be4d._.js.map} +1 -1
  175. package/web/.next/server/chunks/ssr/_7cb0396e._.js +3 -0
  176. package/web/.next/server/chunks/ssr/_7cb0396e._.js.map +1 -0
  177. package/web/.next/server/chunks/ssr/_a5a5901d._.js +1 -1
  178. package/web/.next/server/chunks/ssr/_a5a5901d._.js.map +1 -1
  179. package/web/.next/server/chunks/ssr/_ad09f271._.js +1 -1
  180. package/web/.next/server/chunks/ssr/_ad09f271._.js.map +1 -1
  181. package/web/.next/server/chunks/ssr/_bb09579b._.js +1 -1
  182. package/web/.next/server/chunks/ssr/_c3f595c6._.js +1 -1
  183. package/web/.next/server/chunks/ssr/_c3f595c6._.js.map +1 -1
  184. package/web/.next/server/chunks/ssr/{_0020fddd._.js → _d9c0a97a._.js} +3 -3
  185. package/web/.next/server/chunks/ssr/_d9c0a97a._.js.map +1 -0
  186. package/web/.next/server/chunks/ssr/_e680c57c._.js +9 -0
  187. package/web/.next/server/chunks/ssr/_e680c57c._.js.map +1 -0
  188. package/web/.next/server/chunks/ssr/_ea9e1556._.js +1 -1
  189. package/web/.next/server/chunks/ssr/_ea9e1556._.js.map +1 -1
  190. package/web/.next/server/chunks/ssr/_f1ba9be6._.js +2 -2
  191. package/web/.next/server/chunks/ssr/_f1ba9be6._.js.map +1 -1
  192. package/web/.next/server/chunks/ssr/_f33cd07e._.js +2 -2
  193. package/web/.next/server/chunks/ssr/_f33cd07e._.js.map +1 -1
  194. package/web/.next/server/chunks/ssr/_f8b45233._.js +1 -1
  195. package/web/.next/server/chunks/ssr/_f8b45233._.js.map +1 -1
  196. package/web/.next/server/chunks/ssr/_fd595af2._.js +3 -0
  197. package/web/.next/server/chunks/ssr/_fd595af2._.js.map +1 -0
  198. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js +1 -1
  199. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js.map +1 -1
  200. package/web/.next/server/chunks/ssr/f3a1f_components_common_control-center-drawer_global-chat-drawer-client_tsx_158c4b12._.js +1 -1
  201. package/web/.next/server/chunks/ssr/f3a1f_components_common_control-center-drawer_repository-drawer-client_tsx_39a00c03._.js +1 -1
  202. package/web/.next/server/chunks/ssr/f3a1f_components_common_control-center-drawer_repository-drawer-client_tsx_39a00c03._.js.map +1 -1
  203. package/web/.next/server/chunks/ssr/node_modules__pnpm_63d47a3e._.js +3 -0
  204. package/web/.next/server/chunks/ssr/node_modules__pnpm_63d47a3e._.js.map +1 -0
  205. package/web/.next/server/chunks/ssr/node_modules__pnpm_747b43ac._.js +3 -0
  206. package/web/.next/server/chunks/ssr/node_modules__pnpm_747b43ac._.js.map +1 -0
  207. package/web/.next/server/chunks/ssr/node_modules__pnpm_ef15a0bd._.js +1 -1
  208. package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_open-ide_ts_baaca5d5._.js +1 -1
  209. package/web/.next/server/chunks/ssr/src_presentation_web_app_features_feature-tree-page-client_tsx_34c5cbbf._.js +2 -2
  210. package/web/.next/server/chunks/ssr/src_presentation_web_app_features_feature-tree-page-client_tsx_34c5cbbf._.js.map +1 -1
  211. package/web/.next/server/chunks/ssr/src_presentation_web_components_895e5bfa._.js +1 -1
  212. package/web/.next/server/chunks/ssr/src_presentation_web_components_895e5bfa._.js.map +1 -1
  213. package/web/.next/server/chunks/ssr/src_presentation_web_components_a5e6c910._.js +1 -1
  214. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js +1 -1
  215. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js.map +1 -1
  216. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_skills_8a174cac._.js +1 -1
  217. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_skills_8a174cac._.js.map +1 -1
  218. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_tools_tools-page-client_tsx_3d0aa70c._.js +1 -1
  219. package/web/.next/server/chunks/ssr/src_presentation_web_components_ui_select_tsx_45d6b8ae._.js +1 -1
  220. package/web/.next/server/middleware-build-manifest.js +2 -2
  221. package/web/.next/server/pages/500.html +2 -2
  222. package/web/.next/server/server-reference-manifest.js +1 -1
  223. package/web/.next/server/server-reference-manifest.json +50 -50
  224. package/web/.next/static/chunks/{e343129b58522131.js → 0baf5a2e56d191cf.js} +1 -1
  225. package/web/.next/static/chunks/{49e9841d15fa664f.js → 32c46154c31c58fc.js} +1 -1
  226. package/web/.next/static/chunks/{a92d22657e3e6700.js → 393b27ab5de6c454.js} +1 -1
  227. package/web/.next/static/chunks/46e2693dbc9262fd.js +5 -0
  228. package/web/.next/static/chunks/{b2f98efed01ed1e3.js → 534194b584a151ed.js} +1 -1
  229. package/web/.next/static/chunks/5a2e1c8699897c26.js +3 -0
  230. package/web/.next/static/chunks/6bc240cd4ae43267.js +1 -0
  231. package/web/.next/static/chunks/{c055ce9033cd57d7.js → 6dc0a23d333274ae.js} +3 -3
  232. package/web/.next/static/chunks/8492d8e0b5f9a4e8.js +1 -0
  233. package/web/.next/static/chunks/84b480808bd74fa9.css +1 -0
  234. package/web/.next/static/chunks/98e3a7cf58fc912a.js +1 -0
  235. package/web/.next/static/chunks/{ee2e17b69eb559f8.js → a060ad1bb509687f.js} +1 -1
  236. package/web/.next/static/chunks/{2a17ddad9b7638db.js → a2a03ecb10000974.js} +1 -1
  237. package/web/.next/static/chunks/ad47bc6ddec7508e.js +7 -0
  238. package/web/.next/static/chunks/b49ab0b290e9342d.js +1 -0
  239. package/web/.next/static/chunks/bb479c31b5b53bac.js +8 -0
  240. package/web/.next/static/chunks/c10c0d6d458453bc.js +1 -0
  241. package/web/.next/static/chunks/{43c9aeed1753dd81.js → c164b157638b2a8b.js} +1 -1
  242. package/web/.next/static/chunks/{785b2df10318bd60.js → d9c9db1823b4dffd.js} +1 -1
  243. package/web/.next/static/chunks/e30aa6d2cf824fa1.js +1 -0
  244. package/web/.next/static/chunks/{185e4f36cb6efb24.js → eb1ca1b0a34166f5.js} +1 -1
  245. package/web/.next/static/chunks/{cde2742a766567a2.js → f5abbc495d496f5b.js} +1 -1
  246. package/web/.next/static/chunks/fc0232384ec2b48d.js +1 -0
  247. package/web/.next/static/chunks/{turbopack-b38a68b1b1c41a87.js → turbopack-fa58b7ea4a4b26e7.js} +1 -1
  248. package/web/.next/server/chunks/ssr/[root-of-the-server]__fa525872._.js +0 -3
  249. package/web/.next/server/chunks/ssr/[root-of-the-server]__fa525872._.js.map +0 -1
  250. package/web/.next/server/chunks/ssr/_0020fddd._.js.map +0 -1
  251. package/web/.next/server/chunks/ssr/_5119a3df._.js.map +0 -1
  252. package/web/.next/server/chunks/ssr/_560f2971._.js +0 -3
  253. package/web/.next/server/chunks/ssr/_560f2971._.js.map +0 -1
  254. package/web/.next/server/chunks/ssr/_890fafe7._.js +0 -3
  255. package/web/.next/server/chunks/ssr/_890fafe7._.js.map +0 -1
  256. package/web/.next/server/chunks/ssr/_a963dd3c._.js +0 -3
  257. package/web/.next/server/chunks/ssr/_a963dd3c._.js.map +0 -1
  258. package/web/.next/server/chunks/ssr/_df737cce._.js +0 -3
  259. package/web/.next/server/chunks/ssr/_df737cce._.js.map +0 -1
  260. package/web/.next/server/chunks/ssr/_e3f14907._.js +0 -9
  261. package/web/.next/server/chunks/ssr/_e3f14907._.js.map +0 -1
  262. package/web/.next/server/chunks/ssr/_f535d854._.js +0 -3
  263. package/web/.next/server/chunks/ssr/_f535d854._.js.map +0 -1
  264. package/web/.next/server/chunks/ssr/node_modules__pnpm_1300ae39._.js +0 -3
  265. package/web/.next/server/chunks/ssr/node_modules__pnpm_1300ae39._.js.map +0 -1
  266. package/web/.next/server/chunks/ssr/src_presentation_web_components_common_page-header_index_ts_bdf4db0b._.js +0 -3
  267. package/web/.next/server/chunks/ssr/src_presentation_web_components_common_page-header_index_ts_bdf4db0b._.js.map +0 -1
  268. package/web/.next/static/chunks/3506d521396f9164.js +0 -1
  269. package/web/.next/static/chunks/3e393d6a78b2ade4.js +0 -1
  270. package/web/.next/static/chunks/4559a403ee40dd19.js +0 -7
  271. package/web/.next/static/chunks/4cb1df635716be2b.js +0 -1
  272. package/web/.next/static/chunks/5ed47e998707b519.js +0 -8
  273. package/web/.next/static/chunks/712d96368dc18c1e.js +0 -3
  274. package/web/.next/static/chunks/a6bc96e6d5328505.js +0 -1
  275. package/web/.next/static/chunks/b14085e99b88e7f7.css +0 -1
  276. package/web/.next/static/chunks/c139f0b8a7f76f12.js +0 -1
  277. package/web/.next/static/chunks/cc5fe8d1d9e1e519.js +0 -5
  278. package/web/.next/static/chunks/d5366257d6b9f855.js +0 -1
  279. package/web/.next/static/chunks/f998b42b5cddafd6.js +0 -1
  280. /package/web/.next/static/{zsdHmcbky5vsmzUX-NSIh → nLYXtW5TIrvQiMl1yyD4O}/_buildManifest.js +0 -0
  281. /package/web/.next/static/{zsdHmcbky5vsmzUX-NSIh → nLYXtW5TIrvQiMl1yyD4O}/_clientMiddlewareManifest.json +0 -0
  282. /package/web/.next/static/{zsdHmcbky5vsmzUX-NSIh → nLYXtW5TIrvQiMl1yyD4O}/_ssgManifest.js +0 -0
@@ -1,3 +1,3 @@
1
- module.exports=[14177,a=>{"use strict";let b=(0,a.i(25700).default)("chevrons-up-down",[["path",{d:"m7 15 5 5 5-5",key:"1hf1tw"}],["path",{d:"m7 9 5-5 5 5",key:"sgt6xg"}]]);a.s(["ChevronsUpDown",()=>b],14177)},85959,a=>{"use strict";var b=a.i(10973),c=a.i(96960),d=a.i(69845),e=a.i(52313),f=a.i(25674);let g=(0,f.createServerReference)("40f8fd8f105c1c202c854bb4666a41f6abae05549d",f.callServer,void 0,f.findSourceMapURL,"adoptBranch"),h=(0,f.createServerReference)("402d22e68c359ac3ab8239092bd26567b9a811ad9d",f.callServer,void 0,f.findSourceMapURL,"listBranches");var i=a.i(72016),j=a.i(10606),k=a.i(14177),l=a.i(53170),m=a.i(88064);a.i(78454);var n=a.i(24255),o=a.i(2824),p=a.i(18948),q=a.i(90920),r=a.i(584),s=a.i(31378),t=a.i(85536);let u=c.forwardRef(({className:a,...c},d)=>(0,b.jsx)("div",{ref:d,className:(0,t.cn)("bg-popover text-popover-foreground flex h-full w-full flex-col overflow-hidden rounded-md",a),...c}));u.displayName="Command";let v=c.forwardRef(({className:a,...c},d)=>(0,b.jsxs)("div",{className:"flex items-center border-b px-3",children:[(0,b.jsx)(s.Search,{className:"me-2 h-4 w-4 shrink-0 opacity-50"}),(0,b.jsx)("input",{ref:d,className:(0,t.cn)("placeholder:text-muted-foreground flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-none disabled:cursor-not-allowed disabled:opacity-50",a),...c})]}));v.displayName="CommandInput";let w=c.forwardRef(({className:a,...c},d)=>(0,b.jsx)("div",{ref:d,className:(0,t.cn)("max-h-[300px] overflow-x-hidden overflow-y-auto",a),...c}));w.displayName="CommandList";let x=c.forwardRef(({className:a,...c},d)=>(0,b.jsx)("div",{ref:d,className:(0,t.cn)("text-muted-foreground py-6 text-center text-sm",a),...c}));x.displayName="CommandEmpty";let y=c.forwardRef(({className:a,...c},d)=>(0,b.jsx)("div",{ref:d,className:(0,t.cn)("text-foreground overflow-hidden p-1",a),...c}));y.displayName="CommandGroup";let z=c.forwardRef(({className:a,selected:c,...d},e)=>(0,b.jsx)("button",{ref:e,type:"button","data-selected":c,className:(0,t.cn)("relative flex w-full cursor-default items-center rounded-sm px-2 py-1.5 text-sm transition-colors outline-none select-none","hover:bg-accent hover:text-accent-foreground","data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground","disabled:pointer-events-none disabled:opacity-50",a),...d}));z.displayName="CommandItem",c.forwardRef(({className:a,...c},d)=>(0,b.jsx)("div",{ref:d,className:(0,t.cn)("bg-border -mx-1 h-px",a),...c})).displayName="CommandSeparator";var A=a.i(80646);function B({open:a,onClose:d,onSubmit:e,isSubmitting:f=!1,error:g,repositories:h=[],selectedRepositoryPath:s,onRepositoryChange:B,branches:C=[],branchesLoading:D=!1}){let[E,F]=(0,c.useState)(""),[G,H]=(0,c.useState)(!1),[I,J]=(0,c.useState)(""),K=(0,c.useRef)(null),[L,M]=(0,c.useState)(!1),[N,O]=(0,c.useState)(""),P=(0,c.useRef)(null),Q=h.find(a=>a.path===s),R=!!s;(0,c.useEffect)(()=>{a||(F(""),J(""),H(!1),M(!1),O(""))},[a]),(0,c.useEffect)(()=>{F(""),J("")},[s]);let S=(0,c.useCallback)(a=>{a.preventDefault();let b=E.trim();b&&s&&!f&&e(b,s)},[E,s,f,e]),T=(0,c.useCallback)(()=>{F(""),J(""),d()},[d]),U=(0,c.useCallback)(a=>{F(a),J(a),H(!1)},[]),V=(0,c.useCallback)(a=>{J(a.target.value),G||H(!0)},[G]),W=(0,c.useCallback)(a=>{if("Enter"===a.key){a.preventDefault();let b=I.trim();b&&(F(b),H(!1))}"Escape"===a.key&&(H(!1),J(E))},[I,E]),X=(0,c.useCallback)(a=>{B?.(a),M(!1),O("")},[B]),Y=C.filter(a=>a.toLowerCase().includes(I.toLowerCase())),Z=N.trim()?h.filter(a=>a.name.toLowerCase().includes(N.toLowerCase())||a.path.toLowerCase().includes(N.toLowerCase())):h;(0,c.useEffect)(()=>{L?setTimeout(()=>P.current?.focus(),0):O("")},[L]);let $=!E.trim()||!s||f,_=(0,b.jsxs)("div",{children:[(0,b.jsxs)(o.DrawerTitle,{className:"flex items-center gap-2",children:[(0,b.jsx)(l.GitBranch,{className:"h-4 w-4"}),"Adopt Branch"]}),(0,b.jsx)(o.DrawerDescription,{className:"text-muted-foreground text-sm",children:"Import an existing git branch into Shep's feature tracking"})]});return(0,b.jsx)(n.BaseDrawer,{open:a,onClose:T,size:"sm",modal:!1,header:_,"data-testid":"adopt-branch-drawer",children:(0,b.jsxs)("form",{onSubmit:S,className:"flex flex-1 flex-col",children:[(0,b.jsx)("div",{className:"flex-1 overflow-y-auto p-4",children:(0,b.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,b.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,b.jsx)(r.Label,{children:"Repository"}),(0,b.jsxs)(A.Popover,{open:L,onOpenChange:M,children:[(0,b.jsx)(A.PopoverTrigger,{asChild:!0,children:(0,b.jsxs)("button",{type:"button",role:"combobox","aria-expanded":L,"aria-label":"Repository",disabled:f,"data-testid":"adopt-repo-combobox",className:(0,t.cn)("border-input bg-background ring-offset-background focus:ring-ring flex h-9 w-full items-center justify-between rounded-md border px-3 py-2 text-sm focus:ring-2 focus:ring-offset-2 focus:outline-none disabled:cursor-not-allowed disabled:opacity-50",!Q&&"text-muted-foreground"),children:[(0,b.jsx)("span",{className:"truncate",children:Q?Q.name:"Select repository..."}),(0,b.jsx)(k.ChevronsUpDown,{className:"ms-2 h-4 w-4 shrink-0 opacity-50"})]})}),(0,b.jsx)(A.PopoverContent,{className:"w-80 p-0",align:"start","data-testid":"adopt-repo-combobox-content",children:(0,b.jsxs)("div",{className:"flex flex-col",children:[(0,b.jsx)("div",{className:"border-b p-2",children:(0,b.jsx)(q.Input,{ref:P,placeholder:"Search repositories...",value:N,onChange:a=>O(a.target.value),className:"h-8 border-0 p-0 text-sm shadow-none focus-visible:ring-0","data-testid":"adopt-repo-search"})}),(0,b.jsx)("div",{className:"max-h-48 overflow-y-auto py-1",role:"listbox","aria-label":"Repositories",children:0===Z.length?(0,b.jsx)("p",{className:"text-muted-foreground px-3 py-2 text-sm",children:"No repositories found."}):Z.map(a=>(0,b.jsxs)("button",{type:"button",role:"option","aria-selected":s===a.path,onClick:()=>X(a.path),className:(0,t.cn)("hover:bg-accent hover:text-accent-foreground flex w-full items-center gap-2 px-3 py-2 text-sm",s===a.path&&"bg-accent/50"),"data-testid":`adopt-repo-option-${a.id}`,children:[(0,b.jsx)(j.CheckIcon,{className:(0,t.cn)("h-4 w-4 shrink-0",s!==a.path&&"invisible")}),(0,b.jsxs)("span",{className:"flex flex-col items-start truncate",children:[(0,b.jsx)("span",{className:"truncate",children:a.name}),(0,b.jsx)("span",{className:"text-muted-foreground truncate text-xs",children:a.path})]})]},a.id))})]})})]}),(0,b.jsx)("p",{className:"text-muted-foreground text-xs",children:"Select the repository that contains the branch you want to adopt."})]}),(0,b.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,b.jsx)(r.Label,{htmlFor:"branch-name",children:"Branch name"}),(0,b.jsxs)(A.Popover,{open:G,onOpenChange:H,children:[(0,b.jsx)(A.PopoverTrigger,{asChild:!0,children:(0,b.jsxs)(p.Button,{variant:"outline",role:"combobox","aria-expanded":G,disabled:f||!R,className:"w-full justify-between font-normal","data-testid":"adopt-branch-input",children:[(0,b.jsx)("span",{className:"truncate",children:R?D?"Loading branches...":E||"Select a branch...":"Select a repository first..."}),(0,b.jsx)(k.ChevronsUpDown,{className:"ms-2 h-4 w-4 shrink-0 opacity-50"})]})}),(0,b.jsx)(A.PopoverContent,{className:"w-[var(--radix-popover-trigger-width)] p-0",align:"start",children:(0,b.jsxs)(u,{children:[(0,b.jsx)(v,{ref:K,placeholder:"Search branches...",value:I,onChange:V,onKeyDown:W,"data-testid":"adopt-branch-search"}),(0,b.jsxs)(w,{children:[!D&&0===Y.length&&(0,b.jsx)(x,{children:0===C.length?"No branches found.":I?"No match — press Enter to use this value.":"No branches available."}),D?(0,b.jsx)(x,{children:(0,b.jsx)(m.Loader2,{className:"mx-auto h-4 w-4 animate-spin"})}):null,Y.length>0&&(0,b.jsx)(y,{children:Y.map(a=>(0,b.jsxs)(z,{selected:a===E,onClick:()=>U(a),children:[(0,b.jsx)(i.Check,{className:(0,t.cn)("me-2 h-4 w-4",a===E?"opacity-100":"opacity-0")}),(0,b.jsx)(l.GitBranch,{className:"me-2 h-3 w-3 opacity-50"}),a]},a))})]})]})})]}),(0,b.jsx)("p",{className:"text-muted-foreground text-xs",children:R?"Select a branch from the dropdown or type to search. Local and remote branches are shown.":"Please select a repository above to see available branches."})]}),g?(0,b.jsx)("p",{className:"text-destructive text-sm","data-testid":"adopt-branch-error",children:g}):null]})}),(0,b.jsx)("div",{className:"border-t p-4",children:(0,b.jsxs)("div",{className:"flex gap-2",children:[(0,b.jsx)(p.Button,{type:"button",variant:"outline",onClick:T,disabled:f,className:"flex-1",children:"Cancel"}),(0,b.jsx)(p.Button,{type:"submit",disabled:$,className:"flex-1","data-testid":"adopt-branch-submit",children:f?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(m.Loader2,{className:"me-2 h-4 w-4 animate-spin"}),"Adopting..."]}):"Adopt Branch"})]})})]})})}function C({repositoryPath:a,repositories:f}){let i=(0,d.useRouter)(),j=(0,d.usePathname)(),[k,l]=(0,c.useState)(!1),[m,n]=(0,c.useState)(),[o,p]=(0,c.useState)([]),[q,r]=(0,c.useState)(!1),[s,t]=(0,c.useState)(a),u=j.startsWith("/adopt"),v=!k&&u;(0,c.useEffect)(()=>{!u&&k&&l(!1)},[u,k]),(0,c.useEffect)(()=>{u&&(n(void 0),t(a))},[u,a]),(0,c.useEffect)(()=>{u&&s?(r(!0),p([]),h(s).then(p).catch(()=>p([])).finally(()=>r(!1))):p([])},[u,s]);let w=(0,c.useCallback)(()=>{i.push("/")},[i]),x=(0,c.useCallback)(a=>{t(a)},[]),y=(0,c.useCallback)((a,b)=>{n(void 0),l(!0),i.push("/"),g({branchName:a,repositoryPath:b}).then(a=>{a.error?e.toast.error(a.error):(window.dispatchEvent(new CustomEvent("shep:feature-created",{detail:{featureId:a.feature.id,name:a.feature.name,description:a.feature.description,repositoryPath:a.feature.repositoryPath}})),e.toast.success(`Branch adopted as "${a.feature.name}"`))}).catch(()=>{e.toast.error("Failed to adopt branch"),l(!1)})},[i]);return(0,b.jsx)(B,{open:v,onClose:w,onSubmit:y,isSubmitting:k,error:m,repositories:f,selectedRepositoryPath:s,onRepositoryChange:x,branches:o,branchesLoading:q})}a.s(["AdoptDrawerClient",()=>C],85959)}];
1
+ module.exports=[14177,a=>{"use strict";let b=(0,a.i(25700).default)("chevrons-up-down",[["path",{d:"m7 15 5 5 5-5",key:"1hf1tw"}],["path",{d:"m7 9 5-5 5 5",key:"sgt6xg"}]]);a.s(["ChevronsUpDown",()=>b],14177)},85959,a=>{"use strict";var b=a.i(12656),c=a.i(96960),d=a.i(69845),e=a.i(52313),f=a.i(25674);let g=(0,f.createServerReference)("40df2a52b865b1b020f33ad3aa0b53217dedcbd779",f.callServer,void 0,f.findSourceMapURL,"adoptBranch"),h=(0,f.createServerReference)("40c729a2e262be4f8894d4f90d6519f58e0f421d17",f.callServer,void 0,f.findSourceMapURL,"listBranches");var i=a.i(72016),j=a.i(10606),k=a.i(14177),l=a.i(53170),m=a.i(88064);a.i(78454);var n=a.i(24255),o=a.i(2824),p=a.i(18948),q=a.i(90920),r=a.i(584),s=a.i(31378),t=a.i(85536);let u=c.forwardRef(({className:a,...c},d)=>(0,b.jsx)("div",{ref:d,className:(0,t.cn)("bg-popover text-popover-foreground flex h-full w-full flex-col overflow-hidden rounded-md",a),...c}));u.displayName="Command";let v=c.forwardRef(({className:a,...c},d)=>(0,b.jsxs)("div",{className:"flex items-center border-b px-3",children:[(0,b.jsx)(s.Search,{className:"me-2 h-4 w-4 shrink-0 opacity-50"}),(0,b.jsx)("input",{ref:d,className:(0,t.cn)("placeholder:text-muted-foreground flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-none disabled:cursor-not-allowed disabled:opacity-50",a),...c})]}));v.displayName="CommandInput";let w=c.forwardRef(({className:a,...c},d)=>(0,b.jsx)("div",{ref:d,className:(0,t.cn)("max-h-[300px] overflow-x-hidden overflow-y-auto",a),...c}));w.displayName="CommandList";let x=c.forwardRef(({className:a,...c},d)=>(0,b.jsx)("div",{ref:d,className:(0,t.cn)("text-muted-foreground py-6 text-center text-sm",a),...c}));x.displayName="CommandEmpty";let y=c.forwardRef(({className:a,...c},d)=>(0,b.jsx)("div",{ref:d,className:(0,t.cn)("text-foreground overflow-hidden p-1",a),...c}));y.displayName="CommandGroup";let z=c.forwardRef(({className:a,selected:c,...d},e)=>(0,b.jsx)("button",{ref:e,type:"button","data-selected":c,className:(0,t.cn)("relative flex w-full cursor-default items-center rounded-sm px-2 py-1.5 text-sm transition-colors outline-none select-none","hover:bg-accent hover:text-accent-foreground","data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground","disabled:pointer-events-none disabled:opacity-50",a),...d}));z.displayName="CommandItem",c.forwardRef(({className:a,...c},d)=>(0,b.jsx)("div",{ref:d,className:(0,t.cn)("bg-border -mx-1 h-px",a),...c})).displayName="CommandSeparator";var A=a.i(80646);function B({open:a,onClose:d,onSubmit:e,isSubmitting:f=!1,error:g,repositories:h=[],selectedRepositoryPath:s,onRepositoryChange:B,branches:C=[],branchesLoading:D=!1}){let[E,F]=(0,c.useState)(""),[G,H]=(0,c.useState)(!1),[I,J]=(0,c.useState)(""),K=(0,c.useRef)(null),[L,M]=(0,c.useState)(!1),[N,O]=(0,c.useState)(""),P=(0,c.useRef)(null),Q=h.find(a=>a.path===s),R=!!s;(0,c.useEffect)(()=>{a||(F(""),J(""),H(!1),M(!1),O(""))},[a]),(0,c.useEffect)(()=>{F(""),J("")},[s]);let S=(0,c.useCallback)(a=>{a.preventDefault();let b=E.trim();b&&s&&!f&&e(b,s)},[E,s,f,e]),T=(0,c.useCallback)(()=>{F(""),J(""),d()},[d]),U=(0,c.useCallback)(a=>{F(a),J(a),H(!1)},[]),V=(0,c.useCallback)(a=>{J(a.target.value),G||H(!0)},[G]),W=(0,c.useCallback)(a=>{if("Enter"===a.key){a.preventDefault();let b=I.trim();b&&(F(b),H(!1))}"Escape"===a.key&&(H(!1),J(E))},[I,E]),X=(0,c.useCallback)(a=>{B?.(a),M(!1),O("")},[B]),Y=C.filter(a=>a.toLowerCase().includes(I.toLowerCase())),Z=N.trim()?h.filter(a=>a.name.toLowerCase().includes(N.toLowerCase())||a.path.toLowerCase().includes(N.toLowerCase())):h;(0,c.useEffect)(()=>{L?setTimeout(()=>P.current?.focus(),0):O("")},[L]);let $=!E.trim()||!s||f,_=(0,b.jsxs)("div",{children:[(0,b.jsxs)(o.DrawerTitle,{className:"flex items-center gap-2",children:[(0,b.jsx)(l.GitBranch,{className:"h-4 w-4"}),"Adopt Branch"]}),(0,b.jsx)(o.DrawerDescription,{className:"text-muted-foreground text-sm",children:"Import an existing git branch into Shep's feature tracking"})]});return(0,b.jsx)(n.BaseDrawer,{open:a,onClose:T,size:"sm",modal:!1,header:_,"data-testid":"adopt-branch-drawer",children:(0,b.jsxs)("form",{onSubmit:S,className:"flex flex-1 flex-col",children:[(0,b.jsx)("div",{className:"flex-1 overflow-y-auto p-4",children:(0,b.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,b.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,b.jsx)(r.Label,{children:"Repository"}),(0,b.jsxs)(A.Popover,{open:L,onOpenChange:M,children:[(0,b.jsx)(A.PopoverTrigger,{asChild:!0,children:(0,b.jsxs)("button",{type:"button",role:"combobox","aria-expanded":L,"aria-label":"Repository",disabled:f,"data-testid":"adopt-repo-combobox",className:(0,t.cn)("border-input bg-background ring-offset-background focus:ring-ring flex h-9 w-full items-center justify-between rounded-md border px-3 py-2 text-sm focus:ring-2 focus:ring-offset-2 focus:outline-none disabled:cursor-not-allowed disabled:opacity-50",!Q&&"text-muted-foreground"),children:[(0,b.jsx)("span",{className:"truncate",children:Q?Q.name:"Select repository..."}),(0,b.jsx)(k.ChevronsUpDown,{className:"ms-2 h-4 w-4 shrink-0 opacity-50"})]})}),(0,b.jsx)(A.PopoverContent,{className:"w-80 p-0",align:"start","data-testid":"adopt-repo-combobox-content",children:(0,b.jsxs)("div",{className:"flex flex-col",children:[(0,b.jsx)("div",{className:"border-b p-2",children:(0,b.jsx)(q.Input,{ref:P,placeholder:"Search repositories...",value:N,onChange:a=>O(a.target.value),className:"h-8 border-0 p-0 text-sm shadow-none focus-visible:ring-0","data-testid":"adopt-repo-search"})}),(0,b.jsx)("div",{className:"max-h-48 overflow-y-auto py-1",role:"listbox","aria-label":"Repositories",children:0===Z.length?(0,b.jsx)("p",{className:"text-muted-foreground px-3 py-2 text-sm",children:"No repositories found."}):Z.map(a=>(0,b.jsxs)("button",{type:"button",role:"option","aria-selected":s===a.path,onClick:()=>X(a.path),className:(0,t.cn)("hover:bg-accent hover:text-accent-foreground flex w-full items-center gap-2 px-3 py-2 text-sm",s===a.path&&"bg-accent/50"),"data-testid":`adopt-repo-option-${a.id}`,children:[(0,b.jsx)(j.CheckIcon,{className:(0,t.cn)("h-4 w-4 shrink-0",s!==a.path&&"invisible")}),(0,b.jsxs)("span",{className:"flex flex-col items-start truncate",children:[(0,b.jsx)("span",{className:"truncate",children:a.name}),(0,b.jsx)("span",{className:"text-muted-foreground truncate text-xs",children:a.path})]})]},a.id))})]})})]}),(0,b.jsx)("p",{className:"text-muted-foreground text-xs",children:"Select the repository that contains the branch you want to adopt."})]}),(0,b.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,b.jsx)(r.Label,{htmlFor:"branch-name",children:"Branch name"}),(0,b.jsxs)(A.Popover,{open:G,onOpenChange:H,children:[(0,b.jsx)(A.PopoverTrigger,{asChild:!0,children:(0,b.jsxs)(p.Button,{variant:"outline",role:"combobox","aria-expanded":G,disabled:f||!R,className:"w-full justify-between font-normal","data-testid":"adopt-branch-input",children:[(0,b.jsx)("span",{className:"truncate",children:R?D?"Loading branches...":E||"Select a branch...":"Select a repository first..."}),(0,b.jsx)(k.ChevronsUpDown,{className:"ms-2 h-4 w-4 shrink-0 opacity-50"})]})}),(0,b.jsx)(A.PopoverContent,{className:"w-[var(--radix-popover-trigger-width)] p-0",align:"start",children:(0,b.jsxs)(u,{children:[(0,b.jsx)(v,{ref:K,placeholder:"Search branches...",value:I,onChange:V,onKeyDown:W,"data-testid":"adopt-branch-search"}),(0,b.jsxs)(w,{children:[!D&&0===Y.length&&(0,b.jsx)(x,{children:0===C.length?"No branches found.":I?"No match — press Enter to use this value.":"No branches available."}),D?(0,b.jsx)(x,{children:(0,b.jsx)(m.Loader2,{className:"mx-auto h-4 w-4 animate-spin"})}):null,Y.length>0&&(0,b.jsx)(y,{children:Y.map(a=>(0,b.jsxs)(z,{selected:a===E,onClick:()=>U(a),children:[(0,b.jsx)(i.Check,{className:(0,t.cn)("me-2 h-4 w-4",a===E?"opacity-100":"opacity-0")}),(0,b.jsx)(l.GitBranch,{className:"me-2 h-3 w-3 opacity-50"}),a]},a))})]})]})})]}),(0,b.jsx)("p",{className:"text-muted-foreground text-xs",children:R?"Select a branch from the dropdown or type to search. Local and remote branches are shown.":"Please select a repository above to see available branches."})]}),g?(0,b.jsx)("p",{className:"text-destructive text-sm","data-testid":"adopt-branch-error",children:g}):null]})}),(0,b.jsx)("div",{className:"border-t p-4",children:(0,b.jsxs)("div",{className:"flex gap-2",children:[(0,b.jsx)(p.Button,{type:"button",variant:"outline",onClick:T,disabled:f,className:"flex-1",children:"Cancel"}),(0,b.jsx)(p.Button,{type:"submit",disabled:$,className:"flex-1","data-testid":"adopt-branch-submit",children:f?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(m.Loader2,{className:"me-2 h-4 w-4 animate-spin"}),"Adopting..."]}):"Adopt Branch"})]})})]})})}function C({repositoryPath:a,repositories:f}){let i=(0,d.useRouter)(),j=(0,d.usePathname)(),[k,l]=(0,c.useState)(!1),[m,n]=(0,c.useState)(),[o,p]=(0,c.useState)([]),[q,r]=(0,c.useState)(!1),[s,t]=(0,c.useState)(a),u=j.startsWith("/adopt"),v=!k&&u;(0,c.useEffect)(()=>{!u&&k&&l(!1)},[u,k]),(0,c.useEffect)(()=>{u&&(n(void 0),t(a))},[u,a]),(0,c.useEffect)(()=>{u&&s?(r(!0),p([]),h(s).then(p).catch(()=>p([])).finally(()=>r(!1))):p([])},[u,s]);let w=(0,c.useCallback)(()=>{i.push("/")},[i]),x=(0,c.useCallback)(a=>{t(a)},[]),y=(0,c.useCallback)((a,b)=>{n(void 0),l(!0),i.push("/"),g({branchName:a,repositoryPath:b}).then(a=>{a.error?e.toast.error(a.error):(window.dispatchEvent(new CustomEvent("shep:feature-created",{detail:{featureId:a.feature.id,name:a.feature.name,description:a.feature.description,repositoryPath:a.feature.repositoryPath}})),e.toast.success(`Branch adopted as "${a.feature.name}"`))}).catch(()=>{e.toast.error("Failed to adopt branch"),l(!1)})},[i]);return(0,b.jsx)(B,{open:v,onClose:w,onSubmit:y,isSubmitting:k,error:m,repositories:f,selectedRepositoryPath:s,onRepositoryChange:x,branches:o,branchesLoading:q})}a.s(["AdoptDrawerClient",()=>C],85959)}];
2
2
 
3
3
  //# sourceMappingURL=_56b9d60f._.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../node_modules/.pnpm/lucide-react%400.563.0_react%4019.2.4/node_modules/lucide-react/src/icons/chevrons-up-down.ts","../../../../../../../src/presentation/web/components/common/control-center-drawer/adopt-drawer-client.tsx","../../../../../../../src/presentation/web/app/actions/data%3A7fc8e1%20%3Ctext/javascript%3E","../../../../../../../src/presentation/web/app/actions/data%3A77e58b%20%3Ctext/javascript%3E","../../../../../../../src/presentation/web/components/common/control-center-drawer/adopt-branch-drawer.tsx","../../../../../../../src/presentation/web/components/ui/command.tsx"],"sourcesContent":["import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'm7 15 5 5 5-5', key: '1hf1tw' }],\n ['path', { d: 'm7 9 5-5 5 5', key: 'sgt6xg' }],\n];\n\n/**\n * @component @name ChevronsUpDown\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJtNyAxNSA1IDUgNS01IiAvPgogIDxwYXRoIGQ9Im03IDkgNS01IDUgNSIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/chevrons-up-down\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ChevronsUpDown = createLucideIcon('chevrons-up-down', __iconNode);\n\nexport default ChevronsUpDown;\n","'use client';\n\nimport { useState, useCallback, useEffect } from 'react';\nimport { useRouter, usePathname } from 'next/navigation';\nimport { toast } from 'sonner';\nimport { adoptBranch } from '@/app/actions/adopt-branch';\nimport { listBranches } from '@/app/actions/list-branches';\nimport { AdoptBranchDrawer } from './adopt-branch-drawer';\nimport type { RepositoryOption } from '@/components/common/feature-create-drawer/feature-create-drawer';\n\nexport interface AdoptDrawerClientProps {\n repositoryPath: string;\n repositories: RepositoryOption[];\n}\n\nexport function AdoptDrawerClient({ repositoryPath, repositories }: AdoptDrawerClientProps) {\n const router = useRouter();\n const pathname = usePathname();\n const [isSubmitting, setIsSubmitting] = useState(false);\n const [error, setError] = useState<string>();\n const [branches, setBranches] = useState<string[]>([]);\n const [branchesLoading, setBranchesLoading] = useState(false);\n const [selectedRepoPath, setSelectedRepoPath] = useState(repositoryPath);\n\n const isOnAdoptRoute = pathname.startsWith('/adopt');\n const isOpen = !isSubmitting && isOnAdoptRoute;\n\n // Reset isSubmitting once the route has actually changed away from /adopt\n useEffect(() => {\n if (!isOnAdoptRoute && isSubmitting) {\n setIsSubmitting(false);\n }\n }, [isOnAdoptRoute, isSubmitting]);\n\n // Clear error when drawer reopens and reset selected repo to default\n useEffect(() => {\n if (isOnAdoptRoute) {\n setError(undefined);\n setSelectedRepoPath(repositoryPath);\n }\n }, [isOnAdoptRoute, repositoryPath]);\n\n // Fetch branches when drawer opens AND a repository is selected\n useEffect(() => {\n if (isOnAdoptRoute && selectedRepoPath) {\n setBranchesLoading(true);\n setBranches([]);\n listBranches(selectedRepoPath)\n .then(setBranches)\n .catch(() => setBranches([]))\n .finally(() => setBranchesLoading(false));\n } else {\n setBranches([]);\n }\n }, [isOnAdoptRoute, selectedRepoPath]);\n\n const onClose = useCallback(() => {\n router.push('/');\n }, [router]);\n\n const handleRepositoryChange = useCallback((path: string) => {\n setSelectedRepoPath(path);\n }, []);\n\n const onSubmit = useCallback(\n (branchName: string, repoPath: string) => {\n setError(undefined);\n setIsSubmitting(true);\n router.push('/');\n\n adoptBranch({ branchName, repositoryPath: repoPath })\n .then((result) => {\n if (result.error) {\n toast.error(result.error);\n return;\n }\n window.dispatchEvent(\n new CustomEvent('shep:feature-created', {\n detail: {\n featureId: result.feature!.id,\n name: result.feature!.name,\n description: result.feature!.description,\n repositoryPath: result.feature!.repositoryPath,\n },\n })\n );\n toast.success(`Branch adopted as \"${result.feature!.name}\"`);\n })\n .catch(() => {\n toast.error('Failed to adopt branch');\n setIsSubmitting(false);\n });\n },\n [router]\n );\n\n return (\n <AdoptBranchDrawer\n open={isOpen}\n onClose={onClose}\n onSubmit={onSubmit}\n isSubmitting={isSubmitting}\n error={error}\n repositories={repositories}\n selectedRepositoryPath={selectedRepoPath}\n onRepositoryChange={handleRepositoryChange}\n branches={branches}\n branchesLoading={branchesLoading}\n />\n );\n}\n","/* __next_internal_action_entry_do_not_use__ [{\"40f8fd8f105c1c202c854bb4666a41f6abae05549d\":\"adoptBranch\"},\"src/presentation/web/app/actions/adopt-branch.ts\",\"\"] */\"use turbopack no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_0=/*#__PURE__*/createServerReference(\"40f8fd8f105c1c202c854bb4666a41f6abae05549d\",callServer,void 0,findSourceMapURL,\"adoptBranch\");export{$$RSC_SERVER_ACTION_0 as adoptBranch};","/* __next_internal_action_entry_do_not_use__ [{\"402d22e68c359ac3ab8239092bd26567b9a811ad9d\":\"listBranches\"},\"src/presentation/web/app/actions/list-branches.ts\",\"\"] */\"use turbopack no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_0=/*#__PURE__*/createServerReference(\"402d22e68c359ac3ab8239092bd26567b9a811ad9d\",callServer,void 0,findSourceMapURL,\"listBranches\");export{$$RSC_SERVER_ACTION_0 as listBranches};","'use client';\n\nimport { useState, useCallback, useEffect, useRef } from 'react';\nimport { Check, CheckIcon, ChevronsUpDown, GitBranch, Loader2 } from 'lucide-react';\nimport { BaseDrawer } from '@/components/common/base-drawer';\nimport { DrawerTitle, DrawerDescription } from '@/components/ui/drawer';\nimport { Button } from '@/components/ui/button';\nimport { Input } from '@/components/ui/input';\nimport { Label } from '@/components/ui/label';\nimport {\n Command,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n} from '@/components/ui/command';\nimport { Popover, PopoverContent, PopoverTrigger } from '@/components/ui/popover';\nimport { cn } from '@/lib/utils';\nimport type { RepositoryOption } from '@/components/common/feature-create-drawer/feature-create-drawer';\n\nexport interface AdoptBranchDrawerProps {\n open: boolean;\n onClose: () => void;\n onSubmit: (branchName: string, repositoryPath: string) => void;\n isSubmitting?: boolean;\n error?: string;\n /** Available repositories for the repository selector */\n repositories?: RepositoryOption[];\n /** Currently selected repository path */\n selectedRepositoryPath?: string;\n /** Callback when user selects a different repository */\n onRepositoryChange?: (repositoryPath: string) => void;\n /** Available branch names for the combobox dropdown */\n branches?: string[];\n /** Whether branches are still loading */\n branchesLoading?: boolean;\n}\n\nexport function AdoptBranchDrawer({\n open,\n onClose,\n onSubmit,\n isSubmitting = false,\n error,\n repositories = [],\n selectedRepositoryPath,\n onRepositoryChange,\n branches = [],\n branchesLoading = false,\n}: AdoptBranchDrawerProps) {\n const [branchName, setBranchName] = useState('');\n const [comboboxOpen, setComboboxOpen] = useState(false);\n const [inputValue, setInputValue] = useState('');\n const inputRef = useRef<HTMLInputElement>(null);\n const [repoOpen, setRepoOpen] = useState(false);\n const [repoQuery, setRepoQuery] = useState('');\n const repoInputRef = useRef<HTMLInputElement>(null);\n\n const selectedRepo = repositories.find((r) => r.path === selectedRepositoryPath);\n const hasRepo = !!selectedRepositoryPath;\n\n // Reset state when drawer closes\n useEffect(() => {\n if (!open) {\n setBranchName('');\n setInputValue('');\n setComboboxOpen(false);\n setRepoOpen(false);\n setRepoQuery('');\n }\n }, [open]);\n\n // Reset branch selection when repository changes\n useEffect(() => {\n setBranchName('');\n setInputValue('');\n }, [selectedRepositoryPath]);\n\n const handleSubmit = useCallback(\n (e: React.FormEvent) => {\n e.preventDefault();\n const trimmed = branchName.trim();\n if (!trimmed || !selectedRepositoryPath || isSubmitting) return;\n onSubmit(trimmed, selectedRepositoryPath);\n },\n [branchName, selectedRepositoryPath, isSubmitting, onSubmit]\n );\n\n const handleClose = useCallback(() => {\n setBranchName('');\n setInputValue('');\n onClose();\n }, [onClose]);\n\n const handleSelect = useCallback((branch: string) => {\n setBranchName(branch);\n setInputValue(branch);\n setComboboxOpen(false);\n }, []);\n\n const handleInputChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n setInputValue(e.target.value);\n if (!comboboxOpen) setComboboxOpen(true);\n },\n [comboboxOpen]\n );\n\n const handleInputKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Enter') {\n e.preventDefault();\n const trimmed = inputValue.trim();\n if (trimmed) {\n setBranchName(trimmed);\n setComboboxOpen(false);\n }\n }\n if (e.key === 'Escape') {\n setComboboxOpen(false);\n setInputValue(branchName);\n }\n },\n [inputValue, branchName]\n );\n\n const handleRepoSelect = useCallback(\n (path: string) => {\n onRepositoryChange?.(path);\n setRepoOpen(false);\n setRepoQuery('');\n },\n [onRepositoryChange]\n );\n\n const filteredBranches = branches.filter((b) =>\n b.toLowerCase().includes(inputValue.toLowerCase())\n );\n\n const filteredRepos = repoQuery.trim()\n ? repositories.filter(\n (r) =>\n r.name.toLowerCase().includes(repoQuery.toLowerCase()) ||\n r.path.toLowerCase().includes(repoQuery.toLowerCase())\n )\n : repositories;\n\n useEffect(() => {\n if (repoOpen) {\n setTimeout(() => repoInputRef.current?.focus(), 0);\n } else {\n setRepoQuery('');\n }\n }, [repoOpen]);\n\n const isDisabled = !branchName.trim() || !selectedRepositoryPath || isSubmitting;\n\n const header = (\n <div>\n <DrawerTitle className=\"flex items-center gap-2\">\n <GitBranch className=\"h-4 w-4\" />\n Adopt Branch\n </DrawerTitle>\n <DrawerDescription className=\"text-muted-foreground text-sm\">\n Import an existing git branch into Shep&apos;s feature tracking\n </DrawerDescription>\n </div>\n );\n\n return (\n <BaseDrawer\n open={open}\n onClose={handleClose}\n size=\"sm\"\n modal={false}\n header={header}\n data-testid=\"adopt-branch-drawer\"\n >\n <form onSubmit={handleSubmit} className=\"flex flex-1 flex-col\">\n <div className=\"flex-1 overflow-y-auto p-4\">\n <div className=\"flex flex-col gap-4\">\n {/* Repository selector */}\n <div className=\"flex flex-col gap-2\">\n <Label>Repository</Label>\n <Popover open={repoOpen} onOpenChange={setRepoOpen}>\n <PopoverTrigger asChild>\n <button\n type=\"button\"\n role=\"combobox\"\n aria-expanded={repoOpen}\n aria-label=\"Repository\"\n disabled={isSubmitting}\n data-testid=\"adopt-repo-combobox\"\n className={cn(\n 'border-input bg-background ring-offset-background focus:ring-ring flex h-9 w-full items-center justify-between rounded-md border px-3 py-2 text-sm focus:ring-2 focus:ring-offset-2 focus:outline-none disabled:cursor-not-allowed disabled:opacity-50',\n !selectedRepo && 'text-muted-foreground'\n )}\n >\n <span className=\"truncate\">\n {selectedRepo ? selectedRepo.name : 'Select repository...'}\n </span>\n <ChevronsUpDown className=\"ms-2 h-4 w-4 shrink-0 opacity-50\" />\n </button>\n </PopoverTrigger>\n <PopoverContent\n className=\"w-80 p-0\"\n align=\"start\"\n data-testid=\"adopt-repo-combobox-content\"\n >\n <div className=\"flex flex-col\">\n <div className=\"border-b p-2\">\n <Input\n ref={repoInputRef}\n placeholder=\"Search repositories...\"\n value={repoQuery}\n onChange={(e) => setRepoQuery(e.target.value)}\n className=\"h-8 border-0 p-0 text-sm shadow-none focus-visible:ring-0\"\n data-testid=\"adopt-repo-search\"\n />\n </div>\n <div\n className=\"max-h-48 overflow-y-auto py-1\"\n role=\"listbox\"\n aria-label=\"Repositories\"\n >\n {filteredRepos.length === 0 ? (\n <p className=\"text-muted-foreground px-3 py-2 text-sm\">\n No repositories found.\n </p>\n ) : (\n filteredRepos.map((r) => (\n <button\n key={r.id}\n type=\"button\"\n role=\"option\"\n aria-selected={selectedRepositoryPath === r.path}\n onClick={() => handleRepoSelect(r.path)}\n className={cn(\n 'hover:bg-accent hover:text-accent-foreground flex w-full items-center gap-2 px-3 py-2 text-sm',\n selectedRepositoryPath === r.path && 'bg-accent/50'\n )}\n data-testid={`adopt-repo-option-${r.id}`}\n >\n <CheckIcon\n className={cn(\n 'h-4 w-4 shrink-0',\n selectedRepositoryPath !== r.path && 'invisible'\n )}\n />\n <span className=\"flex flex-col items-start truncate\">\n <span className=\"truncate\">{r.name}</span>\n <span className=\"text-muted-foreground truncate text-xs\">\n {r.path}\n </span>\n </span>\n </button>\n ))\n )}\n </div>\n </div>\n </PopoverContent>\n </Popover>\n <p className=\"text-muted-foreground text-xs\">\n Select the repository that contains the branch you want to adopt.\n </p>\n </div>\n\n {/* Branch selector */}\n <div className=\"flex flex-col gap-2\">\n <Label htmlFor=\"branch-name\">Branch name</Label>\n <Popover open={comboboxOpen} onOpenChange={setComboboxOpen}>\n <PopoverTrigger asChild>\n <Button\n variant=\"outline\"\n role=\"combobox\"\n aria-expanded={comboboxOpen}\n disabled={isSubmitting || !hasRepo}\n className=\"w-full justify-between font-normal\"\n data-testid=\"adopt-branch-input\"\n >\n <span className=\"truncate\">\n {!hasRepo\n ? 'Select a repository first...'\n : branchesLoading\n ? 'Loading branches...'\n : branchName || 'Select a branch...'}\n </span>\n <ChevronsUpDown className=\"ms-2 h-4 w-4 shrink-0 opacity-50\" />\n </Button>\n </PopoverTrigger>\n <PopoverContent\n className=\"w-[var(--radix-popover-trigger-width)] p-0\"\n align=\"start\"\n >\n <Command>\n <CommandInput\n ref={inputRef}\n placeholder=\"Search branches...\"\n value={inputValue}\n onChange={handleInputChange}\n onKeyDown={handleInputKeyDown}\n data-testid=\"adopt-branch-search\"\n />\n <CommandList>\n {!branchesLoading && filteredBranches.length === 0 && (\n <CommandEmpty>\n {branches.length === 0\n ? 'No branches found.'\n : inputValue\n ? 'No match — press Enter to use this value.'\n : 'No branches available.'}\n </CommandEmpty>\n )}\n {branchesLoading ? (\n <CommandEmpty>\n <Loader2 className=\"mx-auto h-4 w-4 animate-spin\" />\n </CommandEmpty>\n ) : null}\n {filteredBranches.length > 0 && (\n <CommandGroup>\n {filteredBranches.map((branch) => (\n <CommandItem\n key={branch}\n selected={branch === branchName}\n onClick={() => handleSelect(branch)}\n >\n <Check\n className={cn(\n 'me-2 h-4 w-4',\n branch === branchName ? 'opacity-100' : 'opacity-0'\n )}\n />\n <GitBranch className=\"me-2 h-3 w-3 opacity-50\" />\n {branch}\n </CommandItem>\n ))}\n </CommandGroup>\n )}\n </CommandList>\n </Command>\n </PopoverContent>\n </Popover>\n <p className=\"text-muted-foreground text-xs\">\n {hasRepo\n ? 'Select a branch from the dropdown or type to search. Local and remote branches are shown.'\n : 'Please select a repository above to see available branches.'}\n </p>\n </div>\n\n {error ? (\n <p className=\"text-destructive text-sm\" data-testid=\"adopt-branch-error\">\n {error}\n </p>\n ) : null}\n </div>\n </div>\n\n <div className=\"border-t p-4\">\n <div className=\"flex gap-2\">\n <Button\n type=\"button\"\n variant=\"outline\"\n onClick={handleClose}\n disabled={isSubmitting}\n className=\"flex-1\"\n >\n Cancel\n </Button>\n <Button\n type=\"submit\"\n disabled={isDisabled}\n className=\"flex-1\"\n data-testid=\"adopt-branch-submit\"\n >\n {isSubmitting ? (\n <>\n <Loader2 className=\"me-2 h-4 w-4 animate-spin\" />\n Adopting...\n </>\n ) : (\n 'Adopt Branch'\n )}\n </Button>\n </div>\n </div>\n </form>\n </BaseDrawer>\n );\n}\n","'use client';\n\nimport * as React from 'react';\nimport { Search } from 'lucide-react';\n\nimport { cn } from '@/lib/utils';\n\n/**\n * Command — minimal combobox primitives for model/item selection.\n *\n * Intentionally avoids the `cmdk` dependency and builds on native React +\n * Tailwind instead. Filtering logic lives in the consumer component.\n */\n\nconst Command = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n 'bg-popover text-popover-foreground flex h-full w-full flex-col overflow-hidden rounded-md',\n className\n )}\n {...props}\n />\n )\n);\nCommand.displayName = 'Command';\n\nconst CommandInput = React.forwardRef<\n HTMLInputElement,\n React.InputHTMLAttributes<HTMLInputElement>\n>(({ className, ...props }, ref) => (\n <div className=\"flex items-center border-b px-3\">\n <Search className=\"me-2 h-4 w-4 shrink-0 opacity-50\" />\n <input\n ref={ref}\n className={cn(\n 'placeholder:text-muted-foreground flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-none disabled:cursor-not-allowed disabled:opacity-50',\n className\n )}\n {...props}\n />\n </div>\n));\nCommandInput.displayName = 'CommandInput';\n\nconst CommandList = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn('max-h-[300px] overflow-x-hidden overflow-y-auto', className)}\n {...props}\n />\n )\n);\nCommandList.displayName = 'CommandList';\n\nconst CommandEmpty = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn('text-muted-foreground py-6 text-center text-sm', className)}\n {...props}\n />\n )\n);\nCommandEmpty.displayName = 'CommandEmpty';\n\nconst CommandGroup = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn('text-foreground overflow-hidden p-1', className)} {...props} />\n )\n);\nCommandGroup.displayName = 'CommandGroup';\n\ninterface CommandItemProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n selected?: boolean;\n}\n\nconst CommandItem = React.forwardRef<HTMLButtonElement, CommandItemProps>(\n ({ className, selected, ...props }, ref) => (\n <button\n ref={ref}\n type=\"button\"\n data-selected={selected}\n className={cn(\n 'relative flex w-full cursor-default items-center rounded-sm px-2 py-1.5 text-sm transition-colors outline-none select-none',\n 'hover:bg-accent hover:text-accent-foreground',\n 'data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground',\n 'disabled:pointer-events-none disabled:opacity-50',\n className\n )}\n {...props}\n />\n )\n);\nCommandItem.displayName = 'CommandItem';\n\nconst CommandSeparator = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn('bg-border -mx-1 h-px', className)} {...props} />\n )\n);\nCommandSeparator.displayName = 'CommandSeparator';\n\nexport {\n Command,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n CommandSeparator,\n};\n"],"names":[],"mappings":"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","ignoreList":[0]}
1
+ {"version":3,"sources":["../../../../../../../node_modules/.pnpm/lucide-react%400.563.0_react%4019.2.4/node_modules/lucide-react/src/icons/chevrons-up-down.ts","../../../../../../../src/presentation/web/components/common/control-center-drawer/adopt-drawer-client.tsx","../../../../../../../src/presentation/web/app/actions/data%3A6cf93a%20%3Ctext/javascript%3E","../../../../../../../src/presentation/web/app/actions/data%3A78fd0c%20%3Ctext/javascript%3E","../../../../../../../src/presentation/web/components/common/control-center-drawer/adopt-branch-drawer.tsx","../../../../../../../src/presentation/web/components/ui/command.tsx"],"sourcesContent":["import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'm7 15 5 5 5-5', key: '1hf1tw' }],\n ['path', { d: 'm7 9 5-5 5 5', key: 'sgt6xg' }],\n];\n\n/**\n * @component @name ChevronsUpDown\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJtNyAxNSA1IDUgNS01IiAvPgogIDxwYXRoIGQ9Im03IDkgNS01IDUgNSIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/chevrons-up-down\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ChevronsUpDown = createLucideIcon('chevrons-up-down', __iconNode);\n\nexport default ChevronsUpDown;\n","'use client';\n\nimport { useState, useCallback, useEffect } from 'react';\nimport { useRouter, usePathname } from 'next/navigation';\nimport { toast } from 'sonner';\nimport { adoptBranch } from '@/app/actions/adopt-branch';\nimport { listBranches } from '@/app/actions/list-branches';\nimport { AdoptBranchDrawer } from './adopt-branch-drawer';\nimport type { RepositoryOption } from '@/components/common/feature-create-drawer/feature-create-drawer';\n\nexport interface AdoptDrawerClientProps {\n repositoryPath: string;\n repositories: RepositoryOption[];\n}\n\nexport function AdoptDrawerClient({ repositoryPath, repositories }: AdoptDrawerClientProps) {\n const router = useRouter();\n const pathname = usePathname();\n const [isSubmitting, setIsSubmitting] = useState(false);\n const [error, setError] = useState<string>();\n const [branches, setBranches] = useState<string[]>([]);\n const [branchesLoading, setBranchesLoading] = useState(false);\n const [selectedRepoPath, setSelectedRepoPath] = useState(repositoryPath);\n\n const isOnAdoptRoute = pathname.startsWith('/adopt');\n const isOpen = !isSubmitting && isOnAdoptRoute;\n\n // Reset isSubmitting once the route has actually changed away from /adopt\n useEffect(() => {\n if (!isOnAdoptRoute && isSubmitting) {\n setIsSubmitting(false);\n }\n }, [isOnAdoptRoute, isSubmitting]);\n\n // Clear error when drawer reopens and reset selected repo to default\n useEffect(() => {\n if (isOnAdoptRoute) {\n setError(undefined);\n setSelectedRepoPath(repositoryPath);\n }\n }, [isOnAdoptRoute, repositoryPath]);\n\n // Fetch branches when drawer opens AND a repository is selected\n useEffect(() => {\n if (isOnAdoptRoute && selectedRepoPath) {\n setBranchesLoading(true);\n setBranches([]);\n listBranches(selectedRepoPath)\n .then(setBranches)\n .catch(() => setBranches([]))\n .finally(() => setBranchesLoading(false));\n } else {\n setBranches([]);\n }\n }, [isOnAdoptRoute, selectedRepoPath]);\n\n const onClose = useCallback(() => {\n router.push('/');\n }, [router]);\n\n const handleRepositoryChange = useCallback((path: string) => {\n setSelectedRepoPath(path);\n }, []);\n\n const onSubmit = useCallback(\n (branchName: string, repoPath: string) => {\n setError(undefined);\n setIsSubmitting(true);\n router.push('/');\n\n adoptBranch({ branchName, repositoryPath: repoPath })\n .then((result) => {\n if (result.error) {\n toast.error(result.error);\n return;\n }\n window.dispatchEvent(\n new CustomEvent('shep:feature-created', {\n detail: {\n featureId: result.feature!.id,\n name: result.feature!.name,\n description: result.feature!.description,\n repositoryPath: result.feature!.repositoryPath,\n },\n })\n );\n toast.success(`Branch adopted as \"${result.feature!.name}\"`);\n })\n .catch(() => {\n toast.error('Failed to adopt branch');\n setIsSubmitting(false);\n });\n },\n [router]\n );\n\n return (\n <AdoptBranchDrawer\n open={isOpen}\n onClose={onClose}\n onSubmit={onSubmit}\n isSubmitting={isSubmitting}\n error={error}\n repositories={repositories}\n selectedRepositoryPath={selectedRepoPath}\n onRepositoryChange={handleRepositoryChange}\n branches={branches}\n branchesLoading={branchesLoading}\n />\n );\n}\n","/* __next_internal_action_entry_do_not_use__ [{\"40df2a52b865b1b020f33ad3aa0b53217dedcbd779\":\"adoptBranch\"},\"src/presentation/web/app/actions/adopt-branch.ts\",\"\"] */\"use turbopack no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_0=/*#__PURE__*/createServerReference(\"40df2a52b865b1b020f33ad3aa0b53217dedcbd779\",callServer,void 0,findSourceMapURL,\"adoptBranch\");export{$$RSC_SERVER_ACTION_0 as adoptBranch};","/* __next_internal_action_entry_do_not_use__ [{\"40c729a2e262be4f8894d4f90d6519f58e0f421d17\":\"listBranches\"},\"src/presentation/web/app/actions/list-branches.ts\",\"\"] */\"use turbopack no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_0=/*#__PURE__*/createServerReference(\"40c729a2e262be4f8894d4f90d6519f58e0f421d17\",callServer,void 0,findSourceMapURL,\"listBranches\");export{$$RSC_SERVER_ACTION_0 as listBranches};","'use client';\n\nimport { useState, useCallback, useEffect, useRef } from 'react';\nimport { Check, CheckIcon, ChevronsUpDown, GitBranch, Loader2 } from 'lucide-react';\nimport { BaseDrawer } from '@/components/common/base-drawer';\nimport { DrawerTitle, DrawerDescription } from '@/components/ui/drawer';\nimport { Button } from '@/components/ui/button';\nimport { Input } from '@/components/ui/input';\nimport { Label } from '@/components/ui/label';\nimport {\n Command,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n} from '@/components/ui/command';\nimport { Popover, PopoverContent, PopoverTrigger } from '@/components/ui/popover';\nimport { cn } from '@/lib/utils';\nimport type { RepositoryOption } from '@/components/common/feature-create-drawer/feature-create-drawer';\n\nexport interface AdoptBranchDrawerProps {\n open: boolean;\n onClose: () => void;\n onSubmit: (branchName: string, repositoryPath: string) => void;\n isSubmitting?: boolean;\n error?: string;\n /** Available repositories for the repository selector */\n repositories?: RepositoryOption[];\n /** Currently selected repository path */\n selectedRepositoryPath?: string;\n /** Callback when user selects a different repository */\n onRepositoryChange?: (repositoryPath: string) => void;\n /** Available branch names for the combobox dropdown */\n branches?: string[];\n /** Whether branches are still loading */\n branchesLoading?: boolean;\n}\n\nexport function AdoptBranchDrawer({\n open,\n onClose,\n onSubmit,\n isSubmitting = false,\n error,\n repositories = [],\n selectedRepositoryPath,\n onRepositoryChange,\n branches = [],\n branchesLoading = false,\n}: AdoptBranchDrawerProps) {\n const [branchName, setBranchName] = useState('');\n const [comboboxOpen, setComboboxOpen] = useState(false);\n const [inputValue, setInputValue] = useState('');\n const inputRef = useRef<HTMLInputElement>(null);\n const [repoOpen, setRepoOpen] = useState(false);\n const [repoQuery, setRepoQuery] = useState('');\n const repoInputRef = useRef<HTMLInputElement>(null);\n\n const selectedRepo = repositories.find((r) => r.path === selectedRepositoryPath);\n const hasRepo = !!selectedRepositoryPath;\n\n // Reset state when drawer closes\n useEffect(() => {\n if (!open) {\n setBranchName('');\n setInputValue('');\n setComboboxOpen(false);\n setRepoOpen(false);\n setRepoQuery('');\n }\n }, [open]);\n\n // Reset branch selection when repository changes\n useEffect(() => {\n setBranchName('');\n setInputValue('');\n }, [selectedRepositoryPath]);\n\n const handleSubmit = useCallback(\n (e: React.FormEvent) => {\n e.preventDefault();\n const trimmed = branchName.trim();\n if (!trimmed || !selectedRepositoryPath || isSubmitting) return;\n onSubmit(trimmed, selectedRepositoryPath);\n },\n [branchName, selectedRepositoryPath, isSubmitting, onSubmit]\n );\n\n const handleClose = useCallback(() => {\n setBranchName('');\n setInputValue('');\n onClose();\n }, [onClose]);\n\n const handleSelect = useCallback((branch: string) => {\n setBranchName(branch);\n setInputValue(branch);\n setComboboxOpen(false);\n }, []);\n\n const handleInputChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n setInputValue(e.target.value);\n if (!comboboxOpen) setComboboxOpen(true);\n },\n [comboboxOpen]\n );\n\n const handleInputKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Enter') {\n e.preventDefault();\n const trimmed = inputValue.trim();\n if (trimmed) {\n setBranchName(trimmed);\n setComboboxOpen(false);\n }\n }\n if (e.key === 'Escape') {\n setComboboxOpen(false);\n setInputValue(branchName);\n }\n },\n [inputValue, branchName]\n );\n\n const handleRepoSelect = useCallback(\n (path: string) => {\n onRepositoryChange?.(path);\n setRepoOpen(false);\n setRepoQuery('');\n },\n [onRepositoryChange]\n );\n\n const filteredBranches = branches.filter((b) =>\n b.toLowerCase().includes(inputValue.toLowerCase())\n );\n\n const filteredRepos = repoQuery.trim()\n ? repositories.filter(\n (r) =>\n r.name.toLowerCase().includes(repoQuery.toLowerCase()) ||\n r.path.toLowerCase().includes(repoQuery.toLowerCase())\n )\n : repositories;\n\n useEffect(() => {\n if (repoOpen) {\n setTimeout(() => repoInputRef.current?.focus(), 0);\n } else {\n setRepoQuery('');\n }\n }, [repoOpen]);\n\n const isDisabled = !branchName.trim() || !selectedRepositoryPath || isSubmitting;\n\n const header = (\n <div>\n <DrawerTitle className=\"flex items-center gap-2\">\n <GitBranch className=\"h-4 w-4\" />\n Adopt Branch\n </DrawerTitle>\n <DrawerDescription className=\"text-muted-foreground text-sm\">\n Import an existing git branch into Shep&apos;s feature tracking\n </DrawerDescription>\n </div>\n );\n\n return (\n <BaseDrawer\n open={open}\n onClose={handleClose}\n size=\"sm\"\n modal={false}\n header={header}\n data-testid=\"adopt-branch-drawer\"\n >\n <form onSubmit={handleSubmit} className=\"flex flex-1 flex-col\">\n <div className=\"flex-1 overflow-y-auto p-4\">\n <div className=\"flex flex-col gap-4\">\n {/* Repository selector */}\n <div className=\"flex flex-col gap-2\">\n <Label>Repository</Label>\n <Popover open={repoOpen} onOpenChange={setRepoOpen}>\n <PopoverTrigger asChild>\n <button\n type=\"button\"\n role=\"combobox\"\n aria-expanded={repoOpen}\n aria-label=\"Repository\"\n disabled={isSubmitting}\n data-testid=\"adopt-repo-combobox\"\n className={cn(\n 'border-input bg-background ring-offset-background focus:ring-ring flex h-9 w-full items-center justify-between rounded-md border px-3 py-2 text-sm focus:ring-2 focus:ring-offset-2 focus:outline-none disabled:cursor-not-allowed disabled:opacity-50',\n !selectedRepo && 'text-muted-foreground'\n )}\n >\n <span className=\"truncate\">\n {selectedRepo ? selectedRepo.name : 'Select repository...'}\n </span>\n <ChevronsUpDown className=\"ms-2 h-4 w-4 shrink-0 opacity-50\" />\n </button>\n </PopoverTrigger>\n <PopoverContent\n className=\"w-80 p-0\"\n align=\"start\"\n data-testid=\"adopt-repo-combobox-content\"\n >\n <div className=\"flex flex-col\">\n <div className=\"border-b p-2\">\n <Input\n ref={repoInputRef}\n placeholder=\"Search repositories...\"\n value={repoQuery}\n onChange={(e) => setRepoQuery(e.target.value)}\n className=\"h-8 border-0 p-0 text-sm shadow-none focus-visible:ring-0\"\n data-testid=\"adopt-repo-search\"\n />\n </div>\n <div\n className=\"max-h-48 overflow-y-auto py-1\"\n role=\"listbox\"\n aria-label=\"Repositories\"\n >\n {filteredRepos.length === 0 ? (\n <p className=\"text-muted-foreground px-3 py-2 text-sm\">\n No repositories found.\n </p>\n ) : (\n filteredRepos.map((r) => (\n <button\n key={r.id}\n type=\"button\"\n role=\"option\"\n aria-selected={selectedRepositoryPath === r.path}\n onClick={() => handleRepoSelect(r.path)}\n className={cn(\n 'hover:bg-accent hover:text-accent-foreground flex w-full items-center gap-2 px-3 py-2 text-sm',\n selectedRepositoryPath === r.path && 'bg-accent/50'\n )}\n data-testid={`adopt-repo-option-${r.id}`}\n >\n <CheckIcon\n className={cn(\n 'h-4 w-4 shrink-0',\n selectedRepositoryPath !== r.path && 'invisible'\n )}\n />\n <span className=\"flex flex-col items-start truncate\">\n <span className=\"truncate\">{r.name}</span>\n <span className=\"text-muted-foreground truncate text-xs\">\n {r.path}\n </span>\n </span>\n </button>\n ))\n )}\n </div>\n </div>\n </PopoverContent>\n </Popover>\n <p className=\"text-muted-foreground text-xs\">\n Select the repository that contains the branch you want to adopt.\n </p>\n </div>\n\n {/* Branch selector */}\n <div className=\"flex flex-col gap-2\">\n <Label htmlFor=\"branch-name\">Branch name</Label>\n <Popover open={comboboxOpen} onOpenChange={setComboboxOpen}>\n <PopoverTrigger asChild>\n <Button\n variant=\"outline\"\n role=\"combobox\"\n aria-expanded={comboboxOpen}\n disabled={isSubmitting || !hasRepo}\n className=\"w-full justify-between font-normal\"\n data-testid=\"adopt-branch-input\"\n >\n <span className=\"truncate\">\n {!hasRepo\n ? 'Select a repository first...'\n : branchesLoading\n ? 'Loading branches...'\n : branchName || 'Select a branch...'}\n </span>\n <ChevronsUpDown className=\"ms-2 h-4 w-4 shrink-0 opacity-50\" />\n </Button>\n </PopoverTrigger>\n <PopoverContent\n className=\"w-[var(--radix-popover-trigger-width)] p-0\"\n align=\"start\"\n >\n <Command>\n <CommandInput\n ref={inputRef}\n placeholder=\"Search branches...\"\n value={inputValue}\n onChange={handleInputChange}\n onKeyDown={handleInputKeyDown}\n data-testid=\"adopt-branch-search\"\n />\n <CommandList>\n {!branchesLoading && filteredBranches.length === 0 && (\n <CommandEmpty>\n {branches.length === 0\n ? 'No branches found.'\n : inputValue\n ? 'No match — press Enter to use this value.'\n : 'No branches available.'}\n </CommandEmpty>\n )}\n {branchesLoading ? (\n <CommandEmpty>\n <Loader2 className=\"mx-auto h-4 w-4 animate-spin\" />\n </CommandEmpty>\n ) : null}\n {filteredBranches.length > 0 && (\n <CommandGroup>\n {filteredBranches.map((branch) => (\n <CommandItem\n key={branch}\n selected={branch === branchName}\n onClick={() => handleSelect(branch)}\n >\n <Check\n className={cn(\n 'me-2 h-4 w-4',\n branch === branchName ? 'opacity-100' : 'opacity-0'\n )}\n />\n <GitBranch className=\"me-2 h-3 w-3 opacity-50\" />\n {branch}\n </CommandItem>\n ))}\n </CommandGroup>\n )}\n </CommandList>\n </Command>\n </PopoverContent>\n </Popover>\n <p className=\"text-muted-foreground text-xs\">\n {hasRepo\n ? 'Select a branch from the dropdown or type to search. Local and remote branches are shown.'\n : 'Please select a repository above to see available branches.'}\n </p>\n </div>\n\n {error ? (\n <p className=\"text-destructive text-sm\" data-testid=\"adopt-branch-error\">\n {error}\n </p>\n ) : null}\n </div>\n </div>\n\n <div className=\"border-t p-4\">\n <div className=\"flex gap-2\">\n <Button\n type=\"button\"\n variant=\"outline\"\n onClick={handleClose}\n disabled={isSubmitting}\n className=\"flex-1\"\n >\n Cancel\n </Button>\n <Button\n type=\"submit\"\n disabled={isDisabled}\n className=\"flex-1\"\n data-testid=\"adopt-branch-submit\"\n >\n {isSubmitting ? (\n <>\n <Loader2 className=\"me-2 h-4 w-4 animate-spin\" />\n Adopting...\n </>\n ) : (\n 'Adopt Branch'\n )}\n </Button>\n </div>\n </div>\n </form>\n </BaseDrawer>\n );\n}\n","'use client';\n\nimport * as React from 'react';\nimport { Search } from 'lucide-react';\n\nimport { cn } from '@/lib/utils';\n\n/**\n * Command — minimal combobox primitives for model/item selection.\n *\n * Intentionally avoids the `cmdk` dependency and builds on native React +\n * Tailwind instead. Filtering logic lives in the consumer component.\n */\n\nconst Command = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n 'bg-popover text-popover-foreground flex h-full w-full flex-col overflow-hidden rounded-md',\n className\n )}\n {...props}\n />\n )\n);\nCommand.displayName = 'Command';\n\nconst CommandInput = React.forwardRef<\n HTMLInputElement,\n React.InputHTMLAttributes<HTMLInputElement>\n>(({ className, ...props }, ref) => (\n <div className=\"flex items-center border-b px-3\">\n <Search className=\"me-2 h-4 w-4 shrink-0 opacity-50\" />\n <input\n ref={ref}\n className={cn(\n 'placeholder:text-muted-foreground flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-none disabled:cursor-not-allowed disabled:opacity-50',\n className\n )}\n {...props}\n />\n </div>\n));\nCommandInput.displayName = 'CommandInput';\n\nconst CommandList = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn('max-h-[300px] overflow-x-hidden overflow-y-auto', className)}\n {...props}\n />\n )\n);\nCommandList.displayName = 'CommandList';\n\nconst CommandEmpty = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn('text-muted-foreground py-6 text-center text-sm', className)}\n {...props}\n />\n )\n);\nCommandEmpty.displayName = 'CommandEmpty';\n\nconst CommandGroup = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn('text-foreground overflow-hidden p-1', className)} {...props} />\n )\n);\nCommandGroup.displayName = 'CommandGroup';\n\ninterface CommandItemProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n selected?: boolean;\n}\n\nconst CommandItem = React.forwardRef<HTMLButtonElement, CommandItemProps>(\n ({ className, selected, ...props }, ref) => (\n <button\n ref={ref}\n type=\"button\"\n data-selected={selected}\n className={cn(\n 'relative flex w-full cursor-default items-center rounded-sm px-2 py-1.5 text-sm transition-colors outline-none select-none',\n 'hover:bg-accent hover:text-accent-foreground',\n 'data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground',\n 'disabled:pointer-events-none disabled:opacity-50',\n className\n )}\n {...props}\n />\n )\n);\nCommandItem.displayName = 'CommandItem';\n\nconst CommandSeparator = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn('bg-border -mx-1 h-px', className)} {...props} />\n )\n);\nCommandSeparator.displayName = 'CommandSeparator';\n\nexport {\n Command,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n CommandSeparator,\n};\n"],"names":[],"mappings":"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","ignoreList":[0]}
@@ -0,0 +1,3 @@
1
+ module.exports=[5e4,a=>{"use strict";let b=(0,a.i(25700).default)("paperclip",[["path",{d:"m16 6-8.414 8.586a2 2 0 0 0 2.829 2.829l8.414-8.586a4 4 0 1 0-5.657-5.657l-8.379 8.551a6 6 0 1 0 8.485 8.485l8.379-8.551",key:"1miecu"}]]);a.s(["default",()=>b])},22366,73998,52751,a=>{"use strict";var b=a.i(7052);a.s(["Loader2Icon",()=>b.default],22366);var c=a.i(76096);a.s(["DownloadIcon",()=>c.default],73998);let d=(0,a.i(25700).default)("sticky-note",[["path",{d:"M21 9a2.4 2.4 0 0 0-.706-1.706l-3.588-3.588A2.4 2.4 0 0 0 15 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2z",key:"1dfntj"}],["path",{d:"M15 3v5a1 1 0 0 0 1 1h5",key:"6s6qgf"}]]);a.s(["StickyNoteIcon",()=>d],52751)},79620,a=>{"use strict";var b=a.i(12656),c=a.i(85536);function d({className:a,...d}){return(0,b.jsx)("textarea",{"data-slot":"textarea",className:(0,c.cn)("placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input field-sizing-content min-h-[80px] w-full rounded-md border bg-transparent px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm","focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]","aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",a),...d})}a.s(["Textarea",()=>d])},26633,50596,a=>{"use strict";var b=a.i(50049);a.s(["VisuallyHidden",0,b],26633);let c=(0,a.i(25700).default)("file",[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}]]);a.s(["FileIcon",()=>c],50596)},42642,a=>{"use strict";let b=(0,a.i(25700).default)("file-text",[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M10 9H8",key:"b1mrlr"}],["path",{d:"M16 13H8",key:"t4e002"}],["path",{d:"M16 17H8",key:"z1uh3a"}]]);a.s(["default",()=>b])},307,30931,a=>{"use strict";var b=a.i(12656),c=a.i(2807),d=a.i(22366),e=a.i(73998),f=a.i(52751),g=a.i(85536),h=a.i(45670),i=a.i(79620),j=a.i(82934),k=a.i(26633),l=a.i(50596),m=a.i(42642),m=m;let n=(0,a.i(25700).default)("image",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",ry:"2",key:"1m3agn"}],["circle",{cx:"9",cy:"9",r:"2",key:"af1f0g"}],["path",{d:"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21",key:"1xmnt7"}]]);var o=a.i(40617),o=o;a.i(18948);let p=new Set([".png",".jpg",".jpeg",".gif",".svg",".webp",".ico",".bmp"]),q=new Set([".ts",".tsx",".js",".jsx",".json",".yaml",".yml",".xml",".html",".css",".md"]);function r(a){if(0===a)return"0 B";let b=Math.floor(Math.log(a)/Math.log(1024));return`${(a/Math.pow(1024,b)).toFixed(+(0!==b))} ${["B","KB","MB","GB"][b]}`}let s=new Set([".png",".jpg",".jpeg",".gif",".svg",".webp",".ico",".bmp"]);function t(a,b){let c=new URLSearchParams({path:a,mimeType:b});return`/api/attachments/preview?${c.toString()}`}function u({name:a,size:u,mimeType:v,path:w,onRemove:x,loading:y=!1,disabled:z=!1,notes:A,onNotesChange:B}){let C,D,E=(C=a.lastIndexOf("."))>=0?a.slice(C).toLowerCase():"",F=p.has(E)?n:".pdf"===E?m.default:q.has(E)?o.default:l.FileIcon,G=".pdf"===E?"bg-red-50 text-red-600":p.has(E)?"bg-blue-50 text-blue-600":q.has(E)?"bg-emerald-50 text-emerald-600":"bg-gray-50 text-gray-600",H=(D=a.lastIndexOf("."))>=0&&s.has(a.slice(D).toLowerCase());if(y)return(0,b.jsx)("div",{className:"flex h-12 w-12 items-center justify-center rounded-md border",children:(0,b.jsx)(d.Loader2Icon,{className:"text-muted-foreground h-5 w-5 animate-spin"})});if(H){let d=(0,b.jsxs)("button",{type:"button",className:"relative block cursor-pointer rounded-md",children:[(0,b.jsx)("img",{src:t(w,v),alt:a,title:a,className:"h-12 w-12 rounded-md border object-cover transition-opacity hover:opacity-80"}),A?(0,b.jsx)("span",{className:"ring-background absolute -right-1 -bottom-1 flex h-4 w-4 items-center justify-center rounded-full bg-amber-500 text-white shadow-sm ring-2",children:(0,b.jsx)(f.StickyNoteIcon,{className:"h-2.5 w-2.5"})}):null]});return(0,b.jsx)(j.TooltipProvider,{delayDuration:200,children:(0,b.jsxs)(h.Dialog,{children:[(0,b.jsxs)(j.Tooltip,{children:[(0,b.jsxs)("div",{className:"group relative",children:[(0,b.jsx)(j.TooltipTrigger,{asChild:!0,children:(0,b.jsx)(h.DialogTrigger,{asChild:!0,children:d})}),!z&&(0,b.jsx)("button",{type:"button",onClick:x,className:"absolute -top-1.5 -right-1.5 hidden h-5 w-5 cursor-pointer items-center justify-center rounded-full bg-black/70 text-white group-hover:flex","aria-label":`Remove ${a}`,children:(0,b.jsx)(c.X,{className:"h-3 w-3"})})]}),A?(0,b.jsx)(j.TooltipContent,{side:"bottom",className:"max-w-[220px] border border-amber-200 bg-amber-50 text-amber-950 dark:border-amber-800 dark:bg-amber-950 dark:text-amber-100",children:(0,b.jsx)("p",{className:"line-clamp-3 text-xs leading-snug",children:A})}):null]}),(0,b.jsxs)(h.DialogContent,{className:"max-w-3xl gap-0 overflow-hidden border-0 p-0 [&>button:last-child]:!cursor-pointer [&>button:last-child]:!rounded-full [&>button:last-child]:!bg-black/70 [&>button:last-child]:!p-1.5 [&>button:last-child]:!text-white [&>button:last-child]:!opacity-100 [&>button:last-child]:!shadow-lg [&>button:last-child]:!backdrop-blur-md [&>button:last-child]:hover:!bg-black/90",children:[(0,b.jsx)(k.VisuallyHidden.Root,{children:(0,b.jsxs)(h.DialogTitle,{children:["Preview: ",a]})}),(0,b.jsx)("div",{className:"relative bg-black/90",children:(0,b.jsx)("img",{src:t(w,v),alt:a,className:"h-auto max-h-[70vh] w-full object-contain"})}),(0,b.jsxs)("div",{className:"bg-background flex flex-col gap-2 px-4 py-3",children:[(0,b.jsxs)("div",{className:"flex items-center gap-3",children:[(0,b.jsxs)("div",{className:"flex min-w-0 flex-1 flex-col",children:[(0,b.jsx)("span",{className:"truncate text-sm font-medium",children:a}),(0,b.jsx)("span",{className:"text-muted-foreground text-xs",children:r(u)})]}),(0,b.jsx)("a",{href:t(w,v),download:a,className:"text-muted-foreground hover:text-foreground shrink-0 cursor-pointer rounded p-1.5 transition-colors","aria-label":`Download ${a}`,children:(0,b.jsx)(e.DownloadIcon,{className:"h-4 w-4"})})]}),B?(0,b.jsx)(i.Textarea,{placeholder:"Add notes about this image…",value:A??"",onChange:a=>B(a.target.value),rows:2,className:"resize-none text-sm","aria-label":"Image notes"}):A?(0,b.jsx)("p",{className:"text-muted-foreground text-sm",children:A}):null]})]})]})})}return(0,b.jsxs)("div",{className:"group relative flex items-center gap-2 rounded-full border py-1 ps-2 pe-3",children:[(0,b.jsx)("div",{className:(0,g.cn)("flex h-6 w-6 shrink-0 items-center justify-center rounded-full",G),children:(0,b.jsx)(F,{className:"h-3 w-3"})}),(0,b.jsx)("span",{className:"max-w-[120px] truncate text-sm",children:a}),(0,b.jsx)("span",{className:"text-muted-foreground text-xs",children:r(u)}),!z&&(0,b.jsx)("button",{type:"button",onClick:x,className:"absolute -top-1.5 -right-1.5 hidden h-5 w-5 cursor-pointer items-center justify-center rounded-full bg-black/70 text-white group-hover:flex","aria-label":`Remove ${a}`,children:(0,b.jsx)(c.X,{className:"h-3 w-3"})})]})}a.s(["AttachmentChip",()=>u],30931),a.s([],307)},61781,a=>{"use strict";var b=a.i(12656),c=a.i(96960),d=a.i(72016),e=a.i(94132),f=a.i(3410),g=a.i(83315),h=a.i(5961),i=a.i(17606),j=a.i(83852),k=a.i(18948),l=a.i(80646),m=a.i(85536);function n({initialAgentType:a,initialModel:n,agentType:o,model:p,onAgentModelChange:q,onSave:r,saveError:s,saving:t,disabled:u,className:v,mode:w}){let[x,y]=c.useState(!1),[z,A]=c.useState([]),[B,C]=c.useState(!0),[D,E]=c.useState(o??a),[F,G]=c.useState(p??n),[H,I]=c.useState(!1),[J,K]=c.useState(null),[L,M]=c.useState(0),[N,O]=c.useState(null);c.useEffect(()=>{(0,g.getAllAgentModels)().then(A).finally(()=>C(!1))},[]),c.useEffect(()=>{E(o??a)},[o,a]),c.useEffect(()=>{G(p??n)},[p,n]);let P=c.useRef(x);c.useEffect(()=>{let a=P.current;if(P.current=x,a&&!x){let a=setTimeout(()=>{M(0),O(null)},150);return()=>clearTimeout(a)}},[x]);let Q=async(a,b)=>{if(y(!1),a===D&&b===F)return;if(K(null),"override"===w){E(a),G(b),q?.(a,b);return}let c=r??(async(a,b)=>(0,h.updateAgentAndModel)(a,b||null));I(!0);try{let d=await c(a,b);if(d&&"ok"in d&&!d.ok)return void K(d.error??"Failed to save");E(a),G(b),q?.(a,b)}catch{K("Failed to save")}finally{I(!1)}},R=s??J,S=(0,i.getAgentTypeIcon)(D),T=z.find(a=>a.agentType===D)?.label??D,U=F?(0,j.getModelMeta)(F).displayName||F:null,V=N?z.find(a=>a.agentType===N):null;return(0,b.jsxs)("div",{className:(0,m.cn)("flex flex-col gap-1",v),children:[(0,b.jsxs)(l.Popover,{open:x,onOpenChange:y,children:[(0,b.jsx)(l.PopoverTrigger,{asChild:!0,children:(0,b.jsx)(k.Button,{type:"button",variant:"outline",role:"combobox","aria-expanded":x,disabled:(u??!1)||B||(t??!1)||H,className:"w-auto cursor-pointer justify-start font-normal hover:border-violet-300 hover:bg-violet-50/50 dark:hover:border-violet-700 dark:hover:bg-violet-950/30",children:(0,b.jsxs)("span",{className:"flex items-center gap-2 truncate",children:[(0,b.jsx)(S,{className:"h-4 w-4 shrink-0"}),B?"Loading…":(0,b.jsxs)("span",{className:"flex items-center gap-1",children:[(0,b.jsx)("span",{className:"text-muted-foreground text-xs",children:T}),U?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("span",{className:"text-muted-foreground/50 text-xs",children:"·"}),(0,b.jsx)("span",{className:"text-xs font-medium",children:U})]}):null]})]})})}),(0,b.jsx)(l.PopoverContent,{className:"z-[70] w-(--radix-popover-trigger-width) overflow-hidden p-0",align:"start",children:(0,b.jsxs)("div",{className:"flex transition-transform duration-200 ease-in-out",style:{transform:`translateX(${1===L?"-50%":"0%"})`,width:"200%"},children:[(0,b.jsxs)("div",{className:"w-1/2 shrink-0",children:[(0,b.jsx)("div",{className:"text-muted-foreground border-b px-3 py-2 text-xs font-medium",children:"Select agent"}),z.map(a=>{let c=(0,i.getAgentTypeIcon)(a.agentType),e=D===a.agentType,g=a.models.length>0;return(0,b.jsxs)("button",{type:"button",className:(0,m.cn)("flex w-full cursor-pointer items-center gap-2.5 px-3 py-2 text-xs transition-colors","hover:bg-accent hover:text-accent-foreground",e&&"bg-accent/50"),onClick:()=>{g?(O(a.agentType),requestAnimationFrame(()=>{requestAnimationFrame(()=>M(1))})):Q(a.agentType,"")},children:[(0,b.jsx)(c,{className:"h-4 w-4 shrink-0"}),(0,b.jsx)("span",{className:"flex-1 text-start",children:a.label}),e&&!g?(0,b.jsx)(d.Check,{className:"text-primary h-3.5 w-3.5 shrink-0"}):null,g?(0,b.jsx)(f.ChevronRight,{className:"text-muted-foreground h-3.5 w-3.5 shrink-0"}):null]},a.agentType)})]}),(0,b.jsx)("div",{className:"w-1/2 shrink-0",children:V?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("button",{type:"button",className:"text-muted-foreground hover:text-foreground flex w-full cursor-pointer items-center gap-1.5 border-b px-3 py-2 text-xs font-medium transition-colors",onClick:()=>{M(0),setTimeout(()=>O(null),220)},children:[(0,b.jsx)(e.ChevronLeft,{className:"h-3.5 w-3.5"}),V.label]}),V.models.map(a=>{let c=D===V.agentType&&F===a.id;return(0,b.jsxs)("button",{type:"button",className:(0,m.cn)("flex w-full cursor-pointer items-center gap-3 px-3 py-2 text-start transition-colors","hover:bg-accent hover:text-accent-foreground",c&&"bg-accent/50"),onClick:()=>Q(V.agentType,a.id),children:[(0,b.jsxs)("div",{className:"flex min-w-0 flex-1 flex-col",children:[(0,b.jsx)("span",{className:"text-xs font-medium",children:a.displayName}),(0,b.jsx)("span",{className:"text-muted-foreground text-xs",children:a.description})]}),c?(0,b.jsx)(d.Check,{className:"text-primary h-3.5 w-3.5 shrink-0"}):null]},a.id)})]}):null})]})})]}),!!R&&(0,b.jsx)("p",{className:"text-destructive text-sm",children:R})]})}a.s(["AgentModelPicker",()=>n])},40617,a=>{"use strict";let b=(0,a.i(25700).default)("code",[["path",{d:"m16 18 6-6-6-6",key:"eg8j8"}],["path",{d:"m8 6-6 6 6 6",key:"ppft3o"}]]);a.s(["default",()=>b])},58508,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={DEFAULT_SEGMENT_KEY:function(){return l},NOT_FOUND_SEGMENT_KEY:function(){return m},PAGE_SEGMENT_KEY:function(){return k},addSearchParamsIfPageSegment:function(){return i},computeSelectedLayoutSegment:function(){return j},getSegmentValue:function(){return f},getSelectedLayoutSegmentPath:function(){return function a(b,c,d=!0,e=[]){let g;if(d)g=b[1][c];else{let a=b[1];g=a.children??Object.values(a)[0]}if(!g)return e;let h=f(g[0]);return!h||h.startsWith(k)?e:(e.push(h),a(g,c,!1,e))}},isGroupSegment:function(){return g},isParallelRouteSegment:function(){return h}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});function f(a){return Array.isArray(a)?a[1]:a}function g(a){return"("===a[0]&&a.endsWith(")")}function h(a){return a.startsWith("@")&&"@children"!==a}function i(a,b){if(a.includes(k)){let a=JSON.stringify(b);return"{}"!==a?k+"?"+a:k}return a}function j(a,b){if(!a||0===a.length)return null;let c="children"===b?a[0]:a[a.length-1];return c===l?null:c}let k="__PAGE__",l="__DEFAULT__",m="/_not-found"},2807,89868,a=>{"use strict";let b=(0,a.i(25700).default)("x",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]);a.s(["default",()=>b],89868),a.s(["X",()=>b],2807)},72016,51969,a=>{"use strict";let b=(0,a.i(25700).default)("check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]);a.s(["default",()=>b],51969),a.s(["Check",()=>b],72016)},80646,a=>{"use strict";var b=a.i(12656),c=a.i(96960),d=a.i(59653),e=a.i(6175),f=a.i(7420),g=a.i(58761),h=a.i(51473),i=a.i(59675),j=a.i(5472),k=a.i(75988),l=a.i(80930),m=a.i(14272),n=a.i(66873),o=a.i(90986),p=a.i(17329),q=a.i(16164),r=a.i(45291),s="Popover",[t,u]=(0,f.createContextScope)(s,[k.createPopperScope]),v=(0,k.createPopperScope)(),[w,x]=t(s),y=a=>{let{__scopePopover:d,children:e,open:f,defaultOpen:g,onOpenChange:h,modal:i=!1}=a,l=v(d),m=c.useRef(null),[n,o]=c.useState(!1),[q,r]=(0,p.useControllableState)({prop:f,defaultProp:g??!1,onChange:h,caller:s});return(0,b.jsx)(k.Root,{...l,children:(0,b.jsx)(w,{scope:d,contentId:(0,j.useId)(),triggerRef:m,open:q,onOpenChange:r,onOpenToggle:c.useCallback(()=>r(a=>!a),[r]),hasCustomAnchor:n,onCustomAnchorAdd:c.useCallback(()=>o(!0),[]),onCustomAnchorRemove:c.useCallback(()=>o(!1),[]),modal:i,children:e})})};y.displayName=s;var z="PopoverAnchor",A=c.forwardRef((a,d)=>{let{__scopePopover:e,...f}=a,g=x(z,e),h=v(e),{onCustomAnchorAdd:i,onCustomAnchorRemove:j}=g;return c.useEffect(()=>(i(),()=>j()),[i,j]),(0,b.jsx)(k.Anchor,{...h,...f,ref:d})});A.displayName=z;var B="PopoverTrigger",C=c.forwardRef((a,c)=>{let{__scopePopover:f,...g}=a,h=x(B,f),i=v(f),j=(0,e.useComposedRefs)(c,h.triggerRef),l=(0,b.jsx)(n.Primitive.button,{type:"button","aria-haspopup":"dialog","aria-expanded":h.open,"aria-controls":h.contentId,"data-state":Q(h.open),...g,ref:j,onClick:(0,d.composeEventHandlers)(a.onClick,h.onOpenToggle)});return h.hasCustomAnchor?l:(0,b.jsx)(k.Anchor,{asChild:!0,...i,children:l})});C.displayName=B;var D="PopoverPortal",[E,F]=t(D,{forceMount:void 0}),G=a=>{let{__scopePopover:c,forceMount:d,children:e,container:f}=a,g=x(D,c);return(0,b.jsx)(E,{scope:c,forceMount:d,children:(0,b.jsx)(m.Presence,{present:d||g.open,children:(0,b.jsx)(l.Portal,{asChild:!0,container:f,children:e})})})};G.displayName=D;var H="PopoverContent",I=c.forwardRef((a,c)=>{let d=F(H,a.__scopePopover),{forceMount:e=d.forceMount,...f}=a,g=x(H,a.__scopePopover);return(0,b.jsx)(m.Presence,{present:e||g.open,children:g.modal?(0,b.jsx)(K,{...f,ref:c}):(0,b.jsx)(L,{...f,ref:c})})});I.displayName=H;var J=(0,o.createSlot)("PopoverContent.RemoveScroll"),K=c.forwardRef((a,f)=>{let g=x(H,a.__scopePopover),h=c.useRef(null),i=(0,e.useComposedRefs)(f,h),j=c.useRef(!1);return c.useEffect(()=>{let a=h.current;if(a)return(0,q.hideOthers)(a)},[]),(0,b.jsx)(r.RemoveScroll,{as:J,allowPinchZoom:!0,children:(0,b.jsx)(M,{...a,ref:i,trapFocus:g.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:(0,d.composeEventHandlers)(a.onCloseAutoFocus,a=>{a.preventDefault(),j.current||g.triggerRef.current?.focus()}),onPointerDownOutside:(0,d.composeEventHandlers)(a.onPointerDownOutside,a=>{let b=a.detail.originalEvent,c=0===b.button&&!0===b.ctrlKey;j.current=2===b.button||c},{checkForDefaultPrevented:!1}),onFocusOutside:(0,d.composeEventHandlers)(a.onFocusOutside,a=>a.preventDefault(),{checkForDefaultPrevented:!1})})})}),L=c.forwardRef((a,d)=>{let e=x(H,a.__scopePopover),f=c.useRef(!1),g=c.useRef(!1);return(0,b.jsx)(M,{...a,ref:d,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:b=>{a.onCloseAutoFocus?.(b),b.defaultPrevented||(f.current||e.triggerRef.current?.focus(),b.preventDefault()),f.current=!1,g.current=!1},onInteractOutside:b=>{a.onInteractOutside?.(b),b.defaultPrevented||(f.current=!0,"pointerdown"===b.detail.originalEvent.type&&(g.current=!0));let c=b.target;e.triggerRef.current?.contains(c)&&b.preventDefault(),"focusin"===b.detail.originalEvent.type&&g.current&&b.preventDefault()}})}),M=c.forwardRef((a,c)=>{let{__scopePopover:d,trapFocus:e,onOpenAutoFocus:f,onCloseAutoFocus:j,disableOutsidePointerEvents:l,onEscapeKeyDown:m,onPointerDownOutside:n,onFocusOutside:o,onInteractOutside:p,...q}=a,r=x(H,d),s=v(d);return(0,h.useFocusGuards)(),(0,b.jsx)(i.FocusScope,{asChild:!0,loop:!0,trapped:e,onMountAutoFocus:f,onUnmountAutoFocus:j,children:(0,b.jsx)(g.DismissableLayer,{asChild:!0,disableOutsidePointerEvents:l,onInteractOutside:p,onEscapeKeyDown:m,onPointerDownOutside:n,onFocusOutside:o,onDismiss:()=>r.onOpenChange(!1),children:(0,b.jsx)(k.Content,{"data-state":Q(r.open),role:"dialog",id:r.contentId,...s,...q,ref:c,style:{...q.style,"--radix-popover-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-popover-content-available-width":"var(--radix-popper-available-width)","--radix-popover-content-available-height":"var(--radix-popper-available-height)","--radix-popover-trigger-width":"var(--radix-popper-anchor-width)","--radix-popover-trigger-height":"var(--radix-popper-anchor-height)"}})})})}),N="PopoverClose",O=c.forwardRef((a,c)=>{let{__scopePopover:e,...f}=a,g=x(N,e);return(0,b.jsx)(n.Primitive.button,{type:"button",...f,ref:c,onClick:(0,d.composeEventHandlers)(a.onClick,()=>g.onOpenChange(!1))})});O.displayName=N;var P=c.forwardRef((a,c)=>{let{__scopePopover:d,...e}=a,f=v(d);return(0,b.jsx)(k.Arrow,{...f,...e,ref:c})});function Q(a){return a?"open":"closed"}P.displayName="PopoverArrow",a.s(["Anchor",()=>A,"Arrow",()=>P,"Close",()=>O,"Content",()=>I,"Popover",()=>y,"PopoverAnchor",()=>A,"PopoverArrow",()=>P,"PopoverClose",()=>O,"PopoverContent",()=>I,"PopoverPortal",()=>G,"PopoverTrigger",()=>C,"Portal",()=>G,"Root",()=>y,"Trigger",()=>C,"createPopoverScope",()=>u],61452);var R=a.i(61452),R=R,S=a.i(85536);let T=R.Root,U=R.Trigger;R.Anchor;let V=c.forwardRef(({className:a,align:c="center",sideOffset:d=4,...e},f)=>(0,b.jsx)(R.Portal,{children:(0,b.jsx)(R.Content,{ref:f,align:c,sideOffset:d,className:(0,S.cn)("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-72 rounded-md border p-4 shadow-md outline-none",a),...e})}));V.displayName=R.Content.displayName,a.s(["Popover",()=>T,"PopoverContent",()=>V,"PopoverTrigger",()=>U],80646)}];
2
+
3
+ //# sourceMappingURL=_6abfa39e._.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../../node_modules/.pnpm/lucide-react%400.563.0_react%4019.2.4/node_modules/lucide-react/src/icons/paperclip.ts","../../../../../../../node_modules/.pnpm/lucide-react%400.563.0_react%4019.2.4/node_modules/lucide-react/src/icons/sticky-note.ts","../../../../../../../src/presentation/web/components/ui/textarea.tsx","../../../../../../../node_modules/.pnpm/lucide-react%400.563.0_react%4019.2.4/node_modules/lucide-react/src/icons/file.ts","../../../../../../../node_modules/.pnpm/lucide-react%400.563.0_react%4019.2.4/node_modules/lucide-react/src/icons/file-text.ts","../../../../../../../src/presentation/web/components/common/attachment-chip/attachment-chip.tsx","../../../../../../../src/presentation/web/components/common/attachment-card/attachment-card.tsx","../../../../../../../node_modules/.pnpm/lucide-react%400.563.0_react%4019.2.4/node_modules/lucide-react/src/icons/image.ts","../../../../../../../src/presentation/web/components/features/settings/AgentModelPicker/index.tsx","../../../../../../../node_modules/.pnpm/lucide-react%400.563.0_react%4019.2.4/node_modules/lucide-react/src/icons/code.ts","../../../../../../../node_modules/.pnpm/next%4016.1.6_%40babel%2Bcore%407.29.0_%40playwright%2Btest%401.58.1_react-dom%4019.2.4_react%4019.2.4__react%4019.2.4/node_modules/next/src/shared/lib/segment.ts","../../../../../../../node_modules/.pnpm/lucide-react%400.563.0_react%4019.2.4/node_modules/lucide-react/src/icons/x.ts","../../../../../../../node_modules/.pnpm/lucide-react%400.563.0_react%4019.2.4/node_modules/lucide-react/src/icons/check.ts","../../../../../../../node_modules/.pnpm/%40radix-ui%2Breact-popover%401.1.15_%40types%2Breact-dom%4019.2.3_%40types%2Breact%4019.2.10__%40types%2Brea_6845413866e39bfed03c608b19c71ed1/node_modules/%40radix-ui/react-popover/dist/index.mjs","../../../../../../../src/presentation/web/components/ui/popover.tsx"],"sourcesContent":["import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'm16 6-8.414 8.586a2 2 0 0 0 2.829 2.829l8.414-8.586a4 4 0 1 0-5.657-5.657l-8.379 8.551a6 6 0 1 0 8.485 8.485l8.379-8.551',\n key: '1miecu',\n },\n ],\n];\n\n/**\n * @component @name Paperclip\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJtMTYgNi04LjQxNCA4LjU4NmEyIDIgMCAwIDAgMi44MjkgMi44MjlsOC40MTQtOC41ODZhNCA0IDAgMSAwLTUuNjU3LTUuNjU3bC04LjM3OSA4LjU1MWE2IDYgMCAxIDAgOC40ODUgOC40ODVsOC4zNzktOC41NTEiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/paperclip\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Paperclip = createLucideIcon('paperclip', __iconNode);\n\nexport default Paperclip;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M21 9a2.4 2.4 0 0 0-.706-1.706l-3.588-3.588A2.4 2.4 0 0 0 15 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2z',\n key: '1dfntj',\n },\n ],\n ['path', { d: 'M15 3v5a1 1 0 0 0 1 1h5', key: '6s6qgf' }],\n];\n\n/**\n * @component @name StickyNote\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMjEgOWEyLjQgMi40IDAgMCAwLS43MDYtMS43MDZsLTMuNTg4LTMuNTg4QTIuNCAyLjQgMCAwIDAgMTUgM0g1YTIgMiAwIDAgMC0yIDJ2MTRhMiAyIDAgMCAwIDIgMmgxNGEyIDIgMCAwIDAgMi0yeiIgLz4KICA8cGF0aCBkPSJNMTUgM3Y1YTEgMSAwIDAgMCAxIDFoNSIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/sticky-note\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst StickyNote = createLucideIcon('sticky-note', __iconNode);\n\nexport default StickyNote;\n","import * as React from 'react';\n\nimport { cn } from '@/lib/utils';\n\nfunction Textarea({ className, ...props }: React.ComponentProps<'textarea'>) {\n return (\n <textarea\n data-slot=\"textarea\"\n className={cn(\n 'placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input field-sizing-content min-h-[80px] w-full rounded-md border bg-transparent px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm',\n 'focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]',\n 'aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive',\n className\n )}\n {...props}\n />\n );\n}\n\nexport { Textarea };\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z',\n key: '1oefj6',\n },\n ],\n ['path', { d: 'M14 2v5a1 1 0 0 0 1 1h5', key: 'wfsgrz' }],\n];\n\n/**\n * @component @name File\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNNiAyMmEyIDIgMCAwIDEtMi0yVjRhMiAyIDAgMCAxIDItMmg4YTIuNCAyLjQgMCAwIDEgMS43MDQuNzA2bDMuNTg4IDMuNTg4QTIuNCAyLjQgMCAwIDEgMjAgOHYxMmEyIDIgMCAwIDEtMiAyeiIgLz4KICA8cGF0aCBkPSJNMTQgMnY1YTEgMSAwIDAgMCAxIDFoNSIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/file\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst File = createLucideIcon('file', __iconNode);\n\nexport default File;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z',\n key: '1oefj6',\n },\n ],\n ['path', { d: 'M14 2v5a1 1 0 0 0 1 1h5', key: 'wfsgrz' }],\n ['path', { d: 'M10 9H8', key: 'b1mrlr' }],\n ['path', { d: 'M16 13H8', key: 't4e002' }],\n ['path', { d: 'M16 17H8', key: 'z1uh3a' }],\n];\n\n/**\n * @component @name FileText\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNNiAyMmEyIDIgMCAwIDEtMi0yVjRhMiAyIDAgMCAxIDItMmg4YTIuNCAyLjQgMCAwIDEgMS43MDQuNzA2bDMuNTg4IDMuNTg4QTIuNCAyLjQgMCAwIDEgMjAgOHYxMmEyIDIgMCAwIDEtMiAyeiIgLz4KICA8cGF0aCBkPSJNMTQgMnY1YTEgMSAwIDAgMCAxIDFoNSIgLz4KICA8cGF0aCBkPSJNMTAgOUg4IiAvPgogIDxwYXRoIGQ9Ik0xNiAxM0g4IiAvPgogIDxwYXRoIGQ9Ik0xNiAxN0g4IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/file-text\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst FileText = createLucideIcon('file-text', __iconNode);\n\nexport default FileText;\n","/* eslint-disable @next/next/no-img-element -- Local file preview requires raw <img>, not next/image */\n'use client';\n\nimport { X, Loader2Icon, DownloadIcon, StickyNoteIcon } from 'lucide-react';\nimport { cn } from '@/lib/utils';\nimport { Dialog, DialogTrigger, DialogContent, DialogTitle } from '@/components/ui/dialog';\nimport { Textarea } from '@/components/ui/textarea';\nimport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider } from '@/components/ui/tooltip';\nimport { VisuallyHidden } from 'radix-ui';\nimport {\n formatFileSize,\n getFileIcon,\n getFileIconColor,\n} from '@/components/common/attachment-card/attachment-card';\n\nexport interface AttachmentChipProps {\n name: string;\n size: number;\n mimeType: string;\n path: string;\n onRemove: () => void;\n loading?: boolean;\n disabled?: boolean;\n /** Optional notes attached to this image */\n notes?: string;\n /** Callback when user edits notes in the preview modal */\n onNotesChange?: (notes: string) => void;\n}\n\nconst IMAGE_EXTS = new Set(['.png', '.jpg', '.jpeg', '.gif', '.svg', '.webp', '.ico', '.bmp']);\n\nfunction isImage(name: string): boolean {\n const dot = name.lastIndexOf('.');\n return dot >= 0 && IMAGE_EXTS.has(name.slice(dot).toLowerCase());\n}\n\nfunction previewUrl(path: string, mimeType: string): string {\n const params = new URLSearchParams({ path, mimeType });\n return `/api/attachments/preview?${params.toString()}`;\n}\n\nfunction getExtension(filename: string): string {\n const dot = filename.lastIndexOf('.');\n return dot >= 0 ? filename.slice(dot).toLowerCase() : '';\n}\n\nexport function AttachmentChip({\n name,\n size,\n mimeType,\n path,\n onRemove,\n loading = false,\n disabled = false,\n notes,\n onNotesChange,\n}: AttachmentChipProps) {\n const ext = getExtension(name);\n const Icon = getFileIcon(ext);\n const iconColorClass = getFileIconColor(ext);\n const imageFile = isImage(name);\n\n if (loading) {\n return (\n <div className=\"flex h-12 w-12 items-center justify-center rounded-md border\">\n <Loader2Icon className=\"text-muted-foreground h-5 w-5 animate-spin\" />\n </div>\n );\n }\n\n if (imageFile) {\n const thumbnail = (\n <button type=\"button\" className=\"relative block cursor-pointer rounded-md\">\n <img\n src={previewUrl(path, mimeType)}\n alt={name}\n title={name}\n className=\"h-12 w-12 rounded-md border object-cover transition-opacity hover:opacity-80\"\n />\n {notes ? (\n <span className=\"ring-background absolute -right-1 -bottom-1 flex h-4 w-4 items-center justify-center rounded-full bg-amber-500 text-white shadow-sm ring-2\">\n <StickyNoteIcon className=\"h-2.5 w-2.5\" />\n </span>\n ) : null}\n </button>\n );\n\n return (\n <TooltipProvider delayDuration={200}>\n <Dialog>\n <Tooltip>\n <div className=\"group relative\">\n <TooltipTrigger asChild>\n <DialogTrigger asChild>{thumbnail}</DialogTrigger>\n </TooltipTrigger>\n {!disabled && (\n <button\n type=\"button\"\n onClick={onRemove}\n className=\"absolute -top-1.5 -right-1.5 hidden h-5 w-5 cursor-pointer items-center justify-center rounded-full bg-black/70 text-white group-hover:flex\"\n aria-label={`Remove ${name}`}\n >\n <X className=\"h-3 w-3\" />\n </button>\n )}\n </div>\n {notes ? (\n <TooltipContent\n side=\"bottom\"\n className=\"max-w-[220px] border border-amber-200 bg-amber-50 text-amber-950 dark:border-amber-800 dark:bg-amber-950 dark:text-amber-100\"\n >\n <p className=\"line-clamp-3 text-xs leading-snug\">{notes}</p>\n </TooltipContent>\n ) : null}\n </Tooltip>\n <DialogContent className=\"max-w-3xl gap-0 overflow-hidden border-0 p-0 [&>button:last-child]:!cursor-pointer [&>button:last-child]:!rounded-full [&>button:last-child]:!bg-black/70 [&>button:last-child]:!p-1.5 [&>button:last-child]:!text-white [&>button:last-child]:!opacity-100 [&>button:last-child]:!shadow-lg [&>button:last-child]:!backdrop-blur-md [&>button:last-child]:hover:!bg-black/90\">\n <VisuallyHidden.Root>\n <DialogTitle>Preview: {name}</DialogTitle>\n </VisuallyHidden.Root>\n <div className=\"relative bg-black/90\">\n <img\n src={previewUrl(path, mimeType)}\n alt={name}\n className=\"h-auto max-h-[70vh] w-full object-contain\"\n />\n </div>\n <div className=\"bg-background flex flex-col gap-2 px-4 py-3\">\n <div className=\"flex items-center gap-3\">\n <div className=\"flex min-w-0 flex-1 flex-col\">\n <span className=\"truncate text-sm font-medium\">{name}</span>\n <span className=\"text-muted-foreground text-xs\">{formatFileSize(size)}</span>\n </div>\n <a\n href={previewUrl(path, mimeType)}\n download={name}\n className=\"text-muted-foreground hover:text-foreground shrink-0 cursor-pointer rounded p-1.5 transition-colors\"\n aria-label={`Download ${name}`}\n >\n <DownloadIcon className=\"h-4 w-4\" />\n </a>\n </div>\n {onNotesChange ? (\n <Textarea\n placeholder=\"Add notes about this image…\"\n value={notes ?? ''}\n onChange={(e) => onNotesChange(e.target.value)}\n rows={2}\n className=\"resize-none text-sm\"\n aria-label=\"Image notes\"\n />\n ) : notes ? (\n <p className=\"text-muted-foreground text-sm\">{notes}</p>\n ) : null}\n </div>\n </DialogContent>\n </Dialog>\n </TooltipProvider>\n );\n }\n\n return (\n <div className=\"group relative flex items-center gap-2 rounded-full border py-1 ps-2 pe-3\">\n <div\n className={cn(\n 'flex h-6 w-6 shrink-0 items-center justify-center rounded-full',\n iconColorClass\n )}\n >\n <Icon className=\"h-3 w-3\" />\n </div>\n <span className=\"max-w-[120px] truncate text-sm\">{name}</span>\n <span className=\"text-muted-foreground text-xs\">{formatFileSize(size)}</span>\n {!disabled && (\n <button\n type=\"button\"\n onClick={onRemove}\n className=\"absolute -top-1.5 -right-1.5 hidden h-5 w-5 cursor-pointer items-center justify-center rounded-full bg-black/70 text-white group-hover:flex\"\n aria-label={`Remove ${name}`}\n >\n <X className=\"h-3 w-3\" />\n </button>\n )}\n </div>\n );\n}\n","import type { LucideIcon } from 'lucide-react';\nimport { FileIcon, FileTextIcon, ImageIcon, CodeIcon, Trash2Icon, Loader2Icon } from 'lucide-react';\nimport { cn } from '@/lib/utils';\nimport { Button } from '@/components/ui/button';\n\nexport interface AttachmentCardProps {\n name: string;\n size: number;\n mimeType: string;\n onRemove: () => void;\n loading?: boolean;\n disabled?: boolean;\n /** Optional secondary text shown below the filename (e.g. file path). */\n subtitle?: string;\n}\n\nexport function AttachmentCard({\n name,\n size,\n mimeType: _mimeType,\n onRemove,\n loading = false,\n disabled = false,\n subtitle,\n}: AttachmentCardProps) {\n const ext = getExtension(name);\n const Icon = getFileIcon(ext);\n const iconColorClass = getFileIconColor(ext);\n\n return (\n <div className=\"flex items-center gap-3 rounded-md border p-2\">\n <div\n className={cn('flex h-8 w-8 shrink-0 items-center justify-center rounded', iconColorClass)}\n >\n <Icon className=\"h-4 w-4\" />\n </div>\n <div className=\"flex min-w-0 flex-1 flex-col\">\n <span className=\"truncate text-sm font-medium\">{name}</span>\n {subtitle ? (\n <span className=\"text-muted-foreground truncate text-xs\">{subtitle}</span>\n ) : null}\n <span className=\"text-muted-foreground text-xs\">\n {loading ? 'Uploading...' : formatFileSize(size)}\n </span>\n </div>\n {loading ? (\n <Loader2Icon className=\"text-muted-foreground h-4 w-4 animate-spin\" />\n ) : (\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"icon-xs\"\n onClick={onRemove}\n disabled={disabled}\n aria-label={`Remove ${name}`}\n >\n <Trash2Icon className=\"h-3 w-3\" />\n </Button>\n )}\n </div>\n );\n}\n\nfunction getExtension(filename: string): string {\n const dot = filename.lastIndexOf('.');\n return dot >= 0 ? filename.slice(dot).toLowerCase() : '';\n}\n\nconst IMAGE_EXTS = new Set(['.png', '.jpg', '.jpeg', '.gif', '.svg', '.webp', '.ico', '.bmp']);\nconst CODE_EXTS = new Set([\n '.ts',\n '.tsx',\n '.js',\n '.jsx',\n '.json',\n '.yaml',\n '.yml',\n '.xml',\n '.html',\n '.css',\n '.md',\n]);\n\nexport function getFileIcon(ext: string): LucideIcon {\n if (IMAGE_EXTS.has(ext)) return ImageIcon;\n if (ext === '.pdf') return FileTextIcon;\n if (CODE_EXTS.has(ext)) return CodeIcon;\n return FileIcon;\n}\n\nexport function getFileIconColor(ext: string): string {\n if (ext === '.pdf') return 'bg-red-50 text-red-600';\n if (IMAGE_EXTS.has(ext)) return 'bg-blue-50 text-blue-600';\n if (CODE_EXTS.has(ext)) return 'bg-emerald-50 text-emerald-600';\n return 'bg-gray-50 text-gray-600';\n}\n\nexport function formatFileSize(bytes: number): string {\n if (bytes === 0) return '0 B';\n const units = ['B', 'KB', 'MB', 'GB'];\n const i = Math.floor(Math.log(bytes) / Math.log(1024));\n return `${(bytes / Math.pow(1024, i)).toFixed(i === 0 ? 0 : 1)} ${units[i]}`;\n}\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['rect', { width: '18', height: '18', x: '3', y: '3', rx: '2', ry: '2', key: '1m3agn' }],\n ['circle', { cx: '9', cy: '9', r: '2', key: 'af1f0g' }],\n ['path', { d: 'm21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21', key: '1xmnt7' }],\n];\n\n/**\n * @component @name Image\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cmVjdCB3aWR0aD0iMTgiIGhlaWdodD0iMTgiIHg9IjMiIHk9IjMiIHJ4PSIyIiByeT0iMiIgLz4KICA8Y2lyY2xlIGN4PSI5IiBjeT0iOSIgcj0iMiIgLz4KICA8cGF0aCBkPSJtMjEgMTUtMy4wODYtMy4wODZhMiAyIDAgMCAwLTIuODI4IDBMNiAyMSIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/image\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Image = createLucideIcon('image', __iconNode);\n\nexport default Image;\n","'use client';\n\nimport * as React from 'react';\nimport { Check, ChevronLeft, ChevronRight } from 'lucide-react';\nimport { getAllAgentModels } from '@/app/actions/get-all-agent-models';\nimport type { AgentModelGroup } from '@/app/actions/get-all-agent-models';\nimport { updateAgentAndModel } from '@/app/actions/update-agent-and-model';\nimport { getAgentTypeIcon } from '@/components/common/feature-node/agent-type-icons';\nimport { getModelMeta } from '@/lib/model-metadata';\nimport { Button } from '@/components/ui/button';\nimport { Popover, PopoverContent, PopoverTrigger } from '@/components/ui/popover';\nimport { cn } from '@/lib/utils';\n\nexport interface AgentModelPickerProps {\n initialAgentType: string;\n initialModel: string;\n agentType?: string;\n model?: string;\n onAgentModelChange?: (agentType: string, model: string) => void;\n onSave?: (agentType: string, model: string) => Promise<AgentModelPickerSaveResult | void>;\n saveError?: string | null;\n saving?: boolean;\n disabled?: boolean;\n className?: string;\n /** 'settings' persists to DB; 'override' only calls onAgentModelChange */\n mode: 'settings' | 'override';\n}\n\nexport interface AgentModelPickerSaveResult {\n ok: boolean;\n error?: string;\n}\n\nexport function AgentModelPicker({\n initialAgentType,\n initialModel,\n agentType: controlledAgentType,\n model: controlledModel,\n onAgentModelChange,\n onSave,\n saveError,\n saving,\n disabled,\n className,\n mode,\n}: AgentModelPickerProps) {\n const [open, setOpen] = React.useState(false);\n const [groups, setGroups] = React.useState<AgentModelGroup[]>([]);\n const [loading, setLoading] = React.useState(true);\n const [agentType, setAgentType] = React.useState(controlledAgentType ?? initialAgentType);\n const [model, setModel] = React.useState(controlledModel ?? initialModel);\n const [internalSaving, setInternalSaving] = React.useState(false);\n const [internalError, setInternalError] = React.useState<string | null>(null);\n\n // 0 = agent list visible, 1 = model list visible\n const [level, setLevel] = React.useState(0);\n // Which agent's models to show (kept separate from level for animation)\n const [drillAgent, setDrillAgent] = React.useState<string | null>(null);\n\n React.useEffect(() => {\n getAllAgentModels()\n .then(setGroups)\n .finally(() => setLoading(false));\n }, []);\n\n React.useEffect(() => {\n setAgentType(controlledAgentType ?? initialAgentType);\n }, [controlledAgentType, initialAgentType]);\n\n React.useEffect(() => {\n setModel(controlledModel ?? initialModel);\n }, [controlledModel, initialModel]);\n\n // Reset drill-down when popover transitions from open → closed (not on initial mount)\n const prevOpenRef = React.useRef(open);\n React.useEffect(() => {\n const wasOpen = prevOpenRef.current;\n prevOpenRef.current = open;\n if (wasOpen && !open) {\n const t = setTimeout(() => {\n setLevel(0);\n setDrillAgent(null);\n }, 150);\n return () => clearTimeout(t);\n }\n }, [open]);\n\n const drillInto = (agent: string) => {\n setDrillAgent(agent);\n requestAnimationFrame(() => {\n requestAnimationFrame(() => setLevel(1));\n });\n };\n\n const drillBack = () => {\n setLevel(0);\n setTimeout(() => setDrillAgent(null), 220);\n };\n\n const handleSelect = async (newAgentType: string, newModel: string) => {\n setOpen(false);\n\n if (newAgentType === agentType && newModel === model) return;\n\n setInternalError(null);\n\n if (mode === 'override') {\n setAgentType(newAgentType);\n setModel(newModel);\n onAgentModelChange?.(newAgentType, newModel);\n return;\n }\n\n const persistSelection =\n onSave ??\n (async (nextAgentType: string, nextModel: string) =>\n updateAgentAndModel(nextAgentType, nextModel || null));\n\n setInternalSaving(true);\n try {\n const result = await persistSelection(newAgentType, newModel);\n if (result && 'ok' in result && !result.ok) {\n setInternalError(result.error ?? 'Failed to save');\n return;\n }\n setAgentType(newAgentType);\n setModel(newModel);\n onAgentModelChange?.(newAgentType, newModel);\n } catch {\n setInternalError('Failed to save');\n } finally {\n setInternalSaving(false);\n }\n };\n\n const isDisabled = (disabled ?? false) || loading || (saving ?? false) || internalSaving;\n const error = saveError ?? internalError;\n\n const AgentIcon = getAgentTypeIcon(agentType);\n const agentLabel = groups.find((g) => g.agentType === agentType)?.label ?? agentType;\n const modelName = model ? getModelMeta(model).displayName || model : null;\n\n const activeGroup = drillAgent ? groups.find((g) => g.agentType === drillAgent) : null;\n\n return (\n <div className={cn('flex flex-col gap-1', className)}>\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n type=\"button\"\n variant=\"outline\"\n role=\"combobox\"\n aria-expanded={open}\n disabled={isDisabled}\n className=\"w-auto cursor-pointer justify-start font-normal hover:border-violet-300 hover:bg-violet-50/50 dark:hover:border-violet-700 dark:hover:bg-violet-950/30\"\n >\n <span className=\"flex items-center gap-2 truncate\">\n <AgentIcon className=\"h-4 w-4 shrink-0\" />\n {loading ? (\n 'Loading…'\n ) : (\n <span className=\"flex items-center gap-1\">\n <span className=\"text-muted-foreground text-xs\">{agentLabel}</span>\n {modelName ? (\n <>\n <span className=\"text-muted-foreground/50 text-xs\">·</span>\n <span className=\"text-xs font-medium\">{modelName}</span>\n </>\n ) : null}\n </span>\n )}\n </span>\n </Button>\n </PopoverTrigger>\n <PopoverContent\n className=\"z-[70] w-(--radix-popover-trigger-width) overflow-hidden p-0\"\n align=\"start\"\n >\n {/* Sliding container — both panels side by side, translateX controlled by level */}\n <div\n className=\"flex transition-transform duration-200 ease-in-out\"\n style={{ transform: `translateX(${level === 1 ? '-50%' : '0%'})`, width: '200%' }}\n >\n {/* ── Level 1: Agent list ── */}\n <div className=\"w-1/2 shrink-0\">\n <div className=\"text-muted-foreground border-b px-3 py-2 text-xs font-medium\">\n Select agent\n </div>\n {groups.map((group) => {\n const GroupIcon = getAgentTypeIcon(group.agentType);\n const isActive = agentType === group.agentType;\n const hasModels = group.models.length > 0;\n\n return (\n <button\n key={group.agentType}\n type=\"button\"\n className={cn(\n 'flex w-full cursor-pointer items-center gap-2.5 px-3 py-2 text-xs transition-colors',\n 'hover:bg-accent hover:text-accent-foreground',\n isActive && 'bg-accent/50'\n )}\n onClick={() => {\n if (hasModels) {\n drillInto(group.agentType);\n } else {\n handleSelect(group.agentType, '');\n }\n }}\n >\n <GroupIcon className=\"h-4 w-4 shrink-0\" />\n <span className=\"flex-1 text-start\">{group.label}</span>\n {isActive && !hasModels ? (\n <Check className=\"text-primary h-3.5 w-3.5 shrink-0\" />\n ) : null}\n {hasModels ? (\n <ChevronRight className=\"text-muted-foreground h-3.5 w-3.5 shrink-0\" />\n ) : null}\n </button>\n );\n })}\n </div>\n\n {/* ── Level 2: Model list for selected agent ── */}\n <div className=\"w-1/2 shrink-0\">\n {activeGroup ? (\n <>\n {/* Back header */}\n <button\n type=\"button\"\n className=\"text-muted-foreground hover:text-foreground flex w-full cursor-pointer items-center gap-1.5 border-b px-3 py-2 text-xs font-medium transition-colors\"\n onClick={drillBack}\n >\n <ChevronLeft className=\"h-3.5 w-3.5\" />\n {activeGroup.label}\n </button>\n\n {/* Model items */}\n {activeGroup.models.map((m) => {\n const isSelected = agentType === activeGroup.agentType && model === m.id;\n return (\n <button\n key={m.id}\n type=\"button\"\n className={cn(\n 'flex w-full cursor-pointer items-center gap-3 px-3 py-2 text-start transition-colors',\n 'hover:bg-accent hover:text-accent-foreground',\n isSelected && 'bg-accent/50'\n )}\n onClick={() => handleSelect(activeGroup.agentType, m.id)}\n >\n <div className=\"flex min-w-0 flex-1 flex-col\">\n <span className=\"text-xs font-medium\">{m.displayName}</span>\n <span className=\"text-muted-foreground text-xs\">{m.description}</span>\n </div>\n {isSelected ? (\n <Check className=\"text-primary h-3.5 w-3.5 shrink-0\" />\n ) : null}\n </button>\n );\n })}\n </>\n ) : null}\n </div>\n </div>\n </PopoverContent>\n </Popover>\n {Boolean(error) && <p className=\"text-destructive text-sm\">{error}</p>}\n </div>\n );\n}\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'm16 18 6-6-6-6', key: 'eg8j8' }],\n ['path', { d: 'm8 6-6 6 6 6', key: 'ppft3o' }],\n];\n\n/**\n * @component @name Code\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJtMTYgMTggNi02LTYtNiIgLz4KICA8cGF0aCBkPSJtOCA2LTYgNiA2IDYiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/code\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Code = createLucideIcon('code', __iconNode);\n\nexport default Code;\n","import type { FlightRouterState, Segment } from './app-router-types'\n\nexport function getSegmentValue(segment: Segment) {\n return Array.isArray(segment) ? segment[1] : segment\n}\n\nexport function isGroupSegment(segment: string) {\n // Use array[0] for performant purpose\n return segment[0] === '(' && segment.endsWith(')')\n}\n\nexport function isParallelRouteSegment(segment: string) {\n return segment.startsWith('@') && segment !== '@children'\n}\n\nexport function addSearchParamsIfPageSegment(\n segment: Segment,\n searchParams: Record<string, string | string[] | undefined>\n) {\n const isPageSegment = segment.includes(PAGE_SEGMENT_KEY)\n\n if (isPageSegment) {\n const stringifiedQuery = JSON.stringify(searchParams)\n return stringifiedQuery !== '{}'\n ? PAGE_SEGMENT_KEY + '?' + stringifiedQuery\n : PAGE_SEGMENT_KEY\n }\n\n return segment\n}\n\nexport function computeSelectedLayoutSegment(\n segments: string[] | null,\n parallelRouteKey: string\n): string | null {\n if (!segments || segments.length === 0) {\n return null\n }\n\n // For 'children', use first segment; for other parallel routes, use last segment\n const rawSegment =\n parallelRouteKey === 'children'\n ? segments[0]\n : segments[segments.length - 1]\n\n // If the default slot is showing, return null since it's not technically \"selected\" (it's a fallback)\n // Returning an internal value like `__DEFAULT__` would be confusing\n return rawSegment === DEFAULT_SEGMENT_KEY ? null : rawSegment\n}\n\n/** Get the canonical parameters from the current level to the leaf node. */\nexport function getSelectedLayoutSegmentPath(\n tree: FlightRouterState,\n parallelRouteKey: string,\n first = true,\n segmentPath: string[] = []\n): string[] {\n let node: FlightRouterState\n if (first) {\n // Use the provided parallel route key on the first parallel route\n node = tree[1][parallelRouteKey]\n } else {\n // After first parallel route prefer children, if there's no children pick the first parallel route.\n const parallelRoutes = tree[1]\n node = parallelRoutes.children ?? Object.values(parallelRoutes)[0]\n }\n\n if (!node) return segmentPath\n const segment = node[0]\n\n let segmentValue = getSegmentValue(segment)\n\n if (!segmentValue || segmentValue.startsWith(PAGE_SEGMENT_KEY)) {\n return segmentPath\n }\n\n segmentPath.push(segmentValue)\n\n return getSelectedLayoutSegmentPath(\n node,\n parallelRouteKey,\n false,\n segmentPath\n )\n}\n\nexport const PAGE_SEGMENT_KEY = '__PAGE__'\nexport const DEFAULT_SEGMENT_KEY = '__DEFAULT__'\nexport const NOT_FOUND_SEGMENT_KEY = '/_not-found'\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M18 6 6 18', key: '1bl5f8' }],\n ['path', { d: 'm6 6 12 12', key: 'd8bk6v' }],\n];\n\n/**\n * @component @name X\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTggNiA2IDE4IiAvPgogIDxwYXRoIGQ9Im02IDYgMTIgMTIiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/x\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst X = createLucideIcon('x', __iconNode);\n\nexport default X;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [['path', { d: 'M20 6 9 17l-5-5', key: '1gmf2c' }]];\n\n/**\n * @component @name Check\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMjAgNiA5IDE3bC01LTUiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/check\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Check = createLucideIcon('check', __iconNode);\n\nexport default Check;\n","\"use client\";\n\n// src/popover.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { DismissableLayer } from \"@radix-ui/react-dismissable-layer\";\nimport { useFocusGuards } from \"@radix-ui/react-focus-guards\";\nimport { FocusScope } from \"@radix-ui/react-focus-scope\";\nimport { useId } from \"@radix-ui/react-id\";\nimport * as PopperPrimitive from \"@radix-ui/react-popper\";\nimport { createPopperScope } from \"@radix-ui/react-popper\";\nimport { Portal as PortalPrimitive } from \"@radix-ui/react-portal\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { hideOthers } from \"aria-hidden\";\nimport { RemoveScroll } from \"react-remove-scroll\";\nimport { jsx } from \"react/jsx-runtime\";\nvar POPOVER_NAME = \"Popover\";\nvar [createPopoverContext, createPopoverScope] = createContextScope(POPOVER_NAME, [\n createPopperScope\n]);\nvar usePopperScope = createPopperScope();\nvar [PopoverProvider, usePopoverContext] = createPopoverContext(POPOVER_NAME);\nvar Popover = (props) => {\n const {\n __scopePopover,\n children,\n open: openProp,\n defaultOpen,\n onOpenChange,\n modal = false\n } = props;\n const popperScope = usePopperScope(__scopePopover);\n const triggerRef = React.useRef(null);\n const [hasCustomAnchor, setHasCustomAnchor] = React.useState(false);\n const [open, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen ?? false,\n onChange: onOpenChange,\n caller: POPOVER_NAME\n });\n return /* @__PURE__ */ jsx(PopperPrimitive.Root, { ...popperScope, children: /* @__PURE__ */ jsx(\n PopoverProvider,\n {\n scope: __scopePopover,\n contentId: useId(),\n triggerRef,\n open,\n onOpenChange: setOpen,\n onOpenToggle: React.useCallback(() => setOpen((prevOpen) => !prevOpen), [setOpen]),\n hasCustomAnchor,\n onCustomAnchorAdd: React.useCallback(() => setHasCustomAnchor(true), []),\n onCustomAnchorRemove: React.useCallback(() => setHasCustomAnchor(false), []),\n modal,\n children\n }\n ) });\n};\nPopover.displayName = POPOVER_NAME;\nvar ANCHOR_NAME = \"PopoverAnchor\";\nvar PopoverAnchor = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopePopover, ...anchorProps } = props;\n const context = usePopoverContext(ANCHOR_NAME, __scopePopover);\n const popperScope = usePopperScope(__scopePopover);\n const { onCustomAnchorAdd, onCustomAnchorRemove } = context;\n React.useEffect(() => {\n onCustomAnchorAdd();\n return () => onCustomAnchorRemove();\n }, [onCustomAnchorAdd, onCustomAnchorRemove]);\n return /* @__PURE__ */ jsx(PopperPrimitive.Anchor, { ...popperScope, ...anchorProps, ref: forwardedRef });\n }\n);\nPopoverAnchor.displayName = ANCHOR_NAME;\nvar TRIGGER_NAME = \"PopoverTrigger\";\nvar PopoverTrigger = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopePopover, ...triggerProps } = props;\n const context = usePopoverContext(TRIGGER_NAME, __scopePopover);\n const popperScope = usePopperScope(__scopePopover);\n const composedTriggerRef = useComposedRefs(forwardedRef, context.triggerRef);\n const trigger = /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n \"aria-haspopup\": \"dialog\",\n \"aria-expanded\": context.open,\n \"aria-controls\": context.contentId,\n \"data-state\": getState(context.open),\n ...triggerProps,\n ref: composedTriggerRef,\n onClick: composeEventHandlers(props.onClick, context.onOpenToggle)\n }\n );\n return context.hasCustomAnchor ? trigger : /* @__PURE__ */ jsx(PopperPrimitive.Anchor, { asChild: true, ...popperScope, children: trigger });\n }\n);\nPopoverTrigger.displayName = TRIGGER_NAME;\nvar PORTAL_NAME = \"PopoverPortal\";\nvar [PortalProvider, usePortalContext] = createPopoverContext(PORTAL_NAME, {\n forceMount: void 0\n});\nvar PopoverPortal = (props) => {\n const { __scopePopover, forceMount, children, container } = props;\n const context = usePopoverContext(PORTAL_NAME, __scopePopover);\n return /* @__PURE__ */ jsx(PortalProvider, { scope: __scopePopover, forceMount, children: /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(PortalPrimitive, { asChild: true, container, children }) }) });\n};\nPopoverPortal.displayName = PORTAL_NAME;\nvar CONTENT_NAME = \"PopoverContent\";\nvar PopoverContent = React.forwardRef(\n (props, forwardedRef) => {\n const portalContext = usePortalContext(CONTENT_NAME, props.__scopePopover);\n const { forceMount = portalContext.forceMount, ...contentProps } = props;\n const context = usePopoverContext(CONTENT_NAME, props.__scopePopover);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: context.modal ? /* @__PURE__ */ jsx(PopoverContentModal, { ...contentProps, ref: forwardedRef }) : /* @__PURE__ */ jsx(PopoverContentNonModal, { ...contentProps, ref: forwardedRef }) });\n }\n);\nPopoverContent.displayName = CONTENT_NAME;\nvar Slot = createSlot(\"PopoverContent.RemoveScroll\");\nvar PopoverContentModal = React.forwardRef(\n (props, forwardedRef) => {\n const context = usePopoverContext(CONTENT_NAME, props.__scopePopover);\n const contentRef = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, contentRef);\n const isRightClickOutsideRef = React.useRef(false);\n React.useEffect(() => {\n const content = contentRef.current;\n if (content) return hideOthers(content);\n }, []);\n return /* @__PURE__ */ jsx(RemoveScroll, { as: Slot, allowPinchZoom: true, children: /* @__PURE__ */ jsx(\n PopoverContentImpl,\n {\n ...props,\n ref: composedRefs,\n trapFocus: context.open,\n disableOutsidePointerEvents: true,\n onCloseAutoFocus: composeEventHandlers(props.onCloseAutoFocus, (event) => {\n event.preventDefault();\n if (!isRightClickOutsideRef.current) context.triggerRef.current?.focus();\n }),\n onPointerDownOutside: composeEventHandlers(\n props.onPointerDownOutside,\n (event) => {\n const originalEvent = event.detail.originalEvent;\n const ctrlLeftClick = originalEvent.button === 0 && originalEvent.ctrlKey === true;\n const isRightClick = originalEvent.button === 2 || ctrlLeftClick;\n isRightClickOutsideRef.current = isRightClick;\n },\n { checkForDefaultPrevented: false }\n ),\n onFocusOutside: composeEventHandlers(\n props.onFocusOutside,\n (event) => event.preventDefault(),\n { checkForDefaultPrevented: false }\n )\n }\n ) });\n }\n);\nvar PopoverContentNonModal = React.forwardRef(\n (props, forwardedRef) => {\n const context = usePopoverContext(CONTENT_NAME, props.__scopePopover);\n const hasInteractedOutsideRef = React.useRef(false);\n const hasPointerDownOutsideRef = React.useRef(false);\n return /* @__PURE__ */ jsx(\n PopoverContentImpl,\n {\n ...props,\n ref: forwardedRef,\n trapFocus: false,\n disableOutsidePointerEvents: false,\n onCloseAutoFocus: (event) => {\n props.onCloseAutoFocus?.(event);\n if (!event.defaultPrevented) {\n if (!hasInteractedOutsideRef.current) context.triggerRef.current?.focus();\n event.preventDefault();\n }\n hasInteractedOutsideRef.current = false;\n hasPointerDownOutsideRef.current = false;\n },\n onInteractOutside: (event) => {\n props.onInteractOutside?.(event);\n if (!event.defaultPrevented) {\n hasInteractedOutsideRef.current = true;\n if (event.detail.originalEvent.type === \"pointerdown\") {\n hasPointerDownOutsideRef.current = true;\n }\n }\n const target = event.target;\n const targetIsTrigger = context.triggerRef.current?.contains(target);\n if (targetIsTrigger) event.preventDefault();\n if (event.detail.originalEvent.type === \"focusin\" && hasPointerDownOutsideRef.current) {\n event.preventDefault();\n }\n }\n }\n );\n }\n);\nvar PopoverContentImpl = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopePopover,\n trapFocus,\n onOpenAutoFocus,\n onCloseAutoFocus,\n disableOutsidePointerEvents,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside,\n onInteractOutside,\n ...contentProps\n } = props;\n const context = usePopoverContext(CONTENT_NAME, __scopePopover);\n const popperScope = usePopperScope(__scopePopover);\n useFocusGuards();\n return /* @__PURE__ */ jsx(\n FocusScope,\n {\n asChild: true,\n loop: true,\n trapped: trapFocus,\n onMountAutoFocus: onOpenAutoFocus,\n onUnmountAutoFocus: onCloseAutoFocus,\n children: /* @__PURE__ */ jsx(\n DismissableLayer,\n {\n asChild: true,\n disableOutsidePointerEvents,\n onInteractOutside,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside,\n onDismiss: () => context.onOpenChange(false),\n children: /* @__PURE__ */ jsx(\n PopperPrimitive.Content,\n {\n \"data-state\": getState(context.open),\n role: \"dialog\",\n id: context.contentId,\n ...popperScope,\n ...contentProps,\n ref: forwardedRef,\n style: {\n ...contentProps.style,\n // re-namespace exposed content custom properties\n ...{\n \"--radix-popover-content-transform-origin\": \"var(--radix-popper-transform-origin)\",\n \"--radix-popover-content-available-width\": \"var(--radix-popper-available-width)\",\n \"--radix-popover-content-available-height\": \"var(--radix-popper-available-height)\",\n \"--radix-popover-trigger-width\": \"var(--radix-popper-anchor-width)\",\n \"--radix-popover-trigger-height\": \"var(--radix-popper-anchor-height)\"\n }\n }\n }\n )\n }\n )\n }\n );\n }\n);\nvar CLOSE_NAME = \"PopoverClose\";\nvar PopoverClose = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopePopover, ...closeProps } = props;\n const context = usePopoverContext(CLOSE_NAME, __scopePopover);\n return /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n ...closeProps,\n ref: forwardedRef,\n onClick: composeEventHandlers(props.onClick, () => context.onOpenChange(false))\n }\n );\n }\n);\nPopoverClose.displayName = CLOSE_NAME;\nvar ARROW_NAME = \"PopoverArrow\";\nvar PopoverArrow = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopePopover, ...arrowProps } = props;\n const popperScope = usePopperScope(__scopePopover);\n return /* @__PURE__ */ jsx(PopperPrimitive.Arrow, { ...popperScope, ...arrowProps, ref: forwardedRef });\n }\n);\nPopoverArrow.displayName = ARROW_NAME;\nfunction getState(open) {\n return open ? \"open\" : \"closed\";\n}\nvar Root2 = Popover;\nvar Anchor2 = PopoverAnchor;\nvar Trigger = PopoverTrigger;\nvar Portal = PopoverPortal;\nvar Content2 = PopoverContent;\nvar Close = PopoverClose;\nvar Arrow2 = PopoverArrow;\nexport {\n Anchor2 as Anchor,\n Arrow2 as Arrow,\n Close,\n Content2 as Content,\n Popover,\n PopoverAnchor,\n PopoverArrow,\n PopoverClose,\n PopoverContent,\n PopoverPortal,\n PopoverTrigger,\n Portal,\n Root2 as Root,\n Trigger,\n createPopoverScope\n};\n//# sourceMappingURL=index.mjs.map\n","'use client';\n\nimport * as React from 'react';\nimport { Popover as PopoverPrimitive } from 'radix-ui';\n\nimport { cn } from '@/lib/utils';\n\nconst Popover = PopoverPrimitive.Root;\n\nconst PopoverTrigger = PopoverPrimitive.Trigger;\n\nconst PopoverAnchor = PopoverPrimitive.Anchor;\n\nconst PopoverContent = React.forwardRef<\n React.ComponentRef<typeof PopoverPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Content>\n>(({ className, align = 'center', sideOffset = 4, ...props }, ref) => (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n ref={ref}\n align={align}\n sideOffset={sideOffset}\n className={cn(\n 'bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-72 rounded-md border p-4 shadow-md outline-none',\n className\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n));\nPopoverContent.displayName = PopoverPrimitive.Content.displayName;\n\nexport { Popover, PopoverTrigger, PopoverContent, PopoverAnchor };\n"],"names":["DEFAULT_SEGMENT_KEY","NOT_FOUND_SEGMENT_KEY","PAGE_SEGMENT_KEY","addSearchParamsIfPageSegment","computeSelectedLayoutSegment","getSegmentValue","getSelectedLayoutSegmentPath","isGroupSegment","isParallelRouteSegment","segment","Array","isArray","endsWith","startsWith","searchParams","isPageSegment","includes","stringifiedQuery","JSON","stringify","segments","parallelRouteKey","length","rawSegment","tree","first","segmentPath","node","parallelRoutes","children","Object","values","segmentValue","push"],"mappings":"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","ignoreList":[1,3,7,10,11,12,13]}