@shepai/cli 1.72.8 → 1.72.9-pr220.75c47e0

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 (400) hide show
  1. package/dist/packages/core/src/application/ports/output/agents/feature-agent-process.interface.d.ts +2 -1
  2. package/dist/packages/core/src/application/ports/output/agents/feature-agent-process.interface.d.ts.map +1 -1
  3. package/dist/packages/core/src/application/use-cases/agents/approve-agent-run.use-case.d.ts.map +1 -1
  4. package/dist/packages/core/src/application/use-cases/agents/approve-agent-run.use-case.js +1 -0
  5. package/dist/packages/core/src/application/use-cases/features/create/create-feature.use-case.d.ts +20 -1
  6. package/dist/packages/core/src/application/use-cases/features/create/create-feature.use-case.d.ts.map +1 -1
  7. package/dist/packages/core/src/application/use-cases/features/create/create-feature.use-case.js +68 -41
  8. package/dist/packages/core/src/application/use-cases/features/create/types.d.ts +10 -0
  9. package/dist/packages/core/src/application/use-cases/features/create/types.d.ts.map +1 -1
  10. package/dist/packages/core/src/application/use-cases/features/resume-feature.use-case.d.ts.map +1 -1
  11. package/dist/packages/core/src/application/use-cases/features/resume-feature.use-case.js +1 -0
  12. package/dist/packages/core/src/domain/factories/settings-defaults.factory.js +1 -1
  13. package/dist/packages/core/src/infrastructure/services/agents/common/executors/dev-executor.service.d.ts.map +1 -1
  14. package/dist/packages/core/src/infrastructure/services/agents/common/executors/dev-executor.service.js +88 -13
  15. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-graph.d.ts +1 -1
  16. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-process.service.d.ts +2 -1
  17. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-process.service.d.ts.map +1 -1
  18. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-process.service.js +3 -0
  19. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-worker.d.ts +2 -0
  20. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-worker.d.ts.map +1 -1
  21. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-worker.js +16 -3
  22. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/merge/merge.node.d.ts.map +1 -1
  23. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/merge/merge.node.js +5 -1
  24. package/dist/packages/core/src/infrastructure/services/notifications/notification.service.d.ts.map +1 -1
  25. package/dist/packages/core/src/infrastructure/services/notifications/notification.service.js +2 -4
  26. package/dist/src/presentation/web/app/actions/create-feature.d.ts.map +1 -1
  27. package/dist/src/presentation/web/app/actions/create-feature.js +20 -2
  28. package/dist/src/presentation/web/app/actions/get-feature-metadata.d.ts +10 -0
  29. package/dist/src/presentation/web/app/actions/get-feature-metadata.d.ts.map +1 -0
  30. package/dist/src/presentation/web/app/actions/get-feature-metadata.js +14 -0
  31. package/dist/src/presentation/web/app/actions/get-graph-data.d.ts +10 -0
  32. package/dist/src/presentation/web/app/actions/get-graph-data.d.ts.map +1 -0
  33. package/dist/src/presentation/web/app/actions/get-graph-data.js +10 -0
  34. package/dist/src/presentation/web/app/api/agent-events/route.d.ts.map +1 -1
  35. package/dist/src/presentation/web/app/api/agent-events/route.js +18 -0
  36. package/dist/src/presentation/web/components/common/add-repository-button/add-repository-button.d.ts.map +1 -0
  37. package/dist/src/presentation/web/components/common/add-repository-button/index.d.ts +2 -0
  38. package/dist/src/presentation/web/components/common/add-repository-button/index.d.ts.map +1 -0
  39. package/dist/src/presentation/web/components/common/{add-repository-node → add-repository-button}/index.js +0 -1
  40. package/dist/src/presentation/web/components/common/add-repository-button/pick-folder.d.ts.map +1 -0
  41. package/dist/src/presentation/web/components/common/control-center-drawer/create-drawer-client.d.ts.map +1 -1
  42. package/dist/src/presentation/web/components/common/control-center-drawer/create-drawer-client.js +21 -23
  43. package/dist/src/presentation/web/components/common/control-center-drawer/feature-drawer-client.d.ts.map +1 -1
  44. package/dist/src/presentation/web/components/common/control-center-drawer/feature-drawer-client.js +35 -16
  45. package/dist/src/presentation/web/components/common/feature-node/derive-feature-state.d.ts.map +1 -1
  46. package/dist/src/presentation/web/components/common/feature-node/derive-feature-state.js +2 -0
  47. package/dist/src/presentation/web/components/common/index.d.ts +1 -2
  48. package/dist/src/presentation/web/components/common/index.d.ts.map +1 -1
  49. package/dist/src/presentation/web/components/common/index.js +1 -2
  50. package/dist/src/presentation/web/components/common/repository-node/repository-node.js +1 -1
  51. package/dist/src/presentation/web/components/common/sidebar-section-header/sidebar-section-header.d.ts +1 -3
  52. package/dist/src/presentation/web/components/common/sidebar-section-header/sidebar-section-header.d.ts.map +1 -1
  53. package/dist/src/presentation/web/components/common/sidebar-section-header/sidebar-section-header.js +3 -7
  54. package/dist/src/presentation/web/components/common/sidebar-section-header/sidebar-section-header.stories.d.ts +0 -1
  55. package/dist/src/presentation/web/components/common/sidebar-section-header/sidebar-section-header.stories.d.ts.map +1 -1
  56. package/dist/src/presentation/web/components/common/sidebar-section-header/sidebar-section-header.stories.js +0 -11
  57. package/dist/src/presentation/web/components/features/control-center/control-center-empty-state.js +1 -1
  58. package/dist/src/presentation/web/components/features/control-center/control-center-inner.d.ts.map +1 -1
  59. package/dist/src/presentation/web/components/features/control-center/control-center-inner.js +25 -7
  60. package/dist/src/presentation/web/components/features/control-center/control-center.stories.d.ts +0 -11
  61. package/dist/src/presentation/web/components/features/control-center/control-center.stories.d.ts.map +1 -1
  62. package/dist/src/presentation/web/components/features/control-center/control-center.stories.js +2 -37
  63. package/dist/src/presentation/web/components/features/control-center/use-control-center-state.d.ts +8 -0
  64. package/dist/src/presentation/web/components/features/control-center/use-control-center-state.d.ts.map +1 -1
  65. package/dist/src/presentation/web/components/features/control-center/use-control-center-state.js +145 -256
  66. package/dist/src/presentation/web/components/features/features-canvas/features-canvas.d.ts +2 -10
  67. package/dist/src/presentation/web/components/features/features-canvas/features-canvas.d.ts.map +1 -1
  68. package/dist/src/presentation/web/components/features/features-canvas/features-canvas.js +12 -44
  69. package/dist/src/presentation/web/components/features/features-canvas/features-canvas.stories.d.ts.map +1 -1
  70. package/dist/src/presentation/web/components/features/features-canvas/features-canvas.stories.js +0 -46
  71. package/dist/src/presentation/web/components/layouts/app-shell/app-shell.js +1 -1
  72. package/dist/src/presentation/web/components/layouts/app-sidebar/app-sidebar.d.ts +1 -3
  73. package/dist/src/presentation/web/components/layouts/app-sidebar/app-sidebar.d.ts.map +1 -1
  74. package/dist/src/presentation/web/components/layouts/app-sidebar/app-sidebar.js +2 -2
  75. package/dist/src/presentation/web/components/ui/alert-dialog.d.ts.map +1 -1
  76. package/dist/src/presentation/web/components/ui/alert-dialog.js +2 -2
  77. package/dist/src/presentation/web/components/ui/dialog.d.ts.map +1 -1
  78. package/dist/src/presentation/web/components/ui/dialog.js +2 -2
  79. package/dist/src/presentation/web/components/ui/scroll-area.js +1 -1
  80. package/dist/src/presentation/web/hooks/use-graph-state.d.ts +42 -0
  81. package/dist/src/presentation/web/hooks/use-graph-state.d.ts.map +1 -0
  82. package/dist/src/presentation/web/hooks/use-graph-state.js +257 -0
  83. package/dist/src/presentation/web/hooks/use-notifications.d.ts +1 -5
  84. package/dist/src/presentation/web/hooks/use-notifications.d.ts.map +1 -1
  85. package/dist/src/presentation/web/hooks/use-notifications.js +1 -26
  86. package/dist/src/presentation/web/hooks/use-notifications.stories.d.ts.map +1 -1
  87. package/dist/src/presentation/web/hooks/use-notifications.stories.js +28 -38
  88. package/dist/src/presentation/web/lib/derive-graph.d.ts +52 -0
  89. package/dist/src/presentation/web/lib/derive-graph.d.ts.map +1 -0
  90. package/dist/src/presentation/web/lib/derive-graph.js +126 -0
  91. package/dist/src/presentation/web/lib/layout-with-dagre.d.ts.map +1 -1
  92. package/dist/src/presentation/web/lib/layout-with-dagre.js +1 -2
  93. package/dist/tsconfig.build.tsbuildinfo +1 -1
  94. package/package.json +1 -1
  95. package/web/.next/BUILD_ID +1 -1
  96. package/web/.next/build-manifest.json +2 -2
  97. package/web/.next/cache/.previewinfo +1 -1
  98. package/web/.next/cache/.rscinfo +1 -1
  99. package/web/.next/cache/.tsbuildinfo +1 -1
  100. package/web/.next/cache/config.json +3 -3
  101. package/web/.next/fallback-build-manifest.json +2 -2
  102. package/web/.next/prerender-manifest.json +3 -3
  103. package/web/.next/required-server-files.js +1 -1
  104. package/web/.next/required-server-files.json +1 -1
  105. package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +43 -28
  106. package/web/.next/server/app/(dashboard)/@drawer/create/page.js +1 -1
  107. package/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
  108. package/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
  109. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +49 -34
  110. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js +1 -1
  111. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
  112. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
  113. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +39 -24
  114. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js +1 -1
  115. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
  116. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  117. package/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +43 -28
  118. package/web/.next/server/app/(dashboard)/create/page.js +1 -1
  119. package/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
  120. package/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
  121. package/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +49 -34
  122. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js +1 -1
  123. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
  124. package/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
  125. package/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +39 -24
  126. package/web/.next/server/app/(dashboard)/page.js +1 -1
  127. package/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
  128. package/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
  129. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +39 -24
  130. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js +1 -1
  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 +1 -1
  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/skills/page/server-reference-manifest.json +6 -6
  144. package/web/.next/server/app/skills/page.js.nft.json +1 -1
  145. package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  146. package/web/.next/server/app/tools/page/server-reference-manifest.json +6 -6
  147. package/web/.next/server/app/tools/page.js.nft.json +1 -1
  148. package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  149. package/web/.next/server/app/version/page/server-reference-manifest.json +1 -1
  150. package/web/.next/server/app/version/page.js.nft.json +1 -1
  151. package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  152. package/web/.next/server/chunks/403f9_next_dist_esm_build_templates_app-route_4d623b8e.js +2 -2
  153. package/web/.next/server/chunks/403f9_next_dist_esm_build_templates_app-route_4d623b8e.js.map +1 -1
  154. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js +1 -1
  155. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js.map +1 -1
  156. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_816618e2.js +3 -0
  157. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_816618e2.js.map +1 -0
  158. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_ba2e050f.js +3 -0
  159. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_ba2e050f.js.map +1 -0
  160. package/web/.next/server/chunks/ssr/[root-of-the-server]__17a611f0._.js +2 -2
  161. package/web/.next/server/chunks/ssr/[root-of-the-server]__17a611f0._.js.map +1 -1
  162. package/web/.next/server/chunks/ssr/[root-of-the-server]__249c74f6._.js +1 -1
  163. package/web/.next/server/chunks/ssr/[root-of-the-server]__45dbf93d._.js +2 -2
  164. package/web/.next/server/chunks/ssr/[root-of-the-server]__45dbf93d._.js.map +1 -1
  165. package/web/.next/server/chunks/ssr/{[root-of-the-server]__cbae9863._.js → [root-of-the-server]__6258349c._.js} +2 -2
  166. package/web/.next/server/chunks/ssr/[root-of-the-server]__6258349c._.js.map +1 -0
  167. package/web/.next/server/chunks/ssr/[root-of-the-server]__6b17a22d._.js +1 -1
  168. package/web/.next/server/chunks/ssr/[root-of-the-server]__6b17a22d._.js.map +1 -1
  169. package/web/.next/server/chunks/ssr/[root-of-the-server]__6cbc1149._.js +2 -2
  170. package/web/.next/server/chunks/ssr/[root-of-the-server]__6cbc1149._.js.map +1 -1
  171. package/web/.next/server/chunks/ssr/[root-of-the-server]__804c006d._.js +1 -1
  172. package/web/.next/server/chunks/ssr/[root-of-the-server]__804c006d._.js.map +1 -1
  173. package/web/.next/{standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__e5e09f72._.js → server/chunks/ssr/[root-of-the-server]__94a6d275._.js} +2 -2
  174. package/web/.next/server/chunks/ssr/[root-of-the-server]__94a6d275._.js.map +1 -0
  175. package/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js +1 -1
  176. package/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js.map +1 -1
  177. package/web/.next/server/chunks/ssr/_07c2a32a._.js +1 -1
  178. package/web/.next/server/chunks/ssr/_07c2a32a._.js.map +1 -1
  179. package/web/.next/server/chunks/ssr/_0e9d6bf7._.js +1 -1
  180. package/web/.next/server/chunks/ssr/_0e9d6bf7._.js.map +1 -1
  181. package/web/.next/server/chunks/ssr/_250a63ae._.js.map +1 -1
  182. package/web/.next/server/chunks/ssr/_49f63b1b._.js +6 -0
  183. package/web/.next/server/chunks/ssr/_49f63b1b._.js.map +1 -0
  184. package/web/.next/server/chunks/ssr/_61351ed3._.js +1 -1
  185. package/web/.next/server/chunks/ssr/_61351ed3._.js.map +1 -1
  186. package/web/.next/server/chunks/ssr/_8400c8bb._.js +1 -1
  187. package/web/.next/server/chunks/ssr/_8400c8bb._.js.map +1 -1
  188. package/web/.next/server/chunks/ssr/_9f940437._.js +1 -1
  189. package/web/.next/server/chunks/ssr/_9f940437._.js.map +1 -1
  190. package/web/.next/{standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_398553b0._.js → server/chunks/ssr/src_presentation_web_2b91e4ec._.js} +2 -2
  191. package/web/.next/server/chunks/ssr/{src_presentation_web_5c87e8e4._.js.map → src_presentation_web_2b91e4ec._.js.map} +1 -1
  192. package/web/.next/{standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_5c87e8e4._.js → server/chunks/ssr/src_presentation_web_5bcc1537._.js} +2 -2
  193. package/web/.next/server/chunks/ssr/{src_presentation_web_398553b0._.js.map → src_presentation_web_5bcc1537._.js.map} +1 -1
  194. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_5955c012.js +3 -0
  195. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_5955c012.js.map +1 -0
  196. package/web/.next/server/chunks/ssr/src_presentation_web_ca99d62d._.js +1 -1
  197. package/web/.next/server/chunks/ssr/src_presentation_web_ca99d62d._.js.map +1 -1
  198. package/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js +1 -1
  199. package/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js.map +1 -1
  200. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js +1 -1
  201. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js.map +1 -1
  202. package/web/.next/server/chunks/ssr/src_presentation_web_d5b0cb86._.js +8 -0
  203. package/web/.next/server/chunks/ssr/src_presentation_web_d5b0cb86._.js.map +1 -0
  204. package/web/.next/server/chunks/ssr/src_presentation_web_e626b63c._.js +8 -0
  205. package/web/.next/server/chunks/ssr/src_presentation_web_e626b63c._.js.map +1 -0
  206. package/web/.next/server/pages/500.html +2 -2
  207. package/web/.next/server/server-reference-manifest.js +1 -1
  208. package/web/.next/server/server-reference-manifest.json +175 -118
  209. package/web/.next/standalone/src/presentation/web/.next/BUILD_ID +1 -1
  210. package/web/.next/standalone/src/presentation/web/.next/build-manifest.json +2 -2
  211. package/web/.next/standalone/src/presentation/web/.next/prerender-manifest.json +3 -3
  212. package/web/.next/standalone/src/presentation/web/.next/required-server-files.json +1 -1
  213. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +43 -28
  214. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/create/page.js +1 -1
  215. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
  216. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
  217. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +49 -34
  218. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js +1 -1
  219. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
  220. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
  221. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +39 -24
  222. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js +1 -1
  223. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
  224. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  225. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +43 -28
  226. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/create/page.js +1 -1
  227. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
  228. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
  229. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +49 -34
  230. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/feature/[featureId]/page.js +1 -1
  231. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
  232. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
  233. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +39 -24
  234. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/page.js +1 -1
  235. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
  236. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
  237. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +39 -24
  238. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js +1 -1
  239. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
  240. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  241. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.html +2 -2
  242. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.rsc +1 -1
  243. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  244. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  245. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  246. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  247. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  248. package/web/.next/standalone/src/presentation/web/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
  249. package/web/.next/standalone/src/presentation/web/.next/server/app/_not-found/page.js.nft.json +1 -1
  250. package/web/.next/standalone/src/presentation/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  251. package/web/.next/standalone/src/presentation/web/.next/server/app/skills/page/server-reference-manifest.json +6 -6
  252. package/web/.next/standalone/src/presentation/web/.next/server/app/skills/page.js.nft.json +1 -1
  253. package/web/.next/standalone/src/presentation/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  254. package/web/.next/standalone/src/presentation/web/.next/server/app/tools/page/server-reference-manifest.json +6 -6
  255. package/web/.next/standalone/src/presentation/web/.next/server/app/tools/page.js.nft.json +1 -1
  256. package/web/.next/standalone/src/presentation/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  257. package/web/.next/standalone/src/presentation/web/.next/server/app/version/page/server-reference-manifest.json +1 -1
  258. package/web/.next/standalone/src/presentation/web/.next/server/app/version/page.js.nft.json +1 -1
  259. package/web/.next/standalone/src/presentation/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  260. package/web/.next/standalone/src/presentation/web/.next/server/chunks/403f9_next_dist_esm_build_templates_app-route_4d623b8e.js +2 -2
  261. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js +1 -1
  262. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_816618e2.js +3 -0
  263. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_ba2e050f.js +3 -0
  264. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__17a611f0._.js +2 -2
  265. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__249c74f6._.js +1 -1
  266. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__45dbf93d._.js +2 -2
  267. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/{[root-of-the-server]__cbae9863._.js → [root-of-the-server]__6258349c._.js} +2 -2
  268. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__6b17a22d._.js +1 -1
  269. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__6cbc1149._.js +2 -2
  270. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__804c006d._.js +1 -1
  271. package/web/.next/{server/chunks/ssr/[root-of-the-server]__e5e09f72._.js → standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__94a6d275._.js} +2 -2
  272. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js +1 -1
  273. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_07c2a32a._.js +1 -1
  274. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_0e9d6bf7._.js +1 -1
  275. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_49f63b1b._.js +6 -0
  276. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_61351ed3._.js +1 -1
  277. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_8400c8bb._.js +1 -1
  278. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_9f940437._.js +1 -1
  279. package/web/.next/{server/chunks/ssr/src_presentation_web_398553b0._.js → standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_2b91e4ec._.js} +2 -2
  280. package/web/.next/{server/chunks/ssr/src_presentation_web_5c87e8e4._.js → standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_5bcc1537._.js} +2 -2
  281. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_5955c012.js +3 -0
  282. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_ca99d62d._.js +1 -1
  283. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js +1 -1
  284. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js +1 -1
  285. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_d5b0cb86._.js +8 -0
  286. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_e626b63c._.js +8 -0
  287. package/web/.next/standalone/src/presentation/web/.next/server/pages/500.html +2 -2
  288. package/web/.next/standalone/src/presentation/web/.next/server/server-reference-manifest.js +1 -1
  289. package/web/.next/standalone/src/presentation/web/.next/server/server-reference-manifest.json +175 -118
  290. package/web/.next/standalone/src/presentation/web/CLAUDE.md +191 -0
  291. package/web/.next/standalone/src/presentation/web/app/actions/create-feature.ts +27 -2
  292. package/web/.next/standalone/src/presentation/web/app/actions/get-feature-metadata.ts +18 -0
  293. package/web/.next/standalone/src/presentation/web/app/actions/get-graph-data.ts +12 -0
  294. package/web/.next/standalone/src/presentation/web/app/api/agent-events/route.ts +21 -1
  295. package/web/.next/standalone/src/presentation/web/components/common/add-repository-button/index.ts +1 -0
  296. package/web/.next/standalone/src/presentation/web/components/common/control-center-drawer/create-drawer-client.tsx +23 -26
  297. package/web/.next/standalone/src/presentation/web/components/common/control-center-drawer/feature-drawer-client.tsx +44 -18
  298. package/web/.next/standalone/src/presentation/web/components/common/feature-node/derive-feature-state.ts +2 -0
  299. package/web/.next/standalone/src/presentation/web/components/common/index.ts +1 -6
  300. package/web/.next/standalone/src/presentation/web/components/common/repository-node/repository-node.tsx +2 -2
  301. package/web/.next/standalone/src/presentation/web/components/common/sidebar-section-header/sidebar-section-header.stories.tsx +0 -13
  302. package/web/.next/standalone/src/presentation/web/components/common/sidebar-section-header/sidebar-section-header.tsx +1 -45
  303. package/web/.next/standalone/src/presentation/web/components/features/control-center/control-center-empty-state.tsx +1 -1
  304. package/web/.next/standalone/src/presentation/web/components/features/control-center/control-center-inner.tsx +36 -29
  305. package/web/.next/standalone/src/presentation/web/components/features/control-center/control-center.stories.tsx +2 -41
  306. package/web/.next/standalone/src/presentation/web/components/features/control-center/use-control-center-state.ts +178 -325
  307. package/web/.next/standalone/src/presentation/web/components/features/features-canvas/features-canvas.stories.tsx +0 -48
  308. package/web/.next/standalone/src/presentation/web/components/features/features-canvas/features-canvas.tsx +34 -82
  309. package/web/.next/standalone/src/presentation/web/components/layouts/app-shell/app-shell.tsx +1 -1
  310. package/web/.next/standalone/src/presentation/web/components/layouts/app-sidebar/app-sidebar.tsx +2 -14
  311. package/web/.next/standalone/src/presentation/web/components/ui/alert-dialog.tsx +2 -5
  312. package/web/.next/standalone/src/presentation/web/components/ui/dialog.tsx +2 -5
  313. package/web/.next/standalone/src/presentation/web/components/ui/scroll-area.tsx +1 -1
  314. package/web/.next/standalone/src/presentation/web/hooks/use-graph-state.ts +376 -0
  315. package/web/.next/standalone/src/presentation/web/hooks/use-notifications.stories.tsx +2 -30
  316. package/web/.next/standalone/src/presentation/web/hooks/use-notifications.ts +2 -36
  317. package/web/.next/standalone/src/presentation/web/lib/derive-graph.ts +178 -0
  318. package/web/.next/standalone/src/presentation/web/lib/layout-with-dagre.ts +1 -2
  319. package/web/.next/standalone/src/presentation/web/server.js +1 -1
  320. package/web/.next/static/chunks/336973846b913da9.js +4 -0
  321. package/web/.next/static/chunks/348fc4dde9a11d57.js +1 -0
  322. package/web/.next/static/chunks/{1c07b21eb8b32f25.js → 3d6f5f9bfa9c3423.js} +1 -1
  323. package/web/.next/static/chunks/3f205fd6adbfd20a.js +7 -0
  324. package/web/.next/static/chunks/40bbec911f7768c3.js +1 -0
  325. package/web/.next/static/chunks/{fcafb841e3860687.js → 60bbe20853ee3e3a.js} +1 -1
  326. package/web/.next/static/chunks/6d206af092e98796.js +1 -0
  327. package/web/.next/static/chunks/87bd8e61a05cb052.css +2 -0
  328. package/web/.next/static/chunks/cb41849bcfaa304e.js +1 -0
  329. package/web/.next/static/chunks/d81c23841d6b2bbd.js +1 -0
  330. package/web/.next/static/chunks/{8682dcb376de62de.js → dcce84ff55addb4d.js} +1 -1
  331. package/web/.next/static/chunks/e0af1d570d3be3d0.js +1 -0
  332. package/web/.next/trace +1 -1
  333. package/web/.next/trace-build +1 -1
  334. package/dist/src/presentation/web/components/common/add-repository-node/add-repository-button.d.ts.map +0 -1
  335. package/dist/src/presentation/web/components/common/add-repository-node/add-repository-node-config.d.ts +0 -7
  336. package/dist/src/presentation/web/components/common/add-repository-node/add-repository-node-config.d.ts.map +0 -1
  337. package/dist/src/presentation/web/components/common/add-repository-node/add-repository-node-config.js +0 -1
  338. package/dist/src/presentation/web/components/common/add-repository-node/add-repository-node.d.ts +0 -6
  339. package/dist/src/presentation/web/components/common/add-repository-node/add-repository-node.d.ts.map +0 -1
  340. package/dist/src/presentation/web/components/common/add-repository-node/add-repository-node.js +0 -23
  341. package/dist/src/presentation/web/components/common/add-repository-node/add-repository-node.stories.d.ts +0 -10
  342. package/dist/src/presentation/web/components/common/add-repository-node/add-repository-node.stories.d.ts.map +0 -1
  343. package/dist/src/presentation/web/components/common/add-repository-node/add-repository-node.stories.js +0 -33
  344. package/dist/src/presentation/web/components/common/add-repository-node/index.d.ts +0 -4
  345. package/dist/src/presentation/web/components/common/add-repository-node/index.d.ts.map +0 -1
  346. package/dist/src/presentation/web/components/common/add-repository-node/pick-folder.d.ts.map +0 -1
  347. package/dist/src/presentation/web/components/common/notification-permission-banner/index.d.ts +0 -2
  348. package/dist/src/presentation/web/components/common/notification-permission-banner/index.d.ts.map +0 -1
  349. package/dist/src/presentation/web/components/common/notification-permission-banner/index.js +0 -1
  350. package/dist/src/presentation/web/components/common/notification-permission-banner/notification-permission-banner.d.ts +0 -2
  351. package/dist/src/presentation/web/components/common/notification-permission-banner/notification-permission-banner.d.ts.map +0 -1
  352. package/dist/src/presentation/web/components/common/notification-permission-banner/notification-permission-banner.js +0 -33
  353. package/dist/src/presentation/web/components/common/notification-permission-banner/notification-permission-banner.stories.d.ts +0 -6
  354. package/dist/src/presentation/web/components/common/notification-permission-banner/notification-permission-banner.stories.d.ts.map +0 -1
  355. package/dist/src/presentation/web/components/common/notification-permission-banner/notification-permission-banner.stories.js +0 -24
  356. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_2b7834f6.js +0 -3
  357. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_2b7834f6.js.map +0 -1
  358. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_6923c575.js +0 -3
  359. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_6923c575.js.map +0 -1
  360. package/web/.next/server/chunks/ssr/[root-of-the-server]__cbae9863._.js.map +0 -1
  361. package/web/.next/server/chunks/ssr/[root-of-the-server]__e5e09f72._.js.map +0 -1
  362. package/web/.next/server/chunks/ssr/_47ef589d._.js +0 -6
  363. package/web/.next/server/chunks/ssr/_47ef589d._.js.map +0 -1
  364. package/web/.next/server/chunks/ssr/src_presentation_web_1a32dbcb._.js +0 -8
  365. package/web/.next/server/chunks/ssr/src_presentation_web_1a32dbcb._.js.map +0 -1
  366. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_f4952172.js +0 -3
  367. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_f4952172.js.map +0 -1
  368. package/web/.next/server/chunks/ssr/src_presentation_web_c1bc6240._.js +0 -8
  369. package/web/.next/server/chunks/ssr/src_presentation_web_c1bc6240._.js.map +0 -1
  370. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_2b7834f6.js +0 -3
  371. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_6923c575.js +0 -3
  372. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_47ef589d._.js +0 -6
  373. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_1a32dbcb._.js +0 -8
  374. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_f4952172.js +0 -3
  375. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_c1bc6240._.js +0 -8
  376. package/web/.next/standalone/src/presentation/web/components/common/add-repository-node/add-repository-node-config.ts +0 -8
  377. package/web/.next/standalone/src/presentation/web/components/common/add-repository-node/add-repository-node.stories.tsx +0 -70
  378. package/web/.next/standalone/src/presentation/web/components/common/add-repository-node/add-repository-node.tsx +0 -49
  379. package/web/.next/standalone/src/presentation/web/components/common/add-repository-node/index.ts +0 -3
  380. package/web/.next/standalone/src/presentation/web/components/common/notification-permission-banner/index.ts +0 -1
  381. package/web/.next/standalone/src/presentation/web/components/common/notification-permission-banner/notification-permission-banner.stories.tsx +0 -52
  382. package/web/.next/standalone/src/presentation/web/components/common/notification-permission-banner/notification-permission-banner.tsx +0 -55
  383. package/web/.next/static/chunks/0c54314c8c9c9739.js +0 -7
  384. package/web/.next/static/chunks/3c79bca4d3f18f66.js +0 -1
  385. package/web/.next/static/chunks/5cd24ca47061a21d.js +0 -4
  386. package/web/.next/static/chunks/67f2a7a5e8dc358a.css +0 -2
  387. package/web/.next/static/chunks/71cf72022f08a8c9.js +0 -1
  388. package/web/.next/static/chunks/991d4490d7a338d8.js +0 -1
  389. package/web/.next/static/chunks/c71589df79020ecb.js +0 -1
  390. package/web/.next/static/chunks/ebf172a84c9596ed.js +0 -1
  391. package/web/.next/static/chunks/fabfa54940973cc7.js +0 -1
  392. /package/dist/src/presentation/web/components/common/{add-repository-node → add-repository-button}/add-repository-button.d.ts +0 -0
  393. /package/dist/src/presentation/web/components/common/{add-repository-node → add-repository-button}/add-repository-button.js +0 -0
  394. /package/dist/src/presentation/web/components/common/{add-repository-node → add-repository-button}/pick-folder.d.ts +0 -0
  395. /package/dist/src/presentation/web/components/common/{add-repository-node → add-repository-button}/pick-folder.js +0 -0
  396. /package/web/.next/standalone/src/presentation/web/components/common/{add-repository-node → add-repository-button}/add-repository-button.tsx +0 -0
  397. /package/web/.next/standalone/src/presentation/web/components/common/{add-repository-node → add-repository-button}/pick-folder.ts +0 -0
  398. /package/web/.next/static/{IKuYPxAuMvc4BtwKHlj30 → Ib0Uul-U6uLbMxu6geKnR}/_buildManifest.js +0 -0
  399. /package/web/.next/static/{IKuYPxAuMvc4BtwKHlj30 → Ib0Uul-U6uLbMxu6geKnR}/_clientMiddlewareManifest.json +0 -0
  400. /package/web/.next/static/{IKuYPxAuMvc4BtwKHlj30 → Ib0Uul-U6uLbMxu6geKnR}/_ssgManifest.js +0 -0
@@ -1,70 +0,0 @@
1
- import { useMemo } from 'react';
2
- import type { Meta, StoryObj } from '@storybook/react';
3
- import { ReactFlowProvider, ReactFlow } from '@xyflow/react';
4
- import { AddRepositoryNode } from './add-repository-node';
5
- import { AddRepositoryButton } from './add-repository-button';
6
- import type { AddRepositoryNodeData, AddRepositoryNodeType } from './add-repository-node-config';
7
-
8
- const nodeTypes = { addRepositoryNode: AddRepositoryNode };
9
-
10
- function AddRepositoryNodeCanvas({
11
- data,
12
- style = { width: 500, height: 250 },
13
- }: {
14
- data: AddRepositoryNodeData;
15
- style?: React.CSSProperties;
16
- }) {
17
- const nodes: AddRepositoryNodeType[] = useMemo(
18
- () => [{ id: 'node-1', type: 'addRepositoryNode', position: { x: 0, y: 0 }, data }],
19
- [data]
20
- );
21
-
22
- return (
23
- <div style={style}>
24
- <ReactFlowProvider>
25
- <ReactFlow
26
- nodes={nodes}
27
- nodeTypes={nodeTypes}
28
- nodesDraggable={false}
29
- nodesConnectable={false}
30
- proOptions={{ hideAttribution: true }}
31
- fitView
32
- />
33
- </ReactFlowProvider>
34
- </div>
35
- );
36
- }
37
-
38
- const meta: Meta<AddRepositoryNodeData> = {
39
- title: 'Composed/AddRepositoryNode',
40
- tags: ['autodocs'],
41
- parameters: {
42
- layout: 'centered',
43
- },
44
- args: {},
45
- };
46
-
47
- export default meta;
48
- type Story = StoryObj<AddRepositoryNodeData>;
49
-
50
- export const Default: Story = {
51
- render: (args) => <AddRepositoryNodeCanvas data={args} />,
52
- };
53
-
54
- export const WithCallback: Story = {
55
- args: {
56
- onSelect: () => undefined,
57
- },
58
- render: (args) => <AddRepositoryNodeCanvas data={args} />,
59
- };
60
-
61
- // --- Add Repository Button (top bar icon) stories ---
62
-
63
- /** Add Repository button as it appears in the top bar alongside other toggles */
64
- export const TopBarButton: StoryObj = {
65
- render: () => (
66
- <div className="flex gap-1">
67
- <AddRepositoryButton onSelect={() => undefined} />
68
- </div>
69
- ),
70
- };
@@ -1,49 +0,0 @@
1
- 'use client';
2
-
3
- import { useState } from 'react';
4
- import { Plus, Loader2 } from 'lucide-react';
5
- import type { AddRepositoryNodeData } from './add-repository-node-config';
6
- import { pickFolder } from './pick-folder';
7
-
8
- export function AddRepositoryNode({
9
- data,
10
- }: {
11
- data: AddRepositoryNodeData;
12
- [key: string]: unknown;
13
- }) {
14
- const [loading, setLoading] = useState(false);
15
-
16
- async function handleClick() {
17
- if (loading) return;
18
- setLoading(true);
19
- try {
20
- const path = await pickFolder();
21
- if (path) {
22
- data.onSelect?.(path);
23
- }
24
- } finally {
25
- setLoading(false);
26
- }
27
- }
28
-
29
- return (
30
- <div className="group">
31
- <button
32
- type="button"
33
- data-testid="add-repository-node-card"
34
- onClick={handleClick}
35
- disabled={loading}
36
- className="nodrag border-muted-foreground/30 flex w-56 cursor-pointer items-center gap-3 rounded-full border-2 border-dashed px-4 py-3 transition-colors hover:border-blue-500 hover:text-blue-500 disabled:cursor-wait disabled:opacity-60"
37
- >
38
- {loading ? (
39
- <Loader2 className="h-5 w-5 shrink-0 animate-spin" />
40
- ) : (
41
- <Plus className="h-5 w-5 shrink-0" />
42
- )}
43
- <span data-testid="add-repository-node-label" className="text-sm font-medium">
44
- {loading ? 'Opening...' : 'Add Repository'}
45
- </span>
46
- </button>
47
- </div>
48
- );
49
- }
@@ -1,3 +0,0 @@
1
- export { AddRepositoryNode } from './add-repository-node';
2
- export { AddRepositoryButton } from './add-repository-button';
3
- export type { AddRepositoryNodeData, AddRepositoryNodeType } from './add-repository-node-config';
@@ -1 +0,0 @@
1
- export { NotificationPermissionBanner } from './notification-permission-banner';
@@ -1,52 +0,0 @@
1
- import type { Meta, StoryObj } from '@storybook/react';
2
- import { Bell, X } from 'lucide-react';
3
- import { Button } from '@/components/ui/button';
4
-
5
- function noop() {
6
- // story placeholder
7
- }
8
-
9
- const meta: Meta = {
10
- title: 'Composed/NotificationPermissionBanner',
11
- parameters: {
12
- layout: 'padded',
13
- },
14
- tags: ['autodocs'],
15
- };
16
-
17
- export default meta;
18
- type Story = StoryObj<typeof meta>;
19
-
20
- /**
21
- * Static render of the banner since the real component depends on the
22
- * browser Notification API which is unavailable in Storybook.
23
- */
24
- function BannerPreview() {
25
- return (
26
- <div className="bg-muted/30 relative h-64 w-full rounded-lg border">
27
- <div className="bg-background absolute bottom-4 left-4 z-50 flex max-w-sm items-center gap-3 rounded-lg border p-3 shadow-lg">
28
- <Bell className="text-muted-foreground size-5 shrink-0" />
29
- <p className="text-muted-foreground text-sm">
30
- Enable desktop notifications to stay updated on feature progress.
31
- </p>
32
- <div className="flex shrink-0 items-center gap-1">
33
- <Button size="sm" onClick={noop}>
34
- Enable
35
- </Button>
36
- <Button
37
- variant="ghost"
38
- size="icon-xs"
39
- onClick={noop}
40
- aria-label="Dismiss notification banner"
41
- >
42
- <X />
43
- </Button>
44
- </div>
45
- </div>
46
- </div>
47
- );
48
- }
49
-
50
- export const Default: Story = {
51
- render: () => <BannerPreview />,
52
- };
@@ -1,55 +0,0 @@
1
- 'use client';
2
-
3
- import { useCallback, useEffect, useState } from 'react';
4
- import { Bell, X } from 'lucide-react';
5
- import { Button } from '@/components/ui/button';
6
-
7
- const DISMISSED_KEY = 'shep:notification-banner-dismissed';
8
-
9
- export function NotificationPermissionBanner() {
10
- const [visible, setVisible] = useState(false);
11
-
12
- useEffect(() => {
13
- if (typeof globalThis.Notification === 'undefined') return;
14
- if (globalThis.Notification.permission !== 'default') return;
15
- if (localStorage.getItem(DISMISSED_KEY) === 'true') return;
16
- setVisible(true);
17
- }, []);
18
-
19
- const handleEnable = useCallback(async () => {
20
- if (typeof globalThis.Notification === 'undefined') return;
21
- const result = await globalThis.Notification.requestPermission();
22
- if (result === 'granted' || result === 'denied') {
23
- setVisible(false);
24
- }
25
- }, []);
26
-
27
- const handleDismiss = useCallback(() => {
28
- localStorage.setItem(DISMISSED_KEY, 'true');
29
- setVisible(false);
30
- }, []);
31
-
32
- if (!visible) return null;
33
-
34
- return (
35
- <div className="bg-background absolute bottom-4 left-4 z-50 flex max-w-sm items-center gap-3 rounded-lg border p-3 shadow-lg">
36
- <Bell className="text-muted-foreground size-5 shrink-0" />
37
- <p className="text-muted-foreground text-sm">
38
- Enable desktop notifications to stay updated on feature progress.
39
- </p>
40
- <div className="flex shrink-0 items-center gap-1">
41
- <Button size="sm" onClick={handleEnable}>
42
- Enable
43
- </Button>
44
- <Button
45
- variant="ghost"
46
- size="icon-xs"
47
- onClick={handleDismiss}
48
- aria-label="Dismiss notification banner"
49
- >
50
- <X />
51
- </Button>
52
- </div>
53
- </div>
54
- );
55
- }
@@ -1,7 +0,0 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,91891,t=>{"use strict";let e=(0,t.i(3645).default)("plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]]);t.s(["default",()=>e])},30153,71326,t=>{"use strict";var e=t.i(20314),a=t.i(79054),r=t.i(22528),o=t.i(5978),n=t.i(567),s=t.i(91967),i=t.i(86874),l="AlertDialog",[d,u]=(0,r.createContextScope)(l,[n.createDialogScope]),c=(0,n.createDialogScope)(),f=t=>{let{__scopeAlertDialog:a,...r}=t,o=c(a);return(0,e.jsx)(n.Root,{...o,...r,modal:!0})};f.displayName=l;var m=a.forwardRef((t,a)=>{let{__scopeAlertDialog:r,...o}=t,s=c(r);return(0,e.jsx)(n.Trigger,{...s,...o,ref:a})});m.displayName="AlertDialogTrigger";var p=t=>{let{__scopeAlertDialog:a,...r}=t,o=c(a);return(0,e.jsx)(n.Portal,{...o,...r})};p.displayName="AlertDialogPortal";var g=a.forwardRef((t,a)=>{let{__scopeAlertDialog:r,...o}=t,s=c(r);return(0,e.jsx)(n.Overlay,{...s,...o,ref:a})});g.displayName="AlertDialogOverlay";var h="AlertDialogContent",[v,b]=d(h),y=(0,i.createSlottable)("AlertDialogContent"),x=a.forwardRef((t,r)=>{let{__scopeAlertDialog:i,children:l,...d}=t,u=c(i),f=a.useRef(null),m=(0,o.useComposedRefs)(r,f),p=a.useRef(null);return(0,e.jsx)(n.WarningProvider,{contentName:h,titleName:w,docsSlug:"alert-dialog",children:(0,e.jsx)(v,{scope:i,cancelRef:p,children:(0,e.jsxs)(n.Content,{role:"alertdialog",...u,...d,ref:m,onOpenAutoFocus:(0,s.composeEventHandlers)(d.onOpenAutoFocus,t=>{t.preventDefault(),p.current?.focus({preventScroll:!0})}),onPointerDownOutside:t=>t.preventDefault(),onInteractOutside:t=>t.preventDefault(),children:[(0,e.jsx)(y,{children:l}),(0,e.jsx)(A,{contentRef:f})]})})})});x.displayName=h;var w="AlertDialogTitle",E=a.forwardRef((t,a)=>{let{__scopeAlertDialog:r,...o}=t,s=c(r);return(0,e.jsx)(n.Title,{...s,...o,ref:a})});E.displayName=w;var k="AlertDialogDescription",D=a.forwardRef((t,a)=>{let{__scopeAlertDialog:r,...o}=t,s=c(r);return(0,e.jsx)(n.Description,{...s,...o,ref:a})});D.displayName=k;var C=a.forwardRef((t,a)=>{let{__scopeAlertDialog:r,...o}=t,s=c(r);return(0,e.jsx)(n.Close,{...s,...o,ref:a})});C.displayName="AlertDialogAction";var j="AlertDialogCancel",N=a.forwardRef((t,a)=>{let{__scopeAlertDialog:r,...s}=t,{cancelRef:i}=b(j,r),l=c(r),d=(0,o.useComposedRefs)(a,i);return(0,e.jsx)(n.Close,{...l,...s,ref:d})});N.displayName=j;var A=({contentRef:t})=>{let e=`\`${h}\` requires a description for the component to be accessible for screen reader users.
2
-
3
- You can add a description to the \`${h}\` by passing a \`${k}\` component as a child, which also benefits sighted users by adding visible context to the dialog.
4
-
5
- Alternatively, you can use your own component as a description by assigning it an \`id\` and passing the same value to the \`aria-describedby\` prop in \`${h}\`. If the description is confusing or duplicative for sighted users, you can use the \`@radix-ui/react-visually-hidden\` primitive as a wrapper around your description component.
6
-
7
- For more information, see https://radix-ui.com/primitives/docs/components/alert-dialog`;return a.useEffect(()=>{document.getElementById(t.current?.getAttribute("aria-describedby"))||console.warn(e)},[e,t]),null};t.s(["Action",()=>C,"AlertDialog",()=>f,"AlertDialogAction",()=>C,"AlertDialogCancel",()=>N,"AlertDialogContent",()=>x,"AlertDialogDescription",()=>D,"AlertDialogOverlay",()=>g,"AlertDialogPortal",()=>p,"AlertDialogTitle",()=>E,"AlertDialogTrigger",()=>m,"Cancel",()=>N,"Content",()=>x,"Description",()=>D,"Overlay",()=>g,"Portal",()=>p,"Root",()=>f,"Title",()=>E,"Trigger",()=>m,"createAlertDialogScope",()=>u],28883);var T=t.i(28883),T=T,S=t.i(31777),z=t.i(35364);function R({...t}){return(0,e.jsx)(T.Root,{"data-slot":"alert-dialog",...t})}function M({...t}){return(0,e.jsx)(T.Trigger,{"data-slot":"alert-dialog-trigger",...t})}function B({...t}){return(0,e.jsx)(T.Portal,{"data-slot":"alert-dialog-portal",...t})}function P({className:t,onClick:a,...r}){return(0,e.jsx)(T.Overlay,{"data-slot":"alert-dialog-overlay",className:(0,S.cn)("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50",t),onClick:t=>{t.stopPropagation(),a?.(t)},...r})}function Y({className:t,size:a="default",...r}){return(0,e.jsxs)(B,{children:[(0,e.jsx)(P,{}),(0,e.jsx)(T.Content,{"data-slot":"alert-dialog-content","data-size":a,className:(0,S.cn)("bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 group/alert-dialog-content fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 data-[size=sm]:max-w-xs data-[size=default]:sm:max-w-lg",t),...r})]})}function $({className:t,...a}){return(0,e.jsx)("div",{"data-slot":"alert-dialog-header",className:(0,S.cn)("grid grid-rows-[auto_1fr] place-items-center gap-1.5 text-center has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr] has-data-[slot=alert-dialog-media]:gap-x-6 sm:group-data-[size=default]/alert-dialog-content:place-items-start sm:group-data-[size=default]/alert-dialog-content:text-left sm:group-data-[size=default]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr]",t),...a})}function I({className:t,...a}){return(0,e.jsx)("div",{"data-slot":"alert-dialog-footer",className:(0,S.cn)("flex flex-col-reverse gap-2 group-data-[size=sm]/alert-dialog-content:grid group-data-[size=sm]/alert-dialog-content:grid-cols-2 sm:flex-row sm:justify-end",t),...a})}function L({className:t,...a}){return(0,e.jsx)(T.Title,{"data-slot":"alert-dialog-title",className:(0,S.cn)("text-lg font-semibold sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2",t),...a})}function O({className:t,...a}){return(0,e.jsx)(T.Description,{"data-slot":"alert-dialog-description",className:(0,S.cn)("text-muted-foreground text-sm",t),...a})}function H({className:t,variant:a="default",size:r="default",...o}){return(0,e.jsx)(z.Button,{variant:a,size:r,asChild:!0,children:(0,e.jsx)(T.Action,{"data-slot":"alert-dialog-action",className:(0,S.cn)(t),...o})})}function V({className:t,variant:a="outline",size:r="default",...o}){return(0,e.jsx)(z.Button,{variant:a,size:r,asChild:!0,children:(0,e.jsx)(T.Cancel,{"data-slot":"alert-dialog-cancel",className:(0,S.cn)(t),...o})})}t.s(["AlertDialog",()=>R,"AlertDialogAction",()=>H,"AlertDialogCancel",()=>V,"AlertDialogContent",()=>Y,"AlertDialogDescription",()=>O,"AlertDialogFooter",()=>I,"AlertDialogHeader",()=>$,"AlertDialogTitle",()=>L,"AlertDialogTrigger",()=>M],71326);let F=(0,a.createContext)(null);function U({children:t}){let r=(0,a.useRef)(null),o=(0,a.useRef)(null),[n,s]=(0,a.useState)(!1),i=(0,a.useCallback)(t=>{r.current=t},[]),l=(0,a.useCallback)(t=>{if(r.current?.isDirty){o.current=t,s(!0);return}t()},[]),d=(0,a.useCallback)(()=>{s(!1),r.current?.onReset(),r.current=null,o.current?.(),o.current=null},[]),u=(0,a.useCallback)(()=>{s(!1),o.current=null},[]),c=(0,a.useCallback)(()=>r.current?.isDirty??!1,[]);return(0,e.jsxs)(F,{value:{setGuard:i,guardedNavigate:l,getIsDirty:c},children:[t,(0,e.jsx)(R,{open:n,children:(0,e.jsxs)(Y,{children:[(0,e.jsxs)($,{children:[(0,e.jsx)(L,{children:"Discard unsaved changes?"}),(0,e.jsx)(O,{children:"You have unsaved changes. Are you sure you want to discard them?"})]}),(0,e.jsxs)(I,{children:[(0,e.jsx)(H,{variant:"destructive",onClick:d,children:"Discard"}),(0,e.jsx)(V,{onClick:u,children:"Keep editing"})]})]})})]})}function X(){let t=(0,a.useContext)(F);if(!t)throw Error("useDrawerCloseGuard must be used within DrawerCloseGuardProvider");return t}function K({open:t,isDirty:e,onClose:r,onReset:o}){let{setGuard:n,guardedNavigate:s}=X();return(0,a.useEffect)(()=>(t?n({isDirty:e,onReset:o}):n(null),()=>n(null)),[t,e,o,n]),{attemptClose:(0,a.useCallback)(()=>{s(()=>{o(),r()})},[s,r,o])}}t.s(["DrawerCloseGuardProvider",()=>U,"useDrawerCloseGuard",()=>X,"useGuardedDrawerClose",()=>K],30153)},60112,t=>{"use strict";var e=t.i(79054),a=t.i(26036);let r=Array(12).fill(0),o=({visible:t,className:a})=>e.default.createElement("div",{className:["sonner-loading-wrapper",a].filter(Boolean).join(" "),"data-visible":t},e.default.createElement("div",{className:"sonner-spinner"},r.map((t,a)=>e.default.createElement("div",{className:"sonner-loading-bar",key:`spinner-bar-${a}`})))),n=e.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},e.default.createElement("path",{fillRule:"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z",clipRule:"evenodd"})),s=e.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor",height:"20",width:"20"},e.default.createElement("path",{fillRule:"evenodd",d:"M9.401 3.003c1.155-2 4.043-2 5.197 0l7.355 12.748c1.154 2-.29 4.5-2.599 4.5H4.645c-2.309 0-3.752-2.5-2.598-4.5L9.4 3.003zM12 8.25a.75.75 0 01.75.75v3.75a.75.75 0 01-1.5 0V9a.75.75 0 01.75-.75zm0 8.25a.75.75 0 100-1.5.75.75 0 000 1.5z",clipRule:"evenodd"})),i=e.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},e.default.createElement("path",{fillRule:"evenodd",d:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a.75.75 0 000 1.5h.253a.25.25 0 01.244.304l-.459 2.066A1.75 1.75 0 0010.747 15H11a.75.75 0 000-1.5h-.253a.25.25 0 01-.244-.304l.459-2.066A1.75 1.75 0 009.253 9H9z",clipRule:"evenodd"})),l=e.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},e.default.createElement("path",{fillRule:"evenodd",d:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-8-5a.75.75 0 01.75.75v4.5a.75.75 0 01-1.5 0v-4.5A.75.75 0 0110 5zm0 10a1 1 0 100-2 1 1 0 000 2z",clipRule:"evenodd"})),d=e.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"},e.default.createElement("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),e.default.createElement("line",{x1:"6",y1:"6",x2:"18",y2:"18"})),u=1,c=new class{constructor(){this.subscribe=t=>(this.subscribers.push(t),()=>{let e=this.subscribers.indexOf(t);this.subscribers.splice(e,1)}),this.publish=t=>{this.subscribers.forEach(e=>e(t))},this.addToast=t=>{this.publish(t),this.toasts=[...this.toasts,t]},this.create=t=>{var e;let{message:a,...r}=t,o="number"==typeof(null==t?void 0:t.id)||(null==(e=t.id)?void 0:e.length)>0?t.id:u++,n=this.toasts.find(t=>t.id===o),s=void 0===t.dismissible||t.dismissible;return this.dismissedToasts.has(o)&&this.dismissedToasts.delete(o),n?this.toasts=this.toasts.map(e=>e.id===o?(this.publish({...e,...t,id:o,title:a}),{...e,...t,id:o,dismissible:s,title:a}):e):this.addToast({title:a,...r,dismissible:s,id:o}),o},this.dismiss=t=>(t?(this.dismissedToasts.add(t),requestAnimationFrame(()=>this.subscribers.forEach(e=>e({id:t,dismiss:!0})))):this.toasts.forEach(t=>{this.subscribers.forEach(e=>e({id:t.id,dismiss:!0}))}),t),this.message=(t,e)=>this.create({...e,message:t}),this.error=(t,e)=>this.create({...e,message:t,type:"error"}),this.success=(t,e)=>this.create({...e,type:"success",message:t}),this.info=(t,e)=>this.create({...e,type:"info",message:t}),this.warning=(t,e)=>this.create({...e,type:"warning",message:t}),this.loading=(t,e)=>this.create({...e,type:"loading",message:t}),this.promise=(t,a)=>{let r,o;if(!a)return;void 0!==a.loading&&(o=this.create({...a,promise:t,type:"loading",message:a.loading,description:"function"!=typeof a.description?a.description:void 0}));let n=Promise.resolve(t instanceof Function?t():t),s=void 0!==o,i=n.then(async t=>{if(r=["resolve",t],e.default.isValidElement(t))s=!1,this.create({id:o,type:"default",message:t});else if(f(t)&&!t.ok){s=!1;let r="function"==typeof a.error?await a.error(`HTTP error! status: ${t.status}`):a.error,n="function"==typeof a.description?await a.description(`HTTP error! status: ${t.status}`):a.description,i="object"!=typeof r||e.default.isValidElement(r)?{message:r}:r;this.create({id:o,type:"error",description:n,...i})}else if(t instanceof Error){s=!1;let r="function"==typeof a.error?await a.error(t):a.error,n="function"==typeof a.description?await a.description(t):a.description,i="object"!=typeof r||e.default.isValidElement(r)?{message:r}:r;this.create({id:o,type:"error",description:n,...i})}else if(void 0!==a.success){s=!1;let r="function"==typeof a.success?await a.success(t):a.success,n="function"==typeof a.description?await a.description(t):a.description,i="object"!=typeof r||e.default.isValidElement(r)?{message:r}:r;this.create({id:o,type:"success",description:n,...i})}}).catch(async t=>{if(r=["reject",t],void 0!==a.error){s=!1;let r="function"==typeof a.error?await a.error(t):a.error,n="function"==typeof a.description?await a.description(t):a.description,i="object"!=typeof r||e.default.isValidElement(r)?{message:r}:r;this.create({id:o,type:"error",description:n,...i})}}).finally(()=>{s&&(this.dismiss(o),o=void 0),null==a.finally||a.finally.call(a)}),l=()=>new Promise((t,e)=>i.then(()=>"reject"===r[0]?e(r[1]):t(r[1])).catch(e));return"string"!=typeof o&&"number"!=typeof o?{unwrap:l}:Object.assign(o,{unwrap:l})},this.custom=(t,e)=>{let a=(null==e?void 0:e.id)||u++;return this.create({jsx:t(a),id:a,...e}),a},this.getActiveToasts=()=>this.toasts.filter(t=>!this.dismissedToasts.has(t.id)),this.subscribers=[],this.toasts=[],this.dismissedToasts=new Set}},f=t=>t&&"object"==typeof t&&"ok"in t&&"boolean"==typeof t.ok&&"status"in t&&"number"==typeof t.status,m=Object.assign((t,e)=>{let a=(null==e?void 0:e.id)||u++;return c.addToast({title:t,...e,id:a}),a},{success:c.success,info:c.info,warning:c.warning,error:c.error,custom:c.custom,message:c.message,promise:c.promise,dismiss:c.dismiss,loading:c.loading},{getHistory:()=>c.toasts,getToasts:()=>c.getActiveToasts()});function p(t){return void 0!==t.label}function g(...t){return t.filter(Boolean).join(" ")}!function(t){if(!t||"u"<typeof document)return;let e=document.head||document.getElementsByTagName("head")[0],a=document.createElement("style");a.type="text/css",e.appendChild(a),a.styleSheet?a.styleSheet.cssText=t:a.appendChild(document.createTextNode(t))}("[data-sonner-toaster][dir=ltr],html[dir=ltr]{--toast-icon-margin-start:-3px;--toast-icon-margin-end:4px;--toast-svg-margin-start:-1px;--toast-svg-margin-end:0px;--toast-button-margin-start:auto;--toast-button-margin-end:0;--toast-close-button-start:0;--toast-close-button-end:unset;--toast-close-button-transform:translate(-35%, -35%)}[data-sonner-toaster][dir=rtl],html[dir=rtl]{--toast-icon-margin-start:4px;--toast-icon-margin-end:-3px;--toast-svg-margin-start:0px;--toast-svg-margin-end:-1px;--toast-button-margin-start:0;--toast-button-margin-end:auto;--toast-close-button-start:unset;--toast-close-button-end:0;--toast-close-button-transform:translate(35%, -35%)}[data-sonner-toaster]{position:fixed;width:var(--width);font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;--gray1:hsl(0, 0%, 99%);--gray2:hsl(0, 0%, 97.3%);--gray3:hsl(0, 0%, 95.1%);--gray4:hsl(0, 0%, 93%);--gray5:hsl(0, 0%, 90.9%);--gray6:hsl(0, 0%, 88.7%);--gray7:hsl(0, 0%, 85.8%);--gray8:hsl(0, 0%, 78%);--gray9:hsl(0, 0%, 56.1%);--gray10:hsl(0, 0%, 52.3%);--gray11:hsl(0, 0%, 43.5%);--gray12:hsl(0, 0%, 9%);--border-radius:8px;box-sizing:border-box;padding:0;margin:0;list-style:none;outline:0;z-index:999999999;transition:transform .4s ease}@media (hover:none) and (pointer:coarse){[data-sonner-toaster][data-lifted=true]{transform:none}}[data-sonner-toaster][data-x-position=right]{right:var(--offset-right)}[data-sonner-toaster][data-x-position=left]{left:var(--offset-left)}[data-sonner-toaster][data-x-position=center]{left:50%;transform:translateX(-50%)}[data-sonner-toaster][data-y-position=top]{top:var(--offset-top)}[data-sonner-toaster][data-y-position=bottom]{bottom:var(--offset-bottom)}[data-sonner-toast]{--y:translateY(100%);--lift-amount:calc(var(--lift) * var(--gap));z-index:var(--z-index);position:absolute;opacity:0;transform:var(--y);touch-action:none;transition:transform .4s,opacity .4s,height .4s,box-shadow .2s;box-sizing:border-box;outline:0;overflow-wrap:anywhere}[data-sonner-toast][data-styled=true]{padding:16px;background:var(--normal-bg);border:1px solid var(--normal-border);color:var(--normal-text);border-radius:var(--border-radius);box-shadow:0 4px 12px rgba(0,0,0,.1);width:var(--width);font-size:13px;display:flex;align-items:center;gap:6px}[data-sonner-toast]:focus-visible{box-shadow:0 4px 12px rgba(0,0,0,.1),0 0 0 2px rgba(0,0,0,.2)}[data-sonner-toast][data-y-position=top]{top:0;--y:translateY(-100%);--lift:1;--lift-amount:calc(1 * var(--gap))}[data-sonner-toast][data-y-position=bottom]{bottom:0;--y:translateY(100%);--lift:-1;--lift-amount:calc(var(--lift) * var(--gap))}[data-sonner-toast][data-styled=true] [data-description]{font-weight:400;line-height:1.4;color:#3f3f3f}[data-rich-colors=true][data-sonner-toast][data-styled=true] [data-description]{color:inherit}[data-sonner-toaster][data-sonner-theme=dark] [data-description]{color:#e8e8e8}[data-sonner-toast][data-styled=true] [data-title]{font-weight:500;line-height:1.5;color:inherit}[data-sonner-toast][data-styled=true] [data-icon]{display:flex;height:16px;width:16px;position:relative;justify-content:flex-start;align-items:center;flex-shrink:0;margin-left:var(--toast-icon-margin-start);margin-right:var(--toast-icon-margin-end)}[data-sonner-toast][data-promise=true] [data-icon]>svg{opacity:0;transform:scale(.8);transform-origin:center;animation:sonner-fade-in .3s ease forwards}[data-sonner-toast][data-styled=true] [data-icon]>*{flex-shrink:0}[data-sonner-toast][data-styled=true] [data-icon] svg{margin-left:var(--toast-svg-margin-start);margin-right:var(--toast-svg-margin-end)}[data-sonner-toast][data-styled=true] [data-content]{display:flex;flex-direction:column;gap:2px}[data-sonner-toast][data-styled=true] [data-button]{border-radius:4px;padding-left:8px;padding-right:8px;height:24px;font-size:12px;color:var(--normal-bg);background:var(--normal-text);margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end);border:none;font-weight:500;cursor:pointer;outline:0;display:flex;align-items:center;flex-shrink:0;transition:opacity .4s,box-shadow .2s}[data-sonner-toast][data-styled=true] [data-button]:focus-visible{box-shadow:0 0 0 2px rgba(0,0,0,.4)}[data-sonner-toast][data-styled=true] [data-button]:first-of-type{margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end)}[data-sonner-toast][data-styled=true] [data-cancel]{color:var(--normal-text);background:rgba(0,0,0,.08)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast][data-styled=true] [data-cancel]{background:rgba(255,255,255,.3)}[data-sonner-toast][data-styled=true] [data-close-button]{position:absolute;left:var(--toast-close-button-start);right:var(--toast-close-button-end);top:0;height:20px;width:20px;display:flex;justify-content:center;align-items:center;padding:0;color:var(--gray12);background:var(--normal-bg);border:1px solid var(--gray4);transform:var(--toast-close-button-transform);border-radius:50%;cursor:pointer;z-index:1;transition:opacity .1s,background .2s,border-color .2s}[data-sonner-toast][data-styled=true] [data-close-button]:focus-visible{box-shadow:0 4px 12px rgba(0,0,0,.1),0 0 0 2px rgba(0,0,0,.2)}[data-sonner-toast][data-styled=true] [data-disabled=true]{cursor:not-allowed}[data-sonner-toast][data-styled=true]:hover [data-close-button]:hover{background:var(--gray2);border-color:var(--gray5)}[data-sonner-toast][data-swiping=true]::before{content:'';position:absolute;left:-100%;right:-100%;height:100%;z-index:-1}[data-sonner-toast][data-y-position=top][data-swiping=true]::before{bottom:50%;transform:scaleY(3) translateY(50%)}[data-sonner-toast][data-y-position=bottom][data-swiping=true]::before{top:50%;transform:scaleY(3) translateY(-50%)}[data-sonner-toast][data-swiping=false][data-removed=true]::before{content:'';position:absolute;inset:0;transform:scaleY(2)}[data-sonner-toast][data-expanded=true]::after{content:'';position:absolute;left:0;height:calc(var(--gap) + 1px);bottom:100%;width:100%}[data-sonner-toast][data-mounted=true]{--y:translateY(0);opacity:1}[data-sonner-toast][data-expanded=false][data-front=false]{--scale:var(--toasts-before) * 0.05 + 1;--y:translateY(calc(var(--lift-amount) * var(--toasts-before))) scale(calc(-1 * var(--scale)));height:var(--front-toast-height)}[data-sonner-toast]>*{transition:opacity .4s}[data-sonner-toast][data-x-position=right]{right:0}[data-sonner-toast][data-x-position=left]{left:0}[data-sonner-toast][data-expanded=false][data-front=false][data-styled=true]>*{opacity:0}[data-sonner-toast][data-visible=false]{opacity:0;pointer-events:none}[data-sonner-toast][data-mounted=true][data-expanded=true]{--y:translateY(calc(var(--lift) * var(--offset)));height:var(--initial-height)}[data-sonner-toast][data-removed=true][data-front=true][data-swipe-out=false]{--y:translateY(calc(var(--lift) * -100%));opacity:0}[data-sonner-toast][data-removed=true][data-front=false][data-swipe-out=false][data-expanded=true]{--y:translateY(calc(var(--lift) * var(--offset) + var(--lift) * -100%));opacity:0}[data-sonner-toast][data-removed=true][data-front=false][data-swipe-out=false][data-expanded=false]{--y:translateY(40%);opacity:0;transition:transform .5s,opacity .2s}[data-sonner-toast][data-removed=true][data-front=false]::before{height:calc(var(--initial-height) + 20%)}[data-sonner-toast][data-swiping=true]{transform:var(--y) translateY(var(--swipe-amount-y,0)) translateX(var(--swipe-amount-x,0));transition:none}[data-sonner-toast][data-swiped=true]{user-select:none}[data-sonner-toast][data-swipe-out=true][data-y-position=bottom],[data-sonner-toast][data-swipe-out=true][data-y-position=top]{animation-duration:.2s;animation-timing-function:ease-out;animation-fill-mode:forwards}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=left]{animation-name:swipe-out-left}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=right]{animation-name:swipe-out-right}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=up]{animation-name:swipe-out-up}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=down]{animation-name:swipe-out-down}@keyframes swipe-out-left{from{transform:var(--y) translateX(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translateX(calc(var(--swipe-amount-x) - 100%));opacity:0}}@keyframes swipe-out-right{from{transform:var(--y) translateX(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translateX(calc(var(--swipe-amount-x) + 100%));opacity:0}}@keyframes swipe-out-up{from{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) - 100%));opacity:0}}@keyframes swipe-out-down{from{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) + 100%));opacity:0}}@media (max-width:600px){[data-sonner-toaster]{position:fixed;right:var(--mobile-offset-right);left:var(--mobile-offset-left);width:100%}[data-sonner-toaster][dir=rtl]{left:calc(var(--mobile-offset-left) * -1)}[data-sonner-toaster] [data-sonner-toast]{left:0;right:0;width:calc(100% - var(--mobile-offset-left) * 2)}[data-sonner-toaster][data-x-position=left]{left:var(--mobile-offset-left)}[data-sonner-toaster][data-y-position=bottom]{bottom:var(--mobile-offset-bottom)}[data-sonner-toaster][data-y-position=top]{top:var(--mobile-offset-top)}[data-sonner-toaster][data-x-position=center]{left:var(--mobile-offset-left);right:var(--mobile-offset-right);transform:none}}[data-sonner-toaster][data-sonner-theme=light]{--normal-bg:#fff;--normal-border:var(--gray4);--normal-text:var(--gray12);--success-bg:hsl(143, 85%, 96%);--success-border:hsl(145, 92%, 87%);--success-text:hsl(140, 100%, 27%);--info-bg:hsl(208, 100%, 97%);--info-border:hsl(221, 91%, 93%);--info-text:hsl(210, 92%, 45%);--warning-bg:hsl(49, 100%, 97%);--warning-border:hsl(49, 91%, 84%);--warning-text:hsl(31, 92%, 45%);--error-bg:hsl(359, 100%, 97%);--error-border:hsl(359, 100%, 94%);--error-text:hsl(360, 100%, 45%)}[data-sonner-toaster][data-sonner-theme=light] [data-sonner-toast][data-invert=true]{--normal-bg:#000;--normal-border:hsl(0, 0%, 20%);--normal-text:var(--gray1)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast][data-invert=true]{--normal-bg:#fff;--normal-border:var(--gray3);--normal-text:var(--gray12)}[data-sonner-toaster][data-sonner-theme=dark]{--normal-bg:#000;--normal-bg-hover:hsl(0, 0%, 12%);--normal-border:hsl(0, 0%, 20%);--normal-border-hover:hsl(0, 0%, 25%);--normal-text:var(--gray1);--success-bg:hsl(150, 100%, 6%);--success-border:hsl(147, 100%, 12%);--success-text:hsl(150, 86%, 65%);--info-bg:hsl(215, 100%, 6%);--info-border:hsl(223, 43%, 17%);--info-text:hsl(216, 87%, 65%);--warning-bg:hsl(64, 100%, 6%);--warning-border:hsl(60, 100%, 9%);--warning-text:hsl(46, 87%, 65%);--error-bg:hsl(358, 76%, 10%);--error-border:hsl(357, 89%, 16%);--error-text:hsl(358, 100%, 81%)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast] [data-close-button]{background:var(--normal-bg);border-color:var(--normal-border);color:var(--normal-text)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast] [data-close-button]:hover{background:var(--normal-bg-hover);border-color:var(--normal-border-hover)}[data-rich-colors=true][data-sonner-toast][data-type=success]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=success] [data-close-button]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=info]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=info] [data-close-button]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning] [data-close-button]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=error]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}[data-rich-colors=true][data-sonner-toast][data-type=error] [data-close-button]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}.sonner-loading-wrapper{--size:16px;height:var(--size);width:var(--size);position:absolute;inset:0;z-index:10}.sonner-loading-wrapper[data-visible=false]{transform-origin:center;animation:sonner-fade-out .2s ease forwards}.sonner-spinner{position:relative;top:50%;left:50%;height:var(--size);width:var(--size)}.sonner-loading-bar{animation:sonner-spin 1.2s linear infinite;background:var(--gray11);border-radius:6px;height:8%;left:-10%;position:absolute;top:-3.9%;width:24%}.sonner-loading-bar:first-child{animation-delay:-1.2s;transform:rotate(.0001deg) translate(146%)}.sonner-loading-bar:nth-child(2){animation-delay:-1.1s;transform:rotate(30deg) translate(146%)}.sonner-loading-bar:nth-child(3){animation-delay:-1s;transform:rotate(60deg) translate(146%)}.sonner-loading-bar:nth-child(4){animation-delay:-.9s;transform:rotate(90deg) translate(146%)}.sonner-loading-bar:nth-child(5){animation-delay:-.8s;transform:rotate(120deg) translate(146%)}.sonner-loading-bar:nth-child(6){animation-delay:-.7s;transform:rotate(150deg) translate(146%)}.sonner-loading-bar:nth-child(7){animation-delay:-.6s;transform:rotate(180deg) translate(146%)}.sonner-loading-bar:nth-child(8){animation-delay:-.5s;transform:rotate(210deg) translate(146%)}.sonner-loading-bar:nth-child(9){animation-delay:-.4s;transform:rotate(240deg) translate(146%)}.sonner-loading-bar:nth-child(10){animation-delay:-.3s;transform:rotate(270deg) translate(146%)}.sonner-loading-bar:nth-child(11){animation-delay:-.2s;transform:rotate(300deg) translate(146%)}.sonner-loading-bar:nth-child(12){animation-delay:-.1s;transform:rotate(330deg) translate(146%)}@keyframes sonner-fade-in{0%{opacity:0;transform:scale(.8)}100%{opacity:1;transform:scale(1)}}@keyframes sonner-fade-out{0%{opacity:1;transform:scale(1)}100%{opacity:0;transform:scale(.8)}}@keyframes sonner-spin{0%{opacity:1}100%{opacity:.15}}@media (prefers-reduced-motion){.sonner-loading-bar,[data-sonner-toast],[data-sonner-toast]>*{transition:none!important;animation:none!important}}.sonner-loader{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);transform-origin:center;transition:opacity .2s,transform .2s}.sonner-loader[data-visible=false]{opacity:0;transform:scale(.8) translate(-50%,-50%)}");let h=t=>{var a,r,u,c,f,m,h,v,b,y,x,w,E;let{invert:k,toast:D,unstyled:C,interacting:j,setHeights:N,visibleToasts:A,heights:T,index:S,toasts:z,expanded:R,removeToast:M,defaultRichColors:B,closeButton:P,style:Y,cancelButtonStyle:$,actionButtonStyle:I,className:L="",descriptionClassName:O="",duration:H,position:V,gap:F,expandByDefault:U,classNames:X,icons:K,closeButtonAriaLabel:G="Close toast"}=t,[_,q]=e.default.useState(null),[W,J]=e.default.useState(null),[Q,Z]=e.default.useState(!1),[tt,te]=e.default.useState(!1),[ta,tr]=e.default.useState(!1),[to,tn]=e.default.useState(!1),[ts,ti]=e.default.useState(!1),[tl,td]=e.default.useState(0),[tu,tc]=e.default.useState(0),tf=e.default.useRef(D.duration||H||4e3),tm=e.default.useRef(null),tp=e.default.useRef(null),tg=0===S,th=S+1<=A,tv=D.type,tb=!1!==D.dismissible,ty=D.className||"",tx=D.descriptionClassName||"",tw=e.default.useMemo(()=>T.findIndex(t=>t.toastId===D.id)||0,[T,D.id]),tE=e.default.useMemo(()=>{var t;return null!=(t=D.closeButton)?t:P},[D.closeButton,P]),tk=e.default.useMemo(()=>D.duration||H||4e3,[D.duration,H]),tD=e.default.useRef(0),tC=e.default.useRef(0),tj=e.default.useRef(0),tN=e.default.useRef(null),[tA,tT]=V.split("-"),tS=e.default.useMemo(()=>T.reduce((t,e,a)=>a>=tw?t:t+e.height,0),[T,tw]),tz=(()=>{let[t,a]=e.default.useState(document.hidden);return e.default.useEffect(()=>{let t=()=>{a(document.hidden)};return document.addEventListener("visibilitychange",t),()=>window.removeEventListener("visibilitychange",t)},[]),t})(),tR=D.invert||k,tM="loading"===tv;tC.current=e.default.useMemo(()=>tw*F+tS,[tw,tS]),e.default.useEffect(()=>{tf.current=tk},[tk]),e.default.useEffect(()=>{Z(!0)},[]),e.default.useEffect(()=>{let t=tp.current;if(t){let e=t.getBoundingClientRect().height;return tc(e),N(t=>[{toastId:D.id,height:e,position:D.position},...t]),()=>N(t=>t.filter(t=>t.toastId!==D.id))}},[N,D.id]),e.default.useLayoutEffect(()=>{if(!Q)return;let t=tp.current,e=t.style.height;t.style.height="auto";let a=t.getBoundingClientRect().height;t.style.height=e,tc(a),N(t=>t.find(t=>t.toastId===D.id)?t.map(t=>t.toastId===D.id?{...t,height:a}:t):[{toastId:D.id,height:a,position:D.position},...t])},[Q,D.title,D.description,N,D.id,D.jsx,D.action,D.cancel]);let tB=e.default.useCallback(()=>{te(!0),td(tC.current),N(t=>t.filter(t=>t.toastId!==D.id)),setTimeout(()=>{M(D)},200)},[D,M,N,tC]);e.default.useEffect(()=>{let t;if((!D.promise||"loading"!==tv)&&D.duration!==1/0&&"loading"!==D.type){if(R||j||tz){if(tj.current<tD.current){let t=new Date().getTime()-tD.current;tf.current=tf.current-t}tj.current=new Date().getTime()}else tf.current!==1/0&&(tD.current=new Date().getTime(),t=setTimeout(()=>{null==D.onAutoClose||D.onAutoClose.call(D,D),tB()},tf.current));return()=>clearTimeout(t)}},[R,j,D,tv,tz,tB]),e.default.useEffect(()=>{D.delete&&(tB(),null==D.onDismiss||D.onDismiss.call(D,D))},[tB,D.delete]);let tP=D.icon||(null==K?void 0:K[tv])||(t=>{switch(t){case"success":return n;case"info":return i;case"warning":return s;case"error":return l;default:return null}})(tv);return e.default.createElement("li",{tabIndex:0,ref:tp,className:g(L,ty,null==X?void 0:X.toast,null==D||null==(a=D.classNames)?void 0:a.toast,null==X?void 0:X.default,null==X?void 0:X[tv],null==D||null==(r=D.classNames)?void 0:r[tv]),"data-sonner-toast":"","data-rich-colors":null!=(y=D.richColors)?y:B,"data-styled":!(D.jsx||D.unstyled||C),"data-mounted":Q,"data-promise":!!D.promise,"data-swiped":ts,"data-removed":tt,"data-visible":th,"data-y-position":tA,"data-x-position":tT,"data-index":S,"data-front":tg,"data-swiping":ta,"data-dismissible":tb,"data-type":tv,"data-invert":tR,"data-swipe-out":to,"data-swipe-direction":W,"data-expanded":!!(R||U&&Q),"data-testid":D.testId,style:{"--index":S,"--toasts-before":S,"--z-index":z.length-S,"--offset":`${tt?tl:tC.current}px`,"--initial-height":U?"auto":`${tu}px`,...Y,...D.style},onDragEnd:()=>{tr(!1),q(null),tN.current=null},onPointerDown:t=>{2===t.button||tM||!tb||(tm.current=new Date,td(tC.current),t.target.setPointerCapture(t.pointerId),"BUTTON"!==t.target.tagName&&(tr(!0),tN.current={x:t.clientX,y:t.clientY}))},onPointerUp:()=>{var t,e,a,r,o;if(to||!tb)return;tN.current=null;let n=Number((null==(t=tp.current)?void 0:t.style.getPropertyValue("--swipe-amount-x").replace("px",""))||0),s=Number((null==(e=tp.current)?void 0:e.style.getPropertyValue("--swipe-amount-y").replace("px",""))||0),i=new Date().getTime()-(null==(a=tm.current)?void 0:a.getTime()),l="x"===_?n:s,d=Math.abs(l)/i;if(Math.abs(l)>=45||d>.11){td(tC.current),null==D.onDismiss||D.onDismiss.call(D,D),"x"===_?J(n>0?"right":"left"):J(s>0?"down":"up"),tB(),tn(!0);return}null==(r=tp.current)||r.style.setProperty("--swipe-amount-x","0px"),null==(o=tp.current)||o.style.setProperty("--swipe-amount-y","0px"),ti(!1),tr(!1),q(null)},onPointerMove:e=>{var a,r,o,n;if(!tN.current||!tb||(null==(a=window.getSelection())?void 0:a.toString().length)>0)return;let s=e.clientY-tN.current.y,i=e.clientX-tN.current.x,l=null!=(n=t.swipeDirections)?n:function(t){let[e,a]=t.split("-"),r=[];return e&&r.push(e),a&&r.push(a),r}(V);!_&&(Math.abs(i)>1||Math.abs(s)>1)&&q(Math.abs(i)>Math.abs(s)?"x":"y");let d={x:0,y:0},u=t=>1/(1.5+Math.abs(t)/20);if("y"===_){if(l.includes("top")||l.includes("bottom"))if(l.includes("top")&&s<0||l.includes("bottom")&&s>0)d.y=s;else{let t=s*u(s);d.y=Math.abs(t)<Math.abs(s)?t:s}}else if("x"===_&&(l.includes("left")||l.includes("right")))if(l.includes("left")&&i<0||l.includes("right")&&i>0)d.x=i;else{let t=i*u(i);d.x=Math.abs(t)<Math.abs(i)?t:i}(Math.abs(d.x)>0||Math.abs(d.y)>0)&&ti(!0),null==(r=tp.current)||r.style.setProperty("--swipe-amount-x",`${d.x}px`),null==(o=tp.current)||o.style.setProperty("--swipe-amount-y",`${d.y}px`)}},tE&&!D.jsx&&"loading"!==tv?e.default.createElement("button",{"aria-label":G,"data-disabled":tM,"data-close-button":!0,onClick:tM||!tb?()=>{}:()=>{tB(),null==D.onDismiss||D.onDismiss.call(D,D)},className:g(null==X?void 0:X.closeButton,null==D||null==(u=D.classNames)?void 0:u.closeButton)},null!=(x=null==K?void 0:K.close)?x:d):null,(tv||D.icon||D.promise)&&null!==D.icon&&((null==K?void 0:K[tv])!==null||D.icon)?e.default.createElement("div",{"data-icon":"",className:g(null==X?void 0:X.icon,null==D||null==(c=D.classNames)?void 0:c.icon)},D.promise||"loading"===D.type&&!D.icon?D.icon||((null==K?void 0:K.loading)?e.default.createElement("div",{className:g(null==X?void 0:X.loader,null==D||null==(E=D.classNames)?void 0:E.loader,"sonner-loader"),"data-visible":"loading"===tv},K.loading):e.default.createElement(o,{className:g(null==X?void 0:X.loader,null==D||null==(w=D.classNames)?void 0:w.loader),visible:"loading"===tv})):null,"loading"!==D.type?tP:null):null,e.default.createElement("div",{"data-content":"",className:g(null==X?void 0:X.content,null==D||null==(f=D.classNames)?void 0:f.content)},e.default.createElement("div",{"data-title":"",className:g(null==X?void 0:X.title,null==D||null==(m=D.classNames)?void 0:m.title)},D.jsx?D.jsx:"function"==typeof D.title?D.title():D.title),D.description?e.default.createElement("div",{"data-description":"",className:g(O,tx,null==X?void 0:X.description,null==D||null==(h=D.classNames)?void 0:h.description)},"function"==typeof D.description?D.description():D.description):null),e.default.isValidElement(D.cancel)?D.cancel:D.cancel&&p(D.cancel)?e.default.createElement("button",{"data-button":!0,"data-cancel":!0,style:D.cancelButtonStyle||$,onClick:t=>{!p(D.cancel)||tb&&(null==D.cancel.onClick||D.cancel.onClick.call(D.cancel,t),tB())},className:g(null==X?void 0:X.cancelButton,null==D||null==(v=D.classNames)?void 0:v.cancelButton)},D.cancel.label):null,e.default.isValidElement(D.action)?D.action:D.action&&p(D.action)?e.default.createElement("button",{"data-button":!0,"data-action":!0,style:D.actionButtonStyle||I,onClick:t=>{!p(D.action)||(null==D.action.onClick||D.action.onClick.call(D.action,t),t.defaultPrevented||tB())},className:g(null==X?void 0:X.actionButton,null==D||null==(b=D.classNames)?void 0:b.actionButton)},D.action.label):null)};function v(){if("u"<typeof window||"u"<typeof document)return"ltr";let t=document.documentElement.getAttribute("dir");return"auto"!==t&&t?t:window.getComputedStyle(document.documentElement).direction}let b=e.default.forwardRef(function(t,r){let{id:o,invert:n,position:s="bottom-right",hotkey:i=["altKey","KeyT"],expand:l,closeButton:d,className:u,offset:f,mobileOffset:m,theme:p="light",richColors:g,duration:b,style:y,visibleToasts:x=3,toastOptions:w,dir:E=v(),gap:k=14,icons:D,containerAriaLabel:C="Notifications"}=t,[j,N]=e.default.useState([]),A=e.default.useMemo(()=>o?j.filter(t=>t.toasterId===o):j.filter(t=>!t.toasterId),[j,o]),T=e.default.useMemo(()=>Array.from(new Set([s].concat(A.filter(t=>t.position).map(t=>t.position)))),[A,s]),[S,z]=e.default.useState([]),[R,M]=e.default.useState(!1),[B,P]=e.default.useState(!1),[Y,$]=e.default.useState("system"!==p?p:"u">typeof window&&window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"),I=e.default.useRef(null),L=i.join("+").replace(/Key/g,"").replace(/Digit/g,""),O=e.default.useRef(null),H=e.default.useRef(!1),V=e.default.useCallback(t=>{N(e=>{var a;return(null==(a=e.find(e=>e.id===t.id))?void 0:a.delete)||c.dismiss(t.id),e.filter(({id:e})=>e!==t.id)})},[]);return e.default.useEffect(()=>c.subscribe(t=>{t.dismiss?requestAnimationFrame(()=>{N(e=>e.map(e=>e.id===t.id?{...e,delete:!0}:e))}):setTimeout(()=>{a.default.flushSync(()=>{N(e=>{let a=e.findIndex(e=>e.id===t.id);return -1!==a?[...e.slice(0,a),{...e[a],...t},...e.slice(a+1)]:[t,...e]})})})}),[j]),e.default.useEffect(()=>{if("system"!==p)return void $(p);if("system"===p&&(window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?$("dark"):$("light")),"u"<typeof window)return;let t=window.matchMedia("(prefers-color-scheme: dark)");try{t.addEventListener("change",({matches:t})=>{t?$("dark"):$("light")})}catch(e){t.addListener(({matches:t})=>{try{t?$("dark"):$("light")}catch(t){console.error(t)}})}},[p]),e.default.useEffect(()=>{j.length<=1&&M(!1)},[j]),e.default.useEffect(()=>{let t=t=>{var e,a;i.every(e=>t[e]||t.code===e)&&(M(!0),null==(a=I.current)||a.focus()),"Escape"===t.code&&(document.activeElement===I.current||(null==(e=I.current)?void 0:e.contains(document.activeElement)))&&M(!1)};return document.addEventListener("keydown",t),()=>document.removeEventListener("keydown",t)},[i]),e.default.useEffect(()=>{if(I.current)return()=>{O.current&&(O.current.focus({preventScroll:!0}),O.current=null,H.current=!1)}},[I.current]),e.default.createElement("section",{ref:r,"aria-label":`${C} ${L}`,tabIndex:-1,"aria-live":"polite","aria-relevant":"additions text","aria-atomic":"false",suppressHydrationWarning:!0},T.map((a,r)=>{var o;let s,[i,c]=a.split("-");return A.length?e.default.createElement("ol",{key:a,dir:"auto"===E?v():E,tabIndex:-1,ref:I,className:u,"data-sonner-toaster":!0,"data-sonner-theme":Y,"data-y-position":i,"data-x-position":c,style:{"--front-toast-height":`${(null==(o=S[0])?void 0:o.height)||0}px`,"--width":"356px","--gap":`${k}px`,...y,...(s={},[f,m].forEach((t,e)=>{let a=1===e,r=a?"--mobile-offset":"--offset",o=a?"16px":"24px";function n(t){["top","right","bottom","left"].forEach(e=>{s[`${r}-${e}`]="number"==typeof t?`${t}px`:t})}"number"==typeof t||"string"==typeof t?n(t):"object"==typeof t?["top","right","bottom","left"].forEach(e=>{void 0===t[e]?s[`${r}-${e}`]=o:s[`${r}-${e}`]="number"==typeof t[e]?`${t[e]}px`:t[e]}):n(o)}),s)},onBlur:t=>{H.current&&!t.currentTarget.contains(t.relatedTarget)&&(H.current=!1,O.current&&(O.current.focus({preventScroll:!0}),O.current=null))},onFocus:t=>{!(t.target instanceof HTMLElement&&"false"===t.target.dataset.dismissible)&&(H.current||(H.current=!0,O.current=t.relatedTarget))},onMouseEnter:()=>M(!0),onMouseMove:()=>M(!0),onMouseLeave:()=>{B||M(!1)},onDragEnd:()=>M(!1),onPointerDown:t=>{t.target instanceof HTMLElement&&"false"===t.target.dataset.dismissible||P(!0)},onPointerUp:()=>P(!1)},A.filter(t=>!t.position&&0===r||t.position===a).map((r,o)=>{var s,i;return e.default.createElement(h,{key:r.id,icons:D,index:o,toast:r,defaultRichColors:g,duration:null!=(s=null==w?void 0:w.duration)?s:b,className:null==w?void 0:w.className,descriptionClassName:null==w?void 0:w.descriptionClassName,invert:n,visibleToasts:x,closeButton:null!=(i=null==w?void 0:w.closeButton)?i:d,interacting:B,position:a,style:null==w?void 0:w.style,unstyled:null==w?void 0:w.unstyled,classNames:null==w?void 0:w.classNames,cancelButtonStyle:null==w?void 0:w.cancelButtonStyle,actionButtonStyle:null==w?void 0:w.actionButtonStyle,closeButtonAriaLabel:null==w?void 0:w.closeButtonAriaLabel,removeToast:V,toasts:A.filter(t=>t.position==r.position),heights:S.filter(t=>t.position==r.position),setHeights:z,expandByDefault:l,gap:k,expanded:R,swipeDirections:t.swipeDirections})})):null}))});t.s(["Toaster",()=>b,"toast",()=>m])}]);
@@ -1 +0,0 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,87292,e=>{"use strict";var t=e.i(20314),r=e.i(79054),a=e.i(31406),i=e.i(94237),o=e.i(3645);let n=(0,o.default)("panel-left",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M9 3v18",key:"fh3hqa"}]]);var s=e.i(5240),l=e.i(31777),d=e.i(35364);e.i(98127),e.i(25235);var c=e.i(48249),u=e.i(90033);function f({...e}){return(0,t.jsx)(u.Dialog.Root,{"data-slot":"sheet",...e})}function p({...e}){return(0,t.jsx)(u.Dialog.Portal,{"data-slot":"sheet-portal",...e})}function h({className:e,...r}){return(0,t.jsx)(u.Dialog.Overlay,{"data-slot":"sheet-overlay",className:(0,l.cn)("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50",e),...r})}function b({className:e,children:r,side:a="right",showCloseButton:i=!0,...o}){return(0,t.jsxs)(p,{children:[(0,t.jsx)(h,{}),(0,t.jsxs)(u.Dialog.Content,{"data-slot":"sheet-content",className:(0,l.cn)("bg-background data-[state=open]:animate-in data-[state=closed]:animate-out fixed z-50 flex flex-col gap-4 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500","right"===a&&"data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right inset-y-0 right-0 h-full w-3/4 border-l sm:max-w-sm","left"===a&&"data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left inset-y-0 left-0 h-full w-3/4 border-r sm:max-w-sm","top"===a&&"data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto border-b","bottom"===a&&"data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 h-auto border-t",e),...o,children:[r,i?(0,t.jsxs)(u.Dialog.Close,{className:"ring-offset-background focus:ring-ring data-[state=open]:bg-secondary absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none",children:[(0,t.jsx)(c.XIcon,{className:"size-4"}),(0,t.jsx)("span",{className:"sr-only",children:"Close"})]}):null]})]})}function m({className:e,...r}){return(0,t.jsx)("div",{"data-slot":"sheet-header",className:(0,l.cn)("flex flex-col gap-1.5 p-4",e),...r})}function g({className:e,...r}){return(0,t.jsx)(u.Dialog.Title,{"data-slot":"sheet-title",className:(0,l.cn)("text-foreground font-semibold",e),...r})}function v({className:e,...r}){return(0,t.jsx)(u.Dialog.Description,{"data-slot":"sheet-description",className:(0,l.cn)("text-muted-foreground text-sm",e),...r})}var x=e.i(2828);let w=r.createContext(null);function C(){let e=r.useContext(w);if(!e)throw Error("useSidebar must be used within a SidebarProvider.");return e}function y({defaultOpen:e=!0,open:a,onOpenChange:i,className:o,style:n,children:s,...d}){let c=function(){let[e,t]=r.useState(void 0);return r.useEffect(()=>{let e=window.matchMedia("(max-width: 767px)"),r=()=>{t(window.innerWidth<768)};return e.addEventListener("change",r),t(window.innerWidth<768),()=>e.removeEventListener("change",r)},[]),!!e}(),[u,f]=r.useState(!1),[p,h]=r.useState(e),b=a??p,m=r.useCallback(e=>{let t="function"==typeof e?e(b):e;i?i(t):h(t),document.cookie=`sidebar_state=${t}; path=/; max-age=604800`},[i,b]),g=r.useCallback(()=>c?f(e=>!e):m(e=>!e),[c,m,f]);r.useEffect(()=>{let e=e=>{"b"===e.key&&(e.metaKey||e.ctrlKey)&&(e.preventDefault(),g())};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[g]);let v=b?"expanded":"collapsed",C=r.useMemo(()=>({state:v,open:b,setOpen:m,isMobile:c,openMobile:u,setOpenMobile:f,toggleSidebar:g}),[v,b,m,c,u,f,g]);return(0,t.jsx)(w.Provider,{value:C,children:(0,t.jsx)(x.TooltipProvider,{delayDuration:0,children:(0,t.jsx)("div",{"data-slot":"sidebar-wrapper",style:{"--sidebar-width":"16rem","--sidebar-width-icon":"3rem",...n},className:(0,l.cn)("group/sidebar-wrapper has-data-[variant=inset]:bg-sidebar flex min-h-svh w-full",o),...d,children:s})})})}function j({side:e="left",variant:r="sidebar",collapsible:a="offcanvas",className:i,children:o,...n}){let{isMobile:s,state:d,openMobile:c,setOpenMobile:u}=C();return"none"===a?(0,t.jsx)("div",{"data-slot":"sidebar",className:(0,l.cn)("bg-sidebar text-sidebar-foreground flex h-full w-(--sidebar-width) flex-col",i),...n,children:o}):s?(0,t.jsx)(f,{open:c,onOpenChange:u,...n,children:(0,t.jsxs)(b,{"data-sidebar":"sidebar","data-slot":"sidebar","data-mobile":"true",className:"bg-sidebar text-sidebar-foreground w-(--sidebar-width) p-0 [&>button]:hidden",style:{"--sidebar-width":"18rem"},side:e,children:[(0,t.jsxs)(m,{className:"sr-only",children:[(0,t.jsx)(g,{children:"Sidebar"}),(0,t.jsx)(v,{children:"Displays the mobile sidebar."})]}),(0,t.jsx)("div",{className:"flex h-full w-full flex-col",children:o})]})}):(0,t.jsxs)("div",{className:"group peer text-sidebar-foreground hidden md:block","data-state":d,"data-collapsible":"collapsed"===d?a:"","data-variant":r,"data-side":e,"data-slot":"sidebar",children:[(0,t.jsx)("div",{"data-slot":"sidebar-gap",className:(0,l.cn)("relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear","group-data-[collapsible=offcanvas]:w-0","group-data-[side=right]:rotate-180","floating"===r||"inset"===r?"group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]":"group-data-[collapsible=icon]:w-(--sidebar-width-icon)")}),(0,t.jsx)("div",{"data-slot":"sidebar-container",className:(0,l.cn)("fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear md:flex","left"===e?"left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]":"right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]","floating"===r||"inset"===r?"p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]":"group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l",i),...n,children:(0,t.jsx)("div",{"data-sidebar":"sidebar","data-slot":"sidebar-inner",className:"bg-sidebar group-data-[variant=floating]:border-sidebar-border flex h-full w-full flex-col group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:shadow-sm",children:o})})]})}function S({className:e,...r}){let{toggleSidebar:a}=C();return(0,t.jsx)("button",{"data-sidebar":"rail","data-slot":"sidebar-rail","aria-label":"Toggle Sidebar",tabIndex:-1,onClick:a,title:"Toggle Sidebar",className:(0,l.cn)("hover:after:bg-sidebar-border absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear group-data-[side=left]:-right-4 group-data-[side=right]:left-0 after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] sm:flex","in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize","[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize","hover:group-data-[collapsible=offcanvas]:bg-sidebar group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full","[[data-side=left][data-collapsible=offcanvas]_&]:-right-2","[[data-side=right][data-collapsible=offcanvas]_&]:-left-2",e),...r})}function k({className:e,...r}){return(0,t.jsx)("main",{"data-slot":"sidebar-inset",className:(0,l.cn)("bg-background relative flex w-full flex-1 flex-col","md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2",e),...r})}function N({className:e,...r}){return(0,t.jsx)("div",{"data-slot":"sidebar-header","data-sidebar":"header",className:(0,l.cn)("flex flex-col gap-2 p-2",e),...r})}function E({className:e,...r}){return(0,t.jsx)("div",{"data-slot":"sidebar-footer","data-sidebar":"footer",className:(0,l.cn)("flex flex-col gap-2 p-2",e),...r})}function T({className:e,...r}){return(0,t.jsx)("div",{"data-slot":"sidebar-content","data-sidebar":"content",className:(0,l.cn)("flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden",e),...r})}function R({className:e,...r}){return(0,t.jsx)("div",{"data-slot":"sidebar-group","data-sidebar":"group",className:(0,l.cn)("relative flex w-full min-w-0 flex-col p-2",e),...r})}function A({className:e,asChild:r=!1,...a}){let i=r?s.Slot.Root:"div";return(0,t.jsx)(i,{"data-slot":"sidebar-group-label","data-sidebar":"group-label",className:(0,l.cn)("text-sidebar-foreground/70 ring-sidebar-ring flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium outline-hidden transition-[margin,opacity] duration-200 ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0","group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0",e),...a})}function L({className:e,...r}){return(0,t.jsx)("div",{"data-slot":"sidebar-group-content","data-sidebar":"group-content",className:(0,l.cn)("w-full text-sm",e),...r})}function P({className:e,...r}){return(0,t.jsx)("ul",{"data-slot":"sidebar-menu","data-sidebar":"menu",className:(0,l.cn)("flex w-full min-w-0 flex-col gap-1",e),...r})}function z({className:e,...r}){return(0,t.jsx)("li",{"data-slot":"sidebar-menu-item","data-sidebar":"menu-item",className:(0,l.cn)("group/menu-item relative",e),...r})}let D=(0,i.cva)("peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm ring-sidebar-ring outline-hidden transition-[width,height,padding] group-has-data-[sidebar=menu-action]/menu-item:pr-8 group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0",{variants:{variant:{default:"hover:bg-sidebar-accent hover:text-sidebar-accent-foreground",outline:"bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]"},size:{default:"h-8 text-sm",sm:"h-7 text-xs",lg:"h-12 text-sm group-data-[collapsible=icon]:p-0!"}},defaultVariants:{variant:"default",size:"default"}});function _({asChild:e=!1,isActive:r=!1,variant:a="default",size:i="default",tooltip:o,className:n,...d}){let c=e?s.Slot.Root:"button",{isMobile:u,state:f}=C(),p=(0,t.jsx)(c,{"data-slot":"sidebar-menu-button","data-sidebar":"menu-button","data-size":i,"data-active":r,className:(0,l.cn)(D({variant:a,size:i}),n),...d});return o?("string"==typeof o&&(o={children:o}),(0,t.jsxs)(x.Tooltip,{children:[(0,t.jsx)(x.TooltipTrigger,{asChild:!0,children:p}),(0,t.jsx)(x.TooltipContent,{side:"right",align:"center",hidden:"collapsed"!==f||u,...o})]})):p}let M=(0,o.default)("house",[["path",{d:"M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8",key:"5wwlr5"}],["path",{d:"M3 10a2 2 0 0 1 .709-1.528l7-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z",key:"r6nss1"}]]);var H=e.i(81975),I=e.i(12103),W=e.i(3214),O=e.i(87620),F=e.i(85995),B=e.i(22528),U=e.i(5978),X=e.i(29297),V=e.i(66033),Y=e.i(5192),$=e.i(91967),q="ScrollArea",[Z,K]=(0,B.createContextScope)(q),[G,J]=Z(q),Q=r.forwardRef((e,a)=>{let{__scopeScrollArea:i,type:o="hover",dir:n,scrollHideDelay:s=600,...l}=e,[d,c]=r.useState(null),[u,f]=r.useState(null),[p,h]=r.useState(null),[b,m]=r.useState(null),[g,v]=r.useState(null),[x,w]=r.useState(0),[C,y]=r.useState(0),[j,S]=r.useState(!1),[k,N]=r.useState(!1),E=(0,U.useComposedRefs)(a,e=>c(e)),T=(0,V.useDirection)(n);return(0,t.jsx)(G,{scope:i,type:o,dir:T,scrollHideDelay:s,scrollArea:d,viewport:u,onViewportChange:f,content:p,onContentChange:h,scrollbarX:b,onScrollbarXChange:m,scrollbarXEnabled:j,onScrollbarXEnabledChange:S,scrollbarY:g,onScrollbarYChange:v,scrollbarYEnabled:k,onScrollbarYEnabledChange:N,onCornerWidthChange:w,onCornerHeightChange:y,children:(0,t.jsx)(O.Primitive.div,{dir:T,...l,ref:E,style:{position:"relative","--radix-scroll-area-corner-width":x+"px","--radix-scroll-area-corner-height":C+"px",...e.style}})})});Q.displayName=q;var ee="ScrollAreaViewport",et=r.forwardRef((e,a)=>{let{__scopeScrollArea:i,children:o,nonce:n,...s}=e,l=J(ee,i),d=r.useRef(null),c=(0,U.useComposedRefs)(a,d,l.onViewportChange);return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("style",{dangerouslySetInnerHTML:{__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}"},nonce:n}),(0,t.jsx)(O.Primitive.div,{"data-radix-scroll-area-viewport":"",...s,ref:c,style:{overflowX:l.scrollbarXEnabled?"scroll":"hidden",overflowY:l.scrollbarYEnabled?"scroll":"hidden",...e.style},children:(0,t.jsx)("div",{ref:l.onContentChange,style:{minWidth:"100%",display:"table"},children:o})})]})});et.displayName=ee;var er="ScrollAreaScrollbar",ea=r.forwardRef((e,a)=>{let{forceMount:i,...o}=e,n=J(er,e.__scopeScrollArea),{onScrollbarXEnabledChange:s,onScrollbarYEnabledChange:l}=n,d="horizontal"===e.orientation;return r.useEffect(()=>(d?s(!0):l(!0),()=>{d?s(!1):l(!1)}),[d,s,l]),"hover"===n.type?(0,t.jsx)(ei,{...o,ref:a,forceMount:i}):"scroll"===n.type?(0,t.jsx)(eo,{...o,ref:a,forceMount:i}):"auto"===n.type?(0,t.jsx)(en,{...o,ref:a,forceMount:i}):"always"===n.type?(0,t.jsx)(es,{...o,ref:a}):null});ea.displayName=er;var ei=r.forwardRef((e,a)=>{let{forceMount:i,...o}=e,n=J(er,e.__scopeScrollArea),[s,l]=r.useState(!1);return r.useEffect(()=>{let e=n.scrollArea,t=0;if(e){let r=()=>{window.clearTimeout(t),l(!0)},a=()=>{t=window.setTimeout(()=>l(!1),n.scrollHideDelay)};return e.addEventListener("pointerenter",r),e.addEventListener("pointerleave",a),()=>{window.clearTimeout(t),e.removeEventListener("pointerenter",r),e.removeEventListener("pointerleave",a)}}},[n.scrollArea,n.scrollHideDelay]),(0,t.jsx)(F.Presence,{present:i||s,children:(0,t.jsx)(en,{"data-state":s?"visible":"hidden",...o,ref:a})})}),eo=r.forwardRef((e,a)=>{var i;let{forceMount:o,...n}=e,s=J(er,e.__scopeScrollArea),l="horizontal"===e.orientation,d=ek(()=>u("SCROLL_END"),100),[c,u]=(i={hidden:{SCROLL:"scrolling"},scrolling:{SCROLL_END:"idle",POINTER_ENTER:"interacting"},interacting:{SCROLL:"interacting",POINTER_LEAVE:"idle"},idle:{HIDE:"hidden",SCROLL:"scrolling",POINTER_ENTER:"interacting"}},r.useReducer((e,t)=>i[e][t]??e,"hidden"));return r.useEffect(()=>{if("idle"===c){let e=window.setTimeout(()=>u("HIDE"),s.scrollHideDelay);return()=>window.clearTimeout(e)}},[c,s.scrollHideDelay,u]),r.useEffect(()=>{let e=s.viewport,t=l?"scrollLeft":"scrollTop";if(e){let r=e[t],a=()=>{let a=e[t];r!==a&&(u("SCROLL"),d()),r=a};return e.addEventListener("scroll",a),()=>e.removeEventListener("scroll",a)}},[s.viewport,l,u,d]),(0,t.jsx)(F.Presence,{present:o||"hidden"!==c,children:(0,t.jsx)(es,{"data-state":"hidden"===c?"hidden":"visible",...n,ref:a,onPointerEnter:(0,$.composeEventHandlers)(e.onPointerEnter,()=>u("POINTER_ENTER")),onPointerLeave:(0,$.composeEventHandlers)(e.onPointerLeave,()=>u("POINTER_LEAVE"))})})}),en=r.forwardRef((e,a)=>{let i=J(er,e.__scopeScrollArea),{forceMount:o,...n}=e,[s,l]=r.useState(!1),d="horizontal"===e.orientation,c=ek(()=>{if(i.viewport){let e=i.viewport.offsetWidth<i.viewport.scrollWidth,t=i.viewport.offsetHeight<i.viewport.scrollHeight;l(d?e:t)}},10);return eN(i.viewport,c),eN(i.content,c),(0,t.jsx)(F.Presence,{present:o||s,children:(0,t.jsx)(es,{"data-state":s?"visible":"hidden",...n,ref:a})})}),es=r.forwardRef((e,a)=>{let{orientation:i="vertical",...o}=e,n=J(er,e.__scopeScrollArea),s=r.useRef(null),l=r.useRef(0),[d,c]=r.useState({content:0,viewport:0,scrollbar:{size:0,paddingStart:0,paddingEnd:0}}),u=ew(d.viewport,d.content),f={...o,sizes:d,onSizesChange:c,hasThumb:!!(u>0&&u<1),onThumbChange:e=>s.current=e,onThumbPointerUp:()=>l.current=0,onThumbPointerDown:e=>l.current=e};function p(e,t){return function(e,t,r,a="ltr"){let i=eC(r),o=t||i/2,n=r.scrollbar.paddingStart+o,s=r.scrollbar.size-r.scrollbar.paddingEnd-(i-o),l=r.content-r.viewport;return ej([n,s],"ltr"===a?[0,l]:[-1*l,0])(e)}(e,l.current,d,t)}return"horizontal"===i?(0,t.jsx)(el,{...f,ref:a,onThumbPositionChange:()=>{if(n.viewport&&s.current){let e=ey(n.viewport.scrollLeft,d,n.dir);s.current.style.transform=`translate3d(${e}px, 0, 0)`}},onWheelScroll:e=>{n.viewport&&(n.viewport.scrollLeft=e)},onDragScroll:e=>{n.viewport&&(n.viewport.scrollLeft=p(e,n.dir))}}):"vertical"===i?(0,t.jsx)(ed,{...f,ref:a,onThumbPositionChange:()=>{if(n.viewport&&s.current){let e=ey(n.viewport.scrollTop,d);s.current.style.transform=`translate3d(0, ${e}px, 0)`}},onWheelScroll:e=>{n.viewport&&(n.viewport.scrollTop=e)},onDragScroll:e=>{n.viewport&&(n.viewport.scrollTop=p(e))}}):null}),el=r.forwardRef((e,a)=>{let{sizes:i,onSizesChange:o,...n}=e,s=J(er,e.__scopeScrollArea),[l,d]=r.useState(),c=r.useRef(null),u=(0,U.useComposedRefs)(a,c,s.onScrollbarXChange);return r.useEffect(()=>{c.current&&d(getComputedStyle(c.current))},[c]),(0,t.jsx)(ef,{"data-orientation":"horizontal",...n,ref:u,sizes:i,style:{bottom:0,left:"rtl"===s.dir?"var(--radix-scroll-area-corner-width)":0,right:"ltr"===s.dir?"var(--radix-scroll-area-corner-width)":0,"--radix-scroll-area-thumb-width":eC(i)+"px",...e.style},onThumbPointerDown:t=>e.onThumbPointerDown(t.x),onDragScroll:t=>e.onDragScroll(t.x),onWheelScroll:(t,r)=>{if(s.viewport){var a,i;let o=s.viewport.scrollLeft+t.deltaX;e.onWheelScroll(o),a=o,i=r,a>0&&a<i&&t.preventDefault()}},onResize:()=>{c.current&&s.viewport&&l&&o({content:s.viewport.scrollWidth,viewport:s.viewport.offsetWidth,scrollbar:{size:c.current.clientWidth,paddingStart:ex(l.paddingLeft),paddingEnd:ex(l.paddingRight)}})}})}),ed=r.forwardRef((e,a)=>{let{sizes:i,onSizesChange:o,...n}=e,s=J(er,e.__scopeScrollArea),[l,d]=r.useState(),c=r.useRef(null),u=(0,U.useComposedRefs)(a,c,s.onScrollbarYChange);return r.useEffect(()=>{c.current&&d(getComputedStyle(c.current))},[c]),(0,t.jsx)(ef,{"data-orientation":"vertical",...n,ref:u,sizes:i,style:{top:0,right:"ltr"===s.dir?0:void 0,left:"rtl"===s.dir?0:void 0,bottom:"var(--radix-scroll-area-corner-height)","--radix-scroll-area-thumb-height":eC(i)+"px",...e.style},onThumbPointerDown:t=>e.onThumbPointerDown(t.y),onDragScroll:t=>e.onDragScroll(t.y),onWheelScroll:(t,r)=>{if(s.viewport){var a,i;let o=s.viewport.scrollTop+t.deltaY;e.onWheelScroll(o),a=o,i=r,a>0&&a<i&&t.preventDefault()}},onResize:()=>{c.current&&s.viewport&&l&&o({content:s.viewport.scrollHeight,viewport:s.viewport.offsetHeight,scrollbar:{size:c.current.clientHeight,paddingStart:ex(l.paddingTop),paddingEnd:ex(l.paddingBottom)}})}})}),[ec,eu]=Z(er),ef=r.forwardRef((e,a)=>{let{__scopeScrollArea:i,sizes:o,hasThumb:n,onThumbChange:s,onThumbPointerUp:l,onThumbPointerDown:d,onThumbPositionChange:c,onDragScroll:u,onWheelScroll:f,onResize:p,...h}=e,b=J(er,i),[m,g]=r.useState(null),v=(0,U.useComposedRefs)(a,e=>g(e)),x=r.useRef(null),w=r.useRef(""),C=b.viewport,y=o.content-o.viewport,j=(0,X.useCallbackRef)(f),S=(0,X.useCallbackRef)(c),k=ek(p,10);function N(e){x.current&&u({x:e.clientX-x.current.left,y:e.clientY-x.current.top})}return r.useEffect(()=>{let e=e=>{let t=e.target;m?.contains(t)&&j(e,y)};return document.addEventListener("wheel",e,{passive:!1}),()=>document.removeEventListener("wheel",e,{passive:!1})},[C,m,y,j]),r.useEffect(S,[o,S]),eN(m,k),eN(b.content,k),(0,t.jsx)(ec,{scope:i,scrollbar:m,hasThumb:n,onThumbChange:(0,X.useCallbackRef)(s),onThumbPointerUp:(0,X.useCallbackRef)(l),onThumbPositionChange:S,onThumbPointerDown:(0,X.useCallbackRef)(d),children:(0,t.jsx)(O.Primitive.div,{...h,ref:v,style:{position:"absolute",...h.style},onPointerDown:(0,$.composeEventHandlers)(e.onPointerDown,e=>{0===e.button&&(e.target.setPointerCapture(e.pointerId),x.current=m.getBoundingClientRect(),w.current=document.body.style.webkitUserSelect,document.body.style.webkitUserSelect="none",b.viewport&&(b.viewport.style.scrollBehavior="auto"),N(e))}),onPointerMove:(0,$.composeEventHandlers)(e.onPointerMove,N),onPointerUp:(0,$.composeEventHandlers)(e.onPointerUp,e=>{let t=e.target;t.hasPointerCapture(e.pointerId)&&t.releasePointerCapture(e.pointerId),document.body.style.webkitUserSelect=w.current,b.viewport&&(b.viewport.style.scrollBehavior=""),x.current=null})})})}),ep="ScrollAreaThumb",eh=r.forwardRef((e,r)=>{let{forceMount:a,...i}=e,o=eu(ep,e.__scopeScrollArea);return(0,t.jsx)(F.Presence,{present:a||o.hasThumb,children:(0,t.jsx)(eb,{ref:r,...i})})}),eb=r.forwardRef((e,a)=>{let{__scopeScrollArea:i,style:o,...n}=e,s=J(ep,i),l=eu(ep,i),{onThumbPositionChange:d}=l,c=(0,U.useComposedRefs)(a,e=>l.onThumbChange(e)),u=r.useRef(void 0),f=ek(()=>{u.current&&(u.current(),u.current=void 0)},100);return r.useEffect(()=>{let e=s.viewport;if(e){let t=()=>{f(),u.current||(u.current=eS(e,d),d())};return d(),e.addEventListener("scroll",t),()=>e.removeEventListener("scroll",t)}},[s.viewport,f,d]),(0,t.jsx)(O.Primitive.div,{"data-state":l.hasThumb?"visible":"hidden",...n,ref:c,style:{width:"var(--radix-scroll-area-thumb-width)",height:"var(--radix-scroll-area-thumb-height)",...o},onPointerDownCapture:(0,$.composeEventHandlers)(e.onPointerDownCapture,e=>{let t=e.target.getBoundingClientRect(),r=e.clientX-t.left,a=e.clientY-t.top;l.onThumbPointerDown({x:r,y:a})}),onPointerUp:(0,$.composeEventHandlers)(e.onPointerUp,l.onThumbPointerUp)})});eh.displayName=ep;var em="ScrollAreaCorner",eg=r.forwardRef((e,r)=>{let a=J(em,e.__scopeScrollArea),i=!!(a.scrollbarX&&a.scrollbarY);return"scroll"!==a.type&&i?(0,t.jsx)(ev,{...e,ref:r}):null});eg.displayName=em;var ev=r.forwardRef((e,a)=>{let{__scopeScrollArea:i,...o}=e,n=J(em,i),[s,l]=r.useState(0),[d,c]=r.useState(0),u=!!(s&&d);return eN(n.scrollbarX,()=>{let e=n.scrollbarX?.offsetHeight||0;n.onCornerHeightChange(e),c(e)}),eN(n.scrollbarY,()=>{let e=n.scrollbarY?.offsetWidth||0;n.onCornerWidthChange(e),l(e)}),u?(0,t.jsx)(O.Primitive.div,{...o,ref:a,style:{width:s,height:d,position:"absolute",right:"ltr"===n.dir?0:void 0,left:"rtl"===n.dir?0:void 0,bottom:0,...e.style}}):null});function ex(e){return e?parseInt(e,10):0}function ew(e,t){let r=e/t;return isNaN(r)?0:r}function eC(e){let t=ew(e.viewport,e.content),r=e.scrollbar.paddingStart+e.scrollbar.paddingEnd;return Math.max((e.scrollbar.size-r)*t,18)}function ey(e,t,r="ltr"){let a=eC(t),i=t.scrollbar.paddingStart+t.scrollbar.paddingEnd,o=t.scrollbar.size-i,n=t.content-t.viewport,s=function(e,[t,r]){return Math.min(r,Math.max(t,e))}(e,"ltr"===r?[0,n]:[-1*n,0]);return ej([0,n],[0,o-a])(s)}function ej(e,t){return r=>{if(e[0]===e[1]||t[0]===t[1])return t[0];let a=(t[1]-t[0])/(e[1]-e[0]);return t[0]+a*(r-e[0])}}var eS=(e,t=()=>{})=>{let r={left:e.scrollLeft,top:e.scrollTop},a=0;return!function i(){let o={left:e.scrollLeft,top:e.scrollTop},n=r.left!==o.left,s=r.top!==o.top;(n||s)&&t(),r=o,a=window.requestAnimationFrame(i)}(),()=>window.cancelAnimationFrame(a)};function ek(e,t){let a=(0,X.useCallbackRef)(e),i=r.useRef(0);return r.useEffect(()=>()=>window.clearTimeout(i.current),[]),r.useCallback(()=>{window.clearTimeout(i.current),i.current=window.setTimeout(a,t)},[a,t])}function eN(e,t){let r=(0,X.useCallbackRef)(t);(0,Y.useLayoutEffect)(()=>{let t=0;if(e){let a=new ResizeObserver(()=>{cancelAnimationFrame(t),t=window.requestAnimationFrame(r)});return a.observe(e),()=>{window.cancelAnimationFrame(t),a.unobserve(e)}}},[e,r])}e.s(["Corner",()=>eg,"Root",()=>Q,"ScrollArea",()=>Q,"ScrollAreaCorner",()=>eg,"ScrollAreaScrollbar",()=>ea,"ScrollAreaThumb",()=>eh,"ScrollAreaViewport",()=>et,"Scrollbar",()=>ea,"Thumb",()=>eh,"Viewport",()=>et,"createScrollAreaScope",()=>K],87516);var eE=e.i(87516),eE=eE;function eT({className:e,children:r,...a}){return(0,t.jsxs)(eE.Root,{"data-slot":"scroll-area",className:(0,l.cn)("relative",e),...a,children:[(0,t.jsx)(eE.Viewport,{"data-slot":"scroll-area-viewport",className:"focus-visible:ring-ring/50 size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:outline-1",children:r}),(0,t.jsx)(eR,{}),(0,t.jsx)(eE.Corner,{})]})}function eR({className:e,orientation:r="vertical",...a}){return(0,t.jsx)(eE.ScrollAreaScrollbar,{"data-slot":"scroll-area-scrollbar",orientation:r,className:(0,l.cn)("flex touch-none p-px transition-colors select-none","vertical"===r&&"h-full w-2.5 border-l border-l-transparent","horizontal"===r&&"h-2.5 flex-col border-t border-t-transparent",e),...a,children:(0,t.jsx)(eE.ScrollAreaThumb,{"data-slot":"scroll-area-thumb",className:"bg-border relative flex-1 rounded-full"})})}var eA=e.i(24035),eL=e.i(8361);function eP({icon:e,label:r,href:a,active:i=!1}){let o=(0,eL.useSoundAction)("navigate");return(0,t.jsx)(z,{"data-testid":"sidebar-nav-item",children:(0,t.jsx)(_,{asChild:!0,isActive:i,tooltip:r,children:(0,t.jsxs)(eA.default,{href:a,onClick:()=>o.play(),children:[(0,t.jsx)(e,{}),(0,t.jsx)("span",{children:r})]})})})}function ez({className:e}){let{toggleSidebar:r,open:a}=C(),i=(0,eL.useSoundAction)("expand"),o=(0,eL.useSoundAction)("collapse");return(0,t.jsx)("div",{className:(0,l.cn)("flex",e),children:(0,t.jsx)(d.Button,{"data-testid":"sidebar-collapse-toggle",variant:"ghost",size:"icon",className:"size-7 cursor-pointer group-data-[collapsible=icon]:size-8!",onClick:()=>{a?o.play():i.play(),r()},"aria-label":a?"Collapse sidebar":"Expand sidebar",children:(0,t.jsx)(n,{className:"size-4"})})})}function eD({className:e,size:r=24}){return(0,t.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 194 200",width:r,height:r,className:(0,l.cn)("shrink-0",e),"aria-hidden":"true",children:(0,t.jsx)("g",{transform:"matrix(1, 0, 0, 1, -111, -208)",children:(0,t.jsx)("path",{d:"M 198 406 C196,405 194,403 193,401 C192,399 191,398 186,398 C178,397 174,394 170,387 L 168 381 L 163 381 C156,381 150,377 147,370 C144,364 143,359 146,353 C148,348 148,347 147,347 C145,347 140,343 138,339 C133,329 139,314 149,311 L 152 311 L 149 307 C145,302 145,294 149,290 C151,288 152,287 151,286 C150,283 152,278 155,276 C156,275 159,274 162,273 C165,273 166,273 168,276 C171,278 171,280 172,287 C173,294 174,297 177,304 C180,309 182,314 183,316 C186,327 193,336 199,339 C204,342 211,342 216,340 C222,336 231,324 234,314 C235,312 237,307 239,302 C240,298 242,292 242,289 C243,281 245,278 247,275 C250,273 251,273 255,273 C261,274 264,278 264,282 C264,284 264,286 263,287 C262,287 263,288 265,290 C272,295 272,303 267,309 L 265 312 L 269 314 C276,317 279,323 279,332 C279,339 277,343 272,347 C268,351 268,351 269,354 C272,358 271,366 269,371 C266,376 259,381 254,381 C252,381 251,382 248,386 C242,395 234,400 227,399 C224,398 223,398 221,401 C220,403 217,405 216,406 C211,409 203,409 198,406 ZM 136 271 C123,267 115,262 113,256 C111,251 111,251 113,251 C118,254 124,254 132,252 C136,252 141,251 144,251 C149,251 157,253 162,256 C166,258 166,258 166,264 L 166 269 L 160 270 C149,272 142,272 136,271 ZM 264 271 C263,271 259,270 256,270 L 250 270 L 250 265 C249,259 250,257 259,254 C265,251 272,251 289,252 C297,253 299,253 302,252 C305,250 305,250 305,252 C305,255 301,262 297,264 C289,270 272,273 264,271 ZM 162 249 C160,247 159,245 159,242 C159,236 164,230 169,230 C170,230 171,228 171,225 C171,216 176,210 184,209 C189,209 195,211 195,213 C195,214 196,213 197,212 C201,209 204,208 208,208 C212,208 217,210 219,212 C220,214 220,213 223,211 C226,208 234,208 239,211 C243,214 246,221 246,226 C245,230 245,230 247,230 C253,230 258,238 257,244 C256,249 251,252 245,252 C241,252 237,251 234,248 C232,247 232,247 228,249 C225,251 222,252 220,252 C216,252 212,250 210,247 C209,246 209,246 206,248 C201,252 192,253 185,248 C183,247 183,247 178,249 C172,253 166,253 162,249 ZM 116 249 C112,248 114,247 119,247 C122,247 127,246 130,245 C138,242 146,242 152,245 L 158 248 L 148 247 C142,247 138,247 133,248 C128,250 120,250 116,249 ZM 284 248 C281,247 277,247 270,247 L 260 248 L 263 246 C269,243 276,242 284,245 C289,246 295,247 298,247 C303,247 304,247 303,248 C301,250 289,250 284,248 Z",fill:"currentColor"})})})}function e_({startedAt:e}){let[a,i]=(0,r.useState)(()=>Date.now()-e);return(0,r.useEffect)(()=>{let t=setInterval(()=>{(0,r.startTransition)(()=>i(Date.now()-e))},1e3);return()=>clearInterval(t)},[e]),(0,t.jsx)("span",{"data-testid":"elapsed-time",className:"tabular-nums",children:function(e){let t=Math.floor(e/1e3);if(t>=3600){let e=Math.floor(t/3600);return`${e}h`}let r=Math.floor(t/60);return`${String(r).padStart(2,"0")}:${String(t%60).padStart(2,"0")}`}(a)})}var eM=e.i(51251),eH=e.i(83428),eI=e.i(10942);let eW={"action-needed":{icon:eM.CircleAlert,iconClass:"text-amber-500",bgClass:"bg-amber-500/10",label:"Action Needed"},"in-progress":{icon:eH.Loader2,iconClass:"text-blue-500 animate-spin",bgClass:"bg-blue-500/10",label:"In Progress"},done:{icon:eI.CircleCheck,iconClass:"text-emerald-500",bgClass:"bg-emerald-500/10",label:"Done"}},eO=["action-needed","in-progress","done"];function eF({name:e,status:r,startedAt:a,duration:i,onClick:o}){let{icon:n,iconClass:s}=eW[r];return(0,t.jsx)(z,{"data-testid":"feature-list-item",children:(0,t.jsxs)(_,{size:"sm",onClick:o,tooltip:e,className:"cursor-pointer",children:[(0,t.jsx)(n,{className:s}),(0,t.jsx)("span",{className:"flex-1 truncate font-medium",children:e}),"in-progress"===r&&null!=a?(0,t.jsx)("span",{"data-testid":"feature-list-item-meta",className:"text-muted-foreground ml-auto text-xs tabular-nums",children:(0,t.jsx)(e_,{startedAt:a})}):null,"done"===r&&i?(0,t.jsx)("span",{"data-testid":"feature-list-item-meta",className:"text-muted-foreground ml-auto text-xs tabular-nums",children:i}):null]})})}function eB({label:e,count:r,children:a}){return(0,t.jsxs)(R,{"data-testid":"feature-status-group",className:"px-2 py-1",children:[(0,t.jsxs)(A,{className:"text-muted-foreground h-6 px-2 text-[0.65rem] font-semibold tracking-wider uppercase",children:[e,(0,t.jsx)("span",{"aria-label":`${r} items`,className:"bg-sidebar-accent text-sidebar-accent-foreground ml-1.5 inline-flex h-4 min-w-4 items-center justify-center rounded-full px-1 text-[0.6rem] font-medium tabular-nums",role:"img",children:r})]}),(0,t.jsx)(L,{children:(0,t.jsx)(P,{className:"gap-0.5",children:a})})]})}let eU=(0,o.default)("folder",[["path",{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",key:"1kt360"}]]),eX=(0,o.default)("grip-horizontal",[["circle",{cx:"12",cy:"9",r:"1",key:"124mty"}],["circle",{cx:"19",cy:"9",r:"1",key:"1ruzo2"}],["circle",{cx:"5",cy:"9",r:"1",key:"1a8b28"}],["circle",{cx:"12",cy:"15",r:"1",key:"1e56xg"}],["circle",{cx:"19",cy:"15",r:"1",key:"1a92ep"}],["circle",{cx:"5",cy:"15",r:"1",key:"5r1jwy"}]]);function eV({label:e,onFolderClick:r,onMenuClick:a,className:i}){let{state:o,isMobile:n}=C();return(0,t.jsx)(R,{"data-testid":"sidebar-section-header",className:(0,l.cn)("px-2 py-1",i),children:(0,t.jsxs)("div",{className:"text-sidebar-foreground flex h-7 w-full shrink-0 items-center px-2 text-sm font-medium",children:[(0,t.jsx)("span",{className:"min-w-0 flex-1 truncate",children:e}),(0,t.jsxs)("span",{className:"text-sidebar-foreground/70 flex shrink-0 items-center gap-0.5",children:[(0,t.jsxs)(x.Tooltip,{children:[(0,t.jsx)(x.TooltipTrigger,{asChild:!0,children:(0,t.jsx)("button",{type:"button",onClick:r,className:"ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground flex size-7 items-center justify-center rounded-md p-0 outline-hidden transition-colors focus-visible:ring-2 [&>svg]:size-4","aria-label":"Open features folder",children:(0,t.jsx)(eU,{className:"size-4"})})}),(0,t.jsx)(x.TooltipContent,{side:"right",align:"center",hidden:"collapsed"!==o||n,children:"Open features folder"})]}),(0,t.jsxs)(x.Tooltip,{children:[(0,t.jsx)(x.TooltipTrigger,{asChild:!0,children:(0,t.jsx)("button",{type:"button",onClick:a,className:"ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground flex size-7 items-center justify-center rounded-md p-0 outline-hidden transition-colors focus-visible:ring-2 [&>svg]:size-4","aria-label":"Features options",children:(0,t.jsx)(eX,{className:"size-4"})})}),(0,t.jsx)(x.TooltipContent,{side:"right",align:"center",hidden:"collapsed"!==o||n,children:"Features options"})]})]})]})})}var eY=e.i(63629);function e$({features:e,onNewFeature:i,onFeatureClick:o,onFeaturesFolderClick:n,onFeaturesMenuClick:s}){let l=(0,a.usePathname)(),{state:d}=C(),{mounted:c,visible:u}=function(e,t){let[a,i]=(0,r.useState)(!e),[o,n]=(0,r.useState)(!e);return(0,r.useEffect)(()=>{if(!e){i(!0);let e=requestAnimationFrame(()=>n(!0));return()=>cancelAnimationFrame(e)}n(!1);let t=window.setTimeout(()=>i(!1),200);return()=>window.clearTimeout(t)},[e,200]),{mounted:a,visible:o}}("collapsed"===d,0),f=eO.map(t=>{let{label:r}=eW[t],a=e.filter(e=>e.status===t);return{key:t,label:r,items:a}});return(0,t.jsxs)(j,{"data-testid":"app-sidebar","data-no-drawer-close":!0,collapsible:"icon",children:[(0,t.jsx)(N,{children:(0,t.jsxs)(P,{children:[(0,t.jsx)(z,{children:(0,t.jsxs)("div",{className:"flex h-8 items-center group-data-[collapsible=icon]:justify-center",children:[c?(0,t.jsxs)("div",{className:["flex min-w-0 flex-1 items-center gap-2 overflow-hidden px-2 transition-opacity duration-200 ease-out",u?"opacity-100":"opacity-0"].join(" "),"aria-hidden":!u,children:[(0,t.jsx)(eD,{className:"shrink-0",size:20}),(0,t.jsx)("span",{className:"truncate text-sm font-semibold tracking-tight",children:"Shep"})]}):null,(0,t.jsx)(ez,{className:"shrink-0 transition-all duration-200"})]})}),(0,t.jsx)(eP,{icon:M,label:"Control Center",href:"/",active:"/"===l}),(0,t.jsx)(eP,{icon:H.Wrench,label:"Tools",href:"/tools",active:"/tools"===l}),eY.featureFlags.skills?(0,t.jsx)(eP,{icon:I.Puzzle,label:"Skills",href:"/skills",active:"/skills"===l}):null]})}),(0,t.jsx)(T,{children:c?(0,t.jsxs)("div",{className:["min-w-0 overflow-hidden transition-opacity duration-200 ease-out [&_[data-sidebar=group-label]]:!mt-0 [&_[data-sidebar=group-label]]:!opacity-100 [&_[data-sidebar=group-label]]:!transition-none",u?"opacity-100":"opacity-0"].join(" "),children:[(0,t.jsx)(eV,{label:"Features",onFolderClick:n,onMenuClick:s}),(0,t.jsx)(eT,{children:f.map(({key:e,label:r,items:a})=>a.length>0?(0,t.jsx)(eB,{label:r,count:a.length,children:a.map(e=>(0,t.jsx)(eF,{name:e.name,status:e.status,startedAt:e.startedAt,duration:e.duration,onClick:o?()=>o(e.featureId):void 0},e.featureId))},e):null)})]}):null}),(0,t.jsx)(E,{children:(0,t.jsx)(P,{children:(0,t.jsx)(z,{children:(0,t.jsxs)(_,{onClick:i,tooltip:"New feature",children:[(0,t.jsx)(W.Plus,{}),(0,t.jsx)("span",{children:"New feature"})]})})})}),(0,t.jsx)(S,{})]})}e.i(1354);var eq=e.i(17845);let eZ=(0,o.default)("moon",[["path",{d:"M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401",key:"kfwtm"}]]),eK=(0,o.default)("sun",[["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"m4.93 4.93 1.41 1.41",key:"149t6j"}],["path",{d:"m17.66 17.66 1.41 1.41",key:"ptbguv"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"m6.34 17.66-1.41 1.41",key:"1m8zz5"}],["path",{d:"m19.07 4.93-1.41 1.41",key:"1shlcs"}]]),eG="shep-theme";function eJ(){let{theme:e,resolvedTheme:a,setTheme:i}=function(){let[e,t]=(0,r.useState)("system"),[a,i]=(0,r.useState)("light"),o=(0,r.useCallback)(()=>window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light",[]),n=(0,r.useCallback)(e=>"system"===e?o():e,[o]),s=(0,r.useCallback)(e=>{if("u"<typeof document)return;let t=document.documentElement;t.classList.remove("light","dark"),t.classList.add(e),i(e)},[]),l=(0,r.useCallback)(e=>{t(e),"u">typeof localStorage&&localStorage.setItem(eG,e),s(n(e))},[n,s]);return(0,r.useEffect)(()=>{let e=localStorage.getItem(eG)??"system";t(e),s(n(e))},[n,s]),(0,r.useEffect)(()=>{let t=window.matchMedia("(prefers-color-scheme: dark)"),r=()=>{"system"===e&&s(n("system"))};return t.addEventListener("change",r),()=>t.removeEventListener("change",r)},[e,n,s]),{theme:e,resolvedTheme:a,setTheme:l}}(),o=(0,eL.useSoundAction)("toggle-on"),n=(0,eL.useSoundAction)("toggle-off");return(0,t.jsxs)(d.Button,{variant:"ghost",size:"icon",onClick:()=>{"dark"!==("system"===e?a:e)?o.play():n.play(),"system"===e?i("dark"===a?"light":"dark"):i("dark"===e?"light":"dark")},"aria-label":`Switch to ${"dark"===a?"light":"dark"} mode`,children:[(0,t.jsx)(eK,{className:"h-5 w-5 scale-100 rotate-0 transition-all dark:scale-0 dark:-rotate-90"}),(0,t.jsx)(eZ,{className:"absolute h-5 w-5 scale-0 rotate-90 transition-all dark:scale-100 dark:rotate-0"}),(0,t.jsx)("span",{className:"sr-only",children:"Toggle theme"})]})}let eQ=(0,o.default)("volume-2",[["path",{d:"M11 4.702a.705.705 0 0 0-1.203-.498L6.413 7.587A1.4 1.4 0 0 1 5.416 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.416a1.4 1.4 0 0 1 .997.413l3.383 3.384A.705.705 0 0 0 11 19.298z",key:"uqj9uw"}],["path",{d:"M16 9a5 5 0 0 1 0 6",key:"1q6k2b"}],["path",{d:"M19.364 18.364a9 9 0 0 0 0-12.728",key:"ijwkga"}]]),e0=(0,o.default)("volume-off",[["path",{d:"M16 9a5 5 0 0 1 .95 2.293",key:"1fgyg8"}],["path",{d:"M19.364 5.636a9 9 0 0 1 1.889 9.96",key:"l3zxae"}],["path",{d:"m2 2 20 20",key:"1ooewy"}],["path",{d:"m7 7-.587.587A1.4 1.4 0 0 1 5.416 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.416a1.4 1.4 0 0 1 .997.413l3.383 3.384A.705.705 0 0 0 11 19.298V11",key:"1gbwow"}],["path",{d:"M9.828 4.172A.686.686 0 0 1 11 4.657v.686",key:"s2je0y"}]]);var e2=e.i(73709);function e1(){let{enabled:e,toggle:r}=(0,e2.useSoundEnabled)();return(0,t.jsxs)(d.Button,{variant:"ghost",size:"icon",onClick:r,"aria-label":e?"Mute sounds":"Unmute sounds",children:[e?(0,t.jsx)(eQ,{className:"h-5 w-5"}):(0,t.jsx)(e0,{className:"h-5 w-5"}),(0,t.jsx)("span",{className:"sr-only",children:"Toggle sound"})]})}var e4=e.i(39443),e3=e.i(30153),e5=e.i(5147),e7=e.i(60112),e6=e.i(17406);let e8={[e6.NotificationSeverity.Success]:"success",[e6.NotificationSeverity.Error]:"error",[e6.NotificationSeverity.Warning]:"warning",[e6.NotificationSeverity.Info]:"info"},e9={[e6.NotificationSeverity.Success]:"notification-success",[e6.NotificationSeverity.Error]:"notification-error",[e6.NotificationSeverity.Warning]:"notification-warning",[e6.NotificationSeverity.Info]:"notification-info"};function te({children:e}){let i=(0,a.useRouter)(),{guardedNavigate:o}=(0,e3.useDrawerCloseGuard)();!function(){let e=(0,a.useRouter)(),{events:t}=(0,e4.useAgentEventsContext)(),i=(0,eL.useSoundAction)("notification-success"),o=(0,eL.useSoundAction)("notification-error"),n=(0,eL.useSoundAction)("notification-warning"),s=(0,eL.useSoundAction)("notification-info"),l=(0,r.useMemo)(()=>({"notification-success":i,"notification-error":o,"notification-warning":n,"notification-info":s}),[i,o,n,s]),[d,c]=(0,r.useState)(()=>void 0===globalThis.Notification?"default":globalThis.Notification.permission),u=(0,r.useRef)(0);(0,r.useEffect)(()=>{if(t.length<=u.current)return;let r=t.slice(u.current);for(let a of(u.current=t.length,r)){if(a.severity!==e6.NotificationSeverity.Error&&a.severity!==e6.NotificationSeverity.Warning&&a.severity!==e6.NotificationSeverity.Success)continue;!function(e,t){let r=e8[e.severity]??"info",a=e.eventType===e6.NotificationEventType.WaitingApproval;e7.toast[r](e.featureName,{description:e.message,...a&&t&&{action:{label:"Review",onClick:()=>{t(`/feature/${e.featureId}`)}}}})}(a,t=>e.push(t)),globalThis.Notification?.permission==="granted"&&new Notification(`Shep: ${a.featureName}`,{body:a.message,icon:"/favicon-light.svg"});let t=e9[a.severity];l[t]?.play()}},[t,l,e]),(0,r.useCallback)(async()=>{void 0===globalThis.Notification||c(await globalThis.Notification.requestPermission())},[])}();let{features:n}=(0,e5.useSidebarFeaturesContext)(),s=(0,r.useCallback)(()=>{o(()=>i.push("/create"))},[i,o]),l=(0,r.useCallback)(e=>{o(()=>i.push(`/feature/${e}`))},[i,o]),d=(0,r.useCallback)(e=>{window.dispatchEvent(new CustomEvent("shep:add-repository",{detail:{path:e}}))},[]);return(0,t.jsxs)(y,{children:[(0,t.jsx)(e$,{features:n,onNewFeature:s,onFeatureClick:l}),(0,t.jsx)(k,{children:(0,t.jsxs)("div",{className:"relative h-full",children:[(0,t.jsxs)("div",{className:"absolute top-3 right-3 z-50 flex gap-1",children:[(0,t.jsx)(eq.AddRepositoryButton,{onSelect:d}),(0,t.jsx)(e1,{}),(0,t.jsx)(eJ,{})]}),(0,t.jsx)("main",{className:"h-full",children:e})]})})]})}function tt({children:e}){return(0,t.jsx)(e4.AgentEventsProvider,{children:(0,t.jsx)(e3.DrawerCloseGuardProvider,{children:(0,t.jsx)(e5.SidebarFeaturesProvider,{children:(0,t.jsx)(te,{children:e})})})})}e.s(["AppShell",()=>tt],87292)},25251,e=>{"use strict";var t=e.i(20314),r=e.i(60112);let a=({...e})=>(0,t.jsx)(r.Toaster,{className:"toaster group",toastOptions:{classNames:{toast:"group toast group-[.toaster]:bg-background group-[.toaster]:text-foreground group-[.toaster]:border-border group-[.toaster]:shadow-lg",description:"group-[.toast]:text-muted-foreground",actionButton:"group-[.toast]:bg-primary group-[.toast]:text-primary-foreground",cancelButton:"group-[.toast]:bg-muted group-[.toast]:text-muted-foreground"}},...e});e.s(["Toaster",()=>a])}]);