@shepai/cli 1.178.1 → 1.179.1

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 (323) hide show
  1. package/README.md +2 -0
  2. package/dist/packages/core/src/application/ports/output/services/deployment-service.interface.d.ts +17 -0
  3. package/dist/packages/core/src/application/ports/output/services/deployment-service.interface.d.ts.map +1 -1
  4. package/dist/packages/core/src/application/ports/output/services/file-system-service.interface.d.ts +7 -0
  5. package/dist/packages/core/src/application/ports/output/services/file-system-service.interface.d.ts.map +1 -1
  6. package/dist/packages/core/src/application/ports/output/services/shep-instance-service.interface.d.ts +22 -0
  7. package/dist/packages/core/src/application/ports/output/services/shep-instance-service.interface.d.ts.map +1 -0
  8. package/dist/packages/core/src/application/ports/output/services/shep-instance-service.interface.js +11 -0
  9. package/dist/packages/core/src/application/use-cases/deployments/get-deployment-status.use-case.d.ts +13 -0
  10. package/dist/packages/core/src/application/use-cases/deployments/get-deployment-status.use-case.d.ts.map +1 -0
  11. package/dist/packages/core/src/application/use-cases/deployments/get-deployment-status.use-case.js +37 -0
  12. package/dist/packages/core/src/application/use-cases/deployments/list-deployments.use-case.d.ts +14 -0
  13. package/dist/packages/core/src/application/use-cases/deployments/list-deployments.use-case.d.ts.map +1 -0
  14. package/dist/packages/core/src/application/use-cases/deployments/list-deployments.use-case.js +35 -0
  15. package/dist/packages/core/src/application/use-cases/deployments/start-feature-deployment.use-case.d.ts +27 -0
  16. package/dist/packages/core/src/application/use-cases/deployments/start-feature-deployment.use-case.d.ts.map +1 -0
  17. package/dist/packages/core/src/application/use-cases/deployments/start-feature-deployment.use-case.js +68 -0
  18. package/dist/packages/core/src/application/use-cases/deployments/start-repository-deployment.use-case.d.ts +23 -0
  19. package/dist/packages/core/src/application/use-cases/deployments/start-repository-deployment.use-case.d.ts.map +1 -0
  20. package/dist/packages/core/src/application/use-cases/deployments/start-repository-deployment.use-case.js +58 -0
  21. package/dist/packages/core/src/application/use-cases/deployments/stop-deployment.use-case.d.ts +13 -0
  22. package/dist/packages/core/src/application/use-cases/deployments/stop-deployment.use-case.d.ts.map +1 -0
  23. package/dist/packages/core/src/application/use-cases/deployments/stop-deployment.use-case.js +37 -0
  24. package/dist/packages/core/src/infrastructure/di/container.d.ts.map +1 -1
  25. package/dist/packages/core/src/infrastructure/di/container.js +29 -0
  26. package/dist/packages/core/src/infrastructure/services/deployment/deployment.service.d.ts +9 -1
  27. package/dist/packages/core/src/infrastructure/services/deployment/deployment.service.d.ts.map +1 -1
  28. package/dist/packages/core/src/infrastructure/services/deployment/deployment.service.js +66 -0
  29. package/dist/packages/core/src/infrastructure/services/file-system.service.d.ts +1 -0
  30. package/dist/packages/core/src/infrastructure/services/file-system.service.d.ts.map +1 -1
  31. package/dist/packages/core/src/infrastructure/services/file-system.service.js +4 -0
  32. package/dist/packages/core/src/infrastructure/services/git/pr-branding.d.ts +1 -1
  33. package/dist/packages/core/src/infrastructure/services/git/pr-branding.d.ts.map +1 -1
  34. package/dist/packages/core/src/infrastructure/services/git/pr-branding.js +1 -1
  35. package/dist/packages/core/src/infrastructure/services/shep-instance.service.d.ts +16 -0
  36. package/dist/packages/core/src/infrastructure/services/shep-instance.service.d.ts.map +1 -0
  37. package/dist/packages/core/src/infrastructure/services/shep-instance.service.js +39 -0
  38. package/dist/src/presentation/web/app/(dashboard)/get-graph-data.d.ts +2 -0
  39. package/dist/src/presentation/web/app/(dashboard)/get-graph-data.d.ts.map +1 -1
  40. package/dist/src/presentation/web/app/(dashboard)/get-graph-data.js +9 -19
  41. package/dist/src/presentation/web/app/(dashboard)/layout.d.ts.map +1 -1
  42. package/dist/src/presentation/web/app/(dashboard)/layout.js +3 -2
  43. package/dist/src/presentation/web/app/actions/deploy-feature.d.ts +1 -1
  44. package/dist/src/presentation/web/app/actions/deploy-feature.d.ts.map +1 -1
  45. package/dist/src/presentation/web/app/actions/deploy-feature.js +4 -33
  46. package/dist/src/presentation/web/app/actions/deploy-repository.d.ts +1 -1
  47. package/dist/src/presentation/web/app/actions/deploy-repository.d.ts.map +1 -1
  48. package/dist/src/presentation/web/app/actions/deploy-repository.js +4 -24
  49. package/dist/src/presentation/web/app/actions/get-deployment-status.d.ts.map +1 -1
  50. package/dist/src/presentation/web/app/actions/get-deployment-status.js +2 -5
  51. package/dist/src/presentation/web/app/actions/list-deployments.d.ts +3 -0
  52. package/dist/src/presentation/web/app/actions/list-deployments.d.ts.map +1 -0
  53. package/dist/src/presentation/web/app/actions/list-deployments.js +6 -0
  54. package/dist/src/presentation/web/app/actions/stop-deployment.d.ts.map +1 -1
  55. package/dist/src/presentation/web/app/actions/stop-deployment.js +2 -5
  56. package/dist/src/presentation/web/app/api/graph-data/route.d.ts +1 -0
  57. package/dist/src/presentation/web/app/api/graph-data/route.d.ts.map +1 -1
  58. package/dist/src/presentation/web/components/features/control-center/use-control-center-state.d.ts.map +1 -1
  59. package/dist/src/presentation/web/components/features/control-center/use-control-center-state.js +7 -2
  60. package/dist/src/presentation/web/hooks/deployment-status-provider.d.ts +41 -0
  61. package/dist/src/presentation/web/hooks/deployment-status-provider.d.ts.map +1 -0
  62. package/dist/src/presentation/web/hooks/deployment-status-provider.js +205 -0
  63. package/dist/src/presentation/web/hooks/deployment-status-store.d.ts +42 -0
  64. package/dist/src/presentation/web/hooks/deployment-status-store.d.ts.map +1 -0
  65. package/dist/src/presentation/web/hooks/deployment-status-store.js +99 -0
  66. package/dist/src/presentation/web/hooks/use-deploy-action.d.ts +2 -6
  67. package/dist/src/presentation/web/hooks/use-deploy-action.d.ts.map +1 -1
  68. package/dist/src/presentation/web/hooks/use-deploy-action.js +42 -159
  69. package/dist/tsconfig.build.tsbuildinfo +1 -1
  70. package/package.json +1 -1
  71. package/web/.next/BUILD_ID +1 -1
  72. package/web/.next/build-manifest.json +2 -2
  73. package/web/.next/fallback-build-manifest.json +2 -2
  74. package/web/.next/prerender-manifest.json +3 -3
  75. package/web/.next/required-server-files.js +2 -2
  76. package/web/.next/required-server-files.json +2 -2
  77. package/web/.next/server/app/(dashboard)/@drawer/adopt/page/server-reference-manifest.json +30 -30
  78. package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js +4 -4
  79. package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js.nft.json +1 -1
  80. package/web/.next/server/app/(dashboard)/@drawer/adopt/page_client-reference-manifest.js +1 -1
  81. package/web/.next/server/app/(dashboard)/@drawer/chat/page/server-reference-manifest.json +28 -28
  82. package/web/.next/server/app/(dashboard)/@drawer/chat/page.js +4 -4
  83. package/web/.next/server/app/(dashboard)/@drawer/chat/page.js.nft.json +1 -1
  84. package/web/.next/server/app/(dashboard)/@drawer/chat/page_client-reference-manifest.js +1 -1
  85. package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +31 -31
  86. package/web/.next/server/app/(dashboard)/@drawer/create/page.js +4 -4
  87. package/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
  88. package/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
  89. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/server-reference-manifest.json +39 -39
  90. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js +4 -4
  91. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  92. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  93. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +39 -39
  94. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js +4 -4
  95. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
  96. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
  97. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page/server-reference-manifest.json +29 -29
  98. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page.js +4 -4
  99. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page.js.nft.json +1 -1
  100. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page_client-reference-manifest.js +1 -1
  101. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +29 -29
  102. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js +4 -4
  103. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
  104. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  105. package/web/.next/server/app/(dashboard)/chat/page/server-reference-manifest.json +28 -28
  106. package/web/.next/server/app/(dashboard)/chat/page.js +4 -4
  107. package/web/.next/server/app/(dashboard)/chat/page.js.nft.json +1 -1
  108. package/web/.next/server/app/(dashboard)/chat/page_client-reference-manifest.js +1 -1
  109. package/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +31 -31
  110. package/web/.next/server/app/(dashboard)/create/page.js +4 -4
  111. package/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
  112. package/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
  113. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page/server-reference-manifest.json +39 -39
  114. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js +4 -4
  115. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  116. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  117. package/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +39 -39
  118. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js +4 -4
  119. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
  120. package/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
  121. package/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +28 -28
  122. package/web/.next/server/app/(dashboard)/page.js +4 -4
  123. package/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
  124. package/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
  125. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page/server-reference-manifest.json +29 -29
  126. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page.js +4 -4
  127. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page.js.nft.json +1 -1
  128. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page_client-reference-manifest.js +1 -1
  129. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +29 -29
  130. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js +4 -4
  131. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
  132. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  133. package/web/.next/server/app/_global-error.html +2 -2
  134. package/web/.next/server/app/_global-error.rsc +1 -1
  135. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  136. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  137. package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  138. package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  139. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  140. package/web/.next/server/app/_not-found/page/server-reference-manifest.json +6 -6
  141. package/web/.next/server/app/_not-found/page.js.nft.json +1 -1
  142. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  143. package/web/.next/server/app/api/attachments/preview/route.js.nft.json +1 -1
  144. package/web/.next/server/app/api/evidence/route.js.nft.json +1 -1
  145. package/web/.next/server/app/api/graph-data/route.js.nft.json +1 -1
  146. package/web/.next/server/app/api/interactive/chat/[featureId]/messages/route.js.nft.json +1 -1
  147. package/web/.next/server/app/features/page/server-reference-manifest.json +6 -6
  148. package/web/.next/server/app/features/page.js.nft.json +1 -1
  149. package/web/.next/server/app/features/page_client-reference-manifest.js +1 -1
  150. package/web/.next/server/app/settings/page/server-reference-manifest.json +9 -9
  151. package/web/.next/server/app/settings/page.js +1 -1
  152. package/web/.next/server/app/settings/page.js.nft.json +1 -1
  153. package/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  154. package/web/.next/server/app/skills/page/server-reference-manifest.json +13 -13
  155. package/web/.next/server/app/skills/page.js +2 -3
  156. package/web/.next/server/app/skills/page.js.nft.json +1 -1
  157. package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  158. package/web/.next/server/app/tools/page/server-reference-manifest.json +11 -11
  159. package/web/.next/server/app/tools/page.js +1 -2
  160. package/web/.next/server/app/tools/page.js.nft.json +1 -1
  161. package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  162. package/web/.next/server/app/version/page/server-reference-manifest.json +6 -6
  163. package/web/.next/server/app/version/page.js.nft.json +1 -1
  164. package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  165. package/web/.next/server/chunks/403f9_next_dist_esm_build_templates_app-route_370c43b1.js +1 -1
  166. package/web/.next/server/chunks/403f9_next_dist_esm_build_templates_app-route_370c43b1.js.map +1 -1
  167. package/web/.next/server/chunks/[root-of-the-server]__a402b567._.js +1 -1
  168. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_adopt_page_actions_bdff55d6.js +3 -0
  169. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_adopt_page_actions_bdff55d6.js.map +1 -0
  170. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_chat_page_actions_6aa77d75.js +3 -0
  171. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_chat_page_actions_6aa77d75.js.map +1 -0
  172. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_chat_page_actions_24adb073.js +3 -0
  173. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_chat_page_actions_24adb073.js.map +1 -0
  174. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js +1 -1
  175. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js.map +1 -1
  176. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_feature-drawer-client_tsx_e9755fc8._.js +2 -2
  177. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_feature-drawer-client_tsx_e9755fc8._.js.map +1 -1
  178. package/web/.next/server/chunks/ssr/{[root-of-the-server]__69dd3217._.js → [root-of-the-server]__16c1388b._.js} +2 -2
  179. package/web/.next/server/chunks/ssr/{[root-of-the-server]__69dd3217._.js.map → [root-of-the-server]__16c1388b._.js.map} +1 -1
  180. package/web/.next/server/chunks/ssr/[root-of-the-server]__1f389e5d._.js +1 -1
  181. package/web/.next/server/chunks/ssr/[root-of-the-server]__1f389e5d._.js.map +1 -1
  182. package/web/.next/server/chunks/ssr/[root-of-the-server]__357d99f9._.js +1 -1
  183. package/web/.next/server/chunks/ssr/[root-of-the-server]__6c7d3936._.js +1 -1
  184. package/web/.next/server/chunks/ssr/[root-of-the-server]__6c7d3936._.js.map +1 -1
  185. package/web/.next/server/chunks/ssr/[root-of-the-server]__75070d2e._.js +3 -0
  186. package/web/.next/server/chunks/ssr/[root-of-the-server]__75070d2e._.js.map +1 -0
  187. package/web/.next/server/chunks/ssr/{_f8c55130._.js → [root-of-the-server]__7c634c0f._.js} +3 -3
  188. package/web/.next/server/chunks/ssr/[root-of-the-server]__7c634c0f._.js.map +1 -0
  189. package/web/.next/server/chunks/ssr/{[root-of-the-server]__1cd4327c._.js → [root-of-the-server]__8f02b364._.js} +3 -3
  190. package/web/.next/server/chunks/ssr/[root-of-the-server]__8f02b364._.js.map +1 -0
  191. package/web/.next/server/chunks/ssr/[root-of-the-server]__9dde817e._.js +3 -0
  192. package/web/.next/server/chunks/ssr/[root-of-the-server]__9dde817e._.js.map +1 -0
  193. package/web/.next/server/chunks/ssr/[root-of-the-server]__a00db173._.js +3 -0
  194. package/web/.next/server/chunks/ssr/[root-of-the-server]__a00db173._.js.map +1 -0
  195. package/web/.next/server/chunks/ssr/[root-of-the-server]__b7b96453._.js +1 -1
  196. package/web/.next/server/chunks/ssr/[root-of-the-server]__b7b96453._.js.map +1 -1
  197. package/web/.next/server/chunks/ssr/[root-of-the-server]__cf751517._.js +4 -0
  198. package/web/.next/server/chunks/ssr/[root-of-the-server]__cf751517._.js.map +1 -0
  199. package/web/.next/server/chunks/ssr/[root-of-the-server]__e0592c69._.js +3 -0
  200. package/web/.next/server/chunks/ssr/{[root-of-the-server]__4ed9b909._.js.map → [root-of-the-server]__e0592c69._.js.map} +1 -1
  201. package/web/.next/server/chunks/ssr/[root-of-the-server]__e5f31e9a._.js +3 -0
  202. package/web/.next/server/chunks/ssr/[root-of-the-server]__e5f31e9a._.js.map +1 -0
  203. package/web/.next/server/chunks/ssr/_15f6bbd4._.js +3 -0
  204. package/web/.next/server/chunks/ssr/{_79a4a04a._.js.map → _15f6bbd4._.js.map} +1 -1
  205. package/web/.next/server/chunks/ssr/{_16eb4fec._.js → _396a6887._.js} +2 -2
  206. package/web/.next/server/chunks/ssr/_396a6887._.js.map +1 -0
  207. package/web/.next/server/chunks/ssr/_45496654._.js +1 -1
  208. package/web/.next/server/chunks/ssr/_45496654._.js.map +1 -1
  209. package/web/.next/server/chunks/ssr/_496c9117._.js +1 -1
  210. package/web/.next/server/chunks/ssr/_496c9117._.js.map +1 -1
  211. package/web/.next/server/chunks/ssr/_56b9d60f._.js +1 -1
  212. package/web/.next/server/chunks/ssr/_56b9d60f._.js.map +1 -1
  213. package/web/.next/server/chunks/ssr/{_a1cc5e68._.js → _5889596f._.js} +2 -2
  214. package/web/.next/server/chunks/ssr/{_a1cc5e68._.js.map → _5889596f._.js.map} +1 -1
  215. package/web/.next/server/chunks/ssr/_6abfa39e._.js +1 -1
  216. package/web/.next/server/chunks/ssr/_6abfa39e._.js.map +1 -1
  217. package/web/.next/server/chunks/ssr/{_d9c0a97a._.js → _74a1a173._.js} +2 -2
  218. package/web/.next/server/chunks/ssr/{_d9c0a97a._.js.map → _74a1a173._.js.map} +1 -1
  219. package/web/.next/server/chunks/ssr/{_a2e317b3._.js → _7d50fed0._.js} +2 -2
  220. package/web/.next/server/chunks/ssr/{_a2e317b3._.js.map → _7d50fed0._.js.map} +1 -1
  221. package/web/.next/server/chunks/ssr/_9bbdd461._.js +4 -0
  222. package/web/.next/server/chunks/ssr/_9bbdd461._.js.map +1 -0
  223. package/web/.next/server/chunks/ssr/_bcd239dd._.js +3 -0
  224. package/web/.next/server/chunks/ssr/_bcd239dd._.js.map +1 -0
  225. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js +1 -1
  226. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js.map +1 -1
  227. package/web/.next/server/chunks/ssr/f3a1f_components_common_control-center-drawer_repository-drawer-client_tsx_39a00c03._.js +1 -1
  228. package/web/.next/server/chunks/ssr/f3a1f_components_common_control-center-drawer_repository-drawer-client_tsx_39a00c03._.js.map +1 -1
  229. package/web/.next/server/chunks/ssr/src_presentation_web_0338c789._.js +3 -0
  230. package/web/.next/server/chunks/ssr/src_presentation_web_0338c789._.js.map +1 -0
  231. package/web/.next/server/chunks/ssr/src_presentation_web_071f1e80._.js +5 -0
  232. package/web/.next/server/chunks/ssr/src_presentation_web_071f1e80._.js.map +1 -0
  233. package/web/.next/server/chunks/ssr/src_presentation_web_55c1ff7d._.js +3 -0
  234. package/web/.next/server/chunks/ssr/src_presentation_web_55c1ff7d._.js.map +1 -0
  235. package/web/.next/server/chunks/ssr/src_presentation_web_9a543843._.js +3 -0
  236. package/web/.next/server/chunks/ssr/src_presentation_web_9a543843._.js.map +1 -0
  237. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_ad14a90f.js +3 -0
  238. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_ad14a90f.js.map +1 -0
  239. package/web/.next/server/chunks/ssr/src_presentation_web_bade80bd._.js +3 -0
  240. package/web/.next/server/chunks/ssr/src_presentation_web_bade80bd._.js.map +1 -0
  241. package/web/.next/server/chunks/ssr/src_presentation_web_components_895e5bfa._.js +1 -1
  242. package/web/.next/server/chunks/ssr/src_presentation_web_components_895e5bfa._.js.map +1 -1
  243. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_skills_8a174cac._.js +1 -1
  244. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_skills_8a174cac._.js.map +1 -1
  245. package/web/.next/server/chunks/ssr/src_presentation_web_d5838156._.js +3 -0
  246. package/web/.next/server/chunks/ssr/src_presentation_web_d5838156._.js.map +1 -0
  247. package/web/.next/server/chunks/ssr/src_presentation_web_dc28bc60._.js +5 -0
  248. package/web/.next/server/chunks/ssr/src_presentation_web_dc28bc60._.js.map +1 -0
  249. package/web/.next/server/chunks/ssr/src_presentation_web_dcb020e3._.js +3 -0
  250. package/web/.next/server/chunks/ssr/src_presentation_web_dcb020e3._.js.map +1 -0
  251. package/web/.next/server/pages/500.html +2 -2
  252. package/web/.next/server/server-reference-manifest.js +1 -1
  253. package/web/.next/server/server-reference-manifest.json +51 -51
  254. package/web/.next/static/chunks/{f7741bf45b42ac62.js → 200e07d995bd9a42.js} +1 -1
  255. package/web/.next/static/chunks/22e3a3738308da2e.js +1 -0
  256. package/web/.next/static/chunks/{bbc95353509ede89.js → 25d3c4d18b8aecff.js} +1 -1
  257. package/web/.next/static/chunks/34444901ca3a1c3b.js +1 -0
  258. package/web/.next/static/chunks/{0ff97e3b2c05f514.js → 3cf86457869c47bc.js} +1 -1
  259. package/web/.next/static/chunks/{44dc686d971c7513.js → 55060446f5490f20.js} +3 -3
  260. package/web/.next/static/chunks/59bff7b33ebe5f68.js +1 -0
  261. package/web/.next/static/chunks/{f2ec6318c5ff73b8.js → 5a2bdbc57ed1368e.js} +1 -1
  262. package/web/.next/static/chunks/{b567f6c06cc7013a.js → 981c6f3f1db99b4e.js} +1 -1
  263. package/web/.next/static/chunks/{46e2693dbc9262fd.js → c94a6a3d54dd4997.js} +2 -2
  264. package/web/.next/static/chunks/{374e00e5b4ab142e.js → d04d868f0971941d.js} +1 -1
  265. package/web/.next/static/chunks/{0b6c8ca8403db859.js → d26d0a7bc1a9b5a4.js} +1 -1
  266. package/web/.next/static/chunks/e7502fb670f32235.js +1 -0
  267. package/web/.next/static/chunks/{8ecdaada8068211c.js → f5c61237675acc89.js} +1 -1
  268. package/web/.next/static/chunks/{27b1e99ab97bdf52.js → fb7211d94190d010.js} +3 -3
  269. package/dist/src/presentation/web/lib/is-same-shep-instance.d.ts +0 -7
  270. package/dist/src/presentation/web/lib/is-same-shep-instance.d.ts.map +0 -1
  271. package/dist/src/presentation/web/lib/is-same-shep-instance.js +0 -18
  272. package/web/.next/server/chunks/ssr/[root-of-the-server]__1cd4327c._.js.map +0 -1
  273. package/web/.next/server/chunks/ssr/[root-of-the-server]__46b10380._.js +0 -3
  274. package/web/.next/server/chunks/ssr/[root-of-the-server]__46b10380._.js.map +0 -1
  275. package/web/.next/server/chunks/ssr/[root-of-the-server]__4ed9b909._.js +0 -3
  276. package/web/.next/server/chunks/ssr/[root-of-the-server]__540c615f._.js +0 -4
  277. package/web/.next/server/chunks/ssr/[root-of-the-server]__540c615f._.js.map +0 -1
  278. package/web/.next/server/chunks/ssr/[root-of-the-server]__8b512877._.js +0 -3
  279. package/web/.next/server/chunks/ssr/[root-of-the-server]__8b512877._.js.map +0 -1
  280. package/web/.next/server/chunks/ssr/[root-of-the-server]__990dba2d._.js +0 -3
  281. package/web/.next/server/chunks/ssr/[root-of-the-server]__990dba2d._.js.map +0 -1
  282. package/web/.next/server/chunks/ssr/[root-of-the-server]__cc9c7bbb._.js +0 -3
  283. package/web/.next/server/chunks/ssr/[root-of-the-server]__cc9c7bbb._.js.map +0 -1
  284. package/web/.next/server/chunks/ssr/_05c23ad9._.js +0 -3
  285. package/web/.next/server/chunks/ssr/_05c23ad9._.js.map +0 -1
  286. package/web/.next/server/chunks/ssr/_16eb4fec._.js.map +0 -1
  287. package/web/.next/server/chunks/ssr/_79a4a04a._.js +0 -3
  288. package/web/.next/server/chunks/ssr/_f8c55130._.js.map +0 -1
  289. package/web/.next/server/chunks/ssr/src_presentation_web_06109d28._.js +0 -5
  290. package/web/.next/server/chunks/ssr/src_presentation_web_06109d28._.js.map +0 -1
  291. package/web/.next/server/chunks/ssr/src_presentation_web_0bca70f8._.js +0 -3
  292. package/web/.next/server/chunks/ssr/src_presentation_web_0bca70f8._.js.map +0 -1
  293. package/web/.next/server/chunks/ssr/src_presentation_web_367cdbe0._.js +0 -3
  294. package/web/.next/server/chunks/ssr/src_presentation_web_367cdbe0._.js.map +0 -1
  295. package/web/.next/server/chunks/ssr/src_presentation_web_57fed7fd._.js +0 -3
  296. package/web/.next/server/chunks/ssr/src_presentation_web_57fed7fd._.js.map +0 -1
  297. package/web/.next/server/chunks/ssr/src_presentation_web_7f567f6d._.js +0 -3
  298. package/web/.next/server/chunks/ssr/src_presentation_web_7f567f6d._.js.map +0 -1
  299. package/web/.next/server/chunks/ssr/src_presentation_web_972f58d5._.js +0 -3
  300. package/web/.next/server/chunks/ssr/src_presentation_web_972f58d5._.js.map +0 -1
  301. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_4ce30db7.js +0 -3
  302. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_4ce30db7.js.map +0 -1
  303. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_e4032193.js +0 -3
  304. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_e4032193.js.map +0 -1
  305. package/web/.next/server/chunks/ssr/src_presentation_web_a71b18a2._.js +0 -3
  306. package/web/.next/server/chunks/ssr/src_presentation_web_a71b18a2._.js.map +0 -1
  307. package/web/.next/server/chunks/ssr/src_presentation_web_bebe675e._.js +0 -3
  308. package/web/.next/server/chunks/ssr/src_presentation_web_bebe675e._.js.map +0 -1
  309. package/web/.next/server/chunks/ssr/src_presentation_web_c93e8bc6._.js +0 -3
  310. package/web/.next/server/chunks/ssr/src_presentation_web_c93e8bc6._.js.map +0 -1
  311. package/web/.next/server/chunks/ssr/src_presentation_web_ca99d62d._.js +0 -3
  312. package/web/.next/server/chunks/ssr/src_presentation_web_ca99d62d._.js.map +0 -1
  313. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js +0 -3
  314. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js.map +0 -1
  315. package/web/.next/server/chunks/ssr/src_presentation_web_e729f44a._.js +0 -5
  316. package/web/.next/server/chunks/ssr/src_presentation_web_e729f44a._.js.map +0 -1
  317. package/web/.next/static/chunks/28ad440cbb92bebe.js +0 -1
  318. package/web/.next/static/chunks/2ce798babf8adbc5.js +0 -1
  319. package/web/.next/static/chunks/64a765a6eec07603.js +0 -1
  320. package/web/.next/static/chunks/b2c52514837b4fc4.js +0 -1
  321. /package/web/.next/static/{d9JsHxuahs7UrJKwH-FGH → mLJ1Qa4FUFmmZm0crRH2U}/_buildManifest.js +0 -0
  322. /package/web/.next/static/{d9JsHxuahs7UrJKwH-FGH → mLJ1Qa4FUFmmZm0crRH2U}/_clientMiddlewareManifest.json +0 -0
  323. /package/web/.next/static/{d9JsHxuahs7UrJKwH-FGH → mLJ1Qa4FUFmmZm0crRH2U}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../node_modules/.pnpm/%40radix-ui%2Breact-scroll-area%401.2.10_%40types%2Breact-dom%4019.2.3_%40types%2Breact%4019.2.10__%40types_ba0b3d60c668755d5c2d6349c8477ebb/node_modules/%40radix-ui/react-scroll-area/dist/index.mjs","../../../../../../../src/presentation/web/components/ui/scroll-area.tsx","../../../../../../../node_modules/.pnpm/lucide-react%400.563.0_react%4019.2.4/node_modules/lucide-react/src/icons/folder.ts","../../../../../../../node_modules/.pnpm/lucide-react%400.563.0_react%4019.2.4/node_modules/lucide-react/src/icons/pencil.ts","../../../../../../../src/presentation/web/components/common/react-file-manager-dialog/react-file-manager-dialog.tsx","../../../../../../../src/presentation/web/app/actions/data%3Ad85c28%20%3Ctext/javascript%3E","../../../../../../../src/presentation/web/components/common/add-repository-button/pick-folder.ts"],"sourcesContent":["\"use client\";\n\n// src/scroll-area.tsx\nimport * as React2 from \"react\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useDirection } from \"@radix-ui/react-direction\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nimport { clamp } from \"@radix-ui/number\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\n\n// src/use-state-machine.ts\nimport * as React from \"react\";\nfunction useStateMachine(initialState, machine) {\n return React.useReducer((state, event) => {\n const nextState = machine[state][event];\n return nextState ?? state;\n }, initialState);\n}\n\n// src/scroll-area.tsx\nimport { Fragment, jsx, jsxs } from \"react/jsx-runtime\";\nvar SCROLL_AREA_NAME = \"ScrollArea\";\nvar [createScrollAreaContext, createScrollAreaScope] = createContextScope(SCROLL_AREA_NAME);\nvar [ScrollAreaProvider, useScrollAreaContext] = createScrollAreaContext(SCROLL_AREA_NAME);\nvar ScrollArea = React2.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeScrollArea,\n type = \"hover\",\n dir,\n scrollHideDelay = 600,\n ...scrollAreaProps\n } = props;\n const [scrollArea, setScrollArea] = React2.useState(null);\n const [viewport, setViewport] = React2.useState(null);\n const [content, setContent] = React2.useState(null);\n const [scrollbarX, setScrollbarX] = React2.useState(null);\n const [scrollbarY, setScrollbarY] = React2.useState(null);\n const [cornerWidth, setCornerWidth] = React2.useState(0);\n const [cornerHeight, setCornerHeight] = React2.useState(0);\n const [scrollbarXEnabled, setScrollbarXEnabled] = React2.useState(false);\n const [scrollbarYEnabled, setScrollbarYEnabled] = React2.useState(false);\n const composedRefs = useComposedRefs(forwardedRef, (node) => setScrollArea(node));\n const direction = useDirection(dir);\n return /* @__PURE__ */ jsx(\n ScrollAreaProvider,\n {\n scope: __scopeScrollArea,\n type,\n dir: direction,\n scrollHideDelay,\n scrollArea,\n viewport,\n onViewportChange: setViewport,\n content,\n onContentChange: setContent,\n scrollbarX,\n onScrollbarXChange: setScrollbarX,\n scrollbarXEnabled,\n onScrollbarXEnabledChange: setScrollbarXEnabled,\n scrollbarY,\n onScrollbarYChange: setScrollbarY,\n scrollbarYEnabled,\n onScrollbarYEnabledChange: setScrollbarYEnabled,\n onCornerWidthChange: setCornerWidth,\n onCornerHeightChange: setCornerHeight,\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n dir: direction,\n ...scrollAreaProps,\n ref: composedRefs,\n style: {\n position: \"relative\",\n // Pass corner sizes as CSS vars to reduce re-renders of context consumers\n [\"--radix-scroll-area-corner-width\"]: cornerWidth + \"px\",\n [\"--radix-scroll-area-corner-height\"]: cornerHeight + \"px\",\n ...props.style\n }\n }\n )\n }\n );\n }\n);\nScrollArea.displayName = SCROLL_AREA_NAME;\nvar VIEWPORT_NAME = \"ScrollAreaViewport\";\nvar ScrollAreaViewport = React2.forwardRef(\n (props, forwardedRef) => {\n const { __scopeScrollArea, children, nonce, ...viewportProps } = props;\n const context = useScrollAreaContext(VIEWPORT_NAME, __scopeScrollArea);\n const ref = React2.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref, context.onViewportChange);\n return /* @__PURE__ */ jsxs(Fragment, { children: [\n /* @__PURE__ */ jsx(\n \"style\",\n {\n dangerouslySetInnerHTML: {\n __html: `[data-radix-scroll-area-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-scroll-area-viewport]::-webkit-scrollbar{display:none}`\n },\n nonce\n }\n ),\n /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"data-radix-scroll-area-viewport\": \"\",\n ...viewportProps,\n ref: composedRefs,\n style: {\n /**\n * We don't support `visible` because the intention is to have at least one scrollbar\n * if this component is used and `visible` will behave like `auto` in that case\n * https://developer.mozilla.org/en-US/docs/Web/CSS/overflow#description\n *\n * We don't handle `auto` because the intention is for the native implementation\n * to be hidden if using this component. We just want to ensure the node is scrollable\n * so could have used either `scroll` or `auto` here. We picked `scroll` to prevent\n * the browser from having to work out whether to render native scrollbars or not,\n * we tell it to with the intention of hiding them in CSS.\n */\n overflowX: context.scrollbarXEnabled ? \"scroll\" : \"hidden\",\n overflowY: context.scrollbarYEnabled ? \"scroll\" : \"hidden\",\n ...props.style\n },\n children: /* @__PURE__ */ jsx(\"div\", { ref: context.onContentChange, style: { minWidth: \"100%\", display: \"table\" }, children })\n }\n )\n ] });\n }\n);\nScrollAreaViewport.displayName = VIEWPORT_NAME;\nvar SCROLLBAR_NAME = \"ScrollAreaScrollbar\";\nvar ScrollAreaScrollbar = React2.forwardRef(\n (props, forwardedRef) => {\n const { forceMount, ...scrollbarProps } = props;\n const context = useScrollAreaContext(SCROLLBAR_NAME, props.__scopeScrollArea);\n const { onScrollbarXEnabledChange, onScrollbarYEnabledChange } = context;\n const isHorizontal = props.orientation === \"horizontal\";\n React2.useEffect(() => {\n isHorizontal ? onScrollbarXEnabledChange(true) : onScrollbarYEnabledChange(true);\n return () => {\n isHorizontal ? onScrollbarXEnabledChange(false) : onScrollbarYEnabledChange(false);\n };\n }, [isHorizontal, onScrollbarXEnabledChange, onScrollbarYEnabledChange]);\n return context.type === \"hover\" ? /* @__PURE__ */ jsx(ScrollAreaScrollbarHover, { ...scrollbarProps, ref: forwardedRef, forceMount }) : context.type === \"scroll\" ? /* @__PURE__ */ jsx(ScrollAreaScrollbarScroll, { ...scrollbarProps, ref: forwardedRef, forceMount }) : context.type === \"auto\" ? /* @__PURE__ */ jsx(ScrollAreaScrollbarAuto, { ...scrollbarProps, ref: forwardedRef, forceMount }) : context.type === \"always\" ? /* @__PURE__ */ jsx(ScrollAreaScrollbarVisible, { ...scrollbarProps, ref: forwardedRef }) : null;\n }\n);\nScrollAreaScrollbar.displayName = SCROLLBAR_NAME;\nvar ScrollAreaScrollbarHover = React2.forwardRef((props, forwardedRef) => {\n const { forceMount, ...scrollbarProps } = props;\n const context = useScrollAreaContext(SCROLLBAR_NAME, props.__scopeScrollArea);\n const [visible, setVisible] = React2.useState(false);\n React2.useEffect(() => {\n const scrollArea = context.scrollArea;\n let hideTimer = 0;\n if (scrollArea) {\n const handlePointerEnter = () => {\n window.clearTimeout(hideTimer);\n setVisible(true);\n };\n const handlePointerLeave = () => {\n hideTimer = window.setTimeout(() => setVisible(false), context.scrollHideDelay);\n };\n scrollArea.addEventListener(\"pointerenter\", handlePointerEnter);\n scrollArea.addEventListener(\"pointerleave\", handlePointerLeave);\n return () => {\n window.clearTimeout(hideTimer);\n scrollArea.removeEventListener(\"pointerenter\", handlePointerEnter);\n scrollArea.removeEventListener(\"pointerleave\", handlePointerLeave);\n };\n }\n }, [context.scrollArea, context.scrollHideDelay]);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || visible, children: /* @__PURE__ */ jsx(\n ScrollAreaScrollbarAuto,\n {\n \"data-state\": visible ? \"visible\" : \"hidden\",\n ...scrollbarProps,\n ref: forwardedRef\n }\n ) });\n});\nvar ScrollAreaScrollbarScroll = React2.forwardRef((props, forwardedRef) => {\n const { forceMount, ...scrollbarProps } = props;\n const context = useScrollAreaContext(SCROLLBAR_NAME, props.__scopeScrollArea);\n const isHorizontal = props.orientation === \"horizontal\";\n const debounceScrollEnd = useDebounceCallback(() => send(\"SCROLL_END\"), 100);\n const [state, send] = useStateMachine(\"hidden\", {\n hidden: {\n SCROLL: \"scrolling\"\n },\n scrolling: {\n SCROLL_END: \"idle\",\n POINTER_ENTER: \"interacting\"\n },\n interacting: {\n SCROLL: \"interacting\",\n POINTER_LEAVE: \"idle\"\n },\n idle: {\n HIDE: \"hidden\",\n SCROLL: \"scrolling\",\n POINTER_ENTER: \"interacting\"\n }\n });\n React2.useEffect(() => {\n if (state === \"idle\") {\n const hideTimer = window.setTimeout(() => send(\"HIDE\"), context.scrollHideDelay);\n return () => window.clearTimeout(hideTimer);\n }\n }, [state, context.scrollHideDelay, send]);\n React2.useEffect(() => {\n const viewport = context.viewport;\n const scrollDirection = isHorizontal ? \"scrollLeft\" : \"scrollTop\";\n if (viewport) {\n let prevScrollPos = viewport[scrollDirection];\n const handleScroll = () => {\n const scrollPos = viewport[scrollDirection];\n const hasScrollInDirectionChanged = prevScrollPos !== scrollPos;\n if (hasScrollInDirectionChanged) {\n send(\"SCROLL\");\n debounceScrollEnd();\n }\n prevScrollPos = scrollPos;\n };\n viewport.addEventListener(\"scroll\", handleScroll);\n return () => viewport.removeEventListener(\"scroll\", handleScroll);\n }\n }, [context.viewport, isHorizontal, send, debounceScrollEnd]);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || state !== \"hidden\", children: /* @__PURE__ */ jsx(\n ScrollAreaScrollbarVisible,\n {\n \"data-state\": state === \"hidden\" ? \"hidden\" : \"visible\",\n ...scrollbarProps,\n ref: forwardedRef,\n onPointerEnter: composeEventHandlers(props.onPointerEnter, () => send(\"POINTER_ENTER\")),\n onPointerLeave: composeEventHandlers(props.onPointerLeave, () => send(\"POINTER_LEAVE\"))\n }\n ) });\n});\nvar ScrollAreaScrollbarAuto = React2.forwardRef((props, forwardedRef) => {\n const context = useScrollAreaContext(SCROLLBAR_NAME, props.__scopeScrollArea);\n const { forceMount, ...scrollbarProps } = props;\n const [visible, setVisible] = React2.useState(false);\n const isHorizontal = props.orientation === \"horizontal\";\n const handleResize = useDebounceCallback(() => {\n if (context.viewport) {\n const isOverflowX = context.viewport.offsetWidth < context.viewport.scrollWidth;\n const isOverflowY = context.viewport.offsetHeight < context.viewport.scrollHeight;\n setVisible(isHorizontal ? isOverflowX : isOverflowY);\n }\n }, 10);\n useResizeObserver(context.viewport, handleResize);\n useResizeObserver(context.content, handleResize);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || visible, children: /* @__PURE__ */ jsx(\n ScrollAreaScrollbarVisible,\n {\n \"data-state\": visible ? \"visible\" : \"hidden\",\n ...scrollbarProps,\n ref: forwardedRef\n }\n ) });\n});\nvar ScrollAreaScrollbarVisible = React2.forwardRef((props, forwardedRef) => {\n const { orientation = \"vertical\", ...scrollbarProps } = props;\n const context = useScrollAreaContext(SCROLLBAR_NAME, props.__scopeScrollArea);\n const thumbRef = React2.useRef(null);\n const pointerOffsetRef = React2.useRef(0);\n const [sizes, setSizes] = React2.useState({\n content: 0,\n viewport: 0,\n scrollbar: { size: 0, paddingStart: 0, paddingEnd: 0 }\n });\n const thumbRatio = getThumbRatio(sizes.viewport, sizes.content);\n const commonProps = {\n ...scrollbarProps,\n sizes,\n onSizesChange: setSizes,\n hasThumb: Boolean(thumbRatio > 0 && thumbRatio < 1),\n onThumbChange: (thumb) => thumbRef.current = thumb,\n onThumbPointerUp: () => pointerOffsetRef.current = 0,\n onThumbPointerDown: (pointerPos) => pointerOffsetRef.current = pointerPos\n };\n function getScrollPosition(pointerPos, dir) {\n return getScrollPositionFromPointer(pointerPos, pointerOffsetRef.current, sizes, dir);\n }\n if (orientation === \"horizontal\") {\n return /* @__PURE__ */ jsx(\n ScrollAreaScrollbarX,\n {\n ...commonProps,\n ref: forwardedRef,\n onThumbPositionChange: () => {\n if (context.viewport && thumbRef.current) {\n const scrollPos = context.viewport.scrollLeft;\n const offset = getThumbOffsetFromScroll(scrollPos, sizes, context.dir);\n thumbRef.current.style.transform = `translate3d(${offset}px, 0, 0)`;\n }\n },\n onWheelScroll: (scrollPos) => {\n if (context.viewport) context.viewport.scrollLeft = scrollPos;\n },\n onDragScroll: (pointerPos) => {\n if (context.viewport) {\n context.viewport.scrollLeft = getScrollPosition(pointerPos, context.dir);\n }\n }\n }\n );\n }\n if (orientation === \"vertical\") {\n return /* @__PURE__ */ jsx(\n ScrollAreaScrollbarY,\n {\n ...commonProps,\n ref: forwardedRef,\n onThumbPositionChange: () => {\n if (context.viewport && thumbRef.current) {\n const scrollPos = context.viewport.scrollTop;\n const offset = getThumbOffsetFromScroll(scrollPos, sizes);\n thumbRef.current.style.transform = `translate3d(0, ${offset}px, 0)`;\n }\n },\n onWheelScroll: (scrollPos) => {\n if (context.viewport) context.viewport.scrollTop = scrollPos;\n },\n onDragScroll: (pointerPos) => {\n if (context.viewport) context.viewport.scrollTop = getScrollPosition(pointerPos);\n }\n }\n );\n }\n return null;\n});\nvar ScrollAreaScrollbarX = React2.forwardRef((props, forwardedRef) => {\n const { sizes, onSizesChange, ...scrollbarProps } = props;\n const context = useScrollAreaContext(SCROLLBAR_NAME, props.__scopeScrollArea);\n const [computedStyle, setComputedStyle] = React2.useState();\n const ref = React2.useRef(null);\n const composeRefs = useComposedRefs(forwardedRef, ref, context.onScrollbarXChange);\n React2.useEffect(() => {\n if (ref.current) setComputedStyle(getComputedStyle(ref.current));\n }, [ref]);\n return /* @__PURE__ */ jsx(\n ScrollAreaScrollbarImpl,\n {\n \"data-orientation\": \"horizontal\",\n ...scrollbarProps,\n ref: composeRefs,\n sizes,\n style: {\n bottom: 0,\n left: context.dir === \"rtl\" ? \"var(--radix-scroll-area-corner-width)\" : 0,\n right: context.dir === \"ltr\" ? \"var(--radix-scroll-area-corner-width)\" : 0,\n [\"--radix-scroll-area-thumb-width\"]: getThumbSize(sizes) + \"px\",\n ...props.style\n },\n onThumbPointerDown: (pointerPos) => props.onThumbPointerDown(pointerPos.x),\n onDragScroll: (pointerPos) => props.onDragScroll(pointerPos.x),\n onWheelScroll: (event, maxScrollPos) => {\n if (context.viewport) {\n const scrollPos = context.viewport.scrollLeft + event.deltaX;\n props.onWheelScroll(scrollPos);\n if (isScrollingWithinScrollbarBounds(scrollPos, maxScrollPos)) {\n event.preventDefault();\n }\n }\n },\n onResize: () => {\n if (ref.current && context.viewport && computedStyle) {\n onSizesChange({\n content: context.viewport.scrollWidth,\n viewport: context.viewport.offsetWidth,\n scrollbar: {\n size: ref.current.clientWidth,\n paddingStart: toInt(computedStyle.paddingLeft),\n paddingEnd: toInt(computedStyle.paddingRight)\n }\n });\n }\n }\n }\n );\n});\nvar ScrollAreaScrollbarY = React2.forwardRef((props, forwardedRef) => {\n const { sizes, onSizesChange, ...scrollbarProps } = props;\n const context = useScrollAreaContext(SCROLLBAR_NAME, props.__scopeScrollArea);\n const [computedStyle, setComputedStyle] = React2.useState();\n const ref = React2.useRef(null);\n const composeRefs = useComposedRefs(forwardedRef, ref, context.onScrollbarYChange);\n React2.useEffect(() => {\n if (ref.current) setComputedStyle(getComputedStyle(ref.current));\n }, [ref]);\n return /* @__PURE__ */ jsx(\n ScrollAreaScrollbarImpl,\n {\n \"data-orientation\": \"vertical\",\n ...scrollbarProps,\n ref: composeRefs,\n sizes,\n style: {\n top: 0,\n right: context.dir === \"ltr\" ? 0 : void 0,\n left: context.dir === \"rtl\" ? 0 : void 0,\n bottom: \"var(--radix-scroll-area-corner-height)\",\n [\"--radix-scroll-area-thumb-height\"]: getThumbSize(sizes) + \"px\",\n ...props.style\n },\n onThumbPointerDown: (pointerPos) => props.onThumbPointerDown(pointerPos.y),\n onDragScroll: (pointerPos) => props.onDragScroll(pointerPos.y),\n onWheelScroll: (event, maxScrollPos) => {\n if (context.viewport) {\n const scrollPos = context.viewport.scrollTop + event.deltaY;\n props.onWheelScroll(scrollPos);\n if (isScrollingWithinScrollbarBounds(scrollPos, maxScrollPos)) {\n event.preventDefault();\n }\n }\n },\n onResize: () => {\n if (ref.current && context.viewport && computedStyle) {\n onSizesChange({\n content: context.viewport.scrollHeight,\n viewport: context.viewport.offsetHeight,\n scrollbar: {\n size: ref.current.clientHeight,\n paddingStart: toInt(computedStyle.paddingTop),\n paddingEnd: toInt(computedStyle.paddingBottom)\n }\n });\n }\n }\n }\n );\n});\nvar [ScrollbarProvider, useScrollbarContext] = createScrollAreaContext(SCROLLBAR_NAME);\nvar ScrollAreaScrollbarImpl = React2.forwardRef((props, forwardedRef) => {\n const {\n __scopeScrollArea,\n sizes,\n hasThumb,\n onThumbChange,\n onThumbPointerUp,\n onThumbPointerDown,\n onThumbPositionChange,\n onDragScroll,\n onWheelScroll,\n onResize,\n ...scrollbarProps\n } = props;\n const context = useScrollAreaContext(SCROLLBAR_NAME, __scopeScrollArea);\n const [scrollbar, setScrollbar] = React2.useState(null);\n const composeRefs = useComposedRefs(forwardedRef, (node) => setScrollbar(node));\n const rectRef = React2.useRef(null);\n const prevWebkitUserSelectRef = React2.useRef(\"\");\n const viewport = context.viewport;\n const maxScrollPos = sizes.content - sizes.viewport;\n const handleWheelScroll = useCallbackRef(onWheelScroll);\n const handleThumbPositionChange = useCallbackRef(onThumbPositionChange);\n const handleResize = useDebounceCallback(onResize, 10);\n function handleDragScroll(event) {\n if (rectRef.current) {\n const x = event.clientX - rectRef.current.left;\n const y = event.clientY - rectRef.current.top;\n onDragScroll({ x, y });\n }\n }\n React2.useEffect(() => {\n const handleWheel = (event) => {\n const element = event.target;\n const isScrollbarWheel = scrollbar?.contains(element);\n if (isScrollbarWheel) handleWheelScroll(event, maxScrollPos);\n };\n document.addEventListener(\"wheel\", handleWheel, { passive: false });\n return () => document.removeEventListener(\"wheel\", handleWheel, { passive: false });\n }, [viewport, scrollbar, maxScrollPos, handleWheelScroll]);\n React2.useEffect(handleThumbPositionChange, [sizes, handleThumbPositionChange]);\n useResizeObserver(scrollbar, handleResize);\n useResizeObserver(context.content, handleResize);\n return /* @__PURE__ */ jsx(\n ScrollbarProvider,\n {\n scope: __scopeScrollArea,\n scrollbar,\n hasThumb,\n onThumbChange: useCallbackRef(onThumbChange),\n onThumbPointerUp: useCallbackRef(onThumbPointerUp),\n onThumbPositionChange: handleThumbPositionChange,\n onThumbPointerDown: useCallbackRef(onThumbPointerDown),\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n ...scrollbarProps,\n ref: composeRefs,\n style: { position: \"absolute\", ...scrollbarProps.style },\n onPointerDown: composeEventHandlers(props.onPointerDown, (event) => {\n const mainPointer = 0;\n if (event.button === mainPointer) {\n const element = event.target;\n element.setPointerCapture(event.pointerId);\n rectRef.current = scrollbar.getBoundingClientRect();\n prevWebkitUserSelectRef.current = document.body.style.webkitUserSelect;\n document.body.style.webkitUserSelect = \"none\";\n if (context.viewport) context.viewport.style.scrollBehavior = \"auto\";\n handleDragScroll(event);\n }\n }),\n onPointerMove: composeEventHandlers(props.onPointerMove, handleDragScroll),\n onPointerUp: composeEventHandlers(props.onPointerUp, (event) => {\n const element = event.target;\n if (element.hasPointerCapture(event.pointerId)) {\n element.releasePointerCapture(event.pointerId);\n }\n document.body.style.webkitUserSelect = prevWebkitUserSelectRef.current;\n if (context.viewport) context.viewport.style.scrollBehavior = \"\";\n rectRef.current = null;\n })\n }\n )\n }\n );\n});\nvar THUMB_NAME = \"ScrollAreaThumb\";\nvar ScrollAreaThumb = React2.forwardRef(\n (props, forwardedRef) => {\n const { forceMount, ...thumbProps } = props;\n const scrollbarContext = useScrollbarContext(THUMB_NAME, props.__scopeScrollArea);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || scrollbarContext.hasThumb, children: /* @__PURE__ */ jsx(ScrollAreaThumbImpl, { ref: forwardedRef, ...thumbProps }) });\n }\n);\nvar ScrollAreaThumbImpl = React2.forwardRef(\n (props, forwardedRef) => {\n const { __scopeScrollArea, style, ...thumbProps } = props;\n const scrollAreaContext = useScrollAreaContext(THUMB_NAME, __scopeScrollArea);\n const scrollbarContext = useScrollbarContext(THUMB_NAME, __scopeScrollArea);\n const { onThumbPositionChange } = scrollbarContext;\n const composedRef = useComposedRefs(\n forwardedRef,\n (node) => scrollbarContext.onThumbChange(node)\n );\n const removeUnlinkedScrollListenerRef = React2.useRef(void 0);\n const debounceScrollEnd = useDebounceCallback(() => {\n if (removeUnlinkedScrollListenerRef.current) {\n removeUnlinkedScrollListenerRef.current();\n removeUnlinkedScrollListenerRef.current = void 0;\n }\n }, 100);\n React2.useEffect(() => {\n const viewport = scrollAreaContext.viewport;\n if (viewport) {\n const handleScroll = () => {\n debounceScrollEnd();\n if (!removeUnlinkedScrollListenerRef.current) {\n const listener = addUnlinkedScrollListener(viewport, onThumbPositionChange);\n removeUnlinkedScrollListenerRef.current = listener;\n onThumbPositionChange();\n }\n };\n onThumbPositionChange();\n viewport.addEventListener(\"scroll\", handleScroll);\n return () => viewport.removeEventListener(\"scroll\", handleScroll);\n }\n }, [scrollAreaContext.viewport, debounceScrollEnd, onThumbPositionChange]);\n return /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"data-state\": scrollbarContext.hasThumb ? \"visible\" : \"hidden\",\n ...thumbProps,\n ref: composedRef,\n style: {\n width: \"var(--radix-scroll-area-thumb-width)\",\n height: \"var(--radix-scroll-area-thumb-height)\",\n ...style\n },\n onPointerDownCapture: composeEventHandlers(props.onPointerDownCapture, (event) => {\n const thumb = event.target;\n const thumbRect = thumb.getBoundingClientRect();\n const x = event.clientX - thumbRect.left;\n const y = event.clientY - thumbRect.top;\n scrollbarContext.onThumbPointerDown({ x, y });\n }),\n onPointerUp: composeEventHandlers(props.onPointerUp, scrollbarContext.onThumbPointerUp)\n }\n );\n }\n);\nScrollAreaThumb.displayName = THUMB_NAME;\nvar CORNER_NAME = \"ScrollAreaCorner\";\nvar ScrollAreaCorner = React2.forwardRef(\n (props, forwardedRef) => {\n const context = useScrollAreaContext(CORNER_NAME, props.__scopeScrollArea);\n const hasBothScrollbarsVisible = Boolean(context.scrollbarX && context.scrollbarY);\n const hasCorner = context.type !== \"scroll\" && hasBothScrollbarsVisible;\n return hasCorner ? /* @__PURE__ */ jsx(ScrollAreaCornerImpl, { ...props, ref: forwardedRef }) : null;\n }\n);\nScrollAreaCorner.displayName = CORNER_NAME;\nvar ScrollAreaCornerImpl = React2.forwardRef((props, forwardedRef) => {\n const { __scopeScrollArea, ...cornerProps } = props;\n const context = useScrollAreaContext(CORNER_NAME, __scopeScrollArea);\n const [width, setWidth] = React2.useState(0);\n const [height, setHeight] = React2.useState(0);\n const hasSize = Boolean(width && height);\n useResizeObserver(context.scrollbarX, () => {\n const height2 = context.scrollbarX?.offsetHeight || 0;\n context.onCornerHeightChange(height2);\n setHeight(height2);\n });\n useResizeObserver(context.scrollbarY, () => {\n const width2 = context.scrollbarY?.offsetWidth || 0;\n context.onCornerWidthChange(width2);\n setWidth(width2);\n });\n return hasSize ? /* @__PURE__ */ jsx(\n Primitive.div,\n {\n ...cornerProps,\n ref: forwardedRef,\n style: {\n width,\n height,\n position: \"absolute\",\n right: context.dir === \"ltr\" ? 0 : void 0,\n left: context.dir === \"rtl\" ? 0 : void 0,\n bottom: 0,\n ...props.style\n }\n }\n ) : null;\n});\nfunction toInt(value) {\n return value ? parseInt(value, 10) : 0;\n}\nfunction getThumbRatio(viewportSize, contentSize) {\n const ratio = viewportSize / contentSize;\n return isNaN(ratio) ? 0 : ratio;\n}\nfunction getThumbSize(sizes) {\n const ratio = getThumbRatio(sizes.viewport, sizes.content);\n const scrollbarPadding = sizes.scrollbar.paddingStart + sizes.scrollbar.paddingEnd;\n const thumbSize = (sizes.scrollbar.size - scrollbarPadding) * ratio;\n return Math.max(thumbSize, 18);\n}\nfunction getScrollPositionFromPointer(pointerPos, pointerOffset, sizes, dir = \"ltr\") {\n const thumbSizePx = getThumbSize(sizes);\n const thumbCenter = thumbSizePx / 2;\n const offset = pointerOffset || thumbCenter;\n const thumbOffsetFromEnd = thumbSizePx - offset;\n const minPointerPos = sizes.scrollbar.paddingStart + offset;\n const maxPointerPos = sizes.scrollbar.size - sizes.scrollbar.paddingEnd - thumbOffsetFromEnd;\n const maxScrollPos = sizes.content - sizes.viewport;\n const scrollRange = dir === \"ltr\" ? [0, maxScrollPos] : [maxScrollPos * -1, 0];\n const interpolate = linearScale([minPointerPos, maxPointerPos], scrollRange);\n return interpolate(pointerPos);\n}\nfunction getThumbOffsetFromScroll(scrollPos, sizes, dir = \"ltr\") {\n const thumbSizePx = getThumbSize(sizes);\n const scrollbarPadding = sizes.scrollbar.paddingStart + sizes.scrollbar.paddingEnd;\n const scrollbar = sizes.scrollbar.size - scrollbarPadding;\n const maxScrollPos = sizes.content - sizes.viewport;\n const maxThumbPos = scrollbar - thumbSizePx;\n const scrollClampRange = dir === \"ltr\" ? [0, maxScrollPos] : [maxScrollPos * -1, 0];\n const scrollWithoutMomentum = clamp(scrollPos, scrollClampRange);\n const interpolate = linearScale([0, maxScrollPos], [0, maxThumbPos]);\n return interpolate(scrollWithoutMomentum);\n}\nfunction linearScale(input, output) {\n return (value) => {\n if (input[0] === input[1] || output[0] === output[1]) return output[0];\n const ratio = (output[1] - output[0]) / (input[1] - input[0]);\n return output[0] + ratio * (value - input[0]);\n };\n}\nfunction isScrollingWithinScrollbarBounds(scrollPos, maxScrollPos) {\n return scrollPos > 0 && scrollPos < maxScrollPos;\n}\nvar addUnlinkedScrollListener = (node, handler = () => {\n}) => {\n let prevPosition = { left: node.scrollLeft, top: node.scrollTop };\n let rAF = 0;\n (function loop() {\n const position = { left: node.scrollLeft, top: node.scrollTop };\n const isHorizontalScroll = prevPosition.left !== position.left;\n const isVerticalScroll = prevPosition.top !== position.top;\n if (isHorizontalScroll || isVerticalScroll) handler();\n prevPosition = position;\n rAF = window.requestAnimationFrame(loop);\n })();\n return () => window.cancelAnimationFrame(rAF);\n};\nfunction useDebounceCallback(callback, delay) {\n const handleCallback = useCallbackRef(callback);\n const debounceTimerRef = React2.useRef(0);\n React2.useEffect(() => () => window.clearTimeout(debounceTimerRef.current), []);\n return React2.useCallback(() => {\n window.clearTimeout(debounceTimerRef.current);\n debounceTimerRef.current = window.setTimeout(handleCallback, delay);\n }, [handleCallback, delay]);\n}\nfunction useResizeObserver(element, onResize) {\n const handleResize = useCallbackRef(onResize);\n useLayoutEffect(() => {\n let rAF = 0;\n if (element) {\n const resizeObserver = new ResizeObserver(() => {\n cancelAnimationFrame(rAF);\n rAF = window.requestAnimationFrame(handleResize);\n });\n resizeObserver.observe(element);\n return () => {\n window.cancelAnimationFrame(rAF);\n resizeObserver.unobserve(element);\n };\n }\n }, [element, handleResize]);\n}\nvar Root = ScrollArea;\nvar Viewport = ScrollAreaViewport;\nvar Scrollbar = ScrollAreaScrollbar;\nvar Thumb = ScrollAreaThumb;\nvar Corner = ScrollAreaCorner;\nexport {\n Corner,\n Root,\n ScrollArea,\n ScrollAreaCorner,\n ScrollAreaScrollbar,\n ScrollAreaThumb,\n ScrollAreaViewport,\n Scrollbar,\n Thumb,\n Viewport,\n createScrollAreaScope\n};\n//# sourceMappingURL=index.mjs.map\n","'use client';\n\nimport * as React from 'react';\nimport { ScrollArea as ScrollAreaPrimitive } from 'radix-ui';\n\nimport { cn } from '@/lib/utils';\n\nfunction ScrollArea({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof ScrollAreaPrimitive.Root>) {\n return (\n <ScrollAreaPrimitive.Root\n data-slot=\"scroll-area\"\n className={cn('relative', className)}\n {...props}\n >\n <ScrollAreaPrimitive.Viewport\n data-slot=\"scroll-area-viewport\"\n className=\"focus-visible:ring-ring/50 size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:outline-1 [&>div]:block!\"\n >\n {children}\n </ScrollAreaPrimitive.Viewport>\n <ScrollBar />\n <ScrollAreaPrimitive.Corner />\n </ScrollAreaPrimitive.Root>\n );\n}\n\nfunction ScrollBar({\n className,\n orientation = 'vertical',\n ...props\n}: React.ComponentProps<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>) {\n return (\n <ScrollAreaPrimitive.ScrollAreaScrollbar\n data-slot=\"scroll-area-scrollbar\"\n orientation={orientation}\n className={cn(\n 'flex touch-none p-px transition-colors select-none',\n orientation === 'vertical' && 'h-full w-2.5 border-s border-s-transparent',\n orientation === 'horizontal' && 'h-2.5 flex-col border-t border-t-transparent',\n className\n )}\n {...props}\n >\n <ScrollAreaPrimitive.ScrollAreaThumb\n data-slot=\"scroll-area-thumb\"\n className=\"bg-border relative flex-1 rounded-full\"\n />\n </ScrollAreaPrimitive.ScrollAreaScrollbar>\n );\n}\n\nexport { ScrollArea, ScrollBar };\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z',\n key: '1kt360',\n },\n ],\n];\n\n/**\n * @component @name Folder\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMjAgMjBhMiAyIDAgMCAwIDItMlY4YTIgMiAwIDAgMC0yLTJoLTcuOWEyIDIgMCAwIDEtMS42OS0uOUw5LjYgMy45QTIgMiAwIDAgMCA3LjkzIDNINGEyIDIgMCAwIDAtMiAydjEzYTIgMiAwIDAgMCAyIDJaIiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/folder\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 Folder = createLucideIcon('folder', __iconNode);\n\nexport default Folder;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z',\n key: '1a8usu',\n },\n ],\n ['path', { d: 'm15 5 4 4', key: '1mk7zo' }],\n];\n\n/**\n * @component @name Pencil\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMjEuMTc0IDYuODEyYTEgMSAwIDAgMC0zLjk4Ni0zLjk4N0wzLjg0MiAxNi4xNzRhMiAyIDAgMCAwLS41LjgzbC0xLjMyMSA0LjM1MmEuNS41IDAgMCAwIC42MjMuNjIybDQuMzUzLTEuMzJhMiAyIDAgMCAwIC44My0uNDk3eiIgLz4KICA8cGF0aCBkPSJtMTUgNSA0IDQiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/pencil\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 Pencil = createLucideIcon('pencil', __iconNode);\n\nexport default Pencil;\n","'use client';\n\nimport { useCallback, useEffect, useRef, useState } from 'react';\nimport { ChevronRight, Folder, FolderOpen, Loader2, Pencil } from 'lucide-react';\nimport { toast } from 'sonner';\nimport { Dialog, DialogContent, DialogDescription, DialogTitle } from '@/components/ui/dialog';\nimport { Button } from '@/components/ui/button';\nimport { ScrollArea } from '@/components/ui/scroll-area';\nimport type {\n DirectoryEntry,\n DirectoryListResponse,\n ReactFileManagerDialogProps,\n} from './react-file-manager-dialog-config';\n\nasync function fetchDirectory(dirPath?: string): Promise<DirectoryListResponse> {\n const params = new URLSearchParams();\n if (dirPath) {\n params.set('path', dirPath);\n }\n const res = await fetch(`/api/directory/list?${params.toString()}`);\n if (!res.ok) {\n const body = await res.json().catch(() => ({ error: 'Failed to load directory' }));\n throw new Error(body.error ?? 'Failed to load directory');\n }\n return res.json();\n}\n\nfunction parseBreadcrumbs(currentPath: string) {\n if (!currentPath) return [];\n const isWindows = /^[a-zA-Z]:/.test(currentPath);\n const separator = isWindows ? '\\\\' : '/';\n const parts = currentPath.split(/[\\\\/]/).filter(Boolean);\n\n const crumbs: { label: string; path: string }[] = [];\n for (let i = 0; i < parts.length; i++) {\n const path = isWindows\n ? parts.slice(0, i + 1).join(separator)\n : separator + parts.slice(0, i + 1).join(separator);\n crumbs.push({ label: parts[i], path });\n }\n return crumbs;\n}\n\nconst MAX_VISIBLE_CRUMBS = 3;\n\nfunction AddressBar({\n currentPath,\n isEditing,\n onToggleEdit,\n onNavigate,\n}: {\n currentPath: string;\n isEditing: boolean;\n onToggleEdit: () => void;\n onNavigate: (path: string) => void;\n}) {\n const inputRef = useRef<HTMLInputElement>(null);\n const [inputValue, setInputValue] = useState(currentPath);\n\n useEffect(() => {\n setInputValue(currentPath);\n }, [currentPath]);\n\n useEffect(() => {\n if (isEditing && inputRef.current) {\n inputRef.current.focus();\n inputRef.current.select();\n }\n }, [isEditing]);\n\n function handleSubmit() {\n const trimmed = inputValue.trim();\n if (trimmed) {\n onNavigate(trimmed);\n }\n }\n\n function closeEdit() {\n setInputValue(currentPath);\n onToggleEdit();\n }\n\n const breadcrumbs = parseBreadcrumbs(currentPath);\n const needsCollapse = breadcrumbs.length > MAX_VISIBLE_CRUMBS;\n const visibleCrumbs = needsCollapse ? breadcrumbs.slice(-MAX_VISIBLE_CRUMBS) : breadcrumbs;\n\n return (\n <div className=\"border-b px-4 py-3\">\n {/* Title */}\n <h2 className=\"text-foreground mb-2.5 text-sm font-semibold tracking-[-0.01em]\">\n Select Folder\n </h2>\n\n {/* Address bar */}\n {isEditing ? (\n <input\n ref={inputRef}\n type=\"text\"\n value={inputValue}\n onChange={(e) => setInputValue(e.target.value)}\n onKeyDown={(e) => {\n if (e.key === 'Enter') {\n e.preventDefault();\n handleSubmit();\n }\n if (e.key === 'Escape') {\n e.preventDefault();\n closeEdit();\n }\n }}\n onBlur={closeEdit}\n className=\"bg-muted/60 border-border focus:ring-ring/20 focus:border-ring w-full rounded-lg border px-3 py-2 font-mono text-xs transition-all outline-none focus:ring-2\"\n placeholder=\"Type a path and press Enter...\"\n spellCheck={false}\n autoComplete=\"off\"\n />\n ) : (\n <div className=\"bg-muted/40 flex items-center gap-1 rounded-lg px-2.5 py-2\">\n {/* Root */}\n <button\n type=\"button\"\n onClick={() => onNavigate('/')}\n className=\"text-muted-foreground hover:text-foreground hover:bg-background shrink-0 rounded px-1.5 py-0.5 font-mono text-xs transition-colors\"\n >\n /\n </button>\n\n {/* Collapsed middle */}\n {needsCollapse ? (\n <>\n <ChevronRight className=\"text-muted-foreground/30 h-3 w-3 shrink-0\" />\n <span className=\"text-muted-foreground/40 font-mono text-xs\">...</span>\n </>\n ) : null}\n\n {/* Visible crumbs */}\n {visibleCrumbs.map((crumb, i) => {\n const isLast = i === visibleCrumbs.length - 1;\n return (\n <span key={crumb.path} className=\"flex shrink-0 items-center gap-1\">\n <ChevronRight className=\"text-muted-foreground/30 h-3 w-3\" />\n {isLast ? (\n <span className=\"bg-primary/10 text-primary rounded px-2 py-0.5 font-mono text-xs font-medium\">\n {crumb.label}\n </span>\n ) : (\n <button\n type=\"button\"\n onClick={() => onNavigate(crumb.path)}\n className=\"text-muted-foreground hover:text-foreground hover:bg-background rounded px-1.5 py-0.5 font-mono text-xs transition-colors\"\n >\n {crumb.label}\n </button>\n )}\n </span>\n );\n })}\n\n {/* Edit path button — inside the path row */}\n <div className=\"flex-1\" />\n <button\n type=\"button\"\n onClick={onToggleEdit}\n className=\"text-muted-foreground/40 hover:text-foreground hover:bg-background shrink-0 rounded p-1 transition-colors\"\n aria-label=\"Edit path\"\n >\n <Pencil className=\"h-3 w-3\" />\n </button>\n </div>\n )}\n </div>\n );\n}\n\nexport function ReactFileManagerDialog({\n open,\n onOpenChange,\n onSelect,\n initialPath,\n}: ReactFileManagerDialogProps) {\n const [entries, setEntries] = useState<DirectoryEntry[]>([]);\n const [currentPath, setCurrentPath] = useState('');\n const [isLoading, setIsLoading] = useState(false);\n const [isEditingPath, setIsEditingPath] = useState(false);\n const hasLoadedRef = useRef(false);\n const [renderKey, setRenderKey] = useState(0);\n\n const loadDirectory = useCallback(async (dirPath?: string) => {\n setIsLoading(true);\n setIsEditingPath(false);\n try {\n const data = await fetchDirectory(dirPath);\n setEntries(data.entries);\n setCurrentPath(data.currentPath);\n setRenderKey((k) => k + 1);\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to load directory';\n toast.error(message);\n } finally {\n setIsLoading(false);\n }\n }, []);\n\n useEffect(() => {\n if (open && !hasLoadedRef.current) {\n hasLoadedRef.current = true;\n loadDirectory(initialPath);\n }\n if (!open) {\n hasLoadedRef.current = false;\n setIsEditingPath(false);\n }\n }, [open, initialPath, loadDirectory]);\n\n function handleNavigate(path: string) {\n loadDirectory(path);\n }\n\n function handleSelect() {\n if (currentPath) {\n onSelect(currentPath);\n onOpenChange(false);\n }\n }\n\n function handleCancel() {\n onSelect(null);\n onOpenChange(false);\n }\n\n return (\n <Dialog\n open={open}\n onOpenChange={(isOpen) => {\n if (!isOpen) {\n handleCancel();\n }\n }}\n >\n <DialogContent\n className=\"flex h-[min(520px,85dvh)] w-full max-w-[460px] flex-col gap-0 overflow-hidden p-0\"\n onCloseAutoFocus={(e) => e.preventDefault()}\n >\n <DialogTitle className=\"sr-only\">Select Folder</DialogTitle>\n <DialogDescription className=\"sr-only\">\n Navigate to a folder and select it\n </DialogDescription>\n\n {/* ── Header with address bar ── */}\n <AddressBar\n currentPath={currentPath}\n isEditing={isEditingPath}\n onToggleEdit={() => setIsEditingPath((v) => !v)}\n onNavigate={handleNavigate}\n />\n\n {/* ── Folder list ── */}\n <ScrollArea className=\"min-h-0 flex-1\">\n {isLoading && entries.length === 0 ? (\n <div className=\"space-y-0.5 p-2\">\n {Array.from({ length: 8 }).map((_, i) => (\n <div\n // eslint-disable-next-line react/no-array-index-key\n key={`skeleton-${i}`}\n className=\"flex items-center gap-3 rounded-lg px-3 py-2.5\"\n style={{ opacity: 1 - i * 0.1 }}\n >\n <div className=\"bg-muted h-4 w-4 animate-pulse rounded\" />\n <div\n className=\"bg-muted h-3.5 animate-pulse rounded\"\n style={{ width: `${40 + Math.random() * 35}%` }}\n />\n </div>\n ))}\n </div>\n ) : entries.length === 0 ? (\n <div className=\"flex flex-col items-center justify-center py-20\">\n <FolderOpen className=\"text-muted-foreground/25 mb-3 h-10 w-10\" />\n <p className=\"text-muted-foreground/60 text-sm\">Empty folder</p>\n </div>\n ) : (\n <div key={renderKey} className=\"p-2\">\n {entries.map((entry, i) => (\n <button\n key={entry.path}\n type=\"button\"\n onClick={() => handleNavigate(entry.path)}\n className=\"folder-row group flex w-full items-center gap-3 rounded-lg px-3 py-2.5 text-left transition-all hover:bg-[var(--color-primary)]/[0.06] active:scale-[0.997]\"\n style={{ animationDelay: `${i * 20}ms` }}\n >\n <Folder className=\"text-muted-foreground/50 group-hover:text-primary h-[18px] w-[18px] shrink-0 transition-colors\" />\n <span className=\"text-foreground min-w-0 flex-1 truncate text-[13px] font-medium\">\n {entry.name}\n </span>\n <ChevronRight className=\"text-muted-foreground/0 group-hover:text-muted-foreground/40 h-3.5 w-3.5 shrink-0 transition-all\" />\n </button>\n ))}\n </div>\n )}\n </ScrollArea>\n\n {/* ── Footer ── */}\n <div className=\"flex items-center gap-2 border-t px-4 py-3\">\n <p className=\"text-muted-foreground min-w-0 flex-1 truncate font-mono text-[11px] leading-none\">\n {currentPath || '\\u00A0'}\n </p>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={handleCancel}\n className=\"text-muted-foreground h-8 shrink-0 px-3 text-xs\"\n >\n Cancel\n </Button>\n <Button\n size=\"sm\"\n onClick={handleSelect}\n disabled={!currentPath || isLoading}\n className=\"h-8 shrink-0 px-5 text-xs font-medium\"\n >\n {isLoading ? <Loader2 className=\"mr-1.5 h-3 w-3 animate-spin\" /> : null}\n Select\n </Button>\n </div>\n </DialogContent>\n </Dialog>\n );\n}\n","/* __next_internal_action_entry_do_not_use__ [{\"00c390b90fd6412ce3a57f2883fc25c2fa93d1f16b\":\"pickFolder\"},\"src/presentation/web/app/actions/pick-folder.ts\",\"\"] */\"use turbopack no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_0=/*#__PURE__*/createServerReference(\"00c390b90fd6412ce3a57f2883fc25c2fa93d1f16b\",callServer,void 0,findSourceMapURL,\"pickFolder\");export{$$RSC_SERVER_ACTION_0 as pickFolder};","import { pickFolder as pickFolderAction } from '@/app/actions/pick-folder';\n\n/**\n * Opens a native OS folder picker dialog via server action.\n * Returns the selected absolute path, or null if the user cancelled.\n */\nexport async function pickFolder(): Promise<string | null> {\n const result = await pickFolderAction();\n\n if (result.error) {\n throw new Error(result.error);\n }\n\n return result.path;\n}\n"],"names":[],"mappings":"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","ignoreList":[0,2,3]}
1
+ {"version":3,"sources":["../../../../../../../node_modules/.pnpm/%40radix-ui%2Breact-scroll-area%401.2.10_%40types%2Breact-dom%4019.2.3_%40types%2Breact%4019.2.10__%40types_ba0b3d60c668755d5c2d6349c8477ebb/node_modules/%40radix-ui/react-scroll-area/dist/index.mjs","../../../../../../../src/presentation/web/components/ui/scroll-area.tsx","../../../../../../../node_modules/.pnpm/lucide-react%400.563.0_react%4019.2.4/node_modules/lucide-react/src/icons/folder.ts","../../../../../../../node_modules/.pnpm/lucide-react%400.563.0_react%4019.2.4/node_modules/lucide-react/src/icons/pencil.ts","../../../../../../../src/presentation/web/components/common/react-file-manager-dialog/react-file-manager-dialog.tsx","../../../../../../../src/presentation/web/app/actions/data%3A9d9bb0%20%3Ctext/javascript%3E","../../../../../../../src/presentation/web/components/common/add-repository-button/pick-folder.ts"],"sourcesContent":["\"use client\";\n\n// src/scroll-area.tsx\nimport * as React2 from \"react\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useDirection } from \"@radix-ui/react-direction\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nimport { clamp } from \"@radix-ui/number\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\n\n// src/use-state-machine.ts\nimport * as React from \"react\";\nfunction useStateMachine(initialState, machine) {\n return React.useReducer((state, event) => {\n const nextState = machine[state][event];\n return nextState ?? state;\n }, initialState);\n}\n\n// src/scroll-area.tsx\nimport { Fragment, jsx, jsxs } from \"react/jsx-runtime\";\nvar SCROLL_AREA_NAME = \"ScrollArea\";\nvar [createScrollAreaContext, createScrollAreaScope] = createContextScope(SCROLL_AREA_NAME);\nvar [ScrollAreaProvider, useScrollAreaContext] = createScrollAreaContext(SCROLL_AREA_NAME);\nvar ScrollArea = React2.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeScrollArea,\n type = \"hover\",\n dir,\n scrollHideDelay = 600,\n ...scrollAreaProps\n } = props;\n const [scrollArea, setScrollArea] = React2.useState(null);\n const [viewport, setViewport] = React2.useState(null);\n const [content, setContent] = React2.useState(null);\n const [scrollbarX, setScrollbarX] = React2.useState(null);\n const [scrollbarY, setScrollbarY] = React2.useState(null);\n const [cornerWidth, setCornerWidth] = React2.useState(0);\n const [cornerHeight, setCornerHeight] = React2.useState(0);\n const [scrollbarXEnabled, setScrollbarXEnabled] = React2.useState(false);\n const [scrollbarYEnabled, setScrollbarYEnabled] = React2.useState(false);\n const composedRefs = useComposedRefs(forwardedRef, (node) => setScrollArea(node));\n const direction = useDirection(dir);\n return /* @__PURE__ */ jsx(\n ScrollAreaProvider,\n {\n scope: __scopeScrollArea,\n type,\n dir: direction,\n scrollHideDelay,\n scrollArea,\n viewport,\n onViewportChange: setViewport,\n content,\n onContentChange: setContent,\n scrollbarX,\n onScrollbarXChange: setScrollbarX,\n scrollbarXEnabled,\n onScrollbarXEnabledChange: setScrollbarXEnabled,\n scrollbarY,\n onScrollbarYChange: setScrollbarY,\n scrollbarYEnabled,\n onScrollbarYEnabledChange: setScrollbarYEnabled,\n onCornerWidthChange: setCornerWidth,\n onCornerHeightChange: setCornerHeight,\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n dir: direction,\n ...scrollAreaProps,\n ref: composedRefs,\n style: {\n position: \"relative\",\n // Pass corner sizes as CSS vars to reduce re-renders of context consumers\n [\"--radix-scroll-area-corner-width\"]: cornerWidth + \"px\",\n [\"--radix-scroll-area-corner-height\"]: cornerHeight + \"px\",\n ...props.style\n }\n }\n )\n }\n );\n }\n);\nScrollArea.displayName = SCROLL_AREA_NAME;\nvar VIEWPORT_NAME = \"ScrollAreaViewport\";\nvar ScrollAreaViewport = React2.forwardRef(\n (props, forwardedRef) => {\n const { __scopeScrollArea, children, nonce, ...viewportProps } = props;\n const context = useScrollAreaContext(VIEWPORT_NAME, __scopeScrollArea);\n const ref = React2.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref, context.onViewportChange);\n return /* @__PURE__ */ jsxs(Fragment, { children: [\n /* @__PURE__ */ jsx(\n \"style\",\n {\n dangerouslySetInnerHTML: {\n __html: `[data-radix-scroll-area-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-scroll-area-viewport]::-webkit-scrollbar{display:none}`\n },\n nonce\n }\n ),\n /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"data-radix-scroll-area-viewport\": \"\",\n ...viewportProps,\n ref: composedRefs,\n style: {\n /**\n * We don't support `visible` because the intention is to have at least one scrollbar\n * if this component is used and `visible` will behave like `auto` in that case\n * https://developer.mozilla.org/en-US/docs/Web/CSS/overflow#description\n *\n * We don't handle `auto` because the intention is for the native implementation\n * to be hidden if using this component. We just want to ensure the node is scrollable\n * so could have used either `scroll` or `auto` here. We picked `scroll` to prevent\n * the browser from having to work out whether to render native scrollbars or not,\n * we tell it to with the intention of hiding them in CSS.\n */\n overflowX: context.scrollbarXEnabled ? \"scroll\" : \"hidden\",\n overflowY: context.scrollbarYEnabled ? \"scroll\" : \"hidden\",\n ...props.style\n },\n children: /* @__PURE__ */ jsx(\"div\", { ref: context.onContentChange, style: { minWidth: \"100%\", display: \"table\" }, children })\n }\n )\n ] });\n }\n);\nScrollAreaViewport.displayName = VIEWPORT_NAME;\nvar SCROLLBAR_NAME = \"ScrollAreaScrollbar\";\nvar ScrollAreaScrollbar = React2.forwardRef(\n (props, forwardedRef) => {\n const { forceMount, ...scrollbarProps } = props;\n const context = useScrollAreaContext(SCROLLBAR_NAME, props.__scopeScrollArea);\n const { onScrollbarXEnabledChange, onScrollbarYEnabledChange } = context;\n const isHorizontal = props.orientation === \"horizontal\";\n React2.useEffect(() => {\n isHorizontal ? onScrollbarXEnabledChange(true) : onScrollbarYEnabledChange(true);\n return () => {\n isHorizontal ? onScrollbarXEnabledChange(false) : onScrollbarYEnabledChange(false);\n };\n }, [isHorizontal, onScrollbarXEnabledChange, onScrollbarYEnabledChange]);\n return context.type === \"hover\" ? /* @__PURE__ */ jsx(ScrollAreaScrollbarHover, { ...scrollbarProps, ref: forwardedRef, forceMount }) : context.type === \"scroll\" ? /* @__PURE__ */ jsx(ScrollAreaScrollbarScroll, { ...scrollbarProps, ref: forwardedRef, forceMount }) : context.type === \"auto\" ? /* @__PURE__ */ jsx(ScrollAreaScrollbarAuto, { ...scrollbarProps, ref: forwardedRef, forceMount }) : context.type === \"always\" ? /* @__PURE__ */ jsx(ScrollAreaScrollbarVisible, { ...scrollbarProps, ref: forwardedRef }) : null;\n }\n);\nScrollAreaScrollbar.displayName = SCROLLBAR_NAME;\nvar ScrollAreaScrollbarHover = React2.forwardRef((props, forwardedRef) => {\n const { forceMount, ...scrollbarProps } = props;\n const context = useScrollAreaContext(SCROLLBAR_NAME, props.__scopeScrollArea);\n const [visible, setVisible] = React2.useState(false);\n React2.useEffect(() => {\n const scrollArea = context.scrollArea;\n let hideTimer = 0;\n if (scrollArea) {\n const handlePointerEnter = () => {\n window.clearTimeout(hideTimer);\n setVisible(true);\n };\n const handlePointerLeave = () => {\n hideTimer = window.setTimeout(() => setVisible(false), context.scrollHideDelay);\n };\n scrollArea.addEventListener(\"pointerenter\", handlePointerEnter);\n scrollArea.addEventListener(\"pointerleave\", handlePointerLeave);\n return () => {\n window.clearTimeout(hideTimer);\n scrollArea.removeEventListener(\"pointerenter\", handlePointerEnter);\n scrollArea.removeEventListener(\"pointerleave\", handlePointerLeave);\n };\n }\n }, [context.scrollArea, context.scrollHideDelay]);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || visible, children: /* @__PURE__ */ jsx(\n ScrollAreaScrollbarAuto,\n {\n \"data-state\": visible ? \"visible\" : \"hidden\",\n ...scrollbarProps,\n ref: forwardedRef\n }\n ) });\n});\nvar ScrollAreaScrollbarScroll = React2.forwardRef((props, forwardedRef) => {\n const { forceMount, ...scrollbarProps } = props;\n const context = useScrollAreaContext(SCROLLBAR_NAME, props.__scopeScrollArea);\n const isHorizontal = props.orientation === \"horizontal\";\n const debounceScrollEnd = useDebounceCallback(() => send(\"SCROLL_END\"), 100);\n const [state, send] = useStateMachine(\"hidden\", {\n hidden: {\n SCROLL: \"scrolling\"\n },\n scrolling: {\n SCROLL_END: \"idle\",\n POINTER_ENTER: \"interacting\"\n },\n interacting: {\n SCROLL: \"interacting\",\n POINTER_LEAVE: \"idle\"\n },\n idle: {\n HIDE: \"hidden\",\n SCROLL: \"scrolling\",\n POINTER_ENTER: \"interacting\"\n }\n });\n React2.useEffect(() => {\n if (state === \"idle\") {\n const hideTimer = window.setTimeout(() => send(\"HIDE\"), context.scrollHideDelay);\n return () => window.clearTimeout(hideTimer);\n }\n }, [state, context.scrollHideDelay, send]);\n React2.useEffect(() => {\n const viewport = context.viewport;\n const scrollDirection = isHorizontal ? \"scrollLeft\" : \"scrollTop\";\n if (viewport) {\n let prevScrollPos = viewport[scrollDirection];\n const handleScroll = () => {\n const scrollPos = viewport[scrollDirection];\n const hasScrollInDirectionChanged = prevScrollPos !== scrollPos;\n if (hasScrollInDirectionChanged) {\n send(\"SCROLL\");\n debounceScrollEnd();\n }\n prevScrollPos = scrollPos;\n };\n viewport.addEventListener(\"scroll\", handleScroll);\n return () => viewport.removeEventListener(\"scroll\", handleScroll);\n }\n }, [context.viewport, isHorizontal, send, debounceScrollEnd]);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || state !== \"hidden\", children: /* @__PURE__ */ jsx(\n ScrollAreaScrollbarVisible,\n {\n \"data-state\": state === \"hidden\" ? \"hidden\" : \"visible\",\n ...scrollbarProps,\n ref: forwardedRef,\n onPointerEnter: composeEventHandlers(props.onPointerEnter, () => send(\"POINTER_ENTER\")),\n onPointerLeave: composeEventHandlers(props.onPointerLeave, () => send(\"POINTER_LEAVE\"))\n }\n ) });\n});\nvar ScrollAreaScrollbarAuto = React2.forwardRef((props, forwardedRef) => {\n const context = useScrollAreaContext(SCROLLBAR_NAME, props.__scopeScrollArea);\n const { forceMount, ...scrollbarProps } = props;\n const [visible, setVisible] = React2.useState(false);\n const isHorizontal = props.orientation === \"horizontal\";\n const handleResize = useDebounceCallback(() => {\n if (context.viewport) {\n const isOverflowX = context.viewport.offsetWidth < context.viewport.scrollWidth;\n const isOverflowY = context.viewport.offsetHeight < context.viewport.scrollHeight;\n setVisible(isHorizontal ? isOverflowX : isOverflowY);\n }\n }, 10);\n useResizeObserver(context.viewport, handleResize);\n useResizeObserver(context.content, handleResize);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || visible, children: /* @__PURE__ */ jsx(\n ScrollAreaScrollbarVisible,\n {\n \"data-state\": visible ? \"visible\" : \"hidden\",\n ...scrollbarProps,\n ref: forwardedRef\n }\n ) });\n});\nvar ScrollAreaScrollbarVisible = React2.forwardRef((props, forwardedRef) => {\n const { orientation = \"vertical\", ...scrollbarProps } = props;\n const context = useScrollAreaContext(SCROLLBAR_NAME, props.__scopeScrollArea);\n const thumbRef = React2.useRef(null);\n const pointerOffsetRef = React2.useRef(0);\n const [sizes, setSizes] = React2.useState({\n content: 0,\n viewport: 0,\n scrollbar: { size: 0, paddingStart: 0, paddingEnd: 0 }\n });\n const thumbRatio = getThumbRatio(sizes.viewport, sizes.content);\n const commonProps = {\n ...scrollbarProps,\n sizes,\n onSizesChange: setSizes,\n hasThumb: Boolean(thumbRatio > 0 && thumbRatio < 1),\n onThumbChange: (thumb) => thumbRef.current = thumb,\n onThumbPointerUp: () => pointerOffsetRef.current = 0,\n onThumbPointerDown: (pointerPos) => pointerOffsetRef.current = pointerPos\n };\n function getScrollPosition(pointerPos, dir) {\n return getScrollPositionFromPointer(pointerPos, pointerOffsetRef.current, sizes, dir);\n }\n if (orientation === \"horizontal\") {\n return /* @__PURE__ */ jsx(\n ScrollAreaScrollbarX,\n {\n ...commonProps,\n ref: forwardedRef,\n onThumbPositionChange: () => {\n if (context.viewport && thumbRef.current) {\n const scrollPos = context.viewport.scrollLeft;\n const offset = getThumbOffsetFromScroll(scrollPos, sizes, context.dir);\n thumbRef.current.style.transform = `translate3d(${offset}px, 0, 0)`;\n }\n },\n onWheelScroll: (scrollPos) => {\n if (context.viewport) context.viewport.scrollLeft = scrollPos;\n },\n onDragScroll: (pointerPos) => {\n if (context.viewport) {\n context.viewport.scrollLeft = getScrollPosition(pointerPos, context.dir);\n }\n }\n }\n );\n }\n if (orientation === \"vertical\") {\n return /* @__PURE__ */ jsx(\n ScrollAreaScrollbarY,\n {\n ...commonProps,\n ref: forwardedRef,\n onThumbPositionChange: () => {\n if (context.viewport && thumbRef.current) {\n const scrollPos = context.viewport.scrollTop;\n const offset = getThumbOffsetFromScroll(scrollPos, sizes);\n thumbRef.current.style.transform = `translate3d(0, ${offset}px, 0)`;\n }\n },\n onWheelScroll: (scrollPos) => {\n if (context.viewport) context.viewport.scrollTop = scrollPos;\n },\n onDragScroll: (pointerPos) => {\n if (context.viewport) context.viewport.scrollTop = getScrollPosition(pointerPos);\n }\n }\n );\n }\n return null;\n});\nvar ScrollAreaScrollbarX = React2.forwardRef((props, forwardedRef) => {\n const { sizes, onSizesChange, ...scrollbarProps } = props;\n const context = useScrollAreaContext(SCROLLBAR_NAME, props.__scopeScrollArea);\n const [computedStyle, setComputedStyle] = React2.useState();\n const ref = React2.useRef(null);\n const composeRefs = useComposedRefs(forwardedRef, ref, context.onScrollbarXChange);\n React2.useEffect(() => {\n if (ref.current) setComputedStyle(getComputedStyle(ref.current));\n }, [ref]);\n return /* @__PURE__ */ jsx(\n ScrollAreaScrollbarImpl,\n {\n \"data-orientation\": \"horizontal\",\n ...scrollbarProps,\n ref: composeRefs,\n sizes,\n style: {\n bottom: 0,\n left: context.dir === \"rtl\" ? \"var(--radix-scroll-area-corner-width)\" : 0,\n right: context.dir === \"ltr\" ? \"var(--radix-scroll-area-corner-width)\" : 0,\n [\"--radix-scroll-area-thumb-width\"]: getThumbSize(sizes) + \"px\",\n ...props.style\n },\n onThumbPointerDown: (pointerPos) => props.onThumbPointerDown(pointerPos.x),\n onDragScroll: (pointerPos) => props.onDragScroll(pointerPos.x),\n onWheelScroll: (event, maxScrollPos) => {\n if (context.viewport) {\n const scrollPos = context.viewport.scrollLeft + event.deltaX;\n props.onWheelScroll(scrollPos);\n if (isScrollingWithinScrollbarBounds(scrollPos, maxScrollPos)) {\n event.preventDefault();\n }\n }\n },\n onResize: () => {\n if (ref.current && context.viewport && computedStyle) {\n onSizesChange({\n content: context.viewport.scrollWidth,\n viewport: context.viewport.offsetWidth,\n scrollbar: {\n size: ref.current.clientWidth,\n paddingStart: toInt(computedStyle.paddingLeft),\n paddingEnd: toInt(computedStyle.paddingRight)\n }\n });\n }\n }\n }\n );\n});\nvar ScrollAreaScrollbarY = React2.forwardRef((props, forwardedRef) => {\n const { sizes, onSizesChange, ...scrollbarProps } = props;\n const context = useScrollAreaContext(SCROLLBAR_NAME, props.__scopeScrollArea);\n const [computedStyle, setComputedStyle] = React2.useState();\n const ref = React2.useRef(null);\n const composeRefs = useComposedRefs(forwardedRef, ref, context.onScrollbarYChange);\n React2.useEffect(() => {\n if (ref.current) setComputedStyle(getComputedStyle(ref.current));\n }, [ref]);\n return /* @__PURE__ */ jsx(\n ScrollAreaScrollbarImpl,\n {\n \"data-orientation\": \"vertical\",\n ...scrollbarProps,\n ref: composeRefs,\n sizes,\n style: {\n top: 0,\n right: context.dir === \"ltr\" ? 0 : void 0,\n left: context.dir === \"rtl\" ? 0 : void 0,\n bottom: \"var(--radix-scroll-area-corner-height)\",\n [\"--radix-scroll-area-thumb-height\"]: getThumbSize(sizes) + \"px\",\n ...props.style\n },\n onThumbPointerDown: (pointerPos) => props.onThumbPointerDown(pointerPos.y),\n onDragScroll: (pointerPos) => props.onDragScroll(pointerPos.y),\n onWheelScroll: (event, maxScrollPos) => {\n if (context.viewport) {\n const scrollPos = context.viewport.scrollTop + event.deltaY;\n props.onWheelScroll(scrollPos);\n if (isScrollingWithinScrollbarBounds(scrollPos, maxScrollPos)) {\n event.preventDefault();\n }\n }\n },\n onResize: () => {\n if (ref.current && context.viewport && computedStyle) {\n onSizesChange({\n content: context.viewport.scrollHeight,\n viewport: context.viewport.offsetHeight,\n scrollbar: {\n size: ref.current.clientHeight,\n paddingStart: toInt(computedStyle.paddingTop),\n paddingEnd: toInt(computedStyle.paddingBottom)\n }\n });\n }\n }\n }\n );\n});\nvar [ScrollbarProvider, useScrollbarContext] = createScrollAreaContext(SCROLLBAR_NAME);\nvar ScrollAreaScrollbarImpl = React2.forwardRef((props, forwardedRef) => {\n const {\n __scopeScrollArea,\n sizes,\n hasThumb,\n onThumbChange,\n onThumbPointerUp,\n onThumbPointerDown,\n onThumbPositionChange,\n onDragScroll,\n onWheelScroll,\n onResize,\n ...scrollbarProps\n } = props;\n const context = useScrollAreaContext(SCROLLBAR_NAME, __scopeScrollArea);\n const [scrollbar, setScrollbar] = React2.useState(null);\n const composeRefs = useComposedRefs(forwardedRef, (node) => setScrollbar(node));\n const rectRef = React2.useRef(null);\n const prevWebkitUserSelectRef = React2.useRef(\"\");\n const viewport = context.viewport;\n const maxScrollPos = sizes.content - sizes.viewport;\n const handleWheelScroll = useCallbackRef(onWheelScroll);\n const handleThumbPositionChange = useCallbackRef(onThumbPositionChange);\n const handleResize = useDebounceCallback(onResize, 10);\n function handleDragScroll(event) {\n if (rectRef.current) {\n const x = event.clientX - rectRef.current.left;\n const y = event.clientY - rectRef.current.top;\n onDragScroll({ x, y });\n }\n }\n React2.useEffect(() => {\n const handleWheel = (event) => {\n const element = event.target;\n const isScrollbarWheel = scrollbar?.contains(element);\n if (isScrollbarWheel) handleWheelScroll(event, maxScrollPos);\n };\n document.addEventListener(\"wheel\", handleWheel, { passive: false });\n return () => document.removeEventListener(\"wheel\", handleWheel, { passive: false });\n }, [viewport, scrollbar, maxScrollPos, handleWheelScroll]);\n React2.useEffect(handleThumbPositionChange, [sizes, handleThumbPositionChange]);\n useResizeObserver(scrollbar, handleResize);\n useResizeObserver(context.content, handleResize);\n return /* @__PURE__ */ jsx(\n ScrollbarProvider,\n {\n scope: __scopeScrollArea,\n scrollbar,\n hasThumb,\n onThumbChange: useCallbackRef(onThumbChange),\n onThumbPointerUp: useCallbackRef(onThumbPointerUp),\n onThumbPositionChange: handleThumbPositionChange,\n onThumbPointerDown: useCallbackRef(onThumbPointerDown),\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n ...scrollbarProps,\n ref: composeRefs,\n style: { position: \"absolute\", ...scrollbarProps.style },\n onPointerDown: composeEventHandlers(props.onPointerDown, (event) => {\n const mainPointer = 0;\n if (event.button === mainPointer) {\n const element = event.target;\n element.setPointerCapture(event.pointerId);\n rectRef.current = scrollbar.getBoundingClientRect();\n prevWebkitUserSelectRef.current = document.body.style.webkitUserSelect;\n document.body.style.webkitUserSelect = \"none\";\n if (context.viewport) context.viewport.style.scrollBehavior = \"auto\";\n handleDragScroll(event);\n }\n }),\n onPointerMove: composeEventHandlers(props.onPointerMove, handleDragScroll),\n onPointerUp: composeEventHandlers(props.onPointerUp, (event) => {\n const element = event.target;\n if (element.hasPointerCapture(event.pointerId)) {\n element.releasePointerCapture(event.pointerId);\n }\n document.body.style.webkitUserSelect = prevWebkitUserSelectRef.current;\n if (context.viewport) context.viewport.style.scrollBehavior = \"\";\n rectRef.current = null;\n })\n }\n )\n }\n );\n});\nvar THUMB_NAME = \"ScrollAreaThumb\";\nvar ScrollAreaThumb = React2.forwardRef(\n (props, forwardedRef) => {\n const { forceMount, ...thumbProps } = props;\n const scrollbarContext = useScrollbarContext(THUMB_NAME, props.__scopeScrollArea);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || scrollbarContext.hasThumb, children: /* @__PURE__ */ jsx(ScrollAreaThumbImpl, { ref: forwardedRef, ...thumbProps }) });\n }\n);\nvar ScrollAreaThumbImpl = React2.forwardRef(\n (props, forwardedRef) => {\n const { __scopeScrollArea, style, ...thumbProps } = props;\n const scrollAreaContext = useScrollAreaContext(THUMB_NAME, __scopeScrollArea);\n const scrollbarContext = useScrollbarContext(THUMB_NAME, __scopeScrollArea);\n const { onThumbPositionChange } = scrollbarContext;\n const composedRef = useComposedRefs(\n forwardedRef,\n (node) => scrollbarContext.onThumbChange(node)\n );\n const removeUnlinkedScrollListenerRef = React2.useRef(void 0);\n const debounceScrollEnd = useDebounceCallback(() => {\n if (removeUnlinkedScrollListenerRef.current) {\n removeUnlinkedScrollListenerRef.current();\n removeUnlinkedScrollListenerRef.current = void 0;\n }\n }, 100);\n React2.useEffect(() => {\n const viewport = scrollAreaContext.viewport;\n if (viewport) {\n const handleScroll = () => {\n debounceScrollEnd();\n if (!removeUnlinkedScrollListenerRef.current) {\n const listener = addUnlinkedScrollListener(viewport, onThumbPositionChange);\n removeUnlinkedScrollListenerRef.current = listener;\n onThumbPositionChange();\n }\n };\n onThumbPositionChange();\n viewport.addEventListener(\"scroll\", handleScroll);\n return () => viewport.removeEventListener(\"scroll\", handleScroll);\n }\n }, [scrollAreaContext.viewport, debounceScrollEnd, onThumbPositionChange]);\n return /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"data-state\": scrollbarContext.hasThumb ? \"visible\" : \"hidden\",\n ...thumbProps,\n ref: composedRef,\n style: {\n width: \"var(--radix-scroll-area-thumb-width)\",\n height: \"var(--radix-scroll-area-thumb-height)\",\n ...style\n },\n onPointerDownCapture: composeEventHandlers(props.onPointerDownCapture, (event) => {\n const thumb = event.target;\n const thumbRect = thumb.getBoundingClientRect();\n const x = event.clientX - thumbRect.left;\n const y = event.clientY - thumbRect.top;\n scrollbarContext.onThumbPointerDown({ x, y });\n }),\n onPointerUp: composeEventHandlers(props.onPointerUp, scrollbarContext.onThumbPointerUp)\n }\n );\n }\n);\nScrollAreaThumb.displayName = THUMB_NAME;\nvar CORNER_NAME = \"ScrollAreaCorner\";\nvar ScrollAreaCorner = React2.forwardRef(\n (props, forwardedRef) => {\n const context = useScrollAreaContext(CORNER_NAME, props.__scopeScrollArea);\n const hasBothScrollbarsVisible = Boolean(context.scrollbarX && context.scrollbarY);\n const hasCorner = context.type !== \"scroll\" && hasBothScrollbarsVisible;\n return hasCorner ? /* @__PURE__ */ jsx(ScrollAreaCornerImpl, { ...props, ref: forwardedRef }) : null;\n }\n);\nScrollAreaCorner.displayName = CORNER_NAME;\nvar ScrollAreaCornerImpl = React2.forwardRef((props, forwardedRef) => {\n const { __scopeScrollArea, ...cornerProps } = props;\n const context = useScrollAreaContext(CORNER_NAME, __scopeScrollArea);\n const [width, setWidth] = React2.useState(0);\n const [height, setHeight] = React2.useState(0);\n const hasSize = Boolean(width && height);\n useResizeObserver(context.scrollbarX, () => {\n const height2 = context.scrollbarX?.offsetHeight || 0;\n context.onCornerHeightChange(height2);\n setHeight(height2);\n });\n useResizeObserver(context.scrollbarY, () => {\n const width2 = context.scrollbarY?.offsetWidth || 0;\n context.onCornerWidthChange(width2);\n setWidth(width2);\n });\n return hasSize ? /* @__PURE__ */ jsx(\n Primitive.div,\n {\n ...cornerProps,\n ref: forwardedRef,\n style: {\n width,\n height,\n position: \"absolute\",\n right: context.dir === \"ltr\" ? 0 : void 0,\n left: context.dir === \"rtl\" ? 0 : void 0,\n bottom: 0,\n ...props.style\n }\n }\n ) : null;\n});\nfunction toInt(value) {\n return value ? parseInt(value, 10) : 0;\n}\nfunction getThumbRatio(viewportSize, contentSize) {\n const ratio = viewportSize / contentSize;\n return isNaN(ratio) ? 0 : ratio;\n}\nfunction getThumbSize(sizes) {\n const ratio = getThumbRatio(sizes.viewport, sizes.content);\n const scrollbarPadding = sizes.scrollbar.paddingStart + sizes.scrollbar.paddingEnd;\n const thumbSize = (sizes.scrollbar.size - scrollbarPadding) * ratio;\n return Math.max(thumbSize, 18);\n}\nfunction getScrollPositionFromPointer(pointerPos, pointerOffset, sizes, dir = \"ltr\") {\n const thumbSizePx = getThumbSize(sizes);\n const thumbCenter = thumbSizePx / 2;\n const offset = pointerOffset || thumbCenter;\n const thumbOffsetFromEnd = thumbSizePx - offset;\n const minPointerPos = sizes.scrollbar.paddingStart + offset;\n const maxPointerPos = sizes.scrollbar.size - sizes.scrollbar.paddingEnd - thumbOffsetFromEnd;\n const maxScrollPos = sizes.content - sizes.viewport;\n const scrollRange = dir === \"ltr\" ? [0, maxScrollPos] : [maxScrollPos * -1, 0];\n const interpolate = linearScale([minPointerPos, maxPointerPos], scrollRange);\n return interpolate(pointerPos);\n}\nfunction getThumbOffsetFromScroll(scrollPos, sizes, dir = \"ltr\") {\n const thumbSizePx = getThumbSize(sizes);\n const scrollbarPadding = sizes.scrollbar.paddingStart + sizes.scrollbar.paddingEnd;\n const scrollbar = sizes.scrollbar.size - scrollbarPadding;\n const maxScrollPos = sizes.content - sizes.viewport;\n const maxThumbPos = scrollbar - thumbSizePx;\n const scrollClampRange = dir === \"ltr\" ? [0, maxScrollPos] : [maxScrollPos * -1, 0];\n const scrollWithoutMomentum = clamp(scrollPos, scrollClampRange);\n const interpolate = linearScale([0, maxScrollPos], [0, maxThumbPos]);\n return interpolate(scrollWithoutMomentum);\n}\nfunction linearScale(input, output) {\n return (value) => {\n if (input[0] === input[1] || output[0] === output[1]) return output[0];\n const ratio = (output[1] - output[0]) / (input[1] - input[0]);\n return output[0] + ratio * (value - input[0]);\n };\n}\nfunction isScrollingWithinScrollbarBounds(scrollPos, maxScrollPos) {\n return scrollPos > 0 && scrollPos < maxScrollPos;\n}\nvar addUnlinkedScrollListener = (node, handler = () => {\n}) => {\n let prevPosition = { left: node.scrollLeft, top: node.scrollTop };\n let rAF = 0;\n (function loop() {\n const position = { left: node.scrollLeft, top: node.scrollTop };\n const isHorizontalScroll = prevPosition.left !== position.left;\n const isVerticalScroll = prevPosition.top !== position.top;\n if (isHorizontalScroll || isVerticalScroll) handler();\n prevPosition = position;\n rAF = window.requestAnimationFrame(loop);\n })();\n return () => window.cancelAnimationFrame(rAF);\n};\nfunction useDebounceCallback(callback, delay) {\n const handleCallback = useCallbackRef(callback);\n const debounceTimerRef = React2.useRef(0);\n React2.useEffect(() => () => window.clearTimeout(debounceTimerRef.current), []);\n return React2.useCallback(() => {\n window.clearTimeout(debounceTimerRef.current);\n debounceTimerRef.current = window.setTimeout(handleCallback, delay);\n }, [handleCallback, delay]);\n}\nfunction useResizeObserver(element, onResize) {\n const handleResize = useCallbackRef(onResize);\n useLayoutEffect(() => {\n let rAF = 0;\n if (element) {\n const resizeObserver = new ResizeObserver(() => {\n cancelAnimationFrame(rAF);\n rAF = window.requestAnimationFrame(handleResize);\n });\n resizeObserver.observe(element);\n return () => {\n window.cancelAnimationFrame(rAF);\n resizeObserver.unobserve(element);\n };\n }\n }, [element, handleResize]);\n}\nvar Root = ScrollArea;\nvar Viewport = ScrollAreaViewport;\nvar Scrollbar = ScrollAreaScrollbar;\nvar Thumb = ScrollAreaThumb;\nvar Corner = ScrollAreaCorner;\nexport {\n Corner,\n Root,\n ScrollArea,\n ScrollAreaCorner,\n ScrollAreaScrollbar,\n ScrollAreaThumb,\n ScrollAreaViewport,\n Scrollbar,\n Thumb,\n Viewport,\n createScrollAreaScope\n};\n//# sourceMappingURL=index.mjs.map\n","'use client';\n\nimport * as React from 'react';\nimport { ScrollArea as ScrollAreaPrimitive } from 'radix-ui';\n\nimport { cn } from '@/lib/utils';\n\nfunction ScrollArea({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof ScrollAreaPrimitive.Root>) {\n return (\n <ScrollAreaPrimitive.Root\n data-slot=\"scroll-area\"\n className={cn('relative', className)}\n {...props}\n >\n <ScrollAreaPrimitive.Viewport\n data-slot=\"scroll-area-viewport\"\n className=\"focus-visible:ring-ring/50 size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:outline-1 [&>div]:block!\"\n >\n {children}\n </ScrollAreaPrimitive.Viewport>\n <ScrollBar />\n <ScrollAreaPrimitive.Corner />\n </ScrollAreaPrimitive.Root>\n );\n}\n\nfunction ScrollBar({\n className,\n orientation = 'vertical',\n ...props\n}: React.ComponentProps<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>) {\n return (\n <ScrollAreaPrimitive.ScrollAreaScrollbar\n data-slot=\"scroll-area-scrollbar\"\n orientation={orientation}\n className={cn(\n 'flex touch-none p-px transition-colors select-none',\n orientation === 'vertical' && 'h-full w-2.5 border-s border-s-transparent',\n orientation === 'horizontal' && 'h-2.5 flex-col border-t border-t-transparent',\n className\n )}\n {...props}\n >\n <ScrollAreaPrimitive.ScrollAreaThumb\n data-slot=\"scroll-area-thumb\"\n className=\"bg-border relative flex-1 rounded-full\"\n />\n </ScrollAreaPrimitive.ScrollAreaScrollbar>\n );\n}\n\nexport { ScrollArea, ScrollBar };\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z',\n key: '1kt360',\n },\n ],\n];\n\n/**\n * @component @name Folder\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMjAgMjBhMiAyIDAgMCAwIDItMlY4YTIgMiAwIDAgMC0yLTJoLTcuOWEyIDIgMCAwIDEtMS42OS0uOUw5LjYgMy45QTIgMiAwIDAgMCA3LjkzIDNINGEyIDIgMCAwIDAtMiAydjEzYTIgMiAwIDAgMCAyIDJaIiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/folder\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 Folder = createLucideIcon('folder', __iconNode);\n\nexport default Folder;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z',\n key: '1a8usu',\n },\n ],\n ['path', { d: 'm15 5 4 4', key: '1mk7zo' }],\n];\n\n/**\n * @component @name Pencil\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMjEuMTc0IDYuODEyYTEgMSAwIDAgMC0zLjk4Ni0zLjk4N0wzLjg0MiAxNi4xNzRhMiAyIDAgMCAwLS41LjgzbC0xLjMyMSA0LjM1MmEuNS41IDAgMCAwIC42MjMuNjIybDQuMzUzLTEuMzJhMiAyIDAgMCAwIC44My0uNDk3eiIgLz4KICA8cGF0aCBkPSJtMTUgNSA0IDQiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/pencil\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 Pencil = createLucideIcon('pencil', __iconNode);\n\nexport default Pencil;\n","'use client';\n\nimport { useCallback, useEffect, useRef, useState } from 'react';\nimport { ChevronRight, Folder, FolderOpen, Loader2, Pencil } from 'lucide-react';\nimport { toast } from 'sonner';\nimport { Dialog, DialogContent, DialogDescription, DialogTitle } from '@/components/ui/dialog';\nimport { Button } from '@/components/ui/button';\nimport { ScrollArea } from '@/components/ui/scroll-area';\nimport type {\n DirectoryEntry,\n DirectoryListResponse,\n ReactFileManagerDialogProps,\n} from './react-file-manager-dialog-config';\n\nasync function fetchDirectory(dirPath?: string): Promise<DirectoryListResponse> {\n const params = new URLSearchParams();\n if (dirPath) {\n params.set('path', dirPath);\n }\n const res = await fetch(`/api/directory/list?${params.toString()}`);\n if (!res.ok) {\n const body = await res.json().catch(() => ({ error: 'Failed to load directory' }));\n throw new Error(body.error ?? 'Failed to load directory');\n }\n return res.json();\n}\n\nfunction parseBreadcrumbs(currentPath: string) {\n if (!currentPath) return [];\n const isWindows = /^[a-zA-Z]:/.test(currentPath);\n const separator = isWindows ? '\\\\' : '/';\n const parts = currentPath.split(/[\\\\/]/).filter(Boolean);\n\n const crumbs: { label: string; path: string }[] = [];\n for (let i = 0; i < parts.length; i++) {\n const path = isWindows\n ? parts.slice(0, i + 1).join(separator)\n : separator + parts.slice(0, i + 1).join(separator);\n crumbs.push({ label: parts[i], path });\n }\n return crumbs;\n}\n\nconst MAX_VISIBLE_CRUMBS = 3;\n\nfunction AddressBar({\n currentPath,\n isEditing,\n onToggleEdit,\n onNavigate,\n}: {\n currentPath: string;\n isEditing: boolean;\n onToggleEdit: () => void;\n onNavigate: (path: string) => void;\n}) {\n const inputRef = useRef<HTMLInputElement>(null);\n const [inputValue, setInputValue] = useState(currentPath);\n\n useEffect(() => {\n setInputValue(currentPath);\n }, [currentPath]);\n\n useEffect(() => {\n if (isEditing && inputRef.current) {\n inputRef.current.focus();\n inputRef.current.select();\n }\n }, [isEditing]);\n\n function handleSubmit() {\n const trimmed = inputValue.trim();\n if (trimmed) {\n onNavigate(trimmed);\n }\n }\n\n function closeEdit() {\n setInputValue(currentPath);\n onToggleEdit();\n }\n\n const breadcrumbs = parseBreadcrumbs(currentPath);\n const needsCollapse = breadcrumbs.length > MAX_VISIBLE_CRUMBS;\n const visibleCrumbs = needsCollapse ? breadcrumbs.slice(-MAX_VISIBLE_CRUMBS) : breadcrumbs;\n\n return (\n <div className=\"border-b px-4 py-3\">\n {/* Title */}\n <h2 className=\"text-foreground mb-2.5 text-sm font-semibold tracking-[-0.01em]\">\n Select Folder\n </h2>\n\n {/* Address bar */}\n {isEditing ? (\n <input\n ref={inputRef}\n type=\"text\"\n value={inputValue}\n onChange={(e) => setInputValue(e.target.value)}\n onKeyDown={(e) => {\n if (e.key === 'Enter') {\n e.preventDefault();\n handleSubmit();\n }\n if (e.key === 'Escape') {\n e.preventDefault();\n closeEdit();\n }\n }}\n onBlur={closeEdit}\n className=\"bg-muted/60 border-border focus:ring-ring/20 focus:border-ring w-full rounded-lg border px-3 py-2 font-mono text-xs transition-all outline-none focus:ring-2\"\n placeholder=\"Type a path and press Enter...\"\n spellCheck={false}\n autoComplete=\"off\"\n />\n ) : (\n <div className=\"bg-muted/40 flex items-center gap-1 rounded-lg px-2.5 py-2\">\n {/* Root */}\n <button\n type=\"button\"\n onClick={() => onNavigate('/')}\n className=\"text-muted-foreground hover:text-foreground hover:bg-background shrink-0 rounded px-1.5 py-0.5 font-mono text-xs transition-colors\"\n >\n /\n </button>\n\n {/* Collapsed middle */}\n {needsCollapse ? (\n <>\n <ChevronRight className=\"text-muted-foreground/30 h-3 w-3 shrink-0\" />\n <span className=\"text-muted-foreground/40 font-mono text-xs\">...</span>\n </>\n ) : null}\n\n {/* Visible crumbs */}\n {visibleCrumbs.map((crumb, i) => {\n const isLast = i === visibleCrumbs.length - 1;\n return (\n <span key={crumb.path} className=\"flex shrink-0 items-center gap-1\">\n <ChevronRight className=\"text-muted-foreground/30 h-3 w-3\" />\n {isLast ? (\n <span className=\"bg-primary/10 text-primary rounded px-2 py-0.5 font-mono text-xs font-medium\">\n {crumb.label}\n </span>\n ) : (\n <button\n type=\"button\"\n onClick={() => onNavigate(crumb.path)}\n className=\"text-muted-foreground hover:text-foreground hover:bg-background rounded px-1.5 py-0.5 font-mono text-xs transition-colors\"\n >\n {crumb.label}\n </button>\n )}\n </span>\n );\n })}\n\n {/* Edit path button — inside the path row */}\n <div className=\"flex-1\" />\n <button\n type=\"button\"\n onClick={onToggleEdit}\n className=\"text-muted-foreground/40 hover:text-foreground hover:bg-background shrink-0 rounded p-1 transition-colors\"\n aria-label=\"Edit path\"\n >\n <Pencil className=\"h-3 w-3\" />\n </button>\n </div>\n )}\n </div>\n );\n}\n\nexport function ReactFileManagerDialog({\n open,\n onOpenChange,\n onSelect,\n initialPath,\n}: ReactFileManagerDialogProps) {\n const [entries, setEntries] = useState<DirectoryEntry[]>([]);\n const [currentPath, setCurrentPath] = useState('');\n const [isLoading, setIsLoading] = useState(false);\n const [isEditingPath, setIsEditingPath] = useState(false);\n const hasLoadedRef = useRef(false);\n const [renderKey, setRenderKey] = useState(0);\n\n const loadDirectory = useCallback(async (dirPath?: string) => {\n setIsLoading(true);\n setIsEditingPath(false);\n try {\n const data = await fetchDirectory(dirPath);\n setEntries(data.entries);\n setCurrentPath(data.currentPath);\n setRenderKey((k) => k + 1);\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to load directory';\n toast.error(message);\n } finally {\n setIsLoading(false);\n }\n }, []);\n\n useEffect(() => {\n if (open && !hasLoadedRef.current) {\n hasLoadedRef.current = true;\n loadDirectory(initialPath);\n }\n if (!open) {\n hasLoadedRef.current = false;\n setIsEditingPath(false);\n }\n }, [open, initialPath, loadDirectory]);\n\n function handleNavigate(path: string) {\n loadDirectory(path);\n }\n\n function handleSelect() {\n if (currentPath) {\n onSelect(currentPath);\n onOpenChange(false);\n }\n }\n\n function handleCancel() {\n onSelect(null);\n onOpenChange(false);\n }\n\n return (\n <Dialog\n open={open}\n onOpenChange={(isOpen) => {\n if (!isOpen) {\n handleCancel();\n }\n }}\n >\n <DialogContent\n className=\"flex h-[min(520px,85dvh)] w-full max-w-[460px] flex-col gap-0 overflow-hidden p-0\"\n onCloseAutoFocus={(e) => e.preventDefault()}\n >\n <DialogTitle className=\"sr-only\">Select Folder</DialogTitle>\n <DialogDescription className=\"sr-only\">\n Navigate to a folder and select it\n </DialogDescription>\n\n {/* ── Header with address bar ── */}\n <AddressBar\n currentPath={currentPath}\n isEditing={isEditingPath}\n onToggleEdit={() => setIsEditingPath((v) => !v)}\n onNavigate={handleNavigate}\n />\n\n {/* ── Folder list ── */}\n <ScrollArea className=\"min-h-0 flex-1\">\n {isLoading && entries.length === 0 ? (\n <div className=\"space-y-0.5 p-2\">\n {Array.from({ length: 8 }).map((_, i) => (\n <div\n // eslint-disable-next-line react/no-array-index-key\n key={`skeleton-${i}`}\n className=\"flex items-center gap-3 rounded-lg px-3 py-2.5\"\n style={{ opacity: 1 - i * 0.1 }}\n >\n <div className=\"bg-muted h-4 w-4 animate-pulse rounded\" />\n <div\n className=\"bg-muted h-3.5 animate-pulse rounded\"\n style={{ width: `${40 + Math.random() * 35}%` }}\n />\n </div>\n ))}\n </div>\n ) : entries.length === 0 ? (\n <div className=\"flex flex-col items-center justify-center py-20\">\n <FolderOpen className=\"text-muted-foreground/25 mb-3 h-10 w-10\" />\n <p className=\"text-muted-foreground/60 text-sm\">Empty folder</p>\n </div>\n ) : (\n <div key={renderKey} className=\"p-2\">\n {entries.map((entry, i) => (\n <button\n key={entry.path}\n type=\"button\"\n onClick={() => handleNavigate(entry.path)}\n className=\"folder-row group flex w-full items-center gap-3 rounded-lg px-3 py-2.5 text-left transition-all hover:bg-[var(--color-primary)]/[0.06] active:scale-[0.997]\"\n style={{ animationDelay: `${i * 20}ms` }}\n >\n <Folder className=\"text-muted-foreground/50 group-hover:text-primary h-[18px] w-[18px] shrink-0 transition-colors\" />\n <span className=\"text-foreground min-w-0 flex-1 truncate text-[13px] font-medium\">\n {entry.name}\n </span>\n <ChevronRight className=\"text-muted-foreground/0 group-hover:text-muted-foreground/40 h-3.5 w-3.5 shrink-0 transition-all\" />\n </button>\n ))}\n </div>\n )}\n </ScrollArea>\n\n {/* ── Footer ── */}\n <div className=\"flex items-center gap-2 border-t px-4 py-3\">\n <p className=\"text-muted-foreground min-w-0 flex-1 truncate font-mono text-[11px] leading-none\">\n {currentPath || '\\u00A0'}\n </p>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={handleCancel}\n className=\"text-muted-foreground h-8 shrink-0 px-3 text-xs\"\n >\n Cancel\n </Button>\n <Button\n size=\"sm\"\n onClick={handleSelect}\n disabled={!currentPath || isLoading}\n className=\"h-8 shrink-0 px-5 text-xs font-medium\"\n >\n {isLoading ? <Loader2 className=\"mr-1.5 h-3 w-3 animate-spin\" /> : null}\n Select\n </Button>\n </div>\n </DialogContent>\n </Dialog>\n );\n}\n","/* __next_internal_action_entry_do_not_use__ [{\"00277fe6008517da553a7ab5dd3491091ee85b4412\":\"pickFolder\"},\"src/presentation/web/app/actions/pick-folder.ts\",\"\"] */\"use turbopack no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_0=/*#__PURE__*/createServerReference(\"00277fe6008517da553a7ab5dd3491091ee85b4412\",callServer,void 0,findSourceMapURL,\"pickFolder\");export{$$RSC_SERVER_ACTION_0 as pickFolder};","import { pickFolder as pickFolderAction } from '@/app/actions/pick-folder';\n\n/**\n * Opens a native OS folder picker dialog via server action.\n * Returns the selected absolute path, or null if the user cancelled.\n */\nexport async function pickFolder(): Promise<string | null> {\n const result = await pickFolderAction();\n\n if (result.error) {\n throw new Error(result.error);\n }\n\n return result.path;\n}\n"],"names":[],"mappings":"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","ignoreList":[0,2,3]}
@@ -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(12656),c=a.i(96960),d=a.i(69845),e=a.i(52313),f=a.i(25674);let g=(0,f.createServerReference)("40b14e7b7a1950dee547430acf2391e81a4ab91e59",f.callServer,void 0,f.findSourceMapURL,"adoptBranch"),h=(0,f.createServerReference)("4022b408ea6ed93b7370c74109e460b738b9445daa",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)("4049b46e4bbbff6e259e2729368e544e029426825f",f.callServer,void 0,f.findSourceMapURL,"adoptBranch"),h=(0,f.createServerReference)("40895d30687065c9439f77ccb12ca67a6f689b6dc2",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