@shepai/cli 1.182.0 → 1.182.1-pr550.9abbae3
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.
- package/apis/json-schema/Application.yaml +7 -0
- package/dist/packages/core/src/application/ports/output/repositories/application-repository.interface.d.ts +1 -1
- package/dist/packages/core/src/application/ports/output/repositories/application-repository.interface.d.ts.map +1 -1
- package/dist/packages/core/src/application/ports/output/services/git-pr-service.interface.d.ts +8 -1
- package/dist/packages/core/src/application/ports/output/services/git-pr-service.interface.d.ts.map +1 -1
- package/dist/packages/core/src/application/use-cases/applications/create-application.use-case.d.ts +3 -3
- package/dist/packages/core/src/application/use-cases/applications/create-application.use-case.d.ts.map +1 -1
- package/dist/packages/core/src/application/use-cases/applications/create-application.use-case.js +13 -21
- package/dist/packages/core/src/application/use-cases/applications/list-applications.use-case.d.ts +19 -3
- package/dist/packages/core/src/application/use-cases/applications/list-applications.use-case.d.ts.map +1 -1
- package/dist/packages/core/src/application/use-cases/applications/list-applications.use-case.js +37 -4
- package/dist/packages/core/src/application/use-cases/applications/resume-application-workflow.use-case.d.ts +30 -0
- package/dist/packages/core/src/application/use-cases/applications/resume-application-workflow.use-case.d.ts.map +1 -0
- package/dist/packages/core/src/application/use-cases/applications/resume-application-workflow.use-case.js +122 -0
- package/dist/packages/core/src/application/use-cases/repositories/import-github-repository.use-case.d.ts +13 -1
- package/dist/packages/core/src/application/use-cases/repositories/import-github-repository.use-case.d.ts.map +1 -1
- package/dist/packages/core/src/application/use-cases/repositories/import-github-repository.use-case.js +44 -5
- package/dist/packages/core/src/domain/generated/output.d.ts +8 -0
- package/dist/packages/core/src/domain/generated/output.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/di/container.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/di/container.js +5 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/application.mapper.d.ts +2 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/application.mapper.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/application.mapper.js +4 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/058-add-setup-complete-to-applications.d.ts +5 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/058-add-setup-complete-to-applications.d.ts.map +1 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/058-add-setup-complete-to-applications.js +10 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/059-add-agent-session-id-to-applications.d.ts +5 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/059-add-agent-session-id-to-applications.d.ts.map +1 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/059-add-agent-session-id-to-applications.js +10 -0
- package/dist/packages/core/src/infrastructure/repositories/sqlite-application.repository.d.ts +1 -1
- package/dist/packages/core/src/infrastructure/repositories/sqlite-application.repository.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/repositories/sqlite-application.repository.js +10 -2
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/node-helpers.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/node-helpers.js +4 -1
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/fast-implement.prompt.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/fast-implement.prompt.js +4 -1
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/implement.prompt.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/implement.prompt.js +4 -1
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/merge-prompts.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/merge-prompts.js +11 -6
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/pr-branding.d.ts +2 -2
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/pr-branding.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/pr-branding.js +2 -2
- package/dist/packages/core/src/infrastructure/services/git/git-pr.service.d.ts +1 -0
- package/dist/packages/core/src/infrastructure/services/git/git-pr.service.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/git/git-pr.service.js +18 -2
- package/dist/packages/core/src/infrastructure/services/git/pr-branding.d.ts +16 -5
- package/dist/packages/core/src/infrastructure/services/git/pr-branding.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/git/pr-branding.js +38 -7
- package/dist/src/presentation/web/app/api/applications/[id]/resume/route.d.ts +20 -0
- package/dist/src/presentation/web/app/api/applications/[id]/resume/route.d.ts.map +1 -0
- package/dist/src/presentation/web/app/api/applications/[id]/resume/route.js +25 -0
- package/dist/src/presentation/web/app/api/applications/[id]/route.d.ts +19 -0
- package/dist/src/presentation/web/app/api/applications/[id]/route.d.ts.map +1 -0
- package/dist/src/presentation/web/app/api/applications/[id]/route.js +46 -0
- package/dist/src/presentation/web/app/api/applications/route.d.ts +9 -0
- package/dist/src/presentation/web/app/api/applications/route.d.ts.map +1 -0
- package/dist/src/presentation/web/app/api/applications/route.js +20 -0
- package/dist/src/presentation/web/app/application/[id]/page.d.ts +4 -4
- package/dist/src/presentation/web/app/application/[id]/page.d.ts.map +1 -1
- package/dist/src/presentation/web/app/application/[id]/page.js +2 -61
- package/dist/src/presentation/web/app/applications/page.d.ts +2 -0
- package/dist/src/presentation/web/app/applications/page.d.ts.map +1 -0
- package/dist/src/presentation/web/app/applications/page.js +5 -0
- package/dist/src/presentation/web/components/assistant-ui/thread.js +2 -2
- package/dist/src/presentation/web/components/common/application-node/application-node.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/application-node/application-node.js +3 -37
- package/dist/src/presentation/web/components/features/application-page/application-page-loader.d.ts +4 -0
- package/dist/src/presentation/web/components/features/application-page/application-page-loader.d.ts.map +1 -0
- package/dist/src/presentation/web/components/features/application-page/application-page-loader.js +47 -0
- package/dist/src/presentation/web/components/features/application-page/application-page.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/application-page/application-page.js +75 -54
- package/dist/src/presentation/web/components/features/application-page/application-page.stories.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/application-page/application-page.stories.js +1 -0
- package/dist/src/presentation/web/components/features/application-page/run-dev-button.d.ts +3 -1
- package/dist/src/presentation/web/components/features/application-page/run-dev-button.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/application-page/run-dev-button.js +6 -2
- package/dist/src/presentation/web/components/features/applications/application-card.d.ts +7 -0
- package/dist/src/presentation/web/components/features/applications/application-card.d.ts.map +1 -0
- package/dist/src/presentation/web/components/features/applications/application-card.js +82 -0
- package/dist/src/presentation/web/components/features/applications/application-card.stories.d.ts +13 -0
- package/dist/src/presentation/web/components/features/applications/application-card.stories.d.ts.map +1 -0
- package/dist/src/presentation/web/components/features/applications/application-card.stories.js +69 -0
- package/dist/src/presentation/web/components/features/applications/applications-page-client.d.ts +5 -0
- package/dist/src/presentation/web/components/features/applications/applications-page-client.d.ts.map +1 -0
- package/dist/src/presentation/web/components/features/applications/applications-page-client.js +28 -0
- package/dist/src/presentation/web/components/features/applications/applications-page-client.stories.d.ts +10 -0
- package/dist/src/presentation/web/components/features/applications/applications-page-client.stories.d.ts.map +1 -0
- package/dist/src/presentation/web/components/features/applications/applications-page-client.stories.js +93 -0
- package/dist/src/presentation/web/components/features/chat/ChatComposer.d.ts +3 -1
- package/dist/src/presentation/web/components/features/chat/ChatComposer.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/chat/ChatComposer.js +2 -2
- package/dist/src/presentation/web/components/features/chat/ChatTab.d.ts +3 -1
- package/dist/src/presentation/web/components/features/chat/ChatTab.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/chat/ChatTab.js +4 -3
- package/dist/src/presentation/web/components/features/chat/StepTracker.d.ts +6 -1
- package/dist/src/presentation/web/components/features/chat/StepTracker.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/chat/StepTracker.js +23 -20
- package/dist/src/presentation/web/components/features/control-center/control-center-inner.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/control-center/control-center-inner.js +3 -2
- package/dist/src/presentation/web/components/features/features-canvas/features-canvas.d.ts +3 -1
- package/dist/src/presentation/web/components/features/features-canvas/features-canvas.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/features-canvas/features-canvas.js +2 -2
- package/dist/src/presentation/web/components/features/settings/language-settings-section.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/settings/language-settings-section.js +1 -0
- package/dist/src/presentation/web/components/features/settings/language-settings-section.stories.d.ts +1 -0
- package/dist/src/presentation/web/components/features/settings/language-settings-section.stories.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/settings/language-settings-section.stories.js +5 -0
- package/dist/src/presentation/web/components/features/settings/settings-page-client.d.ts.map +1 -1
- package/dist/src/presentation/web/components/features/settings/settings-page-client.js +23 -3
- package/dist/src/presentation/web/components/layouts/app-sidebar/app-sidebar.d.ts.map +1 -1
- package/dist/src/presentation/web/components/layouts/app-sidebar/app-sidebar.js +2 -2
- package/dist/src/presentation/web/lib/derive-app-status.d.ts +23 -0
- package/dist/src/presentation/web/lib/derive-app-status.d.ts.map +1 -0
- package/dist/src/presentation/web/lib/derive-app-status.js +89 -0
- package/dist/src/presentation/web/lib/i18n.d.ts.map +1 -1
- package/dist/src/presentation/web/lib/i18n.js +3 -0
- package/dist/translations/ar/web.json +2 -1
- package/dist/translations/de/web.json +2 -1
- package/dist/translations/en/web.json +2 -1
- package/dist/translations/es/web.json +2 -1
- package/dist/translations/fr/web.json +2 -1
- package/dist/translations/he/web.json +2 -1
- package/dist/translations/pt/web.json +2 -1
- package/dist/translations/ru/web.json +2 -1
- package/dist/translations/uk/web.json +2 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/web/.next/BUILD_ID +1 -1
- package/web/.next/app-path-routes-manifest.json +4 -0
- package/web/.next/build-manifest.json +2 -2
- package/web/.next/fallback-build-manifest.json +2 -2
- package/web/.next/prerender-manifest.json +3 -3
- package/web/.next/required-server-files.js +3 -3
- package/web/.next/required-server-files.json +3 -3
- package/web/.next/routes-manifest.json +28 -0
- package/web/.next/server/app/(dashboard)/@drawer/adopt/page/server-reference-manifest.json +32 -32
- package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js +5 -5
- package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/adopt/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/chat/page/server-reference-manifest.json +30 -30
- package/web/.next/server/app/(dashboard)/@drawer/chat/page.js +5 -5
- package/web/.next/server/app/(dashboard)/@drawer/chat/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/chat/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +33 -33
- package/web/.next/server/app/(dashboard)/@drawer/create/page.js +5 -5
- package/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/server-reference-manifest.json +41 -41
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js +5 -5
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +41 -41
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js +5 -5
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page/server-reference-manifest.json +31 -31
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page.js +5 -5
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +31 -31
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js +5 -5
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/chat/page/server-reference-manifest.json +30 -30
- package/web/.next/server/app/(dashboard)/chat/page.js +5 -5
- package/web/.next/server/app/(dashboard)/chat/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/chat/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +33 -33
- package/web/.next/server/app/(dashboard)/create/page.js +5 -5
- package/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page/server-reference-manifest.json +41 -41
- package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js +5 -5
- package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +41 -41
- package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js +5 -5
- package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +30 -30
- package/web/.next/server/app/(dashboard)/page.js +5 -5
- package/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page/server-reference-manifest.json +31 -31
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page.js +5 -5
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +31 -31
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js +5 -5
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/_global-error/page.js +1 -1
- package/web/.next/server/app/_global-error/page.js.nft.json +1 -1
- package/web/.next/server/app/_global-error.html +2 -2
- package/web/.next/server/app/_global-error.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/web/.next/server/app/_not-found/page/server-reference-manifest.json +7 -7
- package/web/.next/server/app/_not-found/page.js +1 -1
- package/web/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/api/applications/[id]/resume/route/app-paths-manifest.json +3 -0
- package/web/.next/server/app/api/applications/[id]/resume/route/build-manifest.json +11 -0
- package/web/.next/server/app/api/applications/[id]/resume/route/server-reference-manifest.json +4 -0
- package/web/.next/server/app/api/applications/[id]/resume/route.js +7 -0
- package/web/.next/server/app/api/applications/[id]/resume/route.js.map +5 -0
- package/web/.next/server/app/api/applications/[id]/resume/route.js.nft.json +1 -0
- package/web/.next/server/app/api/applications/[id]/resume/route_client-reference-manifest.js +2 -0
- package/web/.next/server/app/api/applications/[id]/route/app-paths-manifest.json +3 -0
- package/web/.next/server/app/api/applications/[id]/route/build-manifest.json +11 -0
- package/web/.next/server/app/api/applications/[id]/route/server-reference-manifest.json +4 -0
- package/web/.next/server/app/api/applications/[id]/route.js +7 -0
- package/web/.next/server/app/api/applications/[id]/route.js.map +5 -0
- package/web/.next/server/app/api/applications/[id]/route.js.nft.json +1 -0
- package/web/.next/server/app/api/applications/[id]/route_client-reference-manifest.js +2 -0
- package/web/.next/server/app/api/applications/route/app-paths-manifest.json +3 -0
- package/web/.next/server/app/api/applications/route/build-manifest.json +11 -0
- package/web/.next/server/app/api/applications/route/server-reference-manifest.json +4 -0
- package/web/.next/server/app/api/applications/route.js +7 -0
- package/web/.next/server/app/api/applications/route.js.map +5 -0
- package/web/.next/server/app/api/applications/route.js.nft.json +1 -0
- package/web/.next/server/app/api/applications/route_client-reference-manifest.js +2 -0
- package/web/.next/server/app/api/attachments/preview/route.js.nft.json +1 -1
- package/web/.next/server/app/api/evidence/route.js.nft.json +1 -1
- package/web/.next/server/app/api/graph-data/route.js.nft.json +1 -1
- package/web/.next/server/app/api/interactive/chat/[featureId]/messages/route.js.nft.json +1 -1
- package/web/.next/server/app/application/[id]/page/server-reference-manifest.json +45 -30
- package/web/.next/server/app/application/[id]/page.js +3 -3
- package/web/.next/server/app/application/[id]/page.js.nft.json +1 -1
- package/web/.next/server/app/application/[id]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/applications/page/app-paths-manifest.json +3 -0
- package/web/.next/server/app/applications/page/build-manifest.json +18 -0
- package/web/.next/server/app/applications/page/next-font-manifest.json +6 -0
- package/web/.next/server/app/applications/page/react-loadable-manifest.json +1 -0
- package/web/.next/server/app/applications/page/server-reference-manifest.json +230 -0
- package/web/.next/server/app/applications/page.js +19 -0
- package/web/.next/server/app/applications/page.js.map +5 -0
- package/web/.next/server/app/applications/page.js.nft.json +1 -0
- package/web/.next/server/app/applications/page_client-reference-manifest.js +2 -0
- package/web/.next/server/app/features/page/server-reference-manifest.json +7 -7
- package/web/.next/server/app/features/page.js +1 -1
- package/web/.next/server/app/features/page.js.nft.json +1 -1
- package/web/.next/server/app/features/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/settings/page/server-reference-manifest.json +10 -10
- package/web/.next/server/app/settings/page.js +1 -1
- package/web/.next/server/app/settings/page.js.nft.json +1 -1
- package/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/skills/page/server-reference-manifest.json +15 -15
- package/web/.next/server/app/skills/page.js +1 -1
- package/web/.next/server/app/skills/page.js.nft.json +1 -1
- package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/tools/page/server-reference-manifest.json +13 -13
- package/web/.next/server/app/tools/page.js +1 -1
- package/web/.next/server/app/tools/page.js.nft.json +1 -1
- package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/version/page/server-reference-manifest.json +7 -7
- package/web/.next/server/app/version/page.js +1 -1
- package/web/.next/server/app/version/page.js.nft.json +1 -1
- package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app-paths-manifest.json +4 -0
- package/web/.next/server/chunks/744ca_web__next-internal_server_app_api_applications_[id]_route_actions_e31b426d.js +3 -0
- package/web/.next/server/chunks/744ca_web__next-internal_server_app_api_applications_[id]_route_actions_e31b426d.js.map +1 -0
- package/web/.next/server/chunks/744ca_web__next-internal_server_app_api_applications_route_actions_2b7d20d0.js +3 -0
- package/web/.next/server/chunks/744ca_web__next-internal_server_app_api_applications_route_actions_2b7d20d0.js.map +1 -0
- package/web/.next/server/chunks/[root-of-the-server]__3bb635e8._.js +3 -0
- package/web/.next/server/chunks/[root-of-the-server]__3bb635e8._.js.map +1 -0
- package/web/.next/server/chunks/[root-of-the-server]__a402b567._.js +1 -1
- package/web/.next/server/chunks/[root-of-the-server]__ac0027b4._.js +3 -0
- package/web/.next/server/chunks/[root-of-the-server]__ac0027b4._.js.map +1 -0
- package/web/.next/server/chunks/[root-of-the-server]__b2a4bfcc._.js.map +1 -1
- package/web/.next/server/chunks/[root-of-the-server]__cd67a84c._.js.map +1 -1
- package/web/.next/server/chunks/[root-of-the-server]__ce82df38._.js +3 -0
- package/web/.next/server/chunks/[root-of-the-server]__ce82df38._.js.map +1 -0
- package/web/.next/server/chunks/f3a1f__next-internal_server_app_api_applications_[id]_resume_route_actions_3a66d646.js +3 -0
- package/web/.next/server/chunks/f3a1f__next-internal_server_app_api_applications_[id]_resume_route_actions_3a66d646.js.map +1 -0
- package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_adopt_page_actions_4f9eef62.js +3 -0
- package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_adopt_page_actions_4f9eef62.js.map +1 -0
- package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_chat_page_actions_ffa16a22.js +3 -0
- package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_chat_page_actions_ffa16a22.js.map +1 -0
- package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_chat_page_actions_a1a998f9.js +3 -0
- package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_chat_page_actions_a1a998f9.js.map +1 -0
- package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js +1 -1
- package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js.map +1 -1
- package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_feature-drawer-client_tsx_e9755fc8._.js +2 -2
- package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_feature-drawer-client_tsx_e9755fc8._.js.map +1 -1
- package/web/.next/server/chunks/ssr/744ca_web_components_features_applications_applications-page-client_tsx_d0db9938._.js +3 -0
- package/web/.next/server/chunks/ssr/744ca_web_components_features_applications_applications-page-client_tsx_d0db9938._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__04f4895b._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__04f4895b._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__17dadd08._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__17dadd08._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1925bef0._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1a9687c4._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1a9687c4._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__347fd0f6._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__347fd0f6._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__46dd2baf._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__46dd2baf._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__4ee8be85._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__73cb4ff6._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__73cb4ff6._.js.map +1 -0
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__87bc4dac._.js → [root-of-the-server]__86ff0bc5._.js} +3 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__86ff0bc5._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__91c50abe._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__91c50abe._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__a48af49f._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__a48af49f._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__bb391c45._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__bb391c45._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__d5e22d1a._.js +3 -0
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__7aa484f5._.js.map → [root-of-the-server]__d5e22d1a._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__dd3e834e._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__dd3e834e._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__e0aa2bcb._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__e0aa2bcb._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__e265da61._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__ef0b8905._.js +12 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__ef0b8905._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__f5614810._.js +3 -0
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__090f24cb._.js.map → [root-of-the-server]__f5614810._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__fe5db6b2._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__fe5db6b2._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_0f9d0acd._.js +3 -0
- package/web/.next/server/chunks/ssr/_0f9d0acd._.js.map +1 -0
- package/web/.next/server/chunks/ssr/{_177d29c6._.js → _17af2817._.js} +2 -2
- package/web/.next/server/chunks/ssr/{_177d29c6._.js.map → _17af2817._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/_1879404a._.js +1 -1
- package/web/.next/server/chunks/ssr/_1879404a._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_295fffde._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_29b8ed64._.js +3 -0
- package/web/.next/server/chunks/ssr/_29b8ed64._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_2bc302d1._.js +3 -0
- package/web/.next/server/chunks/ssr/_2bc302d1._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_3683083e._.js +3 -0
- package/web/.next/server/chunks/ssr/_3683083e._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_45496654._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_4b57bcc3._.js +9 -0
- package/web/.next/server/chunks/ssr/_4b57bcc3._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_519d77a9._.js +3 -0
- package/web/.next/server/chunks/ssr/_519d77a9._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_56b9d60f._.js +1 -1
- package/web/.next/server/chunks/ssr/_56b9d60f._.js.map +1 -1
- package/web/.next/server/chunks/ssr/{_503102fc._.js → _58b8982b._.js} +2 -2
- package/web/.next/server/chunks/ssr/_58b8982b._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_7e5e3270._.js +3 -0
- package/web/.next/server/chunks/ssr/_7e5e3270._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_8c3086bf._.js +3 -0
- package/web/.next/server/chunks/ssr/_8c3086bf._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_9173e475._.js +21 -0
- package/web/.next/server/chunks/ssr/_9173e475._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_946a7fc6._.js +1 -1
- package/web/.next/server/chunks/ssr/_946a7fc6._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_b4cc51d4._.js +3 -0
- package/web/.next/server/chunks/ssr/_b4cc51d4._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_b5093a26._.js +3 -0
- package/web/.next/server/chunks/ssr/_b5093a26._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_bc03ac82._.js +4 -0
- package/web/.next/server/chunks/ssr/_bc03ac82._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_e65abbd1._.js +3 -0
- package/web/.next/server/chunks/ssr/_e65abbd1._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_f20557ff._.js +3 -0
- package/web/.next/server/chunks/ssr/_f20557ff._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_f86fc1bf._.js +1 -1
- package/web/.next/server/chunks/ssr/_f86fc1bf._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_f8c55130._.js +1 -1
- package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js +1 -1
- package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js.map +1 -1
- package/web/.next/server/chunks/ssr/f3a1f_components_common_control-center-drawer_repository-drawer-client_tsx_39a00c03._.js +1 -1
- package/web/.next/server/chunks/ssr/node_modules__pnpm_28a53b5d._.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules__pnpm_28a53b5d._.js.map +1 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_47181610._.js +3 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_47181610._.js.map +1 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_5d3f4199._.js +3 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_5d3f4199._.js.map +1 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_6159fef8._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_6159fef8._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_61d96ba8._.js +3 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_61d96ba8._.js.map +1 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_6994959a._.js +3 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_6994959a._.js.map +1 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_77dadf68._.js +32 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_77dadf68._.js.map +1 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_9a543843._.js +3 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_9a543843._.js.map +1 -0
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_c3f6f57e.js +3 -0
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_c3f6f57e.js.map +1 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_ad42cc73._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_ad42cc73._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_8514dfcd._.js +32 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_8514dfcd._.js.map +1 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_b95ed206._.js +3 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_b95ed206._.js.map +1 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_bade80bd._.js +3 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_bade80bd._.js.map +1 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_c543cf3e._.js +3 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_c543cf3e._.js.map +1 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_components_895e5bfa._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_895e5bfa._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_common_base-drawer_base-drawer_tsx_97dfbbc8._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_common_base-drawer_base-drawer_tsx_97dfbbc8._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_features_skills_8a174cac._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_features_skills_8a174cac._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_ui_dropdown-menu_tsx_229332e3._.js +3 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_components_ui_dropdown-menu_tsx_229332e3._.js.map +1 -0
- package/web/.next/server/chunks/ssr/translations_1562ae1a._.js +3 -0
- package/web/.next/server/chunks/ssr/translations_1562ae1a._.js.map +1 -0
- package/web/.next/server/pages/500.html +2 -2
- package/web/.next/server/server-reference-manifest.js +1 -1
- package/web/.next/server/server-reference-manifest.json +184 -72
- package/web/.next/static/chunks/{b4aa3a83f2451e07.js → 05becd66afb22d37.js} +1 -1
- package/web/.next/static/chunks/1bd2a325f95d3211.js +2 -0
- package/web/.next/static/chunks/2cbe80f8e84d59a8.js +1 -0
- package/web/.next/static/chunks/37e434e579ecfa02.js +1 -0
- package/web/.next/static/chunks/3aaae7ceefe72828.js +7 -0
- package/web/.next/static/chunks/3d1543ff12dfaff1.js +1 -0
- package/web/.next/static/chunks/{ac22076c64634ac1.js → 4b8bedfda131650a.js} +1 -1
- package/web/.next/static/chunks/{83fc7ea32e18c9a5.js → 4ea617a22e21fb04.js} +1 -1
- package/web/.next/static/chunks/53f12c1844f881af.js +1 -0
- package/web/.next/static/chunks/5795b9f399523c9e.js +1 -0
- package/web/.next/static/chunks/{2fe20598e1b4793a.js → 6b2859ea368e7df3.js} +3 -3
- package/web/.next/static/chunks/71c7fe96accaab17.js +19 -0
- package/web/.next/static/chunks/792fffaa4af33248.js +1 -0
- package/web/.next/static/chunks/{87a0df5389e06641.js → 7b6c91400184cb4d.js} +1 -1
- package/web/.next/static/chunks/83ba6946af31cdc4.js +3 -0
- package/web/.next/static/chunks/897771202f55ecfe.js +1 -0
- package/web/.next/static/chunks/9d9bf7403612ae86.js +1 -0
- package/web/.next/static/chunks/{be2e80436bc15812.js → a9d2a436d682fded.js} +3 -3
- package/web/.next/static/chunks/adf16efe8bac05e9.css +1 -0
- package/web/.next/static/chunks/{ceff12f8a2e5bc08.js → ae2fcb50ea0d8652.js} +1 -1
- package/web/.next/static/chunks/b0474319e5a50043.js +1 -0
- package/web/.next/static/chunks/b85532fb1545927c.js +5 -0
- package/web/.next/static/chunks/{33dc7a1041f4ab64.js → b8acda37576199f1.js} +1 -1
- package/web/.next/static/chunks/c788a245f6898401.js +1 -0
- package/web/.next/static/chunks/d0bcde99ca2878d1.js +1 -0
- package/web/.next/static/chunks/{de7de1db2a8788dd.js → ed714d3a13ff6c16.js} +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__013a0318._.js +0 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__013a0318._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__090f24cb._.js +0 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__24756fa9._.js +0 -12
- package/web/.next/server/chunks/ssr/[root-of-the-server]__24756fa9._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__70986695._.js +0 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__70986695._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__7aa484f5._.js +0 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__87bc4dac._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__a3a4ddef._.js +0 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__a3a4ddef._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__a4222b95._.js +0 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__a4222b95._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__a5ea76a6._.js +0 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__a5ea76a6._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__a6f2b763._.js +0 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__a6f2b763._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__f3ca7bea._.js +0 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__f3ca7bea._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_0277d3b5._.js +0 -21
- package/web/.next/server/chunks/ssr/_0277d3b5._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_21cc662b._.js +0 -3
- package/web/.next/server/chunks/ssr/_21cc662b._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_44531b76._.js +0 -9
- package/web/.next/server/chunks/ssr/_44531b76._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_503102fc._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_575fe3ee._.js +0 -3
- package/web/.next/server/chunks/ssr/_575fe3ee._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_869a3a15._.js +0 -3
- package/web/.next/server/chunks/ssr/_869a3a15._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_a7184dfa._.js +0 -3
- package/web/.next/server/chunks/ssr/_a7184dfa._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_b227ff50._.js +0 -3
- package/web/.next/server/chunks/ssr/_b227ff50._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_e071ba48._.js +0 -3
- package/web/.next/server/chunks/ssr/_e071ba48._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_eff1b518._.js +0 -3
- package/web/.next/server/chunks/ssr/_eff1b518._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_f227429a._.js +0 -3
- package/web/.next/server/chunks/ssr/_f227429a._.js.map +0 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_36f2bc45._.js +0 -3
- package/web/.next/server/chunks/ssr/src_presentation_web_36f2bc45._.js.map +0 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_486908de._.js +0 -3
- package/web/.next/server/chunks/ssr/src_presentation_web_486908de._.js.map +0 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_5c3596bc._.js +0 -3
- package/web/.next/server/chunks/ssr/src_presentation_web_5c3596bc._.js.map +0 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_6326f81e._.js +0 -3
- package/web/.next/server/chunks/ssr/src_presentation_web_6326f81e._.js.map +0 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_6b2fdcd8._.js +0 -3
- package/web/.next/server/chunks/ssr/src_presentation_web_6b2fdcd8._.js.map +0 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_74703c9f._.js +0 -3
- package/web/.next/server/chunks/ssr/src_presentation_web_74703c9f._.js.map +0 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_a8056dac._.js +0 -3
- package/web/.next/server/chunks/ssr/src_presentation_web_a8056dac._.js.map +0 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_open-ide_ts_baaca5d5._.js +0 -32
- package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_open-ide_ts_baaca5d5._.js.map +0 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_b00bfb08._.js +0 -3
- package/web/.next/server/chunks/ssr/src_presentation_web_b00bfb08._.js.map +0 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_ca99d62d._.js +0 -3
- package/web/.next/server/chunks/ssr/src_presentation_web_ca99d62d._.js.map +0 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js +0 -3
- package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js.map +0 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_f1edcf5e._.js +0 -3
- package/web/.next/server/chunks/ssr/src_presentation_web_f1edcf5e._.js.map +0 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_f9436804._.js +0 -3
- package/web/.next/server/chunks/ssr/src_presentation_web_f9436804._.js.map +0 -1
- package/web/.next/server/chunks/ssr/translations_23dd5e7e._.js +0 -3
- package/web/.next/server/chunks/ssr/translations_23dd5e7e._.js.map +0 -1
- package/web/.next/static/chunks/06b9d6dbf635c370.css +0 -1
- package/web/.next/static/chunks/1ae0cf5be30ef398.js +0 -1
- package/web/.next/static/chunks/2424ab50273fe1d9.js +0 -7
- package/web/.next/static/chunks/6afd16b2fe544054.js +0 -2
- package/web/.next/static/chunks/7604027076448f2b.js +0 -19
- package/web/.next/static/chunks/8c9016ab8c1f6204.js +0 -1
- package/web/.next/static/chunks/927442d2628f6e22.js +0 -1
- package/web/.next/static/chunks/94e8559ae19a16e1.js +0 -1
- package/web/.next/static/chunks/a0cfca1e5fd467e9.js +0 -1
- package/web/.next/static/chunks/a2531137c7d36d54.js +0 -7
- package/web/.next/static/chunks/b87904ecdddde972.js +0 -1
- package/web/.next/static/chunks/b99506a6f7bc2fa8.js +0 -1
- package/web/.next/static/chunks/e4f0ca20b62bd66f.js +0 -1
- /package/web/.next/static/{EVCmRtpgNX9ebXGb-bV1G → tAvYhk4e_F_yStLz4wtDg}/_buildManifest.js +0 -0
- /package/web/.next/static/{EVCmRtpgNX9ebXGb-bV1G → tAvYhk4e_F_yStLz4wtDg}/_clientMiddlewareManifest.json +0 -0
- /package/web/.next/static/{EVCmRtpgNX9ebXGb-bV1G → tAvYhk4e_F_yStLz4wtDg}/_ssgManifest.js +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,97667,e=>{"use strict";var r=e.i(1012);e.s(["CheckIcon",()=>r.default])},38227,e=>{"use strict";let r=(0,e.i(3645).default)("rotate-ccw",[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}]]);e.s(["RotateCcw",()=>r],38227)},87889,e=>{"use strict";let r=(0,e.i(3645).default)("eye",[["path",{d:"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0",key:"1nclc0"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]);e.s(["Eye",()=>r],87889)},10714,e=>{"use strict";let r=(0,e.i(3645).default)("minus",[["path",{d:"M5 12h14",key:"1ays0h"}]]);e.s(["default",()=>r])},41698,e=>{"use strict";let r=(0,e.i(3645).default)("clipboard-list",[["rect",{width:"8",height:"4",x:"8",y:"2",rx:"1",ry:"1",key:"tgr4d6"}],["path",{d:"M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2",key:"116196"}],["path",{d:"M12 11h4",key:"1jrz19"}],["path",{d:"M12 16h4",key:"n85exb"}],["path",{d:"M8 11h.01",key:"1dfujw"}],["path",{d:"M8 16h.01",key:"18s6g9"}]]);e.s(["ClipboardList",()=>r],41698)},70646,e=>{"use strict";var r=e.i(20314),t=e.i(79054),n=e.i(91967),o=e.i(5978),a=e.i(22528),s=e.i(36589),d=e.i(87620),i=e.i(87342),l=e.i(66033),u=e.i(53532),c=e.i(41687),p=e.i(56720),f=e.i(13123),m=e.i(52740),v=e.i(39979),h=e.i(85995),g=e.i(51080),w=e.i(86874),x=e.i(29297),y=e.i(73772),b=e.i(13044),C=["Enter"," "],M=["ArrowUp","PageDown","End"],R=["ArrowDown","PageUp","Home",...M],D={ltr:[...C,"ArrowRight"],rtl:[...C,"ArrowLeft"]},j={ltr:["ArrowLeft"],rtl:["ArrowRight"]},k="Menu",[I,S,P]=(0,i.createCollection)(k),[E,N]=(0,a.createContextScope)(k,[P,m.createPopperScope,g.createRovingFocusGroupScope]),_=(0,m.createPopperScope)(),T=(0,g.createRovingFocusGroupScope)(),[O,L]=E(k),[H,F]=E(k),A=e=>{let{__scopeMenu:n,open:o=!1,children:a,dir:s,onOpenChange:d,modal:i=!0}=e,u=_(n),[c,p]=t.useState(null),f=t.useRef(!1),v=(0,x.useCallbackRef)(d),h=(0,l.useDirection)(s);return t.useEffect(()=>{let e=()=>{f.current=!0,document.addEventListener("pointerdown",r,{capture:!0,once:!0}),document.addEventListener("pointermove",r,{capture:!0,once:!0})},r=()=>f.current=!1;return document.addEventListener("keydown",e,{capture:!0}),()=>{document.removeEventListener("keydown",e,{capture:!0}),document.removeEventListener("pointerdown",r,{capture:!0}),document.removeEventListener("pointermove",r,{capture:!0})}},[]),(0,r.jsx)(m.Root,{...u,children:(0,r.jsx)(O,{scope:n,open:o,onOpenChange:v,content:c,onContentChange:p,children:(0,r.jsx)(H,{scope:n,onClose:t.useCallback(()=>v(!1),[v]),isUsingKeyboardRef:f,dir:h,modal:i,children:a})})})};A.displayName=k;var K=t.forwardRef((e,t)=>{let{__scopeMenu:n,...o}=e,a=_(n);return(0,r.jsx)(m.Anchor,{...a,...o,ref:t})});K.displayName="MenuAnchor";var G="MenuPortal",[z,U]=E(G,{forceMount:void 0}),V=e=>{let{__scopeMenu:t,forceMount:n,children:o,container:a}=e,s=L(G,t);return(0,r.jsx)(z,{scope:t,forceMount:n,children:(0,r.jsx)(h.Presence,{present:n||s.open,children:(0,r.jsx)(v.Portal,{asChild:!0,container:a,children:o})})})};V.displayName=G;var B="MenuContent",[X,Y]=E(B),q=t.forwardRef((e,t)=>{let n=U(B,e.__scopeMenu),{forceMount:o=n.forceMount,...a}=e,s=L(B,e.__scopeMenu),d=F(B,e.__scopeMenu);return(0,r.jsx)(I.Provider,{scope:e.__scopeMenu,children:(0,r.jsx)(h.Presence,{present:o||s.open,children:(0,r.jsx)(I.Slot,{scope:e.__scopeMenu,children:d.modal?(0,r.jsx)(W,{...a,ref:t}):(0,r.jsx)(Z,{...a,ref:t})})})})}),W=t.forwardRef((e,a)=>{let s=L(B,e.__scopeMenu),d=t.useRef(null),i=(0,o.useComposedRefs)(a,d);return t.useEffect(()=>{let e=d.current;if(e)return(0,y.hideOthers)(e)},[]),(0,r.jsx)(Q,{...e,ref:i,trapFocus:s.open,disableOutsidePointerEvents:s.open,disableOutsideScroll:!0,onFocusOutside:(0,n.composeEventHandlers)(e.onFocusOutside,e=>e.preventDefault(),{checkForDefaultPrevented:!1}),onDismiss:()=>s.onOpenChange(!1)})}),Z=t.forwardRef((e,t)=>{let n=L(B,e.__scopeMenu);return(0,r.jsx)(Q,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,disableOutsideScroll:!1,onDismiss:()=>n.onOpenChange(!1)})}),J=(0,w.createSlot)("MenuContent.ScrollLock"),Q=t.forwardRef((e,a)=>{let{__scopeMenu:s,loop:d=!1,trapFocus:i,onOpenAutoFocus:l,onCloseAutoFocus:f,disableOutsidePointerEvents:v,onEntryFocus:h,onEscapeKeyDown:w,onPointerDownOutside:x,onFocusOutside:y,onInteractOutside:C,onDismiss:D,disableOutsideScroll:j,...k}=e,I=L(B,s),P=F(B,s),E=_(s),N=T(s),O=S(s),[H,A]=t.useState(null),K=t.useRef(null),G=(0,o.useComposedRefs)(a,K,I.onContentChange),z=t.useRef(0),U=t.useRef(""),V=t.useRef(0),Y=t.useRef(null),q=t.useRef("right"),W=t.useRef(0),Z=j?b.RemoveScroll:t.Fragment;t.useEffect(()=>()=>window.clearTimeout(z.current),[]),(0,c.useFocusGuards)();let Q=t.useCallback(e=>{var r,t;return q.current===Y.current?.side&&(r=e,!!(t=Y.current?.area)&&function(e,r){let{x:t,y:n}=e,o=!1;for(let e=0,a=r.length-1;e<r.length;a=e++){let s=r[e],d=r[a],i=s.x,l=s.y,u=d.x,c=d.y;l>n!=c>n&&t<(u-i)*(n-l)/(c-l)+i&&(o=!o)}return o}({x:r.clientX,y:r.clientY},t))},[]);return(0,r.jsx)(X,{scope:s,searchRef:U,onItemEnter:t.useCallback(e=>{Q(e)&&e.preventDefault()},[Q]),onItemLeave:t.useCallback(e=>{Q(e)||(K.current?.focus(),A(null))},[Q]),onTriggerLeave:t.useCallback(e=>{Q(e)&&e.preventDefault()},[Q]),pointerGraceTimerRef:V,onPointerGraceIntentChange:t.useCallback(e=>{Y.current=e},[]),children:(0,r.jsx)(Z,{...j?{as:J,allowPinchZoom:!0}:void 0,children:(0,r.jsx)(p.FocusScope,{asChild:!0,trapped:i,onMountAutoFocus:(0,n.composeEventHandlers)(l,e=>{e.preventDefault(),K.current?.focus({preventScroll:!0})}),onUnmountAutoFocus:f,children:(0,r.jsx)(u.DismissableLayer,{asChild:!0,disableOutsidePointerEvents:v,onEscapeKeyDown:w,onPointerDownOutside:x,onFocusOutside:y,onInteractOutside:C,onDismiss:D,children:(0,r.jsx)(g.Root,{asChild:!0,...N,dir:P.dir,orientation:"vertical",loop:d,currentTabStopId:H,onCurrentTabStopIdChange:A,onEntryFocus:(0,n.composeEventHandlers)(h,e=>{P.isUsingKeyboardRef.current||e.preventDefault()}),preventScrollOnEntryFocus:!0,children:(0,r.jsx)(m.Content,{role:"menu","aria-orientation":"vertical","data-state":ej(I.open),"data-radix-menu-content":"",dir:P.dir,...E,...k,ref:G,style:{outline:"none",...k.style},onKeyDown:(0,n.composeEventHandlers)(k.onKeyDown,e=>{let r=e.target.closest("[data-radix-menu-content]")===e.currentTarget,t=e.ctrlKey||e.altKey||e.metaKey,n=1===e.key.length;if(r){var o;let r,a,s,d,i,l;"Tab"===e.key&&e.preventDefault(),!t&&n&&(o=e.key,r=U.current+o,a=O().filter(e=>!e.disabled),s=document.activeElement,d=a.find(e=>e.ref.current===s)?.textValue,i=function(e,r,t){var n;let o=r.length>1&&Array.from(r).every(e=>e===r[0])?r[0]:r,a=t?e.indexOf(t):-1,s=(n=Math.max(a,0),e.map((r,t)=>e[(n+t)%e.length]));1===o.length&&(s=s.filter(e=>e!==t));let d=s.find(e=>e.toLowerCase().startsWith(o.toLowerCase()));return d!==t?d:void 0}(a.map(e=>e.textValue),r,d),l=a.find(e=>e.textValue===i)?.ref.current,function e(r){U.current=r,window.clearTimeout(z.current),""!==r&&(z.current=window.setTimeout(()=>e(""),1e3))}(r),l&&setTimeout(()=>l.focus()))}let a=K.current;if(e.target!==a||!R.includes(e.key))return;e.preventDefault();let s=O().filter(e=>!e.disabled).map(e=>e.ref.current);M.includes(e.key)&&s.reverse(),function(e){let r=document.activeElement;for(let t of e)if(t===r||(t.focus(),document.activeElement!==r))return}(s)}),onBlur:(0,n.composeEventHandlers)(e.onBlur,e=>{e.currentTarget.contains(e.target)||(window.clearTimeout(z.current),U.current="")}),onPointerMove:(0,n.composeEventHandlers)(e.onPointerMove,eS(e=>{let r=e.target,t=W.current!==e.clientX;e.currentTarget.contains(r)&&t&&(q.current=e.clientX>W.current?"right":"left",W.current=e.clientX)}))})})})})})})});q.displayName=B;var $=t.forwardRef((e,t)=>{let{__scopeMenu:n,...o}=e;return(0,r.jsx)(d.Primitive.div,{role:"group",...o,ref:t})});$.displayName="MenuGroup";var ee=t.forwardRef((e,t)=>{let{__scopeMenu:n,...o}=e;return(0,r.jsx)(d.Primitive.div,{...o,ref:t})});ee.displayName="MenuLabel";var er="MenuItem",et="menu.itemSelect",en=t.forwardRef((e,a)=>{let{disabled:s=!1,onSelect:i,...l}=e,u=t.useRef(null),c=F(er,e.__scopeMenu),p=Y(er,e.__scopeMenu),f=(0,o.useComposedRefs)(a,u),m=t.useRef(!1);return(0,r.jsx)(eo,{...l,ref:f,disabled:s,onClick:(0,n.composeEventHandlers)(e.onClick,()=>{let e=u.current;if(!s&&e){let r=new CustomEvent(et,{bubbles:!0,cancelable:!0});e.addEventListener(et,e=>i?.(e),{once:!0}),(0,d.dispatchDiscreteCustomEvent)(e,r),r.defaultPrevented?m.current=!1:c.onClose()}}),onPointerDown:r=>{e.onPointerDown?.(r),m.current=!0},onPointerUp:(0,n.composeEventHandlers)(e.onPointerUp,e=>{m.current||e.currentTarget?.click()}),onKeyDown:(0,n.composeEventHandlers)(e.onKeyDown,e=>{let r=""!==p.searchRef.current;s||r&&" "===e.key||C.includes(e.key)&&(e.currentTarget.click(),e.preventDefault())})})});en.displayName=er;var eo=t.forwardRef((e,a)=>{let{__scopeMenu:s,disabled:i=!1,textValue:l,...u}=e,c=Y(er,s),p=T(s),f=t.useRef(null),m=(0,o.useComposedRefs)(a,f),[v,h]=t.useState(!1),[w,x]=t.useState("");return t.useEffect(()=>{let e=f.current;e&&x((e.textContent??"").trim())},[u.children]),(0,r.jsx)(I.ItemSlot,{scope:s,disabled:i,textValue:l??w,children:(0,r.jsx)(g.Item,{asChild:!0,...p,focusable:!i,children:(0,r.jsx)(d.Primitive.div,{role:"menuitem","data-highlighted":v?"":void 0,"aria-disabled":i||void 0,"data-disabled":i?"":void 0,...u,ref:m,onPointerMove:(0,n.composeEventHandlers)(e.onPointerMove,eS(e=>{i?c.onItemLeave(e):(c.onItemEnter(e),e.defaultPrevented||e.currentTarget.focus({preventScroll:!0}))})),onPointerLeave:(0,n.composeEventHandlers)(e.onPointerLeave,eS(e=>c.onItemLeave(e))),onFocus:(0,n.composeEventHandlers)(e.onFocus,()=>h(!0)),onBlur:(0,n.composeEventHandlers)(e.onBlur,()=>h(!1))})})})}),ea=t.forwardRef((e,t)=>{let{checked:o=!1,onCheckedChange:a,...s}=e;return(0,r.jsx)(ef,{scope:e.__scopeMenu,checked:o,children:(0,r.jsx)(en,{role:"menuitemcheckbox","aria-checked":ek(o)?"mixed":o,...s,ref:t,"data-state":eI(o),onSelect:(0,n.composeEventHandlers)(s.onSelect,()=>a?.(!!ek(o)||!o),{checkForDefaultPrevented:!1})})})});ea.displayName="MenuCheckboxItem";var es="MenuRadioGroup",[ed,ei]=E(es,{value:void 0,onValueChange:()=>{}}),el=t.forwardRef((e,t)=>{let{value:n,onValueChange:o,...a}=e,s=(0,x.useCallbackRef)(o);return(0,r.jsx)(ed,{scope:e.__scopeMenu,value:n,onValueChange:s,children:(0,r.jsx)($,{...a,ref:t})})});el.displayName=es;var eu="MenuRadioItem",ec=t.forwardRef((e,t)=>{let{value:o,...a}=e,s=ei(eu,e.__scopeMenu),d=o===s.value;return(0,r.jsx)(ef,{scope:e.__scopeMenu,checked:d,children:(0,r.jsx)(en,{role:"menuitemradio","aria-checked":d,...a,ref:t,"data-state":eI(d),onSelect:(0,n.composeEventHandlers)(a.onSelect,()=>s.onValueChange?.(o),{checkForDefaultPrevented:!1})})})});ec.displayName=eu;var ep="MenuItemIndicator",[ef,em]=E(ep,{checked:!1}),ev=t.forwardRef((e,t)=>{let{__scopeMenu:n,forceMount:o,...a}=e,s=em(ep,n);return(0,r.jsx)(h.Presence,{present:o||ek(s.checked)||!0===s.checked,children:(0,r.jsx)(d.Primitive.span,{...a,ref:t,"data-state":eI(s.checked)})})});ev.displayName=ep;var eh=t.forwardRef((e,t)=>{let{__scopeMenu:n,...o}=e;return(0,r.jsx)(d.Primitive.div,{role:"separator","aria-orientation":"horizontal",...o,ref:t})});eh.displayName="MenuSeparator";var eg=t.forwardRef((e,t)=>{let{__scopeMenu:n,...o}=e,a=_(n);return(0,r.jsx)(m.Arrow,{...a,...o,ref:t})});eg.displayName="MenuArrow";var ew="MenuSub",[ex,ey]=E(ew),eb=e=>{let{__scopeMenu:n,children:o,open:a=!1,onOpenChange:s}=e,d=L(ew,n),i=_(n),[l,u]=t.useState(null),[c,p]=t.useState(null),v=(0,x.useCallbackRef)(s);return t.useEffect(()=>(!1===d.open&&v(!1),()=>v(!1)),[d.open,v]),(0,r.jsx)(m.Root,{...i,children:(0,r.jsx)(O,{scope:n,open:a,onOpenChange:v,content:c,onContentChange:p,children:(0,r.jsx)(ex,{scope:n,contentId:(0,f.useId)(),triggerId:(0,f.useId)(),trigger:l,onTriggerChange:u,children:o})})})};eb.displayName=ew;var eC="MenuSubTrigger",eM=t.forwardRef((e,a)=>{let s=L(eC,e.__scopeMenu),d=F(eC,e.__scopeMenu),i=ey(eC,e.__scopeMenu),l=Y(eC,e.__scopeMenu),u=t.useRef(null),{pointerGraceTimerRef:c,onPointerGraceIntentChange:p}=l,f={__scopeMenu:e.__scopeMenu},m=t.useCallback(()=>{u.current&&window.clearTimeout(u.current),u.current=null},[]);return t.useEffect(()=>m,[m]),t.useEffect(()=>{let e=c.current;return()=>{window.clearTimeout(e),p(null)}},[c,p]),(0,r.jsx)(K,{asChild:!0,...f,children:(0,r.jsx)(eo,{id:i.triggerId,"aria-haspopup":"menu","aria-expanded":s.open,"aria-controls":i.contentId,"data-state":ej(s.open),...e,ref:(0,o.composeRefs)(a,i.onTriggerChange),onClick:r=>{e.onClick?.(r),e.disabled||r.defaultPrevented||(r.currentTarget.focus(),s.open||s.onOpenChange(!0))},onPointerMove:(0,n.composeEventHandlers)(e.onPointerMove,eS(r=>{l.onItemEnter(r),!r.defaultPrevented&&(e.disabled||s.open||u.current||(l.onPointerGraceIntentChange(null),u.current=window.setTimeout(()=>{s.onOpenChange(!0),m()},100)))})),onPointerLeave:(0,n.composeEventHandlers)(e.onPointerLeave,eS(e=>{m();let r=s.content?.getBoundingClientRect();if(r){let t=s.content?.dataset.side,n="right"===t,o=r[n?"left":"right"],a=r[n?"right":"left"];l.onPointerGraceIntentChange({area:[{x:e.clientX+(n?-5:5),y:e.clientY},{x:o,y:r.top},{x:a,y:r.top},{x:a,y:r.bottom},{x:o,y:r.bottom}],side:t}),window.clearTimeout(c.current),c.current=window.setTimeout(()=>l.onPointerGraceIntentChange(null),300)}else{if(l.onTriggerLeave(e),e.defaultPrevented)return;l.onPointerGraceIntentChange(null)}})),onKeyDown:(0,n.composeEventHandlers)(e.onKeyDown,r=>{let t=""!==l.searchRef.current;e.disabled||t&&" "===r.key||D[d.dir].includes(r.key)&&(s.onOpenChange(!0),s.content?.focus(),r.preventDefault())})})})});eM.displayName=eC;var eR="MenuSubContent",eD=t.forwardRef((e,a)=>{let s=U(B,e.__scopeMenu),{forceMount:d=s.forceMount,...i}=e,l=L(B,e.__scopeMenu),u=F(B,e.__scopeMenu),c=ey(eR,e.__scopeMenu),p=t.useRef(null),f=(0,o.useComposedRefs)(a,p);return(0,r.jsx)(I.Provider,{scope:e.__scopeMenu,children:(0,r.jsx)(h.Presence,{present:d||l.open,children:(0,r.jsx)(I.Slot,{scope:e.__scopeMenu,children:(0,r.jsx)(Q,{id:c.contentId,"aria-labelledby":c.triggerId,...i,ref:f,align:"start",side:"rtl"===u.dir?"left":"right",disableOutsidePointerEvents:!1,disableOutsideScroll:!1,trapFocus:!1,onOpenAutoFocus:e=>{u.isUsingKeyboardRef.current&&p.current?.focus(),e.preventDefault()},onCloseAutoFocus:e=>e.preventDefault(),onFocusOutside:(0,n.composeEventHandlers)(e.onFocusOutside,e=>{e.target!==c.trigger&&l.onOpenChange(!1)}),onEscapeKeyDown:(0,n.composeEventHandlers)(e.onEscapeKeyDown,e=>{u.onClose(),e.preventDefault()}),onKeyDown:(0,n.composeEventHandlers)(e.onKeyDown,e=>{let r=e.currentTarget.contains(e.target),t=j[u.dir].includes(e.key);r&&t&&(l.onOpenChange(!1),c.trigger?.focus(),e.preventDefault())})})})})})});function ej(e){return e?"open":"closed"}function ek(e){return"indeterminate"===e}function eI(e){return ek(e)?"indeterminate":e?"checked":"unchecked"}function eS(e){return r=>"mouse"===r.pointerType?e(r):void 0}eD.displayName=eR;var eP="DropdownMenu",[eE,eN]=(0,a.createContextScope)(eP,[N]),e_=N(),[eT,eO]=eE(eP),eL=e=>{let{__scopeDropdownMenu:n,children:o,dir:a,open:d,defaultOpen:i,onOpenChange:l,modal:u=!0}=e,c=e_(n),p=t.useRef(null),[m,v]=(0,s.useControllableState)({prop:d,defaultProp:i??!1,onChange:l,caller:eP});return(0,r.jsx)(eT,{scope:n,triggerId:(0,f.useId)(),triggerRef:p,contentId:(0,f.useId)(),open:m,onOpenChange:v,onOpenToggle:t.useCallback(()=>v(e=>!e),[v]),modal:u,children:(0,r.jsx)(A,{...c,open:m,onOpenChange:v,dir:a,modal:u,children:o})})};eL.displayName=eP;var eH="DropdownMenuTrigger",eF=t.forwardRef((e,t)=>{let{__scopeDropdownMenu:a,disabled:s=!1,...i}=e,l=eO(eH,a),u=e_(a);return(0,r.jsx)(K,{asChild:!0,...u,children:(0,r.jsx)(d.Primitive.button,{type:"button",id:l.triggerId,"aria-haspopup":"menu","aria-expanded":l.open,"aria-controls":l.open?l.contentId:void 0,"data-state":l.open?"open":"closed","data-disabled":s?"":void 0,disabled:s,...i,ref:(0,o.composeRefs)(t,l.triggerRef),onPointerDown:(0,n.composeEventHandlers)(e.onPointerDown,e=>{!s&&0===e.button&&!1===e.ctrlKey&&(l.onOpenToggle(),l.open||e.preventDefault())}),onKeyDown:(0,n.composeEventHandlers)(e.onKeyDown,e=>{!s&&(["Enter"," "].includes(e.key)&&l.onOpenToggle(),"ArrowDown"===e.key&&l.onOpenChange(!0),["Enter"," ","ArrowDown"].includes(e.key)&&e.preventDefault())})})})});eF.displayName=eH;var eA=e=>{let{__scopeDropdownMenu:t,...n}=e,o=e_(t);return(0,r.jsx)(V,{...o,...n})};eA.displayName="DropdownMenuPortal";var eK="DropdownMenuContent",eG=t.forwardRef((e,o)=>{let{__scopeDropdownMenu:a,...s}=e,d=eO(eK,a),i=e_(a),l=t.useRef(!1);return(0,r.jsx)(q,{id:d.contentId,"aria-labelledby":d.triggerId,...i,...s,ref:o,onCloseAutoFocus:(0,n.composeEventHandlers)(e.onCloseAutoFocus,e=>{l.current||d.triggerRef.current?.focus(),l.current=!1,e.preventDefault()}),onInteractOutside:(0,n.composeEventHandlers)(e.onInteractOutside,e=>{let r=e.detail.originalEvent,t=0===r.button&&!0===r.ctrlKey,n=2===r.button||t;(!d.modal||n)&&(l.current=!0)}),style:{...e.style,"--radix-dropdown-menu-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-dropdown-menu-content-available-width":"var(--radix-popper-available-width)","--radix-dropdown-menu-content-available-height":"var(--radix-popper-available-height)","--radix-dropdown-menu-trigger-width":"var(--radix-popper-anchor-width)","--radix-dropdown-menu-trigger-height":"var(--radix-popper-anchor-height)"}})});eG.displayName=eK;var ez=t.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...o}=e,a=e_(n);return(0,r.jsx)($,{...a,...o,ref:t})});ez.displayName="DropdownMenuGroup";var eU=t.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...o}=e,a=e_(n);return(0,r.jsx)(ee,{...a,...o,ref:t})});eU.displayName="DropdownMenuLabel";var eV=t.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...o}=e,a=e_(n);return(0,r.jsx)(en,{...a,...o,ref:t})});eV.displayName="DropdownMenuItem";var eB=t.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...o}=e,a=e_(n);return(0,r.jsx)(ea,{...a,...o,ref:t})});eB.displayName="DropdownMenuCheckboxItem";var eX=t.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...o}=e,a=e_(n);return(0,r.jsx)(el,{...a,...o,ref:t})});eX.displayName="DropdownMenuRadioGroup";var eY=t.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...o}=e,a=e_(n);return(0,r.jsx)(ec,{...a,...o,ref:t})});eY.displayName="DropdownMenuRadioItem";var eq=t.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...o}=e,a=e_(n);return(0,r.jsx)(ev,{...a,...o,ref:t})});eq.displayName="DropdownMenuItemIndicator";var eW=t.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...o}=e,a=e_(n);return(0,r.jsx)(eh,{...a,...o,ref:t})});eW.displayName="DropdownMenuSeparator";var eZ=t.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...o}=e,a=e_(n);return(0,r.jsx)(eg,{...a,...o,ref:t})});eZ.displayName="DropdownMenuArrow";var eJ=e=>{let{__scopeDropdownMenu:t,children:n,open:o,onOpenChange:a,defaultOpen:d}=e,i=e_(t),[l,u]=(0,s.useControllableState)({prop:o,defaultProp:d??!1,onChange:a,caller:"DropdownMenuSub"});return(0,r.jsx)(eb,{...i,open:l,onOpenChange:u,children:n})},eQ=t.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...o}=e,a=e_(n);return(0,r.jsx)(eM,{...a,...o,ref:t})});eQ.displayName="DropdownMenuSubTrigger";var e$=t.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...o}=e,a=e_(n);return(0,r.jsx)(eD,{...a,...o,ref:t,style:{...e.style,"--radix-dropdown-menu-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-dropdown-menu-content-available-width":"var(--radix-popper-available-width)","--radix-dropdown-menu-content-available-height":"var(--radix-popper-available-height)","--radix-dropdown-menu-trigger-width":"var(--radix-popper-anchor-width)","--radix-dropdown-menu-trigger-height":"var(--radix-popper-anchor-height)"}})});e$.displayName="DropdownMenuSubContent",e.s(["Arrow",()=>eZ,"CheckboxItem",()=>eB,"Content",()=>eG,"DropdownMenu",()=>eL,"DropdownMenuArrow",()=>eZ,"DropdownMenuCheckboxItem",()=>eB,"DropdownMenuContent",()=>eG,"DropdownMenuGroup",()=>ez,"DropdownMenuItem",()=>eV,"DropdownMenuItemIndicator",()=>eq,"DropdownMenuLabel",()=>eU,"DropdownMenuPortal",()=>eA,"DropdownMenuRadioGroup",()=>eX,"DropdownMenuRadioItem",()=>eY,"DropdownMenuSeparator",()=>eW,"DropdownMenuSub",()=>eJ,"DropdownMenuSubContent",()=>e$,"DropdownMenuSubTrigger",()=>eQ,"DropdownMenuTrigger",()=>eF,"Group",()=>ez,"Item",()=>eV,"ItemIndicator",()=>eq,"Label",()=>eU,"Portal",()=>eA,"RadioGroup",()=>eX,"RadioItem",()=>eY,"Root",()=>eL,"Separator",()=>eW,"Sub",()=>eJ,"SubContent",()=>e$,"SubTrigger",()=>eQ,"Trigger",()=>eF,"createDropdownMenuScope",()=>eN],61920);var e0=e.i(61920),e0=e0,e1=e.i(23925),e2=e.i(76016),e5=e.i(95812),e6=e.i(31777);let e7=e0.Root,e8=e0.Trigger;e0.Group;let e9=e0.Portal,e3=e0.Sub;e0.RadioGroup;let e4=t.forwardRef(({className:e,inset:t,children:n,...o},a)=>(0,r.jsxs)(e0.SubTrigger,{ref:a,className:(0,e6.cn)("focus:bg-accent data-[state=open]:bg-accent flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none select-none [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",t&&"ps-8",e),...o,children:[n,(0,r.jsx)(e2.ChevronRight,{className:"ms-auto"})]}));e4.displayName=e0.SubTrigger.displayName;let re=t.forwardRef(({className:e,...t},n)=>(0,r.jsx)(e0.SubContent,{ref:n,className:(0,e6.cn)("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] overflow-hidden rounded-md border p-1 shadow-lg",e),...t}));re.displayName=e0.SubContent.displayName;let rr=t.forwardRef(({className:e,sideOffset:t=4,...n},o)=>(0,r.jsx)(e0.Portal,{children:(0,r.jsx)(e0.Content,{ref:o,sideOffset:t,className:(0,e6.cn)("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] overflow-hidden rounded-md border p-1 shadow-md",e),...n})}));rr.displayName=e0.Content.displayName;let rt=t.forwardRef(({className:e,inset:t,...n},o)=>(0,r.jsx)(e0.Item,{ref:o,className:(0,e6.cn)("focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm transition-colors outline-none select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&>svg]:size-4 [&>svg]:shrink-0",t&&"ps-8",e),...n}));rt.displayName=e0.Item.displayName,t.forwardRef(({className:e,children:t,checked:n,...o},a)=>(0,r.jsxs)(e0.CheckboxItem,{ref:a,className:(0,e6.cn)("focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center rounded-sm py-1.5 ps-8 pe-2 text-sm transition-colors outline-none select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50",e),checked:n,...o,children:[(0,r.jsx)("span",{className:"absolute start-2 flex h-3.5 w-3.5 items-center justify-center",children:(0,r.jsx)(e0.ItemIndicator,{children:(0,r.jsx)(e1.Check,{className:"h-4 w-4"})})}),t]})).displayName=e0.CheckboxItem.displayName,t.forwardRef(({className:e,children:t,...n},o)=>(0,r.jsxs)(e0.RadioItem,{ref:o,className:(0,e6.cn)("focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center rounded-sm py-1.5 ps-8 pe-2 text-sm transition-colors outline-none select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50",e),...n,children:[(0,r.jsx)("span",{className:"absolute start-2 flex h-3.5 w-3.5 items-center justify-center",children:(0,r.jsx)(e0.ItemIndicator,{children:(0,r.jsx)(e5.Circle,{className:"h-2 w-2 fill-current"})})}),t]})).displayName=e0.RadioItem.displayName;let rn=t.forwardRef(({className:e,inset:t,...n},o)=>(0,r.jsx)(e0.Label,{ref:o,className:(0,e6.cn)("px-2 py-1.5 text-sm font-semibold",t&&"ps-8",e),...n}));rn.displayName=e0.Label.displayName;let ro=t.forwardRef(({className:e,...t},n)=>(0,r.jsx)(e0.Separator,{ref:n,className:(0,e6.cn)("bg-muted -mx-1 my-1 h-px",e),...t}));ro.displayName=e0.Separator.displayName,e.s(["DropdownMenu",()=>e7,"DropdownMenuContent",()=>rr,"DropdownMenuItem",()=>rt,"DropdownMenuLabel",()=>rn,"DropdownMenuPortal",()=>e9,"DropdownMenuSeparator",()=>ro,"DropdownMenuSub",()=>e3,"DropdownMenuSubContent",()=>re,"DropdownMenuSubTrigger",()=>e4,"DropdownMenuTrigger",()=>e8],70646)}]);
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,16298,e=>{"use strict";let t=(0,e.i(3645).default)("file-text",[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M10 9H8",key:"b1mrlr"}],["path",{d:"M16 13H8",key:"t4e002"}],["path",{d:"M16 17H8",key:"z1uh3a"}]]);e.s(["default",()=>t])},43698,e=>{"use strict";let t=(0,e.i(3645).default)("paperclip",[["path",{d:"m16 6-8.414 8.586a2 2 0 0 0 2.829 2.829l8.414-8.586a4 4 0 1 0-5.657-5.657l-8.379 8.551a6 6 0 1 0 8.485 8.485l8.379-8.551",key:"1miecu"}]]);e.s(["default",()=>t])},64764,80436,17087,e=>{"use strict";var t=e.i(15506);e.s(["Loader2Icon",()=>t.default],64764);var o=e.i(95230);e.s(["DownloadIcon",()=>o.default],80436);let r=(0,e.i(3645).default)("sticky-note",[["path",{d:"M21 9a2.4 2.4 0 0 0-.706-1.706l-3.588-3.588A2.4 2.4 0 0 0 15 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2z",key:"1dfntj"}],["path",{d:"M15 3v5a1 1 0 0 0 1 1h5",key:"6s6qgf"}]]);e.s(["StickyNoteIcon",()=>r],17087)},48306,e=>{"use strict";var t=e.i(20314),o=e.i(31777);function r({className:e,...r}){return(0,t.jsx)("textarea",{"data-slot":"textarea",className:(0,o.cn)("placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input field-sizing-content min-h-[80px] w-full rounded-md border bg-transparent px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm","focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]","aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",e),...r})}e.s(["Textarea",()=>r])},28267,76505,57484,e=>{"use strict";var t=e.i(1693);e.s(["VisuallyHidden",0,t],28267);let o=(0,e.i(3645).default)("file",[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}]]);e.s(["default",()=>o],76505),e.s(["FileIcon",()=>o],57484)},50032,86254,e=>{"use strict";var t=e.i(20314),o=e.i(60253),r=e.i(64764),n=e.i(80436),a=e.i(17087),i=e.i(31777),s=e.i(2287),l=e.i(48306),d=e.i(2828),c=e.i(28267),u=e.i(57484),p=e.i(16298),p=p;let f=(0,e.i(3645).default)("image",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",ry:"2",key:"1m3agn"}],["circle",{cx:"9",cy:"9",r:"2",key:"af1f0g"}],["path",{d:"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21",key:"1xmnt7"}]]);var g=e.i(93752),g=g;e.i(35364);let m=new Set([".png",".jpg",".jpeg",".gif",".svg",".webp",".ico",".bmp"]),h=new Set([".ts",".tsx",".js",".jsx",".json",".yaml",".yml",".xml",".html",".css",".md"]);function x(e){if(0===e)return"0 B";let t=Math.floor(Math.log(e)/Math.log(1024));return`${(e/Math.pow(1024,t)).toFixed(+(0!==t))} ${["B","KB","MB","GB"][t]}`}let v=new Set([".png",".jpg",".jpeg",".gif",".svg",".webp",".ico",".bmp"]);function y(e,t){let o=new URLSearchParams({path:e,mimeType:t});return`/api/attachments/preview?${o.toString()}`}function b({name:e,size:b,mimeType:w,path:j,onRemove:C,loading:N=!1,disabled:P=!1,notes:D,onNotesChange:R}){let T,k,E=(T=e.lastIndexOf("."))>=0?e.slice(T).toLowerCase():"",O=m.has(E)?f:".pdf"===E?p.default:h.has(E)?g.default:u.FileIcon,I=".pdf"===E?"bg-red-50 text-red-600":m.has(E)?"bg-blue-50 text-blue-600":h.has(E)?"bg-emerald-50 text-emerald-600":"bg-gray-50 text-gray-600",A=(k=e.lastIndexOf("."))>=0&&v.has(e.slice(k).toLowerCase());if(N)return(0,t.jsx)("div",{className:"flex h-12 w-12 items-center justify-center rounded-md border",children:(0,t.jsx)(r.Loader2Icon,{className:"text-muted-foreground h-5 w-5 animate-spin"})});if(A){let r=(0,t.jsxs)("button",{type:"button",className:"relative block cursor-pointer rounded-md",children:[(0,t.jsx)("img",{src:y(j,w),alt:e,title:e,className:"h-12 w-12 rounded-md border object-cover transition-opacity hover:opacity-80"}),D?(0,t.jsx)("span",{className:"ring-background absolute -right-1 -bottom-1 flex h-4 w-4 items-center justify-center rounded-full bg-amber-500 text-white shadow-sm ring-2",children:(0,t.jsx)(a.StickyNoteIcon,{className:"h-2.5 w-2.5"})}):null]});return(0,t.jsx)(d.TooltipProvider,{delayDuration:200,children:(0,t.jsxs)(s.Dialog,{children:[(0,t.jsxs)(d.Tooltip,{children:[(0,t.jsxs)("div",{className:"group relative",children:[(0,t.jsx)(d.TooltipTrigger,{asChild:!0,children:(0,t.jsx)(s.DialogTrigger,{asChild:!0,children:r})}),!P&&(0,t.jsx)("button",{type:"button",onClick:C,className:"absolute -top-1.5 -right-1.5 hidden h-5 w-5 cursor-pointer items-center justify-center rounded-full bg-black/70 text-white group-hover:flex","aria-label":`Remove ${e}`,children:(0,t.jsx)(o.X,{className:"h-3 w-3"})})]}),D?(0,t.jsx)(d.TooltipContent,{side:"top",sideOffset:10,className:"z-[80] max-w-[220px]",children:(0,t.jsx)("p",{className:"line-clamp-5 text-xs leading-snug whitespace-pre-wrap",children:D})}):null]}),(0,t.jsxs)(s.DialogContent,{className:"max-w-3xl gap-0 overflow-hidden border-0 p-0 [&>button:last-child]:!cursor-pointer [&>button:last-child]:!rounded-full [&>button:last-child]:!bg-black/70 [&>button:last-child]:!p-1.5 [&>button:last-child]:!text-white [&>button:last-child]:!opacity-100 [&>button:last-child]:!shadow-lg [&>button:last-child]:!backdrop-blur-md [&>button:last-child]:hover:!bg-black/90",children:[(0,t.jsx)(c.VisuallyHidden.Root,{children:(0,t.jsxs)(s.DialogTitle,{children:["Preview: ",e]})}),(0,t.jsx)("div",{className:"relative bg-black/90",children:(0,t.jsx)("img",{src:y(j,w),alt:e,className:"h-auto max-h-[70vh] w-full object-contain"})}),(0,t.jsxs)("div",{className:"bg-background flex flex-col gap-2 px-4 py-3",children:[(0,t.jsxs)("div",{className:"flex items-center gap-3",children:[(0,t.jsxs)("div",{className:"flex min-w-0 flex-1 flex-col",children:[(0,t.jsx)("span",{className:"truncate text-sm font-medium",children:e}),(0,t.jsx)("span",{className:"text-muted-foreground text-xs",children:x(b)})]}),(0,t.jsx)("a",{href:y(j,w),download:e,className:"text-muted-foreground hover:text-foreground shrink-0 cursor-pointer rounded p-1.5 transition-colors","aria-label":`Download ${e}`,children:(0,t.jsx)(n.DownloadIcon,{className:"h-4 w-4"})})]}),R?(0,t.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,t.jsx)(l.Textarea,{placeholder:"Add notes about this image…",value:D??"",onChange:e=>R(e.target.value),rows:2,className:"resize-none text-sm","aria-label":"Image notes"}),D?.trim()?(0,t.jsx)("span",{className:"text-muted-foreground text-xs",children:"Auto-saved"}):null]}):D?(0,t.jsx)("p",{className:"text-muted-foreground text-sm whitespace-pre-wrap",children:D}):null]})]})]})})}return(0,t.jsxs)("div",{className:"group relative flex items-center gap-2 rounded-full border py-1 ps-2 pe-3",children:[(0,t.jsx)("div",{className:(0,i.cn)("flex h-6 w-6 shrink-0 items-center justify-center rounded-full",I),children:(0,t.jsx)(O,{className:"h-3 w-3"})}),(0,t.jsx)("span",{className:"max-w-[120px] truncate text-sm",children:e}),(0,t.jsx)("span",{className:"text-muted-foreground text-xs",children:x(b)}),!P&&(0,t.jsx)("button",{type:"button",onClick:C,className:"absolute -top-1.5 -right-1.5 hidden h-5 w-5 cursor-pointer items-center justify-center rounded-full bg-black/70 text-white group-hover:flex","aria-label":`Remove ${e}`,children:(0,t.jsx)(o.X,{className:"h-3 w-3"})})]})}e.s(["AttachmentChip",()=>b],86254),e.s([],50032)},31406,(e,t,o)=>{t.exports=e.r(67013)},60253,90537,e=>{"use strict";let t=(0,e.i(3645).default)("x",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]);e.s(["default",()=>t],90537),e.s(["X",()=>t],60253)},23925,1012,e=>{"use strict";let t=(0,e.i(3645).default)("check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]);e.s(["default",()=>t],1012),e.s(["Check",()=>t],23925)},90382,e=>{"use strict";var t=e.i(20314),o=e.i(79054),r=e.i(91967),n=e.i(5978),a=e.i(22528),i=e.i(53532),s=e.i(41687),l=e.i(56720),d=e.i(13123),c=e.i(52740),u=e.i(39979),p=e.i(85995),f=e.i(87620),g=e.i(86874),m=e.i(36589),h=e.i(73772),x=e.i(13044),v="Popover",[y,b]=(0,a.createContextScope)(v,[c.createPopperScope]),w=(0,c.createPopperScope)(),[j,C]=y(v),N=e=>{let{__scopePopover:r,children:n,open:a,defaultOpen:i,onOpenChange:s,modal:l=!1}=e,u=w(r),p=o.useRef(null),[f,g]=o.useState(!1),[h,x]=(0,m.useControllableState)({prop:a,defaultProp:i??!1,onChange:s,caller:v});return(0,t.jsx)(c.Root,{...u,children:(0,t.jsx)(j,{scope:r,contentId:(0,d.useId)(),triggerRef:p,open:h,onOpenChange:x,onOpenToggle:o.useCallback(()=>x(e=>!e),[x]),hasCustomAnchor:f,onCustomAnchorAdd:o.useCallback(()=>g(!0),[]),onCustomAnchorRemove:o.useCallback(()=>g(!1),[]),modal:l,children:n})})};N.displayName=v;var P="PopoverAnchor",D=o.forwardRef((e,r)=>{let{__scopePopover:n,...a}=e,i=C(P,n),s=w(n),{onCustomAnchorAdd:l,onCustomAnchorRemove:d}=i;return o.useEffect(()=>(l(),()=>d()),[l,d]),(0,t.jsx)(c.Anchor,{...s,...a,ref:r})});D.displayName=P;var R="PopoverTrigger",T=o.forwardRef((e,o)=>{let{__scopePopover:a,...i}=e,s=C(R,a),l=w(a),d=(0,n.useComposedRefs)(o,s.triggerRef),u=(0,t.jsx)(f.Primitive.button,{type:"button","aria-haspopup":"dialog","aria-expanded":s.open,"aria-controls":s.contentId,"data-state":B(s.open),...i,ref:d,onClick:(0,r.composeEventHandlers)(e.onClick,s.onOpenToggle)});return s.hasCustomAnchor?u:(0,t.jsx)(c.Anchor,{asChild:!0,...l,children:u})});T.displayName=R;var k="PopoverPortal",[E,O]=y(k,{forceMount:void 0}),I=e=>{let{__scopePopover:o,forceMount:r,children:n,container:a}=e,i=C(k,o);return(0,t.jsx)(E,{scope:o,forceMount:r,children:(0,t.jsx)(p.Presence,{present:r||i.open,children:(0,t.jsx)(u.Portal,{asChild:!0,container:a,children:n})})})};I.displayName=k;var A="PopoverContent",M=o.forwardRef((e,o)=>{let r=O(A,e.__scopePopover),{forceMount:n=r.forceMount,...a}=e,i=C(A,e.__scopePopover);return(0,t.jsx)(p.Presence,{present:n||i.open,children:i.modal?(0,t.jsx)(F,{...a,ref:o}):(0,t.jsx)(_,{...a,ref:o})})});M.displayName=A;var S=(0,g.createSlot)("PopoverContent.RemoveScroll"),F=o.forwardRef((e,a)=>{let i=C(A,e.__scopePopover),s=o.useRef(null),l=(0,n.useComposedRefs)(a,s),d=o.useRef(!1);return o.useEffect(()=>{let e=s.current;if(e)return(0,h.hideOthers)(e)},[]),(0,t.jsx)(x.RemoveScroll,{as:S,allowPinchZoom:!0,children:(0,t.jsx)(L,{...e,ref:l,trapFocus:i.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:(0,r.composeEventHandlers)(e.onCloseAutoFocus,e=>{e.preventDefault(),d.current||i.triggerRef.current?.focus()}),onPointerDownOutside:(0,r.composeEventHandlers)(e.onPointerDownOutside,e=>{let t=e.detail.originalEvent,o=0===t.button&&!0===t.ctrlKey;d.current=2===t.button||o},{checkForDefaultPrevented:!1}),onFocusOutside:(0,r.composeEventHandlers)(e.onFocusOutside,e=>e.preventDefault(),{checkForDefaultPrevented:!1})})})}),_=o.forwardRef((e,r)=>{let n=C(A,e.__scopePopover),a=o.useRef(!1),i=o.useRef(!1);return(0,t.jsx)(L,{...e,ref:r,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:t=>{e.onCloseAutoFocus?.(t),t.defaultPrevented||(a.current||n.triggerRef.current?.focus(),t.preventDefault()),a.current=!1,i.current=!1},onInteractOutside:t=>{e.onInteractOutside?.(t),t.defaultPrevented||(a.current=!0,"pointerdown"===t.detail.originalEvent.type&&(i.current=!0));let o=t.target;n.triggerRef.current?.contains(o)&&t.preventDefault(),"focusin"===t.detail.originalEvent.type&&i.current&&t.preventDefault()}})}),L=o.forwardRef((e,o)=>{let{__scopePopover:r,trapFocus:n,onOpenAutoFocus:a,onCloseAutoFocus:d,disableOutsidePointerEvents:u,onEscapeKeyDown:p,onPointerDownOutside:f,onFocusOutside:g,onInteractOutside:m,...h}=e,x=C(A,r),v=w(r);return(0,s.useFocusGuards)(),(0,t.jsx)(l.FocusScope,{asChild:!0,loop:!0,trapped:n,onMountAutoFocus:a,onUnmountAutoFocus:d,children:(0,t.jsx)(i.DismissableLayer,{asChild:!0,disableOutsidePointerEvents:u,onInteractOutside:m,onEscapeKeyDown:p,onPointerDownOutside:f,onFocusOutside:g,onDismiss:()=>x.onOpenChange(!1),children:(0,t.jsx)(c.Content,{"data-state":B(x.open),role:"dialog",id:x.contentId,...v,...h,ref:o,style:{...h.style,"--radix-popover-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-popover-content-available-width":"var(--radix-popper-available-width)","--radix-popover-content-available-height":"var(--radix-popper-available-height)","--radix-popover-trigger-width":"var(--radix-popper-anchor-width)","--radix-popover-trigger-height":"var(--radix-popper-anchor-height)"}})})})}),H="PopoverClose",z=o.forwardRef((e,o)=>{let{__scopePopover:n,...a}=e,i=C(H,n);return(0,t.jsx)(f.Primitive.button,{type:"button",...a,ref:o,onClick:(0,r.composeEventHandlers)(e.onClick,()=>i.onOpenChange(!1))})});z.displayName=H;var U=o.forwardRef((e,o)=>{let{__scopePopover:r,...n}=e,a=w(r);return(0,t.jsx)(c.Arrow,{...a,...n,ref:o})});function B(e){return e?"open":"closed"}U.displayName="PopoverArrow",e.s(["Anchor",()=>D,"Arrow",()=>U,"Close",()=>z,"Content",()=>M,"Popover",()=>N,"PopoverAnchor",()=>D,"PopoverArrow",()=>U,"PopoverClose",()=>z,"PopoverContent",()=>M,"PopoverPortal",()=>I,"PopoverTrigger",()=>T,"Portal",()=>I,"Root",()=>N,"Trigger",()=>T,"createPopoverScope",()=>b],89920);var $=e.i(89920),$=$,W=e.i(31777);let V=$.Root,X=$.Trigger;$.Anchor;let K=o.forwardRef(({className:e,align:o="center",sideOffset:r=4,...n},a)=>(0,t.jsx)($.Portal,{children:(0,t.jsx)($.Content,{ref:a,align:o,sideOffset:r,className:(0,W.cn)("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-72 rounded-md border p-4 shadow-md outline-none",e),...n})}));K.displayName=$.Content.displayName,e.s(["Popover",()=>V,"PopoverContent",()=>K,"PopoverTrigger",()=>X],90382)},85995,e=>{"use strict";var t=e.i(79054),o=e.i(5978),r=e.i(5192),n=e=>{var n;let i,s,{present:l,children:d}=e,c=function(e){var o,n;let[i,s]=t.useState(),l=t.useRef(null),d=t.useRef(e),c=t.useRef("none"),[u,p]=(o=e?"mounted":"unmounted",n={mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}},t.useReducer((e,t)=>n[e][t]??e,o));return t.useEffect(()=>{let e=a(l.current);c.current="mounted"===u?e:"none"},[u]),(0,r.useLayoutEffect)(()=>{let t=l.current,o=d.current;if(o!==e){let r=c.current,n=a(t);e?p("MOUNT"):"none"===n||t?.display==="none"?p("UNMOUNT"):o&&r!==n?p("ANIMATION_OUT"):p("UNMOUNT"),d.current=e}},[e,p]),(0,r.useLayoutEffect)(()=>{if(i){let e,t=i.ownerDocument.defaultView??window,o=o=>{let r=a(l.current).includes(CSS.escape(o.animationName));if(o.target===i&&r&&(p("ANIMATION_END"),!d.current)){let o=i.style.animationFillMode;i.style.animationFillMode="forwards",e=t.setTimeout(()=>{"forwards"===i.style.animationFillMode&&(i.style.animationFillMode=o)})}},r=e=>{e.target===i&&(c.current=a(l.current))};return i.addEventListener("animationstart",r),i.addEventListener("animationcancel",o),i.addEventListener("animationend",o),()=>{t.clearTimeout(e),i.removeEventListener("animationstart",r),i.removeEventListener("animationcancel",o),i.removeEventListener("animationend",o)}}p("ANIMATION_END")},[i,p]),{isPresent:["mounted","unmountSuspended"].includes(u),ref:t.useCallback(e=>{l.current=e?getComputedStyle(e):null,s(e)},[])}}(l),u="function"==typeof d?d({present:c.isPresent}):t.Children.only(d),p=(0,o.useComposedRefs)(c.ref,(n=u,(s=(i=Object.getOwnPropertyDescriptor(n.props,"ref")?.get)&&"isReactWarning"in i&&i.isReactWarning)?n.ref:(s=(i=Object.getOwnPropertyDescriptor(n,"ref")?.get)&&"isReactWarning"in i&&i.isReactWarning)?n.props.ref:n.props.ref||n.ref));return"function"==typeof d||c.isPresent?t.cloneElement(u,{ref:p}):null};function a(e){return e?.animationName||"none"}n.displayName="Presence",e.s(["Presence",()=>n])},567,e=>{"use strict";var t=e.i(79054),o=e.i(91967),r=e.i(5978),n=e.i(22528),a=e.i(13123),i=e.i(36589),s=e.i(53532),l=e.i(56720),d=e.i(39979),c=e.i(85995),u=e.i(87620),p=e.i(41687),f=e.i(13044),g=e.i(73772),m=e.i(86874),h=e.i(20314),x="Dialog",[v,y]=(0,n.createContextScope)(x),[b,w]=v(x),j=e=>{let{__scopeDialog:o,children:r,open:n,defaultOpen:s,onOpenChange:l,modal:d=!0}=e,c=t.useRef(null),u=t.useRef(null),[p,f]=(0,i.useControllableState)({prop:n,defaultProp:s??!1,onChange:l,caller:x});return(0,h.jsx)(b,{scope:o,triggerRef:c,contentRef:u,contentId:(0,a.useId)(),titleId:(0,a.useId)(),descriptionId:(0,a.useId)(),open:p,onOpenChange:f,onOpenToggle:t.useCallback(()=>f(e=>!e),[f]),modal:d,children:r})};j.displayName=x;var C="DialogTrigger",N=t.forwardRef((e,t)=>{let{__scopeDialog:n,...a}=e,i=w(C,n),s=(0,r.useComposedRefs)(t,i.triggerRef);return(0,h.jsx)(u.Primitive.button,{type:"button","aria-haspopup":"dialog","aria-expanded":i.open,"aria-controls":i.contentId,"data-state":W(i.open),...a,ref:s,onClick:(0,o.composeEventHandlers)(e.onClick,i.onOpenToggle)})});N.displayName=C;var P="DialogPortal",[D,R]=v(P,{forceMount:void 0}),T=e=>{let{__scopeDialog:o,forceMount:r,children:n,container:a}=e,i=w(P,o);return(0,h.jsx)(D,{scope:o,forceMount:r,children:t.Children.map(n,e=>(0,h.jsx)(c.Presence,{present:r||i.open,children:(0,h.jsx)(d.Portal,{asChild:!0,container:a,children:e})}))})};T.displayName=P;var k="DialogOverlay",E=t.forwardRef((e,t)=>{let o=R(k,e.__scopeDialog),{forceMount:r=o.forceMount,...n}=e,a=w(k,e.__scopeDialog);return a.modal?(0,h.jsx)(c.Presence,{present:r||a.open,children:(0,h.jsx)(I,{...n,ref:t})}):null});E.displayName=k;var O=(0,m.createSlot)("DialogOverlay.RemoveScroll"),I=t.forwardRef((e,t)=>{let{__scopeDialog:o,...r}=e,n=w(k,o);return(0,h.jsx)(f.RemoveScroll,{as:O,allowPinchZoom:!0,shards:[n.contentRef],children:(0,h.jsx)(u.Primitive.div,{"data-state":W(n.open),...r,ref:t,style:{pointerEvents:"auto",...r.style}})})}),A="DialogContent",M=t.forwardRef((e,t)=>{let o=R(A,e.__scopeDialog),{forceMount:r=o.forceMount,...n}=e,a=w(A,e.__scopeDialog);return(0,h.jsx)(c.Presence,{present:r||a.open,children:a.modal?(0,h.jsx)(S,{...n,ref:t}):(0,h.jsx)(F,{...n,ref:t})})});M.displayName=A;var S=t.forwardRef((e,n)=>{let a=w(A,e.__scopeDialog),i=t.useRef(null),s=(0,r.useComposedRefs)(n,a.contentRef,i);return t.useEffect(()=>{let e=i.current;if(e)return(0,g.hideOthers)(e)},[]),(0,h.jsx)(_,{...e,ref:s,trapFocus:a.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:(0,o.composeEventHandlers)(e.onCloseAutoFocus,e=>{e.preventDefault(),a.triggerRef.current?.focus()}),onPointerDownOutside:(0,o.composeEventHandlers)(e.onPointerDownOutside,e=>{let t=e.detail.originalEvent,o=0===t.button&&!0===t.ctrlKey;(2===t.button||o)&&e.preventDefault()}),onFocusOutside:(0,o.composeEventHandlers)(e.onFocusOutside,e=>e.preventDefault())})}),F=t.forwardRef((e,o)=>{let r=w(A,e.__scopeDialog),n=t.useRef(!1),a=t.useRef(!1);return(0,h.jsx)(_,{...e,ref:o,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:t=>{e.onCloseAutoFocus?.(t),t.defaultPrevented||(n.current||r.triggerRef.current?.focus(),t.preventDefault()),n.current=!1,a.current=!1},onInteractOutside:t=>{e.onInteractOutside?.(t),t.defaultPrevented||(n.current=!0,"pointerdown"===t.detail.originalEvent.type&&(a.current=!0));let o=t.target;r.triggerRef.current?.contains(o)&&t.preventDefault(),"focusin"===t.detail.originalEvent.type&&a.current&&t.preventDefault()}})}),_=t.forwardRef((e,o)=>{let{__scopeDialog:n,trapFocus:a,onOpenAutoFocus:i,onCloseAutoFocus:d,...c}=e,u=w(A,n),f=t.useRef(null),g=(0,r.useComposedRefs)(o,f);return(0,p.useFocusGuards)(),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(l.FocusScope,{asChild:!0,loop:!0,trapped:a,onMountAutoFocus:i,onUnmountAutoFocus:d,children:(0,h.jsx)(s.DismissableLayer,{role:"dialog",id:u.contentId,"aria-describedby":u.descriptionId,"aria-labelledby":u.titleId,"data-state":W(u.open),...c,ref:g,onDismiss:()=>u.onOpenChange(!1)})}),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(G,{titleId:u.titleId}),(0,h.jsx)(q,{contentRef:f,descriptionId:u.descriptionId})]})]})}),L="DialogTitle",H=t.forwardRef((e,t)=>{let{__scopeDialog:o,...r}=e,n=w(L,o);return(0,h.jsx)(u.Primitive.h2,{id:n.titleId,...r,ref:t})});H.displayName=L;var z="DialogDescription",U=t.forwardRef((e,t)=>{let{__scopeDialog:o,...r}=e,n=w(z,o);return(0,h.jsx)(u.Primitive.p,{id:n.descriptionId,...r,ref:t})});U.displayName=z;var B="DialogClose",$=t.forwardRef((e,t)=>{let{__scopeDialog:r,...n}=e,a=w(B,r);return(0,h.jsx)(u.Primitive.button,{type:"button",...n,ref:t,onClick:(0,o.composeEventHandlers)(e.onClick,()=>a.onOpenChange(!1))})});function W(e){return e?"open":"closed"}$.displayName=B;var V="DialogTitleWarning",[X,K]=(0,n.createContext)(V,{contentName:A,titleName:L,docsSlug:"dialog"}),G=({titleId:e})=>{let o=K(V),r=`\`${o.contentName}\` requires a \`${o.titleName}\` for the component to be accessible for screen reader users.
|
|
2
|
+
|
|
3
|
+
If you want to hide the \`${o.titleName}\`, you can wrap it with our VisuallyHidden component.
|
|
4
|
+
|
|
5
|
+
For more information, see https://radix-ui.com/primitives/docs/components/${o.docsSlug}`;return t.useEffect(()=>{e&&(document.getElementById(e)||console.error(r))},[r,e]),null},q=({contentRef:e,descriptionId:o})=>{let r=K("DialogDescriptionWarning"),n=`Warning: Missing \`Description\` or \`aria-describedby={undefined}\` for {${r.contentName}}.`;return t.useEffect(()=>{let t=e.current?.getAttribute("aria-describedby");o&&t&&(document.getElementById(o)||console.warn(n))},[n,e,o]),null};e.s(["Close",()=>$,"Content",()=>M,"Description",()=>U,"Dialog",()=>j,"DialogClose",()=>$,"DialogContent",()=>M,"DialogDescription",()=>U,"DialogOverlay",()=>E,"DialogPortal",()=>T,"DialogTitle",()=>H,"DialogTrigger",()=>N,"Overlay",()=>E,"Portal",()=>T,"Root",()=>j,"Title",()=>H,"Trigger",()=>N,"WarningProvider",()=>X,"createDialogScope",()=>y])},90033,e=>{"use strict";var t=e.i(567);e.s(["Dialog",0,t])},2828,e=>{"use strict";var t=e.i(20314),o=e.i(79054),r=e.i(91967),n=e.i(5978),a=e.i(22528),i=e.i(53532),s=e.i(13123),l=e.i(52740),d=e.i(39979),c=e.i(85995),u=e.i(87620),p=e.i(86874),f=e.i(36589),g=e.i(1693),[m,h]=(0,a.createContextScope)("Tooltip",[l.createPopperScope]),x=(0,l.createPopperScope)(),v="TooltipProvider",y="tooltip.open",[b,w]=m(v),j=e=>{let{__scopeTooltip:r,delayDuration:n=700,skipDelayDuration:a=300,disableHoverableContent:i=!1,children:s}=e,l=o.useRef(!0),d=o.useRef(!1),c=o.useRef(0);return o.useEffect(()=>{let e=c.current;return()=>window.clearTimeout(e)},[]),(0,t.jsx)(b,{scope:r,isOpenDelayedRef:l,delayDuration:n,onOpen:o.useCallback(()=>{window.clearTimeout(c.current),l.current=!1},[]),onClose:o.useCallback(()=>{window.clearTimeout(c.current),c.current=window.setTimeout(()=>l.current=!0,a)},[a]),isPointerInTransitRef:d,onPointerInTransitChange:o.useCallback(e=>{d.current=e},[]),disableHoverableContent:i,children:s})};j.displayName=v;var C="Tooltip",[N,P]=m(C),D=e=>{let{__scopeTooltip:r,children:n,open:a,defaultOpen:i,onOpenChange:d,disableHoverableContent:c,delayDuration:u}=e,p=w(C,e.__scopeTooltip),g=x(r),[m,h]=o.useState(null),v=(0,s.useId)(),b=o.useRef(0),j=c??p.disableHoverableContent,P=u??p.delayDuration,D=o.useRef(!1),[R,T]=(0,f.useControllableState)({prop:a,defaultProp:i??!1,onChange:e=>{e?(p.onOpen(),document.dispatchEvent(new CustomEvent(y))):p.onClose(),d?.(e)},caller:C}),k=o.useMemo(()=>R?D.current?"delayed-open":"instant-open":"closed",[R]),E=o.useCallback(()=>{window.clearTimeout(b.current),b.current=0,D.current=!1,T(!0)},[T]),O=o.useCallback(()=>{window.clearTimeout(b.current),b.current=0,T(!1)},[T]),I=o.useCallback(()=>{window.clearTimeout(b.current),b.current=window.setTimeout(()=>{D.current=!0,T(!0),b.current=0},P)},[P,T]);return o.useEffect(()=>()=>{b.current&&(window.clearTimeout(b.current),b.current=0)},[]),(0,t.jsx)(l.Root,{...g,children:(0,t.jsx)(N,{scope:r,contentId:v,open:R,stateAttribute:k,trigger:m,onTriggerChange:h,onTriggerEnter:o.useCallback(()=>{p.isOpenDelayedRef.current?I():E()},[p.isOpenDelayedRef,I,E]),onTriggerLeave:o.useCallback(()=>{j?O():(window.clearTimeout(b.current),b.current=0)},[O,j]),onOpen:E,onClose:O,disableHoverableContent:j,children:n})})};D.displayName=C;var R="TooltipTrigger",T=o.forwardRef((e,a)=>{let{__scopeTooltip:i,...s}=e,d=P(R,i),c=w(R,i),p=x(i),f=o.useRef(null),g=(0,n.useComposedRefs)(a,f,d.onTriggerChange),m=o.useRef(!1),h=o.useRef(!1),v=o.useCallback(()=>m.current=!1,[]);return o.useEffect(()=>()=>document.removeEventListener("pointerup",v),[v]),(0,t.jsx)(l.Anchor,{asChild:!0,...p,children:(0,t.jsx)(u.Primitive.button,{"aria-describedby":d.open?d.contentId:void 0,"data-state":d.stateAttribute,...s,ref:g,onPointerMove:(0,r.composeEventHandlers)(e.onPointerMove,e=>{"touch"!==e.pointerType&&(h.current||c.isPointerInTransitRef.current||(d.onTriggerEnter(),h.current=!0))}),onPointerLeave:(0,r.composeEventHandlers)(e.onPointerLeave,()=>{d.onTriggerLeave(),h.current=!1}),onPointerDown:(0,r.composeEventHandlers)(e.onPointerDown,()=>{d.open&&d.onClose(),m.current=!0,document.addEventListener("pointerup",v,{once:!0})}),onFocus:(0,r.composeEventHandlers)(e.onFocus,()=>{m.current||d.onOpen()}),onBlur:(0,r.composeEventHandlers)(e.onBlur,d.onClose),onClick:(0,r.composeEventHandlers)(e.onClick,d.onClose)})})});T.displayName=R;var k="TooltipPortal",[E,O]=m(k,{forceMount:void 0}),I=e=>{let{__scopeTooltip:o,forceMount:r,children:n,container:a}=e,i=P(k,o);return(0,t.jsx)(E,{scope:o,forceMount:r,children:(0,t.jsx)(c.Presence,{present:r||i.open,children:(0,t.jsx)(d.Portal,{asChild:!0,container:a,children:n})})})};I.displayName=k;var A="TooltipContent",M=o.forwardRef((e,o)=>{let r=O(A,e.__scopeTooltip),{forceMount:n=r.forceMount,side:a="top",...i}=e,s=P(A,e.__scopeTooltip);return(0,t.jsx)(c.Presence,{present:n||s.open,children:s.disableHoverableContent?(0,t.jsx)(H,{side:a,...i,ref:o}):(0,t.jsx)(S,{side:a,...i,ref:o})})}),S=o.forwardRef((e,r)=>{let a=P(A,e.__scopeTooltip),i=w(A,e.__scopeTooltip),s=o.useRef(null),l=(0,n.useComposedRefs)(r,s),[d,c]=o.useState(null),{trigger:u,onClose:p}=a,f=s.current,{onPointerInTransitChange:g}=i,m=o.useCallback(()=>{c(null),g(!1)},[g]),h=o.useCallback((e,t)=>{let o,r=e.currentTarget,n={x:e.clientX,y:e.clientY},a=function(e,t){let o=Math.abs(t.top-e.y),r=Math.abs(t.bottom-e.y),n=Math.abs(t.right-e.x),a=Math.abs(t.left-e.x);switch(Math.min(o,r,n,a)){case a:return"left";case n:return"right";case o:return"top";case r:return"bottom";default:throw Error("unreachable")}}(n,r.getBoundingClientRect());c(((o=[...function(e,t,o=5){let r=[];switch(t){case"top":r.push({x:e.x-o,y:e.y+o},{x:e.x+o,y:e.y+o});break;case"bottom":r.push({x:e.x-o,y:e.y-o},{x:e.x+o,y:e.y-o});break;case"left":r.push({x:e.x+o,y:e.y-o},{x:e.x+o,y:e.y+o});break;case"right":r.push({x:e.x-o,y:e.y-o},{x:e.x-o,y:e.y+o})}return r}(n,a),...function(e){let{top:t,right:o,bottom:r,left:n}=e;return[{x:n,y:t},{x:o,y:t},{x:o,y:r},{x:n,y:r}]}(t.getBoundingClientRect())].slice()).sort((e,t)=>e.x<t.x?-1:e.x>t.x?1:e.y<t.y?-1:1*!!(e.y>t.y)),function(e){if(e.length<=1)return e.slice();let t=[];for(let o=0;o<e.length;o++){let r=e[o];for(;t.length>=2;){let e=t[t.length-1],o=t[t.length-2];if((e.x-o.x)*(r.y-o.y)>=(e.y-o.y)*(r.x-o.x))t.pop();else break}t.push(r)}t.pop();let o=[];for(let t=e.length-1;t>=0;t--){let r=e[t];for(;o.length>=2;){let e=o[o.length-1],t=o[o.length-2];if((e.x-t.x)*(r.y-t.y)>=(e.y-t.y)*(r.x-t.x))o.pop();else break}o.push(r)}return(o.pop(),1===t.length&&1===o.length&&t[0].x===o[0].x&&t[0].y===o[0].y)?t:t.concat(o)}(o))),g(!0)},[g]);return o.useEffect(()=>()=>m(),[m]),o.useEffect(()=>{if(u&&f){let e=e=>h(e,f),t=e=>h(e,u);return u.addEventListener("pointerleave",e),f.addEventListener("pointerleave",t),()=>{u.removeEventListener("pointerleave",e),f.removeEventListener("pointerleave",t)}}},[u,f,h,m]),o.useEffect(()=>{if(d){let e=e=>{let t=e.target,o={x:e.clientX,y:e.clientY},r=u?.contains(t)||f?.contains(t),n=!function(e,t){let{x:o,y:r}=e,n=!1;for(let e=0,a=t.length-1;e<t.length;a=e++){let i=t[e],s=t[a],l=i.x,d=i.y,c=s.x,u=s.y;d>r!=u>r&&o<(c-l)*(r-d)/(u-d)+l&&(n=!n)}return n}(o,d);r?m():n&&(m(),p())};return document.addEventListener("pointermove",e),()=>document.removeEventListener("pointermove",e)}},[u,f,d,p,m]),(0,t.jsx)(H,{...e,ref:l})}),[F,_]=m(C,{isInside:!1}),L=(0,p.createSlottable)("TooltipContent"),H=o.forwardRef((e,r)=>{let{__scopeTooltip:n,children:a,"aria-label":s,onEscapeKeyDown:d,onPointerDownOutside:c,...u}=e,p=P(A,n),f=x(n),{onClose:m}=p;return o.useEffect(()=>(document.addEventListener(y,m),()=>document.removeEventListener(y,m)),[m]),o.useEffect(()=>{if(p.trigger){let e=e=>{let t=e.target;t?.contains(p.trigger)&&m()};return window.addEventListener("scroll",e,{capture:!0}),()=>window.removeEventListener("scroll",e,{capture:!0})}},[p.trigger,m]),(0,t.jsx)(i.DismissableLayer,{asChild:!0,disableOutsidePointerEvents:!1,onEscapeKeyDown:d,onPointerDownOutside:c,onFocusOutside:e=>e.preventDefault(),onDismiss:m,children:(0,t.jsxs)(l.Content,{"data-state":p.stateAttribute,...f,...u,ref:r,style:{...u.style,"--radix-tooltip-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-tooltip-content-available-width":"var(--radix-popper-available-width)","--radix-tooltip-content-available-height":"var(--radix-popper-available-height)","--radix-tooltip-trigger-width":"var(--radix-popper-anchor-width)","--radix-tooltip-trigger-height":"var(--radix-popper-anchor-height)"},children:[(0,t.jsx)(L,{children:a}),(0,t.jsx)(F,{scope:n,isInside:!0,children:(0,t.jsx)(g.Root,{id:p.contentId,role:"tooltip",children:s||a})})]})})});M.displayName=A;var z="TooltipArrow",U=o.forwardRef((e,o)=>{let{__scopeTooltip:r,...n}=e,a=x(r);return _(z,r).isInside?null:(0,t.jsx)(l.Arrow,{...a,...n,ref:o})});U.displayName=z,e.s(["Arrow",()=>U,"Content",()=>M,"Portal",()=>I,"Provider",()=>j,"Root",()=>D,"Tooltip",()=>D,"TooltipArrow",()=>U,"TooltipContent",()=>M,"TooltipPortal",()=>I,"TooltipProvider",()=>j,"TooltipTrigger",()=>T,"Trigger",()=>T,"createTooltipScope",()=>h],30643);var B=e.i(30643),B=B,$=e.i(31777);function W({delayDuration:e=400,...o}){return(0,t.jsx)(B.Provider,{"data-slot":"tooltip-provider",delayDuration:e,...o})}function V({...e}){return(0,t.jsx)(B.Root,{"data-slot":"tooltip",...e})}function X({...e}){return(0,t.jsx)(B.Trigger,{"data-slot":"tooltip-trigger",...e})}function K({className:e,sideOffset:o=0,children:r,...n}){return(0,t.jsx)(B.Portal,{children:(0,t.jsxs)(B.Content,{"data-slot":"tooltip-content",sideOffset:o,className:(0,$.cn)("bg-foreground text-background animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit origin-(--radix-tooltip-content-transform-origin) rounded-md px-3 py-1.5 text-xs text-balance",e),...n,children:[r,(0,t.jsx)(B.Arrow,{className:"bg-foreground fill-foreground z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]"})]})})}e.s(["Tooltip",()=>V,"TooltipContent",()=>K,"TooltipProvider",()=>W,"TooltipTrigger",()=>X],2828)},83428,15506,e=>{"use strict";let t=(0,e.i(3645).default)("loader-circle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]]);e.s(["default",()=>t],15506),e.s(["Loader2",()=>t],83428)},2287,e=>{"use strict";var t=e.i(20314),o=e.i(79054),r=e.i(90033),n=e.i(60253),a=e.i(31777);let i=r.Dialog.Root,s=r.Dialog.Trigger,l=r.Dialog.Portal,d=r.Dialog.Close,c=o.forwardRef(({className:e,onClick:o,...n},i)=>(0,t.jsx)(r.Dialog.Overlay,{ref:i,className:(0,a.cn)("data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 fixed inset-0 z-50 bg-black/80 duration-150",e),onClick:e=>{e.stopPropagation(),o?.(e)},...n}));c.displayName=r.Dialog.Overlay.displayName;let u=o.forwardRef(({className:e,children:o,...i},s)=>(0,t.jsxs)(l,{children:[(0,t.jsx)(c,{}),(0,t.jsxs)(r.Dialog.Content,{ref:s,className:(0,a.cn)("bg-background data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border p-6 shadow-lg duration-150 sm:rounded-lg",e),...i,children:[o,(0,t.jsxs)(r.Dialog.Close,{className:"ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute end-4 top-4 cursor-pointer rounded-sm opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-none disabled:pointer-events-none",children:[(0,t.jsx)(n.X,{className:"h-4 w-4"}),(0,t.jsx)("span",{className:"sr-only",children:"Close"})]})]})]}));u.displayName=r.Dialog.Content.displayName;let p=({className:e,...o})=>(0,t.jsx)("div",{className:(0,a.cn)("flex flex-col space-y-1.5 text-center sm:text-start",e),...o});p.displayName="DialogHeader";let f=({className:e,...o})=>(0,t.jsx)("div",{className:(0,a.cn)("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",e),...o});f.displayName="DialogFooter";let g=o.forwardRef(({className:e,...o},n)=>(0,t.jsx)(r.Dialog.Title,{ref:n,className:(0,a.cn)("text-lg leading-none font-semibold tracking-tight",e),...o}));g.displayName=r.Dialog.Title.displayName;let m=o.forwardRef(({className:e,...o},n)=>(0,t.jsx)(r.Dialog.Description,{ref:n,className:(0,a.cn)("text-muted-foreground text-sm",e),...o}));m.displayName=r.Dialog.Description.displayName,e.s(["Dialog",()=>i,"DialogClose",()=>d,"DialogContent",()=>u,"DialogDescription",()=>m,"DialogFooter",()=>f,"DialogHeader",()=>p,"DialogTitle",()=>g,"DialogTrigger",()=>s])},18354,e=>{"use strict";let t=!!e.i(44172).default.env.NEXT_PUBLIC_DEBUG,o=()=>void 0;function r(e){return{info:t?(...t)=>console.info(e,...t):o,debug:t?(...t)=>console.debug(e,...t):o,warn:(...t)=>console.warn(e,...t),error:(...t)=>console.error(e,...t)}}e.s(["createLogger",()=>r])},95230,e=>{"use strict";let t=(0,e.i(3645).default)("download",[["path",{d:"M12 15V3",key:"m9g1x1"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["path",{d:"m7 10 5 5 5-5",key:"brsn70"}]]);e.s(["default",()=>t])}]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,30702,e=>{"use strict";let t=(0,e.i(3645).default)("external-link",[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]]);e.s(["ExternalLink",()=>t],30702)},38573,e=>{"use strict";let t=(0,e.i(3645).default)("terminal",[["path",{d:"M12 19h8",key:"baeox8"}],["path",{d:"m4 17 6-6-6-6",key:"1yngyt"}]]);e.s(["Terminal",()=>t],38573)},24042,e=>{"use strict";let t=(0,e.i(3645).default)("play",[["path",{d:"M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z",key:"10ikf1"}]]);e.s(["Play",()=>t],24042)},6910,e=>{"use strict";let t=(0,e.i(3645).default)("square",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}]]);e.s(["Square",()=>t],6910)},73504,81605,e=>{"use strict";var t=e.i(20314),a=e.i(79054),s=e.i(21023);let l=(0,s.createServerReference)("407e705c6dbaa58d897f3a9504359bf8848d5d9ca0",s.callServer,void 0,s.findSourceMapURL,"deployFeature"),r=(0,s.createServerReference)("4092b46401f01d7a804b3709092893722c29c6b69d",s.callServer,void 0,s.findSourceMapURL,"deployRepository"),n=(0,s.createServerReference)("40dd07394d324152bd45e4e4f769f366d967e25308",s.callServer,void 0,s.findSourceMapURL,"deployApplication"),i=(0,s.createServerReference)("40506a30fcbe01aae704103714c08f8a05e7af009b",s.callServer,void 0,s.findSourceMapURL,"stopDeployment"),o=(0,s.createServerReference)("401556752d2af3ca8f84f32f8b3da3e8e92e551f0a",s.callServer,void 0,s.findSourceMapURL,"getDeploymentStatus");var c=e.i(18354);let d={status:null,url:null,targetType:null,hydrated:!1,deployLoading:!1,stopLoading:!1,deployError:null};class u{entries=new Map;listeners=new Map;globalListeners=new Set;hydrate(e){let t=new Set;for(let a of e)t.add(a.targetId),this.update(a.targetId,{status:a.state,url:a.url,targetType:a.targetType,hydrated:!0});for(let[e,a]of this.entries)!t.has(e)&&a.hydrated&&null!==a.status?this.update(e,{status:null,url:null}):t.has(e)||a.hydrated||this.update(e,{hydrated:!0})}getEntry(e){return this.entries.get(e)??d}update(e,t){let a={...this.entries.get(e)??d,...t};this.entries.set(e,a),this.notify(e)}setStatus(e,t){null===t?this.update(e,{status:null,url:null,hydrated:!0}):this.update(e,{status:t.state,url:t.url,hydrated:!0})}subscribe(e,t){let a=this.listeners.get(e);return a||(a=new Set,this.listeners.set(e,a)),a.add(t),()=>{a?.delete(t),a?.size===0&&this.listeners.delete(e)}}subscribeAll(e){return this.globalListeners.add(e),()=>{this.globalListeners.delete(e)}}notify(e){let t=this.listeners.get(e);if(t)for(let e of t)e();for(let e of this.globalListeners)e()}}e.s(["DeploymentStatusStore",()=>u,"EMPTY_ENTRY",0,d],81605);let m=(0,c.createLogger)("[DeploymentStatusProvider]"),x=new Set(["Booting","Ready"]),p=(0,a.createContext)(null);function h({initialDeployments:e,children:s}){let c=(0,a.useRef)(null);c.current||(c.current=new u,c.current.hydrate(e));let d=c.current;(0,a.useEffect)(()=>{d.hydrate(e)},[e,d]);let h=(0,a.useRef)(new Map),g=(0,a.useCallback)(e=>{let t=h.current.get(e);t&&(clearInterval(t),h.current.delete(e))},[]),f=(0,a.useCallback)(e=>{if(h.current.has(e))return;let t=setInterval(async()=>{let t;try{t=await o(e)}catch(t){m.warn(`poll failed for "${e}"`,t),d.setStatus(e,null),g(e);return}if(!t||"Stopped"===t.state){d.setStatus(e,null),g(e);return}d.setStatus(e,t)},3e3);h.current.set(e,t)},[d,g]);(0,a.useEffect)(()=>{let e=h.current,t=d.subscribeAll(()=>{for(let[t]of e){let e=d.getEntry(t);e.status&&x.has(e.status)||g(t)}});return()=>{for(let[,a]of(t(),e))clearInterval(a);e.clear()}},[d,g]);let y=(0,a.useCallback)(e=>{!e||d.getEntry(e).hydrated||(d.update(e,{hydrated:!0}),(async()=>{try{let t=await o(e);d.setStatus(e,t),t&&x.has(t.state)&&f(e)}catch(t){m.warn(`ensureHydrated failed for "${e}"`,t)}})())},[d,f]),b=(0,a.useCallback)(async e=>{d.update(e.targetId,{deployLoading:!0,deployError:null});try{let t="feature"===e.targetType?await l(e.targetId):"application"===e.targetType?await n(e.targetId):await r(e.repositoryPath);if(!t.success)return void d.update(e.targetId,{deployLoading:!1,deployError:t.error??"An unexpected error occurred"});d.update(e.targetId,{deployLoading:!1,status:t.state??null,url:null,hydrated:!0,targetType:e.targetType}),f(e.targetId)}catch(a){let t=a instanceof Error?a.message:"An unexpected error occurred";d.update(e.targetId,{deployLoading:!1,deployError:t})}},[d,f]),j=(0,a.useCallback)(async e=>{if(e){d.update(e,{stopLoading:!0});try{(await i(e)).success?(g(e),d.update(e,{stopLoading:!1,status:null,url:null})):d.update(e,{stopLoading:!1})}catch(t){m.warn("stop error (non-critical)",t),d.update(e,{stopLoading:!1})}}},[d,g]),v=(0,a.useMemo)(()=>({store:d,deploy:b,stop:j,ensureHydrated:y}),[d,b,j,y]);return(0,t.jsx)(p.Provider,{value:v,children:s})}function g(){let e=(0,a.useContext)(p);if(!e)throw Error("useDeploymentStatusContext must be used within a <DeploymentStatusProvider>");return e}function f(){let e=(0,a.useContext)(p);return e||y}let y={store:new u,deploy:async()=>{},stop:async()=>{},ensureHydrated:()=>{}};e.s(["DeploymentStatusProvider",()=>h,"useDeploymentStatusContext",()=>g,"useDeploymentStatusContextOptional",()=>f],73504)},8537,e=>{"use strict";var t=e.i(79054),a=e.i(73504);function s(){}function l(e){let{store:l,deploy:r,stop:n,ensureHydrated:i}=(0,a.useDeploymentStatusContextOptional)(),o=e?.targetId??"",c=(0,t.useCallback)(e=>o?l.subscribe(o,e):s,[l,o]),d=(0,t.useCallback)(()=>o?l.getEntry(o):l.getEntry(""),[l,o]),u=(0,t.useSyncExternalStore)(c,d,d);return(0,t.useEffect)(()=>{o&&i(o)},[o,i]),{deploy:(0,t.useCallback)(async()=>{e&&await r(e)},[r,e]),stop:(0,t.useCallback)(async()=>{o&&await n(o)},[n,o]),deployLoading:u.deployLoading,stopLoading:u.stopLoading,deployError:u.deployError,status:u.status,url:u.url}}e.s(["useDeployAction",()=>l])},49228,e=>{"use strict";let t=(0,e.i(3645).default)("git-branch",[["line",{x1:"6",x2:"6",y1:"3",y2:"15",key:"17qcm7"}],["circle",{cx:"18",cy:"6",r:"3",key:"1h7g24"}],["circle",{cx:"6",cy:"18",r:"3",key:"fqmcym"}],["path",{d:"M18 9a9 9 0 0 1-9 9",key:"n2h4wq"}]]);e.s(["GitBranch",()=>t],49228)},81181,e=>{"use strict";var t=e.i(95230);e.s(["Download",()=>t.default])},35e3,e=>{"use strict";var t=e.i(80986);e.s(["CheckCircle2",()=>t.default])},93192,e=>{"use strict";let t=(0,e.i(3645).default)("package",[["path",{d:"M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z",key:"1a0edw"}],["path",{d:"M12 22V12",key:"d0xqtd"}],["polyline",{points:"3.29 7 12 12 20.71 7",key:"ousv84"}],["path",{d:"m7.5 4.27 9 5.15",key:"1c824w"}]]);e.s(["Package",()=>t],93192)},9388,e=>{"use strict";let t=(0,e.i(3645).default)("monitor",[["rect",{width:"20",height:"14",x:"2",y:"3",rx:"2",key:"48i651"}],["line",{x1:"8",x2:"16",y1:"21",y2:"21",key:"1svkeh"}],["line",{x1:"12",x2:"12",y1:"17",y2:"21",key:"vw1qmm"}]]);e.s(["Monitor",()=>t],9388)},83902,e=>{"use strict";let t=(0,e.i(3645).default)("rocket",[["path",{d:"M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09z",key:"m3kijz"}],["path",{d:"m12 15-3-3a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.35 22.35 0 0 1-4 2z",key:"1fmvmk"}],["path",{d:"M9 12H4s.55-3.03 2-4c1.62-1.08 5 0 5 0",key:"1f8sc4"}],["path",{d:"M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5",key:"qeys4"}]]);e.s(["Rocket",()=>t],83902)},44412,e=>{"use strict";var t=e.i(20314),a=e.i(79054),s=e.i(81975),l=e.i(68304),r=e.i(31777),n=e.i(83428),i=e.i(83902),o=e.i(81181),c=e.i(9388),d=e.i(38573),u=e.i(49228),m=e.i(54277),x=e.i(95812),p=e.i(35e3),h=e.i(93192),g=e.i(35364),f=e.i(2828),y=e.i(33548),b=e.i(23925),j=e.i(30702),v=e.i(11495);let N={linux:"Linux",darwin:"macOS",win32:"Windows"},k={ide:{label:"IDE",icon:c.Monitor},"cli-agent":{label:"CLI Agent",icon:d.Terminal},vcs:{label:"VCS",icon:u.GitBranch},terminal:{label:"Terminal",icon:d.Terminal}};function w({status:e}){return"available"===e?(0,t.jsxs)("span",{className:"inline-flex items-center gap-1 rounded-full bg-emerald-100 px-2 py-0.5 text-xs font-medium text-emerald-700 dark:bg-emerald-900/30 dark:text-emerald-400",children:[(0,t.jsx)(b.Check,{className:"h-3 w-3"}),"Installed"]}):"error"===e?(0,t.jsx)("span",{className:"inline-flex items-center gap-1 rounded-full bg-red-100 px-2 py-0.5 text-xs font-medium text-red-700 dark:bg-red-900/30 dark:text-red-400",children:"Error"}):(0,t.jsx)("span",{className:"inline-flex items-center gap-1 rounded-full bg-amber-100 px-2 py-0.5 text-xs font-medium text-amber-700 dark:bg-amber-900/30 dark:text-amber-400",children:"Missing"})}function C({tool:e,open:s,onClose:l,onRefresh:r,autoStart:d}){let[u,m]=(0,a.useState)(!1),[x,p]=(0,a.useState)(!1),{logs:f,status:C,startInstall:S}=function(e){let[t,s]=(0,a.useState)([]),[l,r]=(0,a.useState)("idle"),[n,i]=(0,a.useState)(null),o=(0,a.useRef)(null),c=(0,a.useCallback)(()=>{o.current&&(o.current.close(),o.current=null)},[]);return(0,a.useEffect)(()=>c,[c]),{logs:t,status:l,result:n,startInstall:(0,a.useCallback)(()=>{c(),s([]),i(null),r("streaming");let t=new EventSource(`/api/tools/${e}/install/stream`);o.current=t,t.onmessage=e=>{s(t=>[...t,e.data])},t.addEventListener("done",e=>{let t=JSON.parse(e.data);i(t),r("error"===t.status?"error":"done"),c()}),t.onerror=()=>{r("error"),c()}},[e,c])}}(e.id),T=(0,a.useRef)(null),L=(0,a.useRef)(!0),I=(0,a.useRef)(!1),E="available"===e.status.status,M="error"===e.status.status,R=E&&!!e.openDirectory,z=!E&&!M&&e.autoInstall;async function D(){p(!0);try{await fetch(`/api/tools/${e.id}/launch`,{method:"POST"})}finally{p(!1)}}(0,a.useEffect)(()=>{s&&d&&z&&"idle"===C&&!I.current&&(I.current=!0,S()),s||(I.current=!1)},[s,d,z,C,S]);let P=(0,a.useCallback)(()=>{let e=T.current;e&&(L.current=e.scrollTop+e.clientHeight>=e.scrollHeight-50)},[]);(0,a.useEffect)(()=>{L.current&&T.current&&(T.current.scrollTop=T.current.scrollHeight)},[f,C]),(0,a.useEffect)(()=>{"done"===C&&r&&r()},[C,r]);let A=(0,t.jsxs)("div",{className:"flex flex-col gap-1.5 pe-6",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[e.iconUrl?(0,t.jsx)("img",{src:e.iconUrl,alt:"",width:24,height:24,className:"shrink-0 dark:invert"}):(0,t.jsx)(h.Package,{className:"text-muted-foreground h-6 w-6 shrink-0"}),(0,t.jsx)("h2",{className:"text-base font-bold",children:e.name}),(0,t.jsx)(w,{status:e.status.status})]}),(0,t.jsx)("div",{className:"flex items-center gap-2",children:e.tags.map(e=>{let a=k[e]??{label:e,icon:c.Monitor},s=a.icon;return(0,t.jsxs)("span",{className:"text-muted-foreground/70 inline-flex items-center gap-0.5 text-[10px]",children:[(0,t.jsx)(s,{className:"h-3 w-3"}),a.label]},e)})})]});return(0,t.jsx)(v.BaseDrawer,{open:s,onClose:l,size:"md",modal:!0,title:e.name,header:A,"data-testid":"tool-detail-drawer",children:(0,t.jsxs)("div",{className:"flex flex-1 flex-col gap-4 overflow-y-auto p-4",children:[(0,t.jsx)("p",{className:"text-muted-foreground text-sm",children:e.description}),e.author||e.platforms?(0,t.jsxs)("div",{className:"flex flex-wrap items-center gap-x-4 gap-y-1 text-xs",children:[e.author?(0,t.jsxs)("span",{className:"text-muted-foreground",children:["by"," ",e.website?(0,t.jsx)("a",{href:e.website,target:"_blank",rel:"noopener noreferrer",className:"text-foreground hover:underline",children:e.author}):(0,t.jsx)("span",{className:"text-foreground",children:e.author})]}):null,e.platforms&&e.platforms.length>0?(0,t.jsx)("span",{className:"text-muted-foreground",children:e.platforms.map(e=>N[e]??e).join(" · ")}):null]}):null,e.installCommand?(0,t.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,t.jsx)("span",{className:"text-muted-foreground text-xs font-semibold tracking-wide uppercase",children:"Install command"}),(0,t.jsxs)("div",{className:"relative rounded-md bg-zinc-900 text-zinc-100",children:[(0,t.jsx)("pre",{className:"overflow-x-auto px-3 py-2.5 pe-16 font-mono text-xs leading-relaxed break-all whitespace-pre-wrap",children:(0,t.jsx)("code",{children:e.installCommand})}),(0,t.jsxs)(g.Button,{variant:"ghost",size:"sm",className:"absolute top-1.5 right-1.5 h-7 cursor-pointer px-2 text-zinc-400 hover:text-zinc-100",onClick:function(){e.installCommand&&navigator.clipboard.writeText(e.installCommand).then(()=>{m(!0),setTimeout(()=>m(!1),2e3)})},"aria-label":u?"Copied!":"Copy install command",children:[u?(0,t.jsx)(b.Check,{className:"h-3.5 w-3.5 text-emerald-500"}):(0,t.jsx)(y.Copy,{className:"h-3.5 w-3.5"}),(0,t.jsx)("span",{className:"ms-1 text-[10px]",children:u?"Copied!":"Copy"})]})]})]}):null,(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[z?(0,t.jsxs)(g.Button,{size:"sm",onClick:S,disabled:"streaming"===C,"aria-label":`Install ${e.name}`,className:"cursor-pointer",children:["streaming"===C?(0,t.jsx)(n.Loader2,{className:"me-1.5 h-3.5 w-3.5 animate-spin"}):(0,t.jsx)(o.Download,{className:"me-1.5 h-3.5 w-3.5"}),"streaming"===C?"Installing...":"Install"]}):null,R?(0,t.jsxs)(g.Button,{size:"sm",variant:"outline",onClick:()=>void D(),disabled:x,"aria-label":`Launch ${e.name}`,className:"cursor-pointer",children:[x?(0,t.jsx)(n.Loader2,{className:"me-1.5 h-3.5 w-3.5 animate-spin"}):(0,t.jsx)(i.Rocket,{className:"me-1.5 h-3.5 w-3.5"}),"Launch"]}):null,e.documentationUrl?(0,t.jsx)(g.Button,{variant:"outline",size:"sm",className:"cursor-pointer",asChild:!0,children:(0,t.jsxs)("a",{href:e.documentationUrl,target:"_blank",rel:"noopener noreferrer",children:["Docs",(0,t.jsx)(j.ExternalLink,{className:"ms-1 h-3 w-3"})]})}):null]}),("streaming"===C||"done"===C||"error"===C)&&f.length>0?(0,t.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,t.jsx)("span",{className:"text-muted-foreground text-xs font-semibold tracking-wide uppercase",children:"Install log"}),(0,t.jsxs)("div",{ref:T,onScroll:P,className:"max-h-60 overflow-auto rounded-md bg-zinc-900 p-3 font-mono text-xs leading-relaxed text-zinc-100","data-testid":"tool-install-log",children:[f.map((e,a)=>(0,t.jsx)("div",{className:"break-all whitespace-pre-wrap",children:e},a)),"done"===C?(0,t.jsx)("div",{className:"mt-2 border-t border-zinc-700 pt-2 text-emerald-400",children:"Installation complete"}):null,"error"===C?(0,t.jsx)("div",{className:"mt-2 border-t border-zinc-700 pt-2 text-red-400",children:"Installation failed"}):null]})]}):null]})})}let S={ide:{label:"IDE",icon:c.Monitor},"cli-agent":{label:"CLI Agent",icon:d.Terminal},vcs:{label:"VCS",icon:u.GitBranch},terminal:{label:"Terminal",icon:d.Terminal}};function T({tool:e,onRefresh:s,className:l}){let[d,u]=(0,a.useState)(!1),[y,b]=(0,a.useState)(!1),[j,v]=(0,a.useTransition)(),N="available"===e.status.status,k="error"===e.status.status,w=N&&!!e.openDirectory;return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("div",{"data-testid":"tool-card",onClick:function(){b(!1),u(!0)},className:(0,r.cn)("bg-card group flex h-30 w-full cursor-pointer flex-col rounded-lg border p-3 transition-shadow hover:shadow-md",l),children:[(0,t.jsxs)("div",{className:"mb-2 flex items-start justify-between gap-2",children:[(0,t.jsxs)("div",{className:"flex min-w-0 items-center gap-2",children:[e.iconUrl?(0,t.jsx)("img",{src:e.iconUrl,alt:"",width:20,height:20,className:"shrink-0 dark:invert"}):(0,t.jsx)(h.Package,{className:"text-muted-foreground h-5 w-5 shrink-0"}),(0,t.jsx)("h3",{"data-testid":"tool-card-name",className:"truncate text-sm font-bold",children:e.name})]}),(0,t.jsx)("div",{"data-testid":"tool-card-tags",className:"flex shrink-0 items-center gap-1",children:e.tags.map(e=>{let a=S[e]??{label:e,icon:c.Monitor},s=a.icon;return(0,t.jsxs)("span",{className:"text-muted-foreground/70 inline-flex items-center gap-0.5 text-[9px]",children:[(0,t.jsx)(s,{className:"h-2.5 w-2.5"}),a.label]},e)})})]}),(0,t.jsx)("p",{"data-testid":"tool-card-summary",className:"text-muted-foreground mt-1 truncate text-xs",children:e.summary}),(0,t.jsxs)("div",{className:"mt-auto flex items-center justify-between pt-3",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[k&&"error"===e.status.status?(0,t.jsxs)("span",{className:"flex items-center gap-1 truncate text-[10px] text-red-600 dark:text-red-400",title:e.status.errorMessage,children:[(0,t.jsx)(m.CircleX,{className:"h-3 w-3 shrink-0"}),e.status.errorMessage??"Error"]}):N?(0,t.jsxs)("span",{className:"flex items-center gap-1 text-[10px] text-emerald-600 dark:text-emerald-400",children:[(0,t.jsx)(p.CheckCircle2,{className:"h-3 w-3"}),"Installed"]}):(0,t.jsxs)("span",{className:"text-muted-foreground flex items-center gap-1 text-[10px]",children:[(0,t.jsx)(x.Circle,{className:"h-3 w-3"}),"Not installed"]}),e.required?(0,t.jsx)(f.TooltipProvider,{children:(0,t.jsxs)(f.Tooltip,{children:[(0,t.jsx)(f.TooltipTrigger,{asChild:!0,children:(0,t.jsx)("span",{className:"rounded bg-amber-100 px-1.5 py-0.5 text-[9px] font-medium text-amber-700 dark:bg-amber-900/50 dark:text-amber-400",children:"Required"})}),(0,t.jsx)(f.TooltipContent,{side:"top",children:"This tool is required for Shep to function properly"})]})}):null]}),(0,t.jsx)("div",{className:"flex items-center gap-1",children:N&&w?(0,t.jsxs)(g.Button,{size:"sm",variant:"outline",onClick:function(t){t.stopPropagation(),v(async()=>{await fetch(`/api/tools/${e.id}/launch`,{method:"POST"})})},disabled:j,"aria-label":`Launch ${e.name}`,"data-testid":"tool-card-launch-button",className:"h-7 cursor-pointer rounded-md px-3 text-xs",children:[j?(0,t.jsx)(n.Loader2,{className:"me-1 h-3 w-3 animate-spin"}):(0,t.jsx)(i.Rocket,{className:"me-1 h-3 w-3"}),"Launch"]}):N||k?null:(0,t.jsxs)(g.Button,{size:"sm",variant:"default",onClick:function(t){t.stopPropagation(),b(e.autoInstall),u(!0)},"aria-label":`Install ${e.name}`,"data-testid":"tool-card-install-button",className:"h-7 cursor-pointer rounded-md px-3 text-xs",children:[(0,t.jsx)(o.Download,{className:"me-1 h-3 w-3"}),"Install"]})})]})]}),(0,t.jsx)(C,{tool:e,open:d,onClose:()=>u(!1),onRefresh:s,autoStart:y})]})}let L={all:()=>!0,ide:e=>e.tags.includes("ide"),"cli-agent":e=>e.tags.includes("cli-agent"),vcs:e=>e.tags.includes("vcs"),terminal:e=>e.tags.includes("terminal")};function I({tools:e,className:n}){let[i,o]=(0,a.useState)(e),[c,d]=(0,a.useState)("all"),u=(0,a.useCallback)(async()=>{try{let e=await fetch("/api/tools");if(e.ok){let t=await e.json();o(t)}}catch{}},[]),m=i.filter(L[c]);return(0,t.jsxs)("div",{"data-testid":"tools-page-client",className:(0,r.cn)("space-y-4",n),children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)(s.Wrench,{className:"text-muted-foreground h-4 w-4"}),(0,t.jsx)("h1",{className:"text-sm font-bold tracking-tight",children:"Tools"}),(0,t.jsxs)("span",{className:"text-muted-foreground text-[10px]",children:[i.filter(e=>"available"===e.status.status).length,"/",i.length," installed"]})]}),(0,t.jsxs)(l.Tabs,{value:c,onValueChange:e=>d(e),"data-testid":"tools-page-tabs",children:[(0,t.jsxs)(l.TabsList,{className:"h-7",children:[(0,t.jsx)(l.TabsTrigger,{value:"all","data-testid":"tools-tab-all",className:"px-2.5 text-xs",children:"All"}),(0,t.jsx)(l.TabsTrigger,{value:"ide","data-testid":"tools-tab-ide",className:"px-2.5 text-xs",children:"IDEs"}),(0,t.jsx)(l.TabsTrigger,{value:"cli-agent","data-testid":"tools-tab-cli-agent",className:"px-2.5 text-xs",children:"CLI Agents"}),(0,t.jsx)(l.TabsTrigger,{value:"vcs","data-testid":"tools-tab-vcs",className:"px-2.5 text-xs",children:"Version Control"}),(0,t.jsx)(l.TabsTrigger,{value:"terminal","data-testid":"tools-tab-terminal",className:"px-2.5 text-xs",children:"Terminals"})]}),(0,t.jsx)(l.TabsContent,{value:c,className:"mt-3",children:0===m.length?(0,t.jsxs)("div",{"data-testid":"tools-page-empty",className:"text-muted-foreground flex flex-col items-center justify-center py-12 text-center",children:[(0,t.jsx)(s.Wrench,{className:"mb-2 h-6 w-6 opacity-20"}),(0,t.jsx)("p",{className:"text-xs",children:"No tools in this category."})]}):(0,t.jsx)("div",{"data-testid":"tools-page-grid",className:"grid grid-cols-1 gap-3 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4",children:m.map(e=>(0,t.jsx)(T,{tool:e,onRefresh:u},e.id))})})]})]})}e.s(["ToolsPageClient",()=>I],44412)}]);
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,30702,e=>{"use strict";let t=(0,e.i(3645).default)("external-link",[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]]);e.s(["ExternalLink",()=>t],30702)},24042,e=>{"use strict";let t=(0,e.i(3645).default)("play",[["path",{d:"M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z",key:"10ikf1"}]]);e.s(["Play",()=>t],24042)},6910,e=>{"use strict";let t=(0,e.i(3645).default)("square",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}]]);e.s(["Square",()=>t],6910)},73504,81605,e=>{"use strict";var t=e.i(20314),a=e.i(79054),s=e.i(21023);let l=(0,s.createServerReference)("40b4eeeb2999f5dd298c7eeb72e866dd706847cb43",s.callServer,void 0,s.findSourceMapURL,"deployFeature"),r=(0,s.createServerReference)("4080e8abd8dccdccdcffa041ededc81a57388866e4",s.callServer,void 0,s.findSourceMapURL,"deployRepository"),n=(0,s.createServerReference)("4035315500c0fdbe957490a4576599fe4e10362d00",s.callServer,void 0,s.findSourceMapURL,"deployApplication"),i=(0,s.createServerReference)("40b6be2e695ac64cea2ea7e061df3df9b9e8c668e5",s.callServer,void 0,s.findSourceMapURL,"stopDeployment"),o=(0,s.createServerReference)("405797f8b8319ac6933f44b97b53ed69b7d74f720d",s.callServer,void 0,s.findSourceMapURL,"getDeploymentStatus");var c=e.i(18354);let d={status:null,url:null,targetType:null,hydrated:!1,deployLoading:!1,stopLoading:!1,deployError:null};class u{entries=new Map;listeners=new Map;globalListeners=new Set;hydrate(e){let t=new Set;for(let a of e)t.add(a.targetId),this.update(a.targetId,{status:a.state,url:a.url,targetType:a.targetType,hydrated:!0});for(let[e,a]of this.entries)!t.has(e)&&a.hydrated&&null!==a.status?this.update(e,{status:null,url:null}):t.has(e)||a.hydrated||this.update(e,{hydrated:!0})}getEntry(e){return this.entries.get(e)??d}update(e,t){let a={...this.entries.get(e)??d,...t};this.entries.set(e,a),this.notify(e)}setStatus(e,t){null===t?this.update(e,{status:null,url:null,hydrated:!0}):this.update(e,{status:t.state,url:t.url,hydrated:!0})}subscribe(e,t){let a=this.listeners.get(e);return a||(a=new Set,this.listeners.set(e,a)),a.add(t),()=>{a?.delete(t),a?.size===0&&this.listeners.delete(e)}}subscribeAll(e){return this.globalListeners.add(e),()=>{this.globalListeners.delete(e)}}notify(e){let t=this.listeners.get(e);if(t)for(let e of t)e();for(let e of this.globalListeners)e()}}e.s(["DeploymentStatusStore",()=>u,"EMPTY_ENTRY",0,d],81605);let m=(0,c.createLogger)("[DeploymentStatusProvider]"),x=new Set(["Booting","Ready"]),p=(0,a.createContext)(null);function h({initialDeployments:e,children:s}){let c=(0,a.useRef)(null);c.current||(c.current=new u,c.current.hydrate(e));let d=c.current;(0,a.useEffect)(()=>{d.hydrate(e)},[e,d]);let h=(0,a.useRef)(new Map),g=(0,a.useCallback)(e=>{let t=h.current.get(e);t&&(clearInterval(t),h.current.delete(e))},[]),f=(0,a.useCallback)(e=>{if(h.current.has(e))return;let t=setInterval(async()=>{let t;try{t=await o(e)}catch(t){m.warn(`poll failed for "${e}"`,t),d.setStatus(e,null),g(e);return}if(!t||"Stopped"===t.state){d.setStatus(e,null),g(e);return}d.setStatus(e,t)},3e3);h.current.set(e,t)},[d,g]);(0,a.useEffect)(()=>{let e=h.current,t=d.subscribeAll(()=>{for(let[t]of e){let e=d.getEntry(t);e.status&&x.has(e.status)||g(t)}});return()=>{for(let[,a]of(t(),e))clearInterval(a);e.clear()}},[d,g]);let y=(0,a.useCallback)(e=>{!e||d.getEntry(e).hydrated||(d.update(e,{hydrated:!0}),(async()=>{try{let t=await o(e);d.setStatus(e,t),t&&x.has(t.state)&&f(e)}catch(t){m.warn(`ensureHydrated failed for "${e}"`,t)}})())},[d,f]),b=(0,a.useCallback)(async e=>{d.update(e.targetId,{deployLoading:!0,deployError:null});try{let t="feature"===e.targetType?await l(e.targetId):"application"===e.targetType?await n(e.targetId):await r(e.repositoryPath);if(!t.success)return void d.update(e.targetId,{deployLoading:!1,deployError:t.error??"An unexpected error occurred"});d.update(e.targetId,{deployLoading:!1,status:t.state??null,url:null,hydrated:!0,targetType:e.targetType}),f(e.targetId)}catch(a){let t=a instanceof Error?a.message:"An unexpected error occurred";d.update(e.targetId,{deployLoading:!1,deployError:t})}},[d,f]),j=(0,a.useCallback)(async e=>{if(e){d.update(e,{stopLoading:!0});try{(await i(e)).success?(g(e),d.update(e,{stopLoading:!1,status:null,url:null})):d.update(e,{stopLoading:!1})}catch(t){m.warn("stop error (non-critical)",t),d.update(e,{stopLoading:!1})}}},[d,g]),v=(0,a.useMemo)(()=>({store:d,deploy:b,stop:j,ensureHydrated:y}),[d,b,j,y]);return(0,t.jsx)(p.Provider,{value:v,children:s})}function g(){let e=(0,a.useContext)(p);if(!e)throw Error("useDeploymentStatusContext must be used within a <DeploymentStatusProvider>");return e}function f(){let e=(0,a.useContext)(p);return e||y}let y={store:new u,deploy:async()=>{},stop:async()=>{},ensureHydrated:()=>{}};e.s(["DeploymentStatusProvider",()=>h,"useDeploymentStatusContext",()=>g,"useDeploymentStatusContextOptional",()=>f],73504)},8537,e=>{"use strict";var t=e.i(79054),a=e.i(73504);function s(){}function l(e){let{store:l,deploy:r,stop:n,ensureHydrated:i}=(0,a.useDeploymentStatusContextOptional)(),o=e?.targetId??"",c=(0,t.useCallback)(e=>o?l.subscribe(o,e):s,[l,o]),d=(0,t.useCallback)(()=>o?l.getEntry(o):l.getEntry(""),[l,o]),u=(0,t.useSyncExternalStore)(c,d,d);return(0,t.useEffect)(()=>{o&&i(o)},[o,i]),{deploy:(0,t.useCallback)(async()=>{e&&await r(e)},[r,e]),stop:(0,t.useCallback)(async()=>{o&&await n(o)},[n,o]),deployLoading:u.deployLoading,stopLoading:u.stopLoading,deployError:u.deployError,status:u.status,url:u.url}}e.s(["useDeployAction",()=>l])},38573,e=>{"use strict";let t=(0,e.i(3645).default)("terminal",[["path",{d:"M12 19h8",key:"baeox8"}],["path",{d:"m4 17 6-6-6-6",key:"1yngyt"}]]);e.s(["Terminal",()=>t],38573)},49228,e=>{"use strict";let t=(0,e.i(3645).default)("git-branch",[["line",{x1:"6",x2:"6",y1:"3",y2:"15",key:"17qcm7"}],["circle",{cx:"18",cy:"6",r:"3",key:"1h7g24"}],["circle",{cx:"6",cy:"18",r:"3",key:"fqmcym"}],["path",{d:"M18 9a9 9 0 0 1-9 9",key:"n2h4wq"}]]);e.s(["GitBranch",()=>t],49228)},81181,e=>{"use strict";var t=e.i(95230);e.s(["Download",()=>t.default])},35e3,e=>{"use strict";var t=e.i(80986);e.s(["CheckCircle2",()=>t.default])},93192,e=>{"use strict";let t=(0,e.i(3645).default)("package",[["path",{d:"M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z",key:"1a0edw"}],["path",{d:"M12 22V12",key:"d0xqtd"}],["polyline",{points:"3.29 7 12 12 20.71 7",key:"ousv84"}],["path",{d:"m7.5 4.27 9 5.15",key:"1c824w"}]]);e.s(["Package",()=>t],93192)},9388,e=>{"use strict";let t=(0,e.i(3645).default)("monitor",[["rect",{width:"20",height:"14",x:"2",y:"3",rx:"2",key:"48i651"}],["line",{x1:"8",x2:"16",y1:"21",y2:"21",key:"1svkeh"}],["line",{x1:"12",x2:"12",y1:"17",y2:"21",key:"vw1qmm"}]]);e.s(["Monitor",()=>t],9388)},83902,e=>{"use strict";let t=(0,e.i(3645).default)("rocket",[["path",{d:"M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09z",key:"m3kijz"}],["path",{d:"m12 15-3-3a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.35 22.35 0 0 1-4 2z",key:"1fmvmk"}],["path",{d:"M9 12H4s.55-3.03 2-4c1.62-1.08 5 0 5 0",key:"1f8sc4"}],["path",{d:"M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5",key:"qeys4"}]]);e.s(["Rocket",()=>t],83902)},44412,e=>{"use strict";var t=e.i(20314),a=e.i(79054),s=e.i(81975),l=e.i(68304),r=e.i(31777),n=e.i(83428),i=e.i(83902),o=e.i(81181),c=e.i(9388),d=e.i(38573),u=e.i(49228),m=e.i(54277),x=e.i(95812),p=e.i(35e3),h=e.i(93192),g=e.i(35364),f=e.i(2828),y=e.i(33548),b=e.i(23925),j=e.i(30702),v=e.i(11495);let N={linux:"Linux",darwin:"macOS",win32:"Windows"},k={ide:{label:"IDE",icon:c.Monitor},"cli-agent":{label:"CLI Agent",icon:d.Terminal},vcs:{label:"VCS",icon:u.GitBranch},terminal:{label:"Terminal",icon:d.Terminal}};function w({status:e}){return"available"===e?(0,t.jsxs)("span",{className:"inline-flex items-center gap-1 rounded-full bg-emerald-100 px-2 py-0.5 text-xs font-medium text-emerald-700 dark:bg-emerald-900/30 dark:text-emerald-400",children:[(0,t.jsx)(b.Check,{className:"h-3 w-3"}),"Installed"]}):"error"===e?(0,t.jsx)("span",{className:"inline-flex items-center gap-1 rounded-full bg-red-100 px-2 py-0.5 text-xs font-medium text-red-700 dark:bg-red-900/30 dark:text-red-400",children:"Error"}):(0,t.jsx)("span",{className:"inline-flex items-center gap-1 rounded-full bg-amber-100 px-2 py-0.5 text-xs font-medium text-amber-700 dark:bg-amber-900/30 dark:text-amber-400",children:"Missing"})}function C({tool:e,open:s,onClose:l,onRefresh:r,autoStart:d}){let[u,m]=(0,a.useState)(!1),[x,p]=(0,a.useState)(!1),{logs:f,status:C,startInstall:S}=function(e){let[t,s]=(0,a.useState)([]),[l,r]=(0,a.useState)("idle"),[n,i]=(0,a.useState)(null),o=(0,a.useRef)(null),c=(0,a.useCallback)(()=>{o.current&&(o.current.close(),o.current=null)},[]);return(0,a.useEffect)(()=>c,[c]),{logs:t,status:l,result:n,startInstall:(0,a.useCallback)(()=>{c(),s([]),i(null),r("streaming");let t=new EventSource(`/api/tools/${e}/install/stream`);o.current=t,t.onmessage=e=>{s(t=>[...t,e.data])},t.addEventListener("done",e=>{let t=JSON.parse(e.data);i(t),r("error"===t.status?"error":"done"),c()}),t.onerror=()=>{r("error"),c()}},[e,c])}}(e.id),T=(0,a.useRef)(null),L=(0,a.useRef)(!0),I=(0,a.useRef)(!1),E="available"===e.status.status,M="error"===e.status.status,R=E&&!!e.openDirectory,z=!E&&!M&&e.autoInstall;async function D(){p(!0);try{await fetch(`/api/tools/${e.id}/launch`,{method:"POST"})}finally{p(!1)}}(0,a.useEffect)(()=>{s&&d&&z&&"idle"===C&&!I.current&&(I.current=!0,S()),s||(I.current=!1)},[s,d,z,C,S]);let P=(0,a.useCallback)(()=>{let e=T.current;e&&(L.current=e.scrollTop+e.clientHeight>=e.scrollHeight-50)},[]);(0,a.useEffect)(()=>{L.current&&T.current&&(T.current.scrollTop=T.current.scrollHeight)},[f,C]),(0,a.useEffect)(()=>{"done"===C&&r&&r()},[C,r]);let A=(0,t.jsxs)("div",{className:"flex flex-col gap-1.5 pe-6",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[e.iconUrl?(0,t.jsx)("img",{src:e.iconUrl,alt:"",width:24,height:24,className:"shrink-0 dark:invert"}):(0,t.jsx)(h.Package,{className:"text-muted-foreground h-6 w-6 shrink-0"}),(0,t.jsx)("h2",{className:"text-base font-bold",children:e.name}),(0,t.jsx)(w,{status:e.status.status})]}),(0,t.jsx)("div",{className:"flex items-center gap-2",children:e.tags.map(e=>{let a=k[e]??{label:e,icon:c.Monitor},s=a.icon;return(0,t.jsxs)("span",{className:"text-muted-foreground/70 inline-flex items-center gap-0.5 text-[10px]",children:[(0,t.jsx)(s,{className:"h-3 w-3"}),a.label]},e)})})]});return(0,t.jsx)(v.BaseDrawer,{open:s,onClose:l,size:"md",modal:!0,title:e.name,header:A,"data-testid":"tool-detail-drawer",children:(0,t.jsxs)("div",{className:"flex flex-1 flex-col gap-4 overflow-y-auto p-4",children:[(0,t.jsx)("p",{className:"text-muted-foreground text-sm",children:e.description}),e.author||e.platforms?(0,t.jsxs)("div",{className:"flex flex-wrap items-center gap-x-4 gap-y-1 text-xs",children:[e.author?(0,t.jsxs)("span",{className:"text-muted-foreground",children:["by"," ",e.website?(0,t.jsx)("a",{href:e.website,target:"_blank",rel:"noopener noreferrer",className:"text-foreground hover:underline",children:e.author}):(0,t.jsx)("span",{className:"text-foreground",children:e.author})]}):null,e.platforms&&e.platforms.length>0?(0,t.jsx)("span",{className:"text-muted-foreground",children:e.platforms.map(e=>N[e]??e).join(" · ")}):null]}):null,e.installCommand?(0,t.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,t.jsx)("span",{className:"text-muted-foreground text-xs font-semibold tracking-wide uppercase",children:"Install command"}),(0,t.jsxs)("div",{className:"relative rounded-md bg-zinc-900 text-zinc-100",children:[(0,t.jsx)("pre",{className:"overflow-x-auto px-3 py-2.5 pe-16 font-mono text-xs leading-relaxed break-all whitespace-pre-wrap",children:(0,t.jsx)("code",{children:e.installCommand})}),(0,t.jsxs)(g.Button,{variant:"ghost",size:"sm",className:"absolute top-1.5 right-1.5 h-7 cursor-pointer px-2 text-zinc-400 hover:text-zinc-100",onClick:function(){e.installCommand&&navigator.clipboard.writeText(e.installCommand).then(()=>{m(!0),setTimeout(()=>m(!1),2e3)})},"aria-label":u?"Copied!":"Copy install command",children:[u?(0,t.jsx)(b.Check,{className:"h-3.5 w-3.5 text-emerald-500"}):(0,t.jsx)(y.Copy,{className:"h-3.5 w-3.5"}),(0,t.jsx)("span",{className:"ms-1 text-[10px]",children:u?"Copied!":"Copy"})]})]})]}):null,(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[z?(0,t.jsxs)(g.Button,{size:"sm",onClick:S,disabled:"streaming"===C,"aria-label":`Install ${e.name}`,className:"cursor-pointer",children:["streaming"===C?(0,t.jsx)(n.Loader2,{className:"me-1.5 h-3.5 w-3.5 animate-spin"}):(0,t.jsx)(o.Download,{className:"me-1.5 h-3.5 w-3.5"}),"streaming"===C?"Installing...":"Install"]}):null,R?(0,t.jsxs)(g.Button,{size:"sm",variant:"outline",onClick:()=>void D(),disabled:x,"aria-label":`Launch ${e.name}`,className:"cursor-pointer",children:[x?(0,t.jsx)(n.Loader2,{className:"me-1.5 h-3.5 w-3.5 animate-spin"}):(0,t.jsx)(i.Rocket,{className:"me-1.5 h-3.5 w-3.5"}),"Launch"]}):null,e.documentationUrl?(0,t.jsx)(g.Button,{variant:"outline",size:"sm",className:"cursor-pointer",asChild:!0,children:(0,t.jsxs)("a",{href:e.documentationUrl,target:"_blank",rel:"noopener noreferrer",children:["Docs",(0,t.jsx)(j.ExternalLink,{className:"ms-1 h-3 w-3"})]})}):null]}),("streaming"===C||"done"===C||"error"===C)&&f.length>0?(0,t.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,t.jsx)("span",{className:"text-muted-foreground text-xs font-semibold tracking-wide uppercase",children:"Install log"}),(0,t.jsxs)("div",{ref:T,onScroll:P,className:"max-h-60 overflow-auto rounded-md bg-zinc-900 p-3 font-mono text-xs leading-relaxed text-zinc-100","data-testid":"tool-install-log",children:[f.map((e,a)=>(0,t.jsx)("div",{className:"break-all whitespace-pre-wrap",children:e},a)),"done"===C?(0,t.jsx)("div",{className:"mt-2 border-t border-zinc-700 pt-2 text-emerald-400",children:"Installation complete"}):null,"error"===C?(0,t.jsx)("div",{className:"mt-2 border-t border-zinc-700 pt-2 text-red-400",children:"Installation failed"}):null]})]}):null]})})}let S={ide:{label:"IDE",icon:c.Monitor},"cli-agent":{label:"CLI Agent",icon:d.Terminal},vcs:{label:"VCS",icon:u.GitBranch},terminal:{label:"Terminal",icon:d.Terminal}};function T({tool:e,onRefresh:s,className:l}){let[d,u]=(0,a.useState)(!1),[y,b]=(0,a.useState)(!1),[j,v]=(0,a.useTransition)(),N="available"===e.status.status,k="error"===e.status.status,w=N&&!!e.openDirectory;return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("div",{"data-testid":"tool-card",onClick:function(){b(!1),u(!0)},className:(0,r.cn)("bg-card group flex h-30 w-full cursor-pointer flex-col rounded-lg border p-3 transition-shadow hover:shadow-md",l),children:[(0,t.jsxs)("div",{className:"mb-2 flex items-start justify-between gap-2",children:[(0,t.jsxs)("div",{className:"flex min-w-0 items-center gap-2",children:[e.iconUrl?(0,t.jsx)("img",{src:e.iconUrl,alt:"",width:20,height:20,className:"shrink-0 dark:invert"}):(0,t.jsx)(h.Package,{className:"text-muted-foreground h-5 w-5 shrink-0"}),(0,t.jsx)("h3",{"data-testid":"tool-card-name",className:"truncate text-sm font-bold",children:e.name})]}),(0,t.jsx)("div",{"data-testid":"tool-card-tags",className:"flex shrink-0 items-center gap-1",children:e.tags.map(e=>{let a=S[e]??{label:e,icon:c.Monitor},s=a.icon;return(0,t.jsxs)("span",{className:"text-muted-foreground/70 inline-flex items-center gap-0.5 text-[9px]",children:[(0,t.jsx)(s,{className:"h-2.5 w-2.5"}),a.label]},e)})})]}),(0,t.jsx)("p",{"data-testid":"tool-card-summary",className:"text-muted-foreground mt-1 truncate text-xs",children:e.summary}),(0,t.jsxs)("div",{className:"mt-auto flex items-center justify-between pt-3",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[k&&"error"===e.status.status?(0,t.jsxs)("span",{className:"flex items-center gap-1 truncate text-[10px] text-red-600 dark:text-red-400",title:e.status.errorMessage,children:[(0,t.jsx)(m.CircleX,{className:"h-3 w-3 shrink-0"}),e.status.errorMessage??"Error"]}):N?(0,t.jsxs)("span",{className:"flex items-center gap-1 text-[10px] text-emerald-600 dark:text-emerald-400",children:[(0,t.jsx)(p.CheckCircle2,{className:"h-3 w-3"}),"Installed"]}):(0,t.jsxs)("span",{className:"text-muted-foreground flex items-center gap-1 text-[10px]",children:[(0,t.jsx)(x.Circle,{className:"h-3 w-3"}),"Not installed"]}),e.required?(0,t.jsx)(f.TooltipProvider,{children:(0,t.jsxs)(f.Tooltip,{children:[(0,t.jsx)(f.TooltipTrigger,{asChild:!0,children:(0,t.jsx)("span",{className:"rounded bg-amber-100 px-1.5 py-0.5 text-[9px] font-medium text-amber-700 dark:bg-amber-900/50 dark:text-amber-400",children:"Required"})}),(0,t.jsx)(f.TooltipContent,{side:"top",children:"This tool is required for Shep to function properly"})]})}):null]}),(0,t.jsx)("div",{className:"flex items-center gap-1",children:N&&w?(0,t.jsxs)(g.Button,{size:"sm",variant:"outline",onClick:function(t){t.stopPropagation(),v(async()=>{await fetch(`/api/tools/${e.id}/launch`,{method:"POST"})})},disabled:j,"aria-label":`Launch ${e.name}`,"data-testid":"tool-card-launch-button",className:"h-7 cursor-pointer rounded-md px-3 text-xs",children:[j?(0,t.jsx)(n.Loader2,{className:"me-1 h-3 w-3 animate-spin"}):(0,t.jsx)(i.Rocket,{className:"me-1 h-3 w-3"}),"Launch"]}):N||k?null:(0,t.jsxs)(g.Button,{size:"sm",variant:"default",onClick:function(t){t.stopPropagation(),b(e.autoInstall),u(!0)},"aria-label":`Install ${e.name}`,"data-testid":"tool-card-install-button",className:"h-7 cursor-pointer rounded-md px-3 text-xs",children:[(0,t.jsx)(o.Download,{className:"me-1 h-3 w-3"}),"Install"]})})]})]}),(0,t.jsx)(C,{tool:e,open:d,onClose:()=>u(!1),onRefresh:s,autoStart:y})]})}let L={all:()=>!0,ide:e=>e.tags.includes("ide"),"cli-agent":e=>e.tags.includes("cli-agent"),vcs:e=>e.tags.includes("vcs"),terminal:e=>e.tags.includes("terminal")};function I({tools:e,className:n}){let[i,o]=(0,a.useState)(e),[c,d]=(0,a.useState)("all"),u=(0,a.useCallback)(async()=>{try{let e=await fetch("/api/tools");if(e.ok){let t=await e.json();o(t)}}catch{}},[]),m=i.filter(L[c]);return(0,t.jsxs)("div",{"data-testid":"tools-page-client",className:(0,r.cn)("space-y-4",n),children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)(s.Wrench,{className:"text-muted-foreground h-4 w-4"}),(0,t.jsx)("h1",{className:"text-sm font-bold tracking-tight",children:"Tools"}),(0,t.jsxs)("span",{className:"text-muted-foreground text-[10px]",children:[i.filter(e=>"available"===e.status.status).length,"/",i.length," installed"]})]}),(0,t.jsxs)(l.Tabs,{value:c,onValueChange:e=>d(e),"data-testid":"tools-page-tabs",children:[(0,t.jsxs)(l.TabsList,{className:"h-7",children:[(0,t.jsx)(l.TabsTrigger,{value:"all","data-testid":"tools-tab-all",className:"px-2.5 text-xs",children:"All"}),(0,t.jsx)(l.TabsTrigger,{value:"ide","data-testid":"tools-tab-ide",className:"px-2.5 text-xs",children:"IDEs"}),(0,t.jsx)(l.TabsTrigger,{value:"cli-agent","data-testid":"tools-tab-cli-agent",className:"px-2.5 text-xs",children:"CLI Agents"}),(0,t.jsx)(l.TabsTrigger,{value:"vcs","data-testid":"tools-tab-vcs",className:"px-2.5 text-xs",children:"Version Control"}),(0,t.jsx)(l.TabsTrigger,{value:"terminal","data-testid":"tools-tab-terminal",className:"px-2.5 text-xs",children:"Terminals"})]}),(0,t.jsx)(l.TabsContent,{value:c,className:"mt-3",children:0===m.length?(0,t.jsxs)("div",{"data-testid":"tools-page-empty",className:"text-muted-foreground flex flex-col items-center justify-center py-12 text-center",children:[(0,t.jsx)(s.Wrench,{className:"mb-2 h-6 w-6 opacity-20"}),(0,t.jsx)("p",{className:"text-xs",children:"No tools in this category."})]}):(0,t.jsx)("div",{"data-testid":"tools-page-grid",className:"grid grid-cols-1 gap-3 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4",children:m.map(e=>(0,t.jsx)(T,{tool:e,onRefresh:u},e.id))})})]})]})}e.s(["ToolsPageClient",()=>I],44412)}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,8986,48923,66165,67534,e=>{"use strict";var t=e.i(3645);let r=(0,t.default)("code-xml",[["path",{d:"m18 16 4-4-4-4",key:"1inbqp"}],["path",{d:"m6 8-4 4 4 4",key:"15zrgr"}],["path",{d:"m14.5 4-5 16",key:"e7oirm"}]]);e.s(["Code2",()=>r],8986);let a=(0,t.default)("git-commit-horizontal",[["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}],["line",{x1:"3",x2:"9",y1:"12",y2:"12",key:"1dyftd"}],["line",{x1:"15",x2:"21",y1:"12",y2:"12",key:"oup4p8"}]]);e.s(["GitCommitHorizontal",()=>a],48923);var s=e.i(21023);let l=(0,s.createServerReference)("40387bb1c96ffc89cb38570b2d92252ea9553593ea",s.callServer,void 0,s.findSourceMapURL,"openIde");e.s(["openIde",()=>l],66165);let o=(0,s.createServerReference)("407777b8d49490f756be2a48c39ffbb3c69010bf47",s.callServer,void 0,s.findSourceMapURL,"openShell");e.s(["openShell",()=>o],67534)},49228,e=>{"use strict";let t=(0,e.i(3645).default)("git-branch",[["line",{x1:"6",x2:"6",y1:"3",y2:"15",key:"17qcm7"}],["circle",{cx:"18",cy:"6",r:"3",key:"1h7g24"}],["circle",{cx:"6",cy:"18",r:"3",key:"fqmcym"}],["path",{d:"M18 9a9 9 0 0 1-9 9",key:"n2h4wq"}]]);e.s(["GitBranch",()=>t],49228)},30702,e=>{"use strict";let t=(0,e.i(3645).default)("external-link",[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]]);e.s(["ExternalLink",()=>t],30702)},24042,e=>{"use strict";let t=(0,e.i(3645).default)("play",[["path",{d:"M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z",key:"10ikf1"}]]);e.s(["Play",()=>t],24042)},6910,e=>{"use strict";let t=(0,e.i(3645).default)("square",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}]]);e.s(["Square",()=>t],6910)},73504,81605,e=>{"use strict";var t=e.i(20314),r=e.i(79054),a=e.i(21023);let s=(0,a.createServerReference)("40b4eeeb2999f5dd298c7eeb72e866dd706847cb43",a.callServer,void 0,a.findSourceMapURL,"deployFeature"),l=(0,a.createServerReference)("4080e8abd8dccdccdcffa041ededc81a57388866e4",a.callServer,void 0,a.findSourceMapURL,"deployRepository"),o=(0,a.createServerReference)("4035315500c0fdbe957490a4576599fe4e10362d00",a.callServer,void 0,a.findSourceMapURL,"deployApplication"),n=(0,a.createServerReference)("40b6be2e695ac64cea2ea7e061df3df9b9e8c668e5",a.callServer,void 0,a.findSourceMapURL,"stopDeployment"),i=(0,a.createServerReference)("405797f8b8319ac6933f44b97b53ed69b7d74f720d",a.callServer,void 0,a.findSourceMapURL,"getDeploymentStatus");var d=e.i(18354);let c={status:null,url:null,targetType:null,hydrated:!1,deployLoading:!1,stopLoading:!1,deployError:null};class u{entries=new Map;listeners=new Map;globalListeners=new Set;hydrate(e){let t=new Set;for(let r of e)t.add(r.targetId),this.update(r.targetId,{status:r.state,url:r.url,targetType:r.targetType,hydrated:!0});for(let[e,r]of this.entries)!t.has(e)&&r.hydrated&&null!==r.status?this.update(e,{status:null,url:null}):t.has(e)||r.hydrated||this.update(e,{hydrated:!0})}getEntry(e){return this.entries.get(e)??c}update(e,t){let r={...this.entries.get(e)??c,...t};this.entries.set(e,r),this.notify(e)}setStatus(e,t){null===t?this.update(e,{status:null,url:null,hydrated:!0}):this.update(e,{status:t.state,url:t.url,hydrated:!0})}subscribe(e,t){let r=this.listeners.get(e);return r||(r=new Set,this.listeners.set(e,r)),r.add(t),()=>{r?.delete(t),r?.size===0&&this.listeners.delete(e)}}subscribeAll(e){return this.globalListeners.add(e),()=>{this.globalListeners.delete(e)}}notify(e){let t=this.listeners.get(e);if(t)for(let e of t)e();for(let e of this.globalListeners)e()}}e.s(["DeploymentStatusStore",()=>u,"EMPTY_ENTRY",0,c],81605);let p=(0,d.createLogger)("[DeploymentStatusProvider]"),h=new Set(["Booting","Ready"]),f=(0,r.createContext)(null);function b({initialDeployments:e,children:a}){let d=(0,r.useRef)(null);d.current||(d.current=new u,d.current.hydrate(e));let c=d.current;(0,r.useEffect)(()=>{c.hydrate(e)},[e,c]);let b=(0,r.useRef)(new Map),y=(0,r.useCallback)(e=>{let t=b.current.get(e);t&&(clearInterval(t),b.current.delete(e))},[]),m=(0,r.useCallback)(e=>{if(b.current.has(e))return;let t=setInterval(async()=>{let t;try{t=await i(e)}catch(t){p.warn(`poll failed for "${e}"`,t),c.setStatus(e,null),y(e);return}if(!t||"Stopped"===t.state){c.setStatus(e,null),y(e);return}c.setStatus(e,t)},3e3);b.current.set(e,t)},[c,y]);(0,r.useEffect)(()=>{let e=b.current,t=c.subscribeAll(()=>{for(let[t]of e){let e=c.getEntry(t);e.status&&h.has(e.status)||y(t)}});return()=>{for(let[,r]of(t(),e))clearInterval(r);e.clear()}},[c,y]);let g=(0,r.useCallback)(e=>{!e||c.getEntry(e).hydrated||(c.update(e,{hydrated:!0}),(async()=>{try{let t=await i(e);c.setStatus(e,t),t&&h.has(t.state)&&m(e)}catch(t){p.warn(`ensureHydrated failed for "${e}"`,t)}})())},[c,m]),x=(0,r.useCallback)(async e=>{c.update(e.targetId,{deployLoading:!0,deployError:null});try{let t="feature"===e.targetType?await s(e.targetId):"application"===e.targetType?await o(e.targetId):await l(e.repositoryPath);if(!t.success)return void c.update(e.targetId,{deployLoading:!1,deployError:t.error??"An unexpected error occurred"});c.update(e.targetId,{deployLoading:!1,status:t.state??null,url:null,hydrated:!0,targetType:e.targetType}),m(e.targetId)}catch(r){let t=r instanceof Error?r.message:"An unexpected error occurred";c.update(e.targetId,{deployLoading:!1,deployError:t})}},[c,m]),v=(0,r.useCallback)(async e=>{if(e){c.update(e,{stopLoading:!0});try{(await n(e)).success?(y(e),c.update(e,{stopLoading:!1,status:null,url:null})):c.update(e,{stopLoading:!1})}catch(t){p.warn("stop error (non-critical)",t),c.update(e,{stopLoading:!1})}}},[c,y]),w=(0,r.useMemo)(()=>({store:c,deploy:x,stop:v,ensureHydrated:g}),[c,x,v,g]);return(0,t.jsx)(f.Provider,{value:w,children:a})}function y(){let e=(0,r.useContext)(f);if(!e)throw Error("useDeploymentStatusContext must be used within a <DeploymentStatusProvider>");return e}function m(){let e=(0,r.useContext)(f);return e||g}let g={store:new u,deploy:async()=>{},stop:async()=>{},ensureHydrated:()=>{}};e.s(["DeploymentStatusProvider",()=>b,"useDeploymentStatusContext",()=>y,"useDeploymentStatusContextOptional",()=>m],73504)},8537,e=>{"use strict";var t=e.i(79054),r=e.i(73504);function a(){}function s(e){let{store:s,deploy:l,stop:o,ensureHydrated:n}=(0,r.useDeploymentStatusContextOptional)(),i=e?.targetId??"",d=(0,t.useCallback)(e=>i?s.subscribe(i,e):a,[s,i]),c=(0,t.useCallback)(()=>i?s.getEntry(i):s.getEntry(""),[s,i]),u=(0,t.useSyncExternalStore)(d,c,c);return(0,t.useEffect)(()=>{i&&n(i)},[i,n]),{deploy:(0,t.useCallback)(async()=>{e&&await l(e)},[l,e]),stop:(0,t.useCallback)(async()=>{i&&await o(i)},[o,i]),deployLoading:u.deployLoading,stopLoading:u.stopLoading,deployError:u.deployError,status:u.status,url:u.url}}e.s(["useDeployAction",()=>s])},38573,e=>{"use strict";let t=(0,e.i(3645).default)("terminal",[["path",{d:"M12 19h8",key:"baeox8"}],["path",{d:"m4 17 6-6-6-6",key:"1yngyt"}]]);e.s(["Terminal",()=>t],38573)},1650,e=>{"use strict";e.i(11495),e.s([])},84621,e=>{"use strict";var t=e.i(21023);let r=(0,t.createServerReference)("403dc454070c72dd97868a0d66397a112bb429aa23",t.callServer,void 0,t.findSourceMapURL,"openFolder");e.s(["openFolder",()=>r])},37260,e=>{"use strict";let t=(0,e.i(3645).default)("archive",[["rect",{width:"20",height:"5",x:"2",y:"3",rx:"1",key:"1wp1u1"}],["path",{d:"M4 8v11a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8",key:"1s80jp"}],["path",{d:"M10 12h4",key:"a56b0p"}]]);e.s(["Archive",()=>t],37260)},76852,e=>{"use strict";var t=e.i(79054),r=e.i(66165),a=e.i(67534),s=e.i(84621),l=e.i(21023);let o=(0,l.createServerReference)("40e5ff0dc2321899262d6aecf5d972433293138faf",l.callServer,void 0,l.findSourceMapURL,"syncRepository");function n(e){let[l,n]=(0,t.useState)(!1),[i,d]=(0,t.useState)(!1),[c,u]=(0,t.useState)(!1),[p,h]=(0,t.useState)(!1),[f,b]=(0,t.useState)(null),[y,m]=(0,t.useState)(null),[g,x]=(0,t.useState)(null),[v,w]=(0,t.useState)(null),S=(0,t.useRef)(null),k=(0,t.useRef)(null),C=(0,t.useRef)(null),j=(0,t.useRef)(null);(0,t.useEffect)(()=>()=>{S.current&&clearTimeout(S.current),k.current&&clearTimeout(k.current),C.current&&clearTimeout(C.current),j.current&&clearTimeout(j.current)},[]);let M=(0,t.useCallback)(async(t,r,a,s,l)=>{if(e&&!l){s.current&&clearTimeout(s.current),r(!0),a(null);try{let e=await t();if(!e.success){let t=e.error??"An unexpected error occurred";a(t),s.current=setTimeout(()=>a(null),5e3)}}catch(e){a(e instanceof Error?e.message:"An unexpected error occurred"),s.current=setTimeout(()=>a(null),5e3)}finally{r(!1)}}},[e]);return{openInIde:(0,t.useCallback)(()=>M(()=>(0,r.openIde)({repositoryPath:e.repositoryPath}),n,b,S,l),[M,l,e]),openInShell:(0,t.useCallback)(()=>M(()=>(0,a.openShell)({repositoryPath:e.repositoryPath}),d,m,k,i),[M,i,e]),openFolder:(0,t.useCallback)(()=>M(()=>(0,s.openFolder)(e.repositoryPath),u,x,C,c),[M,c,e]),syncMain:(0,t.useCallback)(()=>M(()=>o(e.repositoryId??""),h,w,j,p),[M,p,e]),ideLoading:l,shellLoading:i,folderLoading:c,syncLoading:p,ideError:f,shellError:y,folderError:g,syncError:v}}e.s(["useRepositoryActions",()=>n],76852)},91925,e=>{"use strict";let t=(0,e.i(3645).default)("folder-plus",[["path",{d:"M12 10v6",key:"1bos4e"}],["path",{d:"M9 13h6",key:"1uhe8q"}],["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"}]]);e.s(["FolderPlus",()=>t],91925)},9702,e=>{"use strict";var t=e.i(21023);let r=(0,t.createServerReference)("4033fa30fe771d213d836267fca1d2bc348edc0463",t.callServer,void 0,t.findSourceMapURL,"addRepository");e.s(["addRepository",()=>r])},54793,7729,e=>{"use strict";var t=e.i(20314),r=e.i(31777);function a({icon:e,title:a,description:s,action:l,className:o,...n}){return(0,t.jsxs)("div",{className:(0,r.cn)("flex flex-col items-center gap-4 px-4 py-12 text-center",o),...n,children:[e?(0,t.jsx)("div",{className:"text-muted-foreground",children:e}):null,(0,t.jsx)("h3",{className:"text-lg font-semibold",children:a}),s?(0,t.jsx)("p",{className:"text-muted-foreground max-w-md text-sm",children:s}):null,l?(0,t.jsx)("div",{className:"mt-2",children:l}):null]})}e.s(["EmptyState",()=>a],7729),e.s([],54793)},13005,e=>{"use strict";let t=(0,e.i(3645).default)("sliders-horizontal",[["path",{d:"M10 5H3",key:"1qgfaw"}],["path",{d:"M12 19H3",key:"yhmn1j"}],["path",{d:"M14 3v4",key:"1sua03"}],["path",{d:"M16 17v4",key:"1q0r14"}],["path",{d:"M21 12h-9",key:"1o4lsq"}],["path",{d:"M21 19h-5",key:"1rlt1p"}],["path",{d:"M21 5h-7",key:"1oszz2"}],["path",{d:"M8 10v4",key:"tgpxqk"}],["path",{d:"M8 12H3",key:"a7s4jb"}]]);e.s(["SlidersHorizontal",()=>t],13005)},70002,57365,e=>{"use strict";var t=e.i(15131);function r(e,t,r,a){return"processing"===t?{label:"In Progress",dotClass:"bg-violet-500",borderClass:"",pulse:!0,previewDisabled:!0}:"awaiting_input"===t?{label:"Action Required",dotClass:"bg-amber-500",borderClass:"border-amber-500/60",pulse:!0,previewDisabled:!0}:"interrupted"===a?{label:"Interrupted",dotClass:"bg-amber-500",borderClass:"border-amber-500/60",pulse:!1,previewDisabled:!0}:"failed"===a?{label:"Failed",dotClass:"bg-red-500",borderClass:"border-red-500/60",pulse:!1,previewDisabled:!0}:"building"===a?{label:"In Progress",dotClass:"bg-violet-500",borderClass:"",pulse:!0,previewDisabled:!0}:r?{label:"Live",dotClass:"bg-emerald-500",borderClass:"",pulse:!0,previewDisabled:!1}:"Error"===e?{label:"Error",dotClass:"bg-red-500",borderClass:"border-red-500/60",pulse:!1,previewDisabled:!0}:{label:"Ready",dotClass:"bg-sky-500",borderClass:"",pulse:!1,previewDisabled:!1}}e.s(["TriangleAlert",()=>t.default],70002),e.s(["deriveAppLiveStatus",()=>r],57365)},23642,e=>{"use strict";var t=e.i(21023);let r=(0,t.createServerReference)("4019e9b366eba6e7ae533d69ad430786e1d105d3f7",t.callServer,void 0,t.findSourceMapURL,"deleteApplication");e.s(["deleteApplication",()=>r])},40106,e=>{"use strict";var t=e.i(20314),r=e.i(79054),a=e.i(11719),s=e.i(35946),l=e.i(83428),o=e.i(42049),n=e.i(53360),i=e.i(41698),d=e.i(99105),c=e.i(23925),u=e.i(60253);e.i(41001);var p=e.i(64780),h=e.i(31777),f=e.i(21023);let b=(0,f.createServerReference)("40a0177b9f2aa86822c61e9a614f071fe7717b8bda",f.callServer,void 0,f.findSourceMapURL,"createProjectAndFeature"),y=(0,f.createServerReference)("4007c40d988784c0b9cc291fff583c56299825ace2",f.callServer,void 0,f.findSourceMapURL,"createApplication");var m=e.i(41413);e.i(50032);var g=e.i(86254);e.i(92233);var x=e.i(10025),v=e.i(2828),w=e.i(70646),S=e.i(31151);let k=["application","fast","spec"],C={application:{icon:o.LayoutGrid,label:"Application",placeholder:"Build a modern e-commerce storefront with product catalog...",suggestions:["A landing page with hero, features, and pricing sections","Full-stack SaaS app with auth, billing, and dashboard","Mobile-first social media app with real-time chat","Personal portfolio with blog and project showcase"]},fast:{icon:n.Zap,label:"Fast",placeholder:"Add a dark mode toggle to the settings page...",suggestions:["Add pagination to the users list endpoint","Fix the broken logout redirect","Add input validation to the signup form","Refactor the API error handling middleware"]},spec:{icon:i.ClipboardList,label:"Spec Driven",placeholder:"Implement a role-based access control system with audit logging...",suggestions:["OAuth2 authentication with SSO and MFA support","Event-driven notification system with email and push","REST API with versioning, rate limiting, and OpenAPI docs","Data pipeline with ETL, validation, and monitoring"]}};function j({onRepositorySelect:e,onApplicationCreated:o,onClose:n,className:i}){let{t:f}=(0,p.useTranslation)("web"),[j,M]=(0,r.useState)(""),[R,L]=(0,r.useState)(void 0),[D,N]=(0,r.useState)(void 0),[A,E]=(0,r.useState)("application"),[T,P]=(0,r.useState)(!1),[I,_]=(0,r.useState)(null),[z,F]=(0,r.useState)(!1),q=(0,r.useRef)(null),U=(0,S.useAttachments)(),O=(0,r.useCallback)(()=>{E(e=>{let t=k.indexOf(e);return k[(t+1)%k.length]})},[]);(0,r.useEffect)(()=>{let e=e=>{"Escape"===e.key&&n&&n(),"Tab"===e.key&&e.shiftKey&&(e.preventDefault(),O())};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[n,O]);let H=(0,r.useCallback)(async()=>{if(j.trim()&&!T){P(!0),_(null);try{if("application"===A){let e=await y({description:j.trim(),agentType:R,modelOverride:D,initialPrompt:j.trim()});if(e.error){_(e.error),P(!1);return}e.application&&o?.(e.application.id)}else{let t=await b({description:j.trim(),attachments:U.completedAttachments.map(e=>({path:e.path,name:e.name,notes:e.notes})),agentType:R,model:D,fast:"fast"===A});if(t.error){_(t.error),P(!1);return}t.repositoryPath&&e?.(t.repositoryPath),t.feature&&t.repositoryPath&&window.dispatchEvent(new CustomEvent("shep:feature-created",{detail:{featureId:t.feature.id,name:t.feature.name,description:t.feature.description,repositoryPath:t.repositoryPath}}))}}catch{_("Something went wrong. Please try again."),P(!1)}}},[j,T,A,U.completedAttachments,R,D,e,o]),B=(0,r.useCallback)(e=>{"Enter"===e.key&&(e.ctrlKey||e.metaKey)&&(e.preventDefault(),H())},[H]),K=(0,r.useCallback)(async()=>{try{let e=await fetch("/api/dialog/pick-files");if(!e.ok)return;let t=await e.json();if(!t.paths?.length)return;for(let e of t.paths){let t=await fetch("/api/attachments/upload-from-path",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:e,sessionId:"onboarding"})});if(!t.ok)continue;let r=await t.json();U.addAttachment(r)}}catch{}},[U.addAttachment]),G=(0,r.useCallback)(e=>{M(e),q.current?.focus()},[]),V=C[A],$=V.icon;return(0,t.jsxs)("div",{"data-testid":"control-center-empty-state",className:(0,h.cn)("relative flex h-full w-full flex-col items-center justify-center overflow-hidden px-8",i),children:[(0,t.jsx)("div",{className:"onboard-bg pointer-events-none absolute inset-0 animate-[onboard-fade-in_1.2s_ease-out_both]"}),n?(0,t.jsx)("button",{type:"button",onClick:n,"aria-label":"Close",className:"text-muted-foreground hover:text-foreground hover:bg-accent/50 absolute top-4 right-4 z-10 cursor-pointer rounded p-1.5 transition-colors",children:(0,t.jsx)(u.X,{className:"h-5 w-5"})}):null,(0,t.jsxs)("div",{className:"relative flex w-full max-w-2xl flex-col items-center",children:[(0,t.jsx)("div",{className:"mb-6 animate-[onboard-logo_0.8s_cubic-bezier(0.16,1,0.3,1)_both]",style:{animationDelay:"0ms"},children:(0,t.jsx)(x.ShepLogo,{size:72,className:"text-foreground"})}),(0,t.jsx)("h1",{className:"text-foreground animate-[onboard-fade-up_0.7s_cubic-bezier(0.16,1,0.3,1)_both] text-center text-5xl font-extralight tracking-tight",style:{animationDelay:"120ms"},children:"What do you want to build?"}),(0,t.jsx)("p",{className:"text-muted-foreground mt-3 animate-[onboard-fade-up_0.7s_cubic-bezier(0.16,1,0.3,1)_both] text-center text-lg leading-relaxed font-light",style:{animationDelay:"220ms"},children:"Describe your idea and Shep creates the project for you."}),(0,t.jsxs)("div",{className:"mt-10 w-full animate-[onboard-fade-up_0.7s_cubic-bezier(0.16,1,0.3,1)_both]",style:{animationDelay:"350ms"},children:[(0,t.jsxs)("div",{onFocus:()=>F(!0),onBlur:()=>F(!1),onDragEnter:U.handleDragEnter,onDragLeave:U.handleDragLeave,onDragOver:U.handleDragOver,onDrop:U.handleDrop,className:(0,h.cn)("flex flex-col rounded-xl border transition-all duration-200","border-border/60 bg-background shadow-sm dark:border-white/10 dark:bg-white/[0.04]",z&&"ring-ring/50 border-ring shadow-md ring-[3px] dark:border-orange-500/40 dark:ring-orange-500/25",U.isDragOver&&"border-primary/50 bg-primary/5",T&&"opacity-70"),children:[(0,t.jsx)("textarea",{ref:q,rows:2,autoFocus:!0,value:j,onChange:e=>M(e.target.value),onKeyDown:B,onPaste:U.handlePaste,placeholder:V.placeholder,disabled:T,className:"text-foreground placeholder:text-muted-foreground/60 max-h-[10rem] min-h-[4.5rem] w-full resize-none border-0 bg-transparent px-4 py-3.5 text-sm leading-relaxed focus:outline-none disabled:cursor-not-allowed"}),U.attachments.length>0?(0,t.jsx)("div",{className:"flex shrink-0 items-center gap-2.5 overflow-x-auto overflow-y-visible px-5 pt-2 pb-2",children:U.attachments.map(e=>(0,t.jsx)(g.AttachmentChip,{name:e.name,size:e.size,mimeType:e.mimeType,path:e.path,onRemove:()=>U.removeAttachment(e.id),loading:e.loading,notes:e.notes,onNotesChange:t=>U.updateNotes(e.id,t)},e.id))}):null,U.uploadError?(0,t.jsx)("p",{className:"text-destructive px-4 pb-2 text-xs",children:U.uploadError}):null,(0,t.jsxs)("div",{className:"border-border/60 flex shrink-0 items-center gap-3 border-t px-3 py-2 dark:border-white/10",children:[(0,t.jsx)(m.AgentModelPicker,{initialAgentType:R??"claude-code",initialModel:D??"claude-sonnet-4-6",mode:"override",showInstallStatus:!0,onAgentModelChange:(e,t)=>{L(e),N(t)},className:"w-55"}),(0,t.jsx)("div",{className:"flex-1"}),(0,t.jsxs)(w.DropdownMenu,{children:[(0,t.jsx)(w.DropdownMenuTrigger,{asChild:!0,children:(0,t.jsxs)("button",{type:"button","data-testid":"build-mode-selector",className:"text-muted-foreground hover:text-foreground hover:bg-accent/50 flex cursor-pointer items-center gap-1.5 rounded-md px-2 py-1 text-xs transition-colors",children:[(0,t.jsxs)("span",{className:"flex animate-[onboard-fade-up_0.25s_ease-out_both] items-center gap-1.5",children:[(0,t.jsx)($,{className:"h-3.5 w-3.5"}),V.label]},A),(0,t.jsx)(d.ChevronDown,{className:"h-3 w-3 opacity-50"})]})}),(0,t.jsx)(w.DropdownMenuContent,{align:"end",className:"min-w-[160px]",children:k.map(e=>{let r=C[e],a=r.icon,s=A===e;return(0,t.jsxs)(w.DropdownMenuItem,{onClick:()=>E(e),"data-testid":`build-mode-${e}`,className:"flex items-center gap-2",children:[(0,t.jsx)(a,{className:"h-3.5 w-3.5"}),(0,t.jsx)("span",{className:"flex-1",children:r.label}),s?(0,t.jsx)(c.Check,{className:"text-foreground h-3.5 w-3.5"}):null]},e)})})]}),(0,t.jsxs)(v.Tooltip,{children:[(0,t.jsx)(v.TooltipTrigger,{asChild:!0,children:(0,t.jsx)("button",{type:"button",onClick:K,disabled:T,"aria-label":f("chat.attachFiles"),className:"text-muted-foreground hover:text-foreground cursor-pointer rounded p-1 transition-colors disabled:opacity-50",children:(0,t.jsx)(s.Paperclip,{className:"h-4 w-4"})})}),(0,t.jsx)(v.TooltipContent,{side:"top",children:f("chat.attachFiles")})]}),(0,t.jsx)("button",{type:"button",onClick:H,disabled:!j.trim()||T,className:(0,h.cn)("bg-foreground text-background inline-flex h-8 w-8 shrink-0 cursor-pointer items-center justify-center rounded-lg","hover:bg-foreground/90 disabled:pointer-events-none disabled:opacity-30","transition-all duration-150"),children:T?(0,t.jsx)(l.Loader2,{className:"h-3.5 w-3.5 animate-spin"}):(0,t.jsx)(a.SendHorizontal,{className:"h-3.5 w-3.5"})})]})]}),I?(0,t.jsx)("p",{className:"text-destructive mt-2 text-center text-sm",children:I}):null]}),(0,t.jsx)("div",{className:"mt-6 flex animate-[onboard-fade-up_0.4s_ease-out_both] flex-wrap justify-center gap-2",children:V.suggestions.map(e=>(0,t.jsx)("button",{type:"button",onClick:()=>G(e),disabled:T,className:"text-muted-foreground hover:text-foreground border-border/60 hover:border-border hover:bg-accent/50 cursor-pointer rounded-full border px-3.5 py-1.5 text-xs transition-all duration-150 disabled:opacity-50 dark:border-white/10 dark:hover:border-white/20 dark:hover:bg-white/[0.06]",children:e},e))},A)]})]})}e.s(["ControlCenterEmptyState",()=>j],40106)}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,30702,e=>{"use strict";let t=(0,e.i(3645).default)("external-link",[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]]);e.s(["ExternalLink",()=>t],30702)},73504,81605,e=>{"use strict";var t=e.i(20314),r=e.i(79054),n=e.i(21023);let o=(0,n.createServerReference)("40b4eeeb2999f5dd298c7eeb72e866dd706847cb43",n.callServer,void 0,n.findSourceMapURL,"deployFeature"),a=(0,n.createServerReference)("4080e8abd8dccdccdcffa041ededc81a57388866e4",n.callServer,void 0,n.findSourceMapURL,"deployRepository"),s=(0,n.createServerReference)("4035315500c0fdbe957490a4576599fe4e10362d00",n.callServer,void 0,n.findSourceMapURL,"deployApplication"),l=(0,n.createServerReference)("40b6be2e695ac64cea2ea7e061df3df9b9e8c668e5",n.callServer,void 0,n.findSourceMapURL,"stopDeployment"),d=(0,n.createServerReference)("405797f8b8319ac6933f44b97b53ed69b7d74f720d",n.callServer,void 0,n.findSourceMapURL,"getDeploymentStatus");var i=e.i(18354);let u={status:null,url:null,targetType:null,hydrated:!1,deployLoading:!1,stopLoading:!1,deployError:null};class c{entries=new Map;listeners=new Map;globalListeners=new Set;hydrate(e){let t=new Set;for(let r of e)t.add(r.targetId),this.update(r.targetId,{status:r.state,url:r.url,targetType:r.targetType,hydrated:!0});for(let[e,r]of this.entries)!t.has(e)&&r.hydrated&&null!==r.status?this.update(e,{status:null,url:null}):t.has(e)||r.hydrated||this.update(e,{hydrated:!0})}getEntry(e){return this.entries.get(e)??u}update(e,t){let r={...this.entries.get(e)??u,...t};this.entries.set(e,r),this.notify(e)}setStatus(e,t){null===t?this.update(e,{status:null,url:null,hydrated:!0}):this.update(e,{status:t.state,url:t.url,hydrated:!0})}subscribe(e,t){let r=this.listeners.get(e);return r||(r=new Set,this.listeners.set(e,r)),r.add(t),()=>{r?.delete(t),r?.size===0&&this.listeners.delete(e)}}subscribeAll(e){return this.globalListeners.add(e),()=>{this.globalListeners.delete(e)}}notify(e){let t=this.listeners.get(e);if(t)for(let e of t)e();for(let e of this.globalListeners)e()}}e.s(["DeploymentStatusStore",()=>c,"EMPTY_ENTRY",0,u],81605);let p=(0,i.createLogger)("[DeploymentStatusProvider]"),f=new Set(["Booting","Ready"]),m=(0,r.createContext)(null);function h({initialDeployments:e,children:n}){let i=(0,r.useRef)(null);i.current||(i.current=new c,i.current.hydrate(e));let u=i.current;(0,r.useEffect)(()=>{u.hydrate(e)},[e,u]);let h=(0,r.useRef)(new Map),g=(0,r.useCallback)(e=>{let t=h.current.get(e);t&&(clearInterval(t),h.current.delete(e))},[]),v=(0,r.useCallback)(e=>{if(h.current.has(e))return;let t=setInterval(async()=>{let t;try{t=await d(e)}catch(t){p.warn(`poll failed for "${e}"`,t),u.setStatus(e,null),g(e);return}if(!t||"Stopped"===t.state){u.setStatus(e,null),g(e);return}u.setStatus(e,t)},3e3);h.current.set(e,t)},[u,g]);(0,r.useEffect)(()=>{let e=h.current,t=u.subscribeAll(()=>{for(let[t]of e){let e=u.getEntry(t);e.status&&f.has(e.status)||g(t)}});return()=>{for(let[,r]of(t(),e))clearInterval(r);e.clear()}},[u,g]);let y=(0,r.useCallback)(e=>{!e||u.getEntry(e).hydrated||(u.update(e,{hydrated:!0}),(async()=>{try{let t=await d(e);u.setStatus(e,t),t&&f.has(t.state)&&v(e)}catch(t){p.warn(`ensureHydrated failed for "${e}"`,t)}})())},[u,v]),w=(0,r.useCallback)(async e=>{u.update(e.targetId,{deployLoading:!0,deployError:null});try{let t="feature"===e.targetType?await o(e.targetId):"application"===e.targetType?await s(e.targetId):await a(e.repositoryPath);if(!t.success)return void u.update(e.targetId,{deployLoading:!1,deployError:t.error??"An unexpected error occurred"});u.update(e.targetId,{deployLoading:!1,status:t.state??null,url:null,hydrated:!0,targetType:e.targetType}),v(e.targetId)}catch(r){let t=r instanceof Error?r.message:"An unexpected error occurred";u.update(e.targetId,{deployLoading:!1,deployError:t})}},[u,v]),x=(0,r.useCallback)(async e=>{if(e){u.update(e,{stopLoading:!0});try{(await l(e)).success?(g(e),u.update(e,{stopLoading:!1,status:null,url:null})):u.update(e,{stopLoading:!1})}catch(t){p.warn("stop error (non-critical)",t),u.update(e,{stopLoading:!1})}}},[u,g]),b=(0,r.useMemo)(()=>({store:u,deploy:w,stop:x,ensureHydrated:y}),[u,w,x,y]);return(0,t.jsx)(m.Provider,{value:b,children:n})}function g(){let e=(0,r.useContext)(m);if(!e)throw Error("useDeploymentStatusContext must be used within a <DeploymentStatusProvider>");return e}function v(){let e=(0,r.useContext)(m);return e||y}let y={store:new c,deploy:async()=>{},stop:async()=>{},ensureHydrated:()=>{}};e.s(["DeploymentStatusProvider",()=>h,"useDeploymentStatusContext",()=>g,"useDeploymentStatusContextOptional",()=>v],73504)},24042,e=>{"use strict";let t=(0,e.i(3645).default)("play",[["path",{d:"M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z",key:"10ikf1"}]]);e.s(["Play",()=>t],24042)},6910,e=>{"use strict";let t=(0,e.i(3645).default)("square",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}]]);e.s(["Square",()=>t],6910)},8537,e=>{"use strict";var t=e.i(79054),r=e.i(73504);function n(){}function o(e){let{store:o,deploy:a,stop:s,ensureHydrated:l}=(0,r.useDeploymentStatusContextOptional)(),d=e?.targetId??"",i=(0,t.useCallback)(e=>d?o.subscribe(d,e):n,[o,d]),u=(0,t.useCallback)(()=>d?o.getEntry(d):o.getEntry(""),[o,d]),c=(0,t.useSyncExternalStore)(i,u,u);return(0,t.useEffect)(()=>{d&&l(d)},[d,l]),{deploy:(0,t.useCallback)(async()=>{e&&await a(e)},[a,e]),stop:(0,t.useCallback)(async()=>{d&&await s(d)},[s,d]),deployLoading:c.deployLoading,stopLoading:c.stopLoading,deployError:c.deployError,status:c.status,url:c.url}}e.s(["useDeployAction",()=>o])},41698,e=>{"use strict";let t=(0,e.i(3645).default)("clipboard-list",[["rect",{width:"8",height:"4",x:"8",y:"2",rx:"1",ry:"1",key:"tgr4d6"}],["path",{d:"M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2",key:"116196"}],["path",{d:"M12 11h4",key:"1jrz19"}],["path",{d:"M12 16h4",key:"n85exb"}],["path",{d:"M8 11h.01",key:"1dfujw"}],["path",{d:"M8 16h.01",key:"18s6g9"}]]);e.s(["ClipboardList",()=>t],41698)},70646,e=>{"use strict";var t=e.i(20314),r=e.i(79054),n=e.i(91967),o=e.i(5978),a=e.i(22528),s=e.i(36589),l=e.i(87620),d=e.i(87342),i=e.i(66033),u=e.i(53532),c=e.i(41687),p=e.i(56720),f=e.i(13123),m=e.i(52740),h=e.i(39979),g=e.i(85995),v=e.i(51080),y=e.i(86874),w=e.i(29297),x=e.i(73772),b=e.i(13044),C=["Enter"," "],M=["ArrowUp","PageDown","End"],R=["ArrowDown","PageUp","Home",...M],S={ltr:[...C,"ArrowRight"],rtl:[...C,"ArrowLeft"]},D={ltr:["ArrowLeft"],rtl:["ArrowRight"]},j="Menu",[E,k,I]=(0,d.createCollection)(j),[P,N]=(0,a.createContextScope)(j,[I,m.createPopperScope,v.createRovingFocusGroupScope]),L=(0,m.createPopperScope)(),T=(0,v.createRovingFocusGroupScope)(),[_,O]=P(j),[A,H]=P(j),F=e=>{let{__scopeMenu:n,open:o=!1,children:a,dir:s,onOpenChange:l,modal:d=!0}=e,u=L(n),[c,p]=r.useState(null),f=r.useRef(!1),h=(0,w.useCallbackRef)(l),g=(0,i.useDirection)(s);return r.useEffect(()=>{let e=()=>{f.current=!0,document.addEventListener("pointerdown",t,{capture:!0,once:!0}),document.addEventListener("pointermove",t,{capture:!0,once:!0})},t=()=>f.current=!1;return document.addEventListener("keydown",e,{capture:!0}),()=>{document.removeEventListener("keydown",e,{capture:!0}),document.removeEventListener("pointerdown",t,{capture:!0}),document.removeEventListener("pointermove",t,{capture:!0})}},[]),(0,t.jsx)(m.Root,{...u,children:(0,t.jsx)(_,{scope:n,open:o,onOpenChange:h,content:c,onContentChange:p,children:(0,t.jsx)(A,{scope:n,onClose:r.useCallback(()=>h(!1),[h]),isUsingKeyboardRef:f,dir:g,modal:d,children:a})})})};F.displayName=j;var K=r.forwardRef((e,r)=>{let{__scopeMenu:n,...o}=e,a=L(n);return(0,t.jsx)(m.Anchor,{...a,...o,ref:r})});K.displayName="MenuAnchor";var G="MenuPortal",[U,z]=P(G,{forceMount:void 0}),V=e=>{let{__scopeMenu:r,forceMount:n,children:o,container:a}=e,s=O(G,r);return(0,t.jsx)(U,{scope:r,forceMount:n,children:(0,t.jsx)(g.Presence,{present:n||s.open,children:(0,t.jsx)(h.Portal,{asChild:!0,container:a,children:o})})})};V.displayName=G;var B="MenuContent",[q,X]=P(B),Y=r.forwardRef((e,r)=>{let n=z(B,e.__scopeMenu),{forceMount:o=n.forceMount,...a}=e,s=O(B,e.__scopeMenu),l=H(B,e.__scopeMenu);return(0,t.jsx)(E.Provider,{scope:e.__scopeMenu,children:(0,t.jsx)(g.Presence,{present:o||s.open,children:(0,t.jsx)(E.Slot,{scope:e.__scopeMenu,children:l.modal?(0,t.jsx)($,{...a,ref:r}):(0,t.jsx)(W,{...a,ref:r})})})})}),$=r.forwardRef((e,a)=>{let s=O(B,e.__scopeMenu),l=r.useRef(null),d=(0,o.useComposedRefs)(a,l);return r.useEffect(()=>{let e=l.current;if(e)return(0,x.hideOthers)(e)},[]),(0,t.jsx)(J,{...e,ref:d,trapFocus:s.open,disableOutsidePointerEvents:s.open,disableOutsideScroll:!0,onFocusOutside:(0,n.composeEventHandlers)(e.onFocusOutside,e=>e.preventDefault(),{checkForDefaultPrevented:!1}),onDismiss:()=>s.onOpenChange(!1)})}),W=r.forwardRef((e,r)=>{let n=O(B,e.__scopeMenu);return(0,t.jsx)(J,{...e,ref:r,trapFocus:!1,disableOutsidePointerEvents:!1,disableOutsideScroll:!1,onDismiss:()=>n.onOpenChange(!1)})}),Z=(0,y.createSlot)("MenuContent.ScrollLock"),J=r.forwardRef((e,a)=>{let{__scopeMenu:s,loop:l=!1,trapFocus:d,onOpenAutoFocus:i,onCloseAutoFocus:f,disableOutsidePointerEvents:h,onEntryFocus:g,onEscapeKeyDown:y,onPointerDownOutside:w,onFocusOutside:x,onInteractOutside:C,onDismiss:S,disableOutsideScroll:D,...j}=e,E=O(B,s),I=H(B,s),P=L(s),N=T(s),_=k(s),[A,F]=r.useState(null),K=r.useRef(null),G=(0,o.useComposedRefs)(a,K,E.onContentChange),U=r.useRef(0),z=r.useRef(""),V=r.useRef(0),X=r.useRef(null),Y=r.useRef("right"),$=r.useRef(0),W=D?b.RemoveScroll:r.Fragment;r.useEffect(()=>()=>window.clearTimeout(U.current),[]),(0,c.useFocusGuards)();let J=r.useCallback(e=>{var t,r;return Y.current===X.current?.side&&(t=e,!!(r=X.current?.area)&&function(e,t){let{x:r,y:n}=e,o=!1;for(let e=0,a=t.length-1;e<t.length;a=e++){let s=t[e],l=t[a],d=s.x,i=s.y,u=l.x,c=l.y;i>n!=c>n&&r<(u-d)*(n-i)/(c-i)+d&&(o=!o)}return o}({x:t.clientX,y:t.clientY},r))},[]);return(0,t.jsx)(q,{scope:s,searchRef:z,onItemEnter:r.useCallback(e=>{J(e)&&e.preventDefault()},[J]),onItemLeave:r.useCallback(e=>{J(e)||(K.current?.focus(),F(null))},[J]),onTriggerLeave:r.useCallback(e=>{J(e)&&e.preventDefault()},[J]),pointerGraceTimerRef:V,onPointerGraceIntentChange:r.useCallback(e=>{X.current=e},[]),children:(0,t.jsx)(W,{...D?{as:Z,allowPinchZoom:!0}:void 0,children:(0,t.jsx)(p.FocusScope,{asChild:!0,trapped:d,onMountAutoFocus:(0,n.composeEventHandlers)(i,e=>{e.preventDefault(),K.current?.focus({preventScroll:!0})}),onUnmountAutoFocus:f,children:(0,t.jsx)(u.DismissableLayer,{asChild:!0,disableOutsidePointerEvents:h,onEscapeKeyDown:y,onPointerDownOutside:w,onFocusOutside:x,onInteractOutside:C,onDismiss:S,children:(0,t.jsx)(v.Root,{asChild:!0,...N,dir:I.dir,orientation:"vertical",loop:l,currentTabStopId:A,onCurrentTabStopIdChange:F,onEntryFocus:(0,n.composeEventHandlers)(g,e=>{I.isUsingKeyboardRef.current||e.preventDefault()}),preventScrollOnEntryFocus:!0,children:(0,t.jsx)(m.Content,{role:"menu","aria-orientation":"vertical","data-state":eD(E.open),"data-radix-menu-content":"",dir:I.dir,...P,...j,ref:G,style:{outline:"none",...j.style},onKeyDown:(0,n.composeEventHandlers)(j.onKeyDown,e=>{let t=e.target.closest("[data-radix-menu-content]")===e.currentTarget,r=e.ctrlKey||e.altKey||e.metaKey,n=1===e.key.length;if(t){var o;let t,a,s,l,d,i;"Tab"===e.key&&e.preventDefault(),!r&&n&&(o=e.key,t=z.current+o,a=_().filter(e=>!e.disabled),s=document.activeElement,l=a.find(e=>e.ref.current===s)?.textValue,d=function(e,t,r){var n;let o=t.length>1&&Array.from(t).every(e=>e===t[0])?t[0]:t,a=r?e.indexOf(r):-1,s=(n=Math.max(a,0),e.map((t,r)=>e[(n+r)%e.length]));1===o.length&&(s=s.filter(e=>e!==r));let l=s.find(e=>e.toLowerCase().startsWith(o.toLowerCase()));return l!==r?l:void 0}(a.map(e=>e.textValue),t,l),i=a.find(e=>e.textValue===d)?.ref.current,function e(t){z.current=t,window.clearTimeout(U.current),""!==t&&(U.current=window.setTimeout(()=>e(""),1e3))}(t),i&&setTimeout(()=>i.focus()))}let a=K.current;if(e.target!==a||!R.includes(e.key))return;e.preventDefault();let s=_().filter(e=>!e.disabled).map(e=>e.ref.current);M.includes(e.key)&&s.reverse(),function(e){let t=document.activeElement;for(let r of e)if(r===t||(r.focus(),document.activeElement!==t))return}(s)}),onBlur:(0,n.composeEventHandlers)(e.onBlur,e=>{e.currentTarget.contains(e.target)||(window.clearTimeout(U.current),z.current="")}),onPointerMove:(0,n.composeEventHandlers)(e.onPointerMove,ek(e=>{let t=e.target,r=$.current!==e.clientX;e.currentTarget.contains(t)&&r&&(Y.current=e.clientX>$.current?"right":"left",$.current=e.clientX)}))})})})})})})});Y.displayName=B;var Q=r.forwardRef((e,r)=>{let{__scopeMenu:n,...o}=e;return(0,t.jsx)(l.Primitive.div,{role:"group",...o,ref:r})});Q.displayName="MenuGroup";var ee=r.forwardRef((e,r)=>{let{__scopeMenu:n,...o}=e;return(0,t.jsx)(l.Primitive.div,{...o,ref:r})});ee.displayName="MenuLabel";var et="MenuItem",er="menu.itemSelect",en=r.forwardRef((e,a)=>{let{disabled:s=!1,onSelect:d,...i}=e,u=r.useRef(null),c=H(et,e.__scopeMenu),p=X(et,e.__scopeMenu),f=(0,o.useComposedRefs)(a,u),m=r.useRef(!1);return(0,t.jsx)(eo,{...i,ref:f,disabled:s,onClick:(0,n.composeEventHandlers)(e.onClick,()=>{let e=u.current;if(!s&&e){let t=new CustomEvent(er,{bubbles:!0,cancelable:!0});e.addEventListener(er,e=>d?.(e),{once:!0}),(0,l.dispatchDiscreteCustomEvent)(e,t),t.defaultPrevented?m.current=!1:c.onClose()}}),onPointerDown:t=>{e.onPointerDown?.(t),m.current=!0},onPointerUp:(0,n.composeEventHandlers)(e.onPointerUp,e=>{m.current||e.currentTarget?.click()}),onKeyDown:(0,n.composeEventHandlers)(e.onKeyDown,e=>{let t=""!==p.searchRef.current;s||t&&" "===e.key||C.includes(e.key)&&(e.currentTarget.click(),e.preventDefault())})})});en.displayName=et;var eo=r.forwardRef((e,a)=>{let{__scopeMenu:s,disabled:d=!1,textValue:i,...u}=e,c=X(et,s),p=T(s),f=r.useRef(null),m=(0,o.useComposedRefs)(a,f),[h,g]=r.useState(!1),[y,w]=r.useState("");return r.useEffect(()=>{let e=f.current;e&&w((e.textContent??"").trim())},[u.children]),(0,t.jsx)(E.ItemSlot,{scope:s,disabled:d,textValue:i??y,children:(0,t.jsx)(v.Item,{asChild:!0,...p,focusable:!d,children:(0,t.jsx)(l.Primitive.div,{role:"menuitem","data-highlighted":h?"":void 0,"aria-disabled":d||void 0,"data-disabled":d?"":void 0,...u,ref:m,onPointerMove:(0,n.composeEventHandlers)(e.onPointerMove,ek(e=>{d?c.onItemLeave(e):(c.onItemEnter(e),e.defaultPrevented||e.currentTarget.focus({preventScroll:!0}))})),onPointerLeave:(0,n.composeEventHandlers)(e.onPointerLeave,ek(e=>c.onItemLeave(e))),onFocus:(0,n.composeEventHandlers)(e.onFocus,()=>g(!0)),onBlur:(0,n.composeEventHandlers)(e.onBlur,()=>g(!1))})})})}),ea=r.forwardRef((e,r)=>{let{checked:o=!1,onCheckedChange:a,...s}=e;return(0,t.jsx)(ef,{scope:e.__scopeMenu,checked:o,children:(0,t.jsx)(en,{role:"menuitemcheckbox","aria-checked":ej(o)?"mixed":o,...s,ref:r,"data-state":eE(o),onSelect:(0,n.composeEventHandlers)(s.onSelect,()=>a?.(!!ej(o)||!o),{checkForDefaultPrevented:!1})})})});ea.displayName="MenuCheckboxItem";var es="MenuRadioGroup",[el,ed]=P(es,{value:void 0,onValueChange:()=>{}}),ei=r.forwardRef((e,r)=>{let{value:n,onValueChange:o,...a}=e,s=(0,w.useCallbackRef)(o);return(0,t.jsx)(el,{scope:e.__scopeMenu,value:n,onValueChange:s,children:(0,t.jsx)(Q,{...a,ref:r})})});ei.displayName=es;var eu="MenuRadioItem",ec=r.forwardRef((e,r)=>{let{value:o,...a}=e,s=ed(eu,e.__scopeMenu),l=o===s.value;return(0,t.jsx)(ef,{scope:e.__scopeMenu,checked:l,children:(0,t.jsx)(en,{role:"menuitemradio","aria-checked":l,...a,ref:r,"data-state":eE(l),onSelect:(0,n.composeEventHandlers)(a.onSelect,()=>s.onValueChange?.(o),{checkForDefaultPrevented:!1})})})});ec.displayName=eu;var ep="MenuItemIndicator",[ef,em]=P(ep,{checked:!1}),eh=r.forwardRef((e,r)=>{let{__scopeMenu:n,forceMount:o,...a}=e,s=em(ep,n);return(0,t.jsx)(g.Presence,{present:o||ej(s.checked)||!0===s.checked,children:(0,t.jsx)(l.Primitive.span,{...a,ref:r,"data-state":eE(s.checked)})})});eh.displayName=ep;var eg=r.forwardRef((e,r)=>{let{__scopeMenu:n,...o}=e;return(0,t.jsx)(l.Primitive.div,{role:"separator","aria-orientation":"horizontal",...o,ref:r})});eg.displayName="MenuSeparator";var ev=r.forwardRef((e,r)=>{let{__scopeMenu:n,...o}=e,a=L(n);return(0,t.jsx)(m.Arrow,{...a,...o,ref:r})});ev.displayName="MenuArrow";var ey="MenuSub",[ew,ex]=P(ey),eb=e=>{let{__scopeMenu:n,children:o,open:a=!1,onOpenChange:s}=e,l=O(ey,n),d=L(n),[i,u]=r.useState(null),[c,p]=r.useState(null),h=(0,w.useCallbackRef)(s);return r.useEffect(()=>(!1===l.open&&h(!1),()=>h(!1)),[l.open,h]),(0,t.jsx)(m.Root,{...d,children:(0,t.jsx)(_,{scope:n,open:a,onOpenChange:h,content:c,onContentChange:p,children:(0,t.jsx)(ew,{scope:n,contentId:(0,f.useId)(),triggerId:(0,f.useId)(),trigger:i,onTriggerChange:u,children:o})})})};eb.displayName=ey;var eC="MenuSubTrigger",eM=r.forwardRef((e,a)=>{let s=O(eC,e.__scopeMenu),l=H(eC,e.__scopeMenu),d=ex(eC,e.__scopeMenu),i=X(eC,e.__scopeMenu),u=r.useRef(null),{pointerGraceTimerRef:c,onPointerGraceIntentChange:p}=i,f={__scopeMenu:e.__scopeMenu},m=r.useCallback(()=>{u.current&&window.clearTimeout(u.current),u.current=null},[]);return r.useEffect(()=>m,[m]),r.useEffect(()=>{let e=c.current;return()=>{window.clearTimeout(e),p(null)}},[c,p]),(0,t.jsx)(K,{asChild:!0,...f,children:(0,t.jsx)(eo,{id:d.triggerId,"aria-haspopup":"menu","aria-expanded":s.open,"aria-controls":d.contentId,"data-state":eD(s.open),...e,ref:(0,o.composeRefs)(a,d.onTriggerChange),onClick:t=>{e.onClick?.(t),e.disabled||t.defaultPrevented||(t.currentTarget.focus(),s.open||s.onOpenChange(!0))},onPointerMove:(0,n.composeEventHandlers)(e.onPointerMove,ek(t=>{i.onItemEnter(t),!t.defaultPrevented&&(e.disabled||s.open||u.current||(i.onPointerGraceIntentChange(null),u.current=window.setTimeout(()=>{s.onOpenChange(!0),m()},100)))})),onPointerLeave:(0,n.composeEventHandlers)(e.onPointerLeave,ek(e=>{m();let t=s.content?.getBoundingClientRect();if(t){let r=s.content?.dataset.side,n="right"===r,o=t[n?"left":"right"],a=t[n?"right":"left"];i.onPointerGraceIntentChange({area:[{x:e.clientX+(n?-5:5),y:e.clientY},{x:o,y:t.top},{x:a,y:t.top},{x:a,y:t.bottom},{x:o,y:t.bottom}],side:r}),window.clearTimeout(c.current),c.current=window.setTimeout(()=>i.onPointerGraceIntentChange(null),300)}else{if(i.onTriggerLeave(e),e.defaultPrevented)return;i.onPointerGraceIntentChange(null)}})),onKeyDown:(0,n.composeEventHandlers)(e.onKeyDown,t=>{let r=""!==i.searchRef.current;e.disabled||r&&" "===t.key||S[l.dir].includes(t.key)&&(s.onOpenChange(!0),s.content?.focus(),t.preventDefault())})})})});eM.displayName=eC;var eR="MenuSubContent",eS=r.forwardRef((e,a)=>{let s=z(B,e.__scopeMenu),{forceMount:l=s.forceMount,...d}=e,i=O(B,e.__scopeMenu),u=H(B,e.__scopeMenu),c=ex(eR,e.__scopeMenu),p=r.useRef(null),f=(0,o.useComposedRefs)(a,p);return(0,t.jsx)(E.Provider,{scope:e.__scopeMenu,children:(0,t.jsx)(g.Presence,{present:l||i.open,children:(0,t.jsx)(E.Slot,{scope:e.__scopeMenu,children:(0,t.jsx)(J,{id:c.contentId,"aria-labelledby":c.triggerId,...d,ref:f,align:"start",side:"rtl"===u.dir?"left":"right",disableOutsidePointerEvents:!1,disableOutsideScroll:!1,trapFocus:!1,onOpenAutoFocus:e=>{u.isUsingKeyboardRef.current&&p.current?.focus(),e.preventDefault()},onCloseAutoFocus:e=>e.preventDefault(),onFocusOutside:(0,n.composeEventHandlers)(e.onFocusOutside,e=>{e.target!==c.trigger&&i.onOpenChange(!1)}),onEscapeKeyDown:(0,n.composeEventHandlers)(e.onEscapeKeyDown,e=>{u.onClose(),e.preventDefault()}),onKeyDown:(0,n.composeEventHandlers)(e.onKeyDown,e=>{let t=e.currentTarget.contains(e.target),r=D[u.dir].includes(e.key);t&&r&&(i.onOpenChange(!1),c.trigger?.focus(),e.preventDefault())})})})})})});function eD(e){return e?"open":"closed"}function ej(e){return"indeterminate"===e}function eE(e){return ej(e)?"indeterminate":e?"checked":"unchecked"}function ek(e){return t=>"mouse"===t.pointerType?e(t):void 0}eS.displayName=eR;var eI="DropdownMenu",[eP,eN]=(0,a.createContextScope)(eI,[N]),eL=N(),[eT,e_]=eP(eI),eO=e=>{let{__scopeDropdownMenu:n,children:o,dir:a,open:l,defaultOpen:d,onOpenChange:i,modal:u=!0}=e,c=eL(n),p=r.useRef(null),[m,h]=(0,s.useControllableState)({prop:l,defaultProp:d??!1,onChange:i,caller:eI});return(0,t.jsx)(eT,{scope:n,triggerId:(0,f.useId)(),triggerRef:p,contentId:(0,f.useId)(),open:m,onOpenChange:h,onOpenToggle:r.useCallback(()=>h(e=>!e),[h]),modal:u,children:(0,t.jsx)(F,{...c,open:m,onOpenChange:h,dir:a,modal:u,children:o})})};eO.displayName=eI;var eA="DropdownMenuTrigger",eH=r.forwardRef((e,r)=>{let{__scopeDropdownMenu:a,disabled:s=!1,...d}=e,i=e_(eA,a),u=eL(a);return(0,t.jsx)(K,{asChild:!0,...u,children:(0,t.jsx)(l.Primitive.button,{type:"button",id:i.triggerId,"aria-haspopup":"menu","aria-expanded":i.open,"aria-controls":i.open?i.contentId:void 0,"data-state":i.open?"open":"closed","data-disabled":s?"":void 0,disabled:s,...d,ref:(0,o.composeRefs)(r,i.triggerRef),onPointerDown:(0,n.composeEventHandlers)(e.onPointerDown,e=>{!s&&0===e.button&&!1===e.ctrlKey&&(i.onOpenToggle(),i.open||e.preventDefault())}),onKeyDown:(0,n.composeEventHandlers)(e.onKeyDown,e=>{!s&&(["Enter"," "].includes(e.key)&&i.onOpenToggle(),"ArrowDown"===e.key&&i.onOpenChange(!0),["Enter"," ","ArrowDown"].includes(e.key)&&e.preventDefault())})})})});eH.displayName=eA;var eF=e=>{let{__scopeDropdownMenu:r,...n}=e,o=eL(r);return(0,t.jsx)(V,{...o,...n})};eF.displayName="DropdownMenuPortal";var eK="DropdownMenuContent",eG=r.forwardRef((e,o)=>{let{__scopeDropdownMenu:a,...s}=e,l=e_(eK,a),d=eL(a),i=r.useRef(!1);return(0,t.jsx)(Y,{id:l.contentId,"aria-labelledby":l.triggerId,...d,...s,ref:o,onCloseAutoFocus:(0,n.composeEventHandlers)(e.onCloseAutoFocus,e=>{i.current||l.triggerRef.current?.focus(),i.current=!1,e.preventDefault()}),onInteractOutside:(0,n.composeEventHandlers)(e.onInteractOutside,e=>{let t=e.detail.originalEvent,r=0===t.button&&!0===t.ctrlKey,n=2===t.button||r;(!l.modal||n)&&(i.current=!0)}),style:{...e.style,"--radix-dropdown-menu-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-dropdown-menu-content-available-width":"var(--radix-popper-available-width)","--radix-dropdown-menu-content-available-height":"var(--radix-popper-available-height)","--radix-dropdown-menu-trigger-width":"var(--radix-popper-anchor-width)","--radix-dropdown-menu-trigger-height":"var(--radix-popper-anchor-height)"}})});eG.displayName=eK;var eU=r.forwardRef((e,r)=>{let{__scopeDropdownMenu:n,...o}=e,a=eL(n);return(0,t.jsx)(Q,{...a,...o,ref:r})});eU.displayName="DropdownMenuGroup";var ez=r.forwardRef((e,r)=>{let{__scopeDropdownMenu:n,...o}=e,a=eL(n);return(0,t.jsx)(ee,{...a,...o,ref:r})});ez.displayName="DropdownMenuLabel";var eV=r.forwardRef((e,r)=>{let{__scopeDropdownMenu:n,...o}=e,a=eL(n);return(0,t.jsx)(en,{...a,...o,ref:r})});eV.displayName="DropdownMenuItem";var eB=r.forwardRef((e,r)=>{let{__scopeDropdownMenu:n,...o}=e,a=eL(n);return(0,t.jsx)(ea,{...a,...o,ref:r})});eB.displayName="DropdownMenuCheckboxItem";var eq=r.forwardRef((e,r)=>{let{__scopeDropdownMenu:n,...o}=e,a=eL(n);return(0,t.jsx)(ei,{...a,...o,ref:r})});eq.displayName="DropdownMenuRadioGroup";var eX=r.forwardRef((e,r)=>{let{__scopeDropdownMenu:n,...o}=e,a=eL(n);return(0,t.jsx)(ec,{...a,...o,ref:r})});eX.displayName="DropdownMenuRadioItem";var eY=r.forwardRef((e,r)=>{let{__scopeDropdownMenu:n,...o}=e,a=eL(n);return(0,t.jsx)(eh,{...a,...o,ref:r})});eY.displayName="DropdownMenuItemIndicator";var e$=r.forwardRef((e,r)=>{let{__scopeDropdownMenu:n,...o}=e,a=eL(n);return(0,t.jsx)(eg,{...a,...o,ref:r})});e$.displayName="DropdownMenuSeparator";var eW=r.forwardRef((e,r)=>{let{__scopeDropdownMenu:n,...o}=e,a=eL(n);return(0,t.jsx)(ev,{...a,...o,ref:r})});eW.displayName="DropdownMenuArrow";var eZ=e=>{let{__scopeDropdownMenu:r,children:n,open:o,onOpenChange:a,defaultOpen:l}=e,d=eL(r),[i,u]=(0,s.useControllableState)({prop:o,defaultProp:l??!1,onChange:a,caller:"DropdownMenuSub"});return(0,t.jsx)(eb,{...d,open:i,onOpenChange:u,children:n})},eJ=r.forwardRef((e,r)=>{let{__scopeDropdownMenu:n,...o}=e,a=eL(n);return(0,t.jsx)(eM,{...a,...o,ref:r})});eJ.displayName="DropdownMenuSubTrigger";var eQ=r.forwardRef((e,r)=>{let{__scopeDropdownMenu:n,...o}=e,a=eL(n);return(0,t.jsx)(eS,{...a,...o,ref:r,style:{...e.style,"--radix-dropdown-menu-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-dropdown-menu-content-available-width":"var(--radix-popper-available-width)","--radix-dropdown-menu-content-available-height":"var(--radix-popper-available-height)","--radix-dropdown-menu-trigger-width":"var(--radix-popper-anchor-width)","--radix-dropdown-menu-trigger-height":"var(--radix-popper-anchor-height)"}})});eQ.displayName="DropdownMenuSubContent",e.s(["Arrow",()=>eW,"CheckboxItem",()=>eB,"Content",()=>eG,"DropdownMenu",()=>eO,"DropdownMenuArrow",()=>eW,"DropdownMenuCheckboxItem",()=>eB,"DropdownMenuContent",()=>eG,"DropdownMenuGroup",()=>eU,"DropdownMenuItem",()=>eV,"DropdownMenuItemIndicator",()=>eY,"DropdownMenuLabel",()=>ez,"DropdownMenuPortal",()=>eF,"DropdownMenuRadioGroup",()=>eq,"DropdownMenuRadioItem",()=>eX,"DropdownMenuSeparator",()=>e$,"DropdownMenuSub",()=>eZ,"DropdownMenuSubContent",()=>eQ,"DropdownMenuSubTrigger",()=>eJ,"DropdownMenuTrigger",()=>eH,"Group",()=>eU,"Item",()=>eV,"ItemIndicator",()=>eY,"Label",()=>ez,"Portal",()=>eF,"RadioGroup",()=>eq,"RadioItem",()=>eX,"Root",()=>eO,"Separator",()=>e$,"Sub",()=>eZ,"SubContent",()=>eQ,"SubTrigger",()=>eJ,"Trigger",()=>eH,"createDropdownMenuScope",()=>eN],61920);var e0=e.i(61920),e0=e0,e1=e.i(23925),e2=e.i(76016),e5=e.i(95812),e4=e.i(31777);let e6=e0.Root,e3=e0.Trigger;e0.Group;let e8=e0.Portal,e9=e0.Sub;e0.RadioGroup;let e7=r.forwardRef(({className:e,inset:r,children:n,...o},a)=>(0,t.jsxs)(e0.SubTrigger,{ref:a,className:(0,e4.cn)("focus:bg-accent data-[state=open]:bg-accent flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none select-none [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",r&&"ps-8",e),...o,children:[n,(0,t.jsx)(e2.ChevronRight,{className:"ms-auto"})]}));e7.displayName=e0.SubTrigger.displayName;let te=r.forwardRef(({className:e,...r},n)=>(0,t.jsx)(e0.SubContent,{ref:n,className:(0,e4.cn)("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] overflow-hidden rounded-md border p-1 shadow-lg",e),...r}));te.displayName=e0.SubContent.displayName;let tt=r.forwardRef(({className:e,sideOffset:r=4,...n},o)=>(0,t.jsx)(e0.Portal,{children:(0,t.jsx)(e0.Content,{ref:o,sideOffset:r,className:(0,e4.cn)("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] overflow-hidden rounded-md border p-1 shadow-md",e),...n})}));tt.displayName=e0.Content.displayName;let tr=r.forwardRef(({className:e,inset:r,...n},o)=>(0,t.jsx)(e0.Item,{ref:o,className:(0,e4.cn)("focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm transition-colors outline-none select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&>svg]:size-4 [&>svg]:shrink-0",r&&"ps-8",e),...n}));tr.displayName=e0.Item.displayName,r.forwardRef(({className:e,children:r,checked:n,...o},a)=>(0,t.jsxs)(e0.CheckboxItem,{ref:a,className:(0,e4.cn)("focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center rounded-sm py-1.5 ps-8 pe-2 text-sm transition-colors outline-none select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50",e),checked:n,...o,children:[(0,t.jsx)("span",{className:"absolute start-2 flex h-3.5 w-3.5 items-center justify-center",children:(0,t.jsx)(e0.ItemIndicator,{children:(0,t.jsx)(e1.Check,{className:"h-4 w-4"})})}),r]})).displayName=e0.CheckboxItem.displayName,r.forwardRef(({className:e,children:r,...n},o)=>(0,t.jsxs)(e0.RadioItem,{ref:o,className:(0,e4.cn)("focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center rounded-sm py-1.5 ps-8 pe-2 text-sm transition-colors outline-none select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50",e),...n,children:[(0,t.jsx)("span",{className:"absolute start-2 flex h-3.5 w-3.5 items-center justify-center",children:(0,t.jsx)(e0.ItemIndicator,{children:(0,t.jsx)(e5.Circle,{className:"h-2 w-2 fill-current"})})}),r]})).displayName=e0.RadioItem.displayName;let tn=r.forwardRef(({className:e,inset:r,...n},o)=>(0,t.jsx)(e0.Label,{ref:o,className:(0,e4.cn)("px-2 py-1.5 text-sm font-semibold",r&&"ps-8",e),...n}));tn.displayName=e0.Label.displayName;let to=r.forwardRef(({className:e,...r},n)=>(0,t.jsx)(e0.Separator,{ref:n,className:(0,e4.cn)("bg-muted -mx-1 my-1 h-px",e),...r}));to.displayName=e0.Separator.displayName,e.s(["DropdownMenu",()=>e6,"DropdownMenuContent",()=>tt,"DropdownMenuItem",()=>tr,"DropdownMenuLabel",()=>tn,"DropdownMenuPortal",()=>e8,"DropdownMenuSeparator",()=>to,"DropdownMenuSub",()=>e9,"DropdownMenuSubContent",()=>te,"DropdownMenuSubTrigger",()=>e7,"DropdownMenuTrigger",()=>e3],70646)}]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,15203,e=>{"use strict";var t=e.i(20314),r=e.i(79054),a=e.i(31406),s=e.i(60112),i=e.i(21023);let o=(0,i.createServerReference)("402a78d6e80152f5300bd501ed84533c16774ba44f",i.callServer,void 0,i.findSourceMapURL,"createFeature");e.i(41001);var l=e.i(64780),n=e.i(16868),c=e.i(83843),d=e.i(97667),p=e.i(53360),h=e.i(55016),u=e.i(91925),m=e.i(83428),x=e.i(81542),f=e.i(70471),g=e.i(12103),b=e.i(59311),j=e.i(31777),w=e.i(8361);e.i(1650);var v=e.i(11495),C=e.i(45811),y=e.i(35364),k=e.i(98127),N=e.i(48306),D=e.i(41957),T=e.i(81846),S=e.i(90382),P=e.i(51911),F=e.i(2828),L=e.i(30153);e.i(50032);var E=e.i(86254);let z=(0,i.createServerReference)("408a22558791db850172592845df6fdf5f1cdefcb3",i.callServer,void 0,i.findSourceMapURL,"getViewerPermission");var R=e.i(41413),I=e.i(25235),M=e.i(78521);e.i(13322);var U=e.i(61201),A=e.i(75921),O=e.i(5996),B=e.i(42076);let $=new Set([".png",".jpg",".jpeg",".gif",".webp",".svg",".bmp",".ico",".pdf",".doc",".docx",".xls",".xlsx",".ppt",".pptx",".txt",".md",".csv",".json",".yaml",".yml",".xml",".ts",".tsx",".js",".jsx",".py",".rb",".go",".rs",".java",".c",".cpp",".h",".hpp",".cs",".swift",".kt",".html",".css",".scss",".less",".sh",".bash",".zsh",".fish",".toml",".ini",".cfg",".conf",".env",".zip",".tar",".gz",".log"]),G={allowPrd:!1,allowPlan:!1,allowMerge:!1};function q({open:e,onClose:a,onSubmit:s,repositoryPath:i,isSubmitting:o=!1,workflowDefaults:c,features:d,repositories:u,initialParentId:m,currentAgentType:k,currentModel:S,initialDescription:I,canPushDirectly:M}){let U=(0,w.useSoundAction)("create"),{t:A}=(0,l.useTranslation)("web"),O=i&&(!u||0===u.length||u.some(e=>e.path===i))?i:"",q=c?.approvalGates??G,Z=c?.push??!1,J=c?.openPr??!1,V=c?.ciWatchEnabled!==!1,H=c?.enableEvidence??!1,Q=c?.commitEvidence??!1,X=c?.fast!==!1,[Y,_]=(0,r.useState)(I??"");(0,r.useEffect)(()=>{I&&_(I)},[I]);let[ee,et]=(0,r.useState)([]),[er,ea]=(0,r.useState)({...q}),[es,ei]=(0,r.useState)(Z),[eo,el]=(0,r.useState)(J),[en,ec]=(0,r.useState)(c?.ciWatchEnabled!==!1),[ed,ep]=(0,r.useState)(H),[eh,eu]=(0,r.useState)(Q),[em,ex]=(0,r.useState)(void 0),[ef,eg]=(0,r.useState)(X),[eb,ej]=(0,r.useState)(!1),[ew,ev]=(0,r.useState)(!1),[eC,ey]=(0,r.useState)(!0),[ek,eN]=(0,r.useState)(!0),[eD,eT]=(0,r.useState)(c?.injectSkills??!1),[eS,eP]=(0,r.useState)(void 0),[eF,eL]=(0,r.useState)(void 0),[eE,ez]=(0,r.useState)(O||void 0),[eR,eI]=(0,r.useState)(u??[]),[eM,eU]=(0,r.useState)(!1),[eA,eO]=(0,r.useState)(null),[eB,e$]=(0,r.useState)(!1),eG=(0,r.useRef)(crypto.randomUUID()),eq=(0,r.useRef)(0),eK=(0,r.useRef)(null);(0,r.useEffect)(()=>{c&&(ea({...c.approvalGates}),ei(c.push),el(c.openPr),ec(!1!==c.ciWatchEnabled),ep(c.enableEvidence),eu(c.commitEvidence),eg(!1!==c.fast),eT(c.injectSkills??!1))},[c]),(0,r.useEffect)(()=>{eI(u??[])},[u]),(0,r.useEffect)(()=>{e&&m&&ex(m)},[e,m]);let[eW,eZ]=(0,r.useState)(M??!1);(0,r.useEffect)(()=>{eZ(M??!1)},[M]);let eJ=(0,r.useRef)(eE);(0,r.useEffect)(()=>{eE&&eE!==eJ.current&&(eJ.current=eE,z(eE).then(e=>eZ(e.canPushDirectly)).catch(()=>eZ(!1)))},[eE]),(0,r.useEffect)(()=>{eW&&(ev(!1),ei(Z),el(J),ey(!0))},[eW,Z,J]);let eV=(0,r.useCallback)(()=>{_(""),et([]),ea({...q}),ei(Z),el(J),ec(V),ep(H),eu(Q),ex(void 0),ez(O||void 0),eI(u??[]),eg(X),ej(!1),ev(!1),ey(!0),eN(!0),eP(void 0),eL(void 0),eO(null),eq.current=0,eU(!1)},[q,Z,J,H,V,Q,X,O,u]),eH=""!==Y.trim()||ee.length>0,{attemptClose:eQ}=(0,L.useGuardedDrawerClose)({open:e,isDirty:eH,onClose:a,onReset:eV}),eX=(0,r.useCallback)(async e=>{for(let t of(eO(null),e)){if(t.size>0xa00000)return void eO(`"${t.name}" exceeds 10 MB limit`);let e=function(e){let t=e.lastIndexOf(".");return t>=0?e.slice(t).toLowerCase():""}(t.name);if(e&&!$.has(e))return void eO(`File type "${e}" is not allowed`)}for(let t of e){let e=crypto.randomUUID();et(r=>[...r,{id:e,name:t.name,size:t.size,mimeType:t.type||"application/octet-stream",path:"",loading:!0}]);try{let r=new FormData;r.append("file",t),r.append("sessionId",eG.current);let a=await fetch("/api/attachments/upload",{method:"POST",body:r});if(!a.ok){let t=await a.json().catch(()=>({error:"Upload failed"}));et(t=>t.filter(t=>t.id!==e)),eO(t.error??"Upload failed");return}let s=await a.json();et(t=>t.some(t=>t.id!==e&&t.path===s.path)?t.filter(t=>t.id!==e):t.map(t=>t.id===e?{...s,id:e,loading:!1}:t))}catch{et(t=>t.filter(t=>t.id!==e)),eO("Upload failed")}}},[]),eY=(0,r.useCallback)(e=>{e.preventDefault(),e.stopPropagation(),eq.current+=1,1===eq.current&&eU(!0)},[]),e_=(0,r.useCallback)(e=>{e.preventDefault(),e.stopPropagation(),eq.current-=1,0===eq.current&&eU(!1)},[]),e0=(0,r.useCallback)(e=>{e.preventDefault(),e.stopPropagation()},[]),e1=(0,r.useCallback)(e=>{e.preventDefault(),e.stopPropagation(),eq.current=0,eU(!1);let t=Array.from(e.dataTransfer.files);t.length>0&&eX(t)},[eX]),e5=(0,r.useCallback)(e=>{let t=e.clipboardData?.items;if(!t)return;let r=[];for(let e of Array.from(t))if("file"===e.kind){let t=e.getAsFile();t&&r.push(t)}r.length>0&&(e.preventDefault(),eX(r))},[eX]),e2=(0,r.useCallback)(e=>{if(e.preventDefault(),!Y.trim())return;let t=eE??O;t&&(U.play(),s({description:Y.trim(),attachments:ee.filter(e=>!e.loading),repositoryPath:t,approvalGates:{allowPrd:er.allowPrd??!1,allowPlan:er.allowPlan??!1,allowMerge:er.allowMerge??!1},push:!!ew||es||eo,openPr:!!ew||eo,ciWatchEnabled:en,enableEvidence:ed,commitEvidence:eh,fast:ef,forkAndPr:ew,commitSpecs:eC,rebaseBeforeBranch:ek,injectSkills:eD,...eb?{pending:eb}:{},...eS?{agentType:eS}:{},...eF?{model:eF}:{},...em?{parentId:em}:{},sessionId:eG.current}),eV())},[Y,ee,er,eE,O,s,es,eo,ed,en,eh,ef,ew,eC,ek,eD,eb,eS,eF,em,U,eV]),e3=(0,r.useCallback)(async()=>{try{let e=await (0,B.pickFiles)();if(!e)return;for(let t of e){let e=crypto.randomUUID();et(r=>[...r,{id:e,name:t.name,size:t.size,mimeType:"application/octet-stream",path:"",loading:!0}]);try{let r=await fetch("/api/attachments/upload-from-path",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:t.path,sessionId:eG.current})});if(!r.ok){let t=await r.json().catch(()=>({error:"Upload failed"}));et(t=>t.filter(t=>t.id!==e)),eO(t.error??"Upload failed");return}let a=await r.json();et(t=>t.some(t=>t.id!==e&&t.path===a.path)?t.filter(t=>t.id!==e):t.map(t=>t.id===e?{...a,id:e,loading:!1}:t))}catch{et(t=>t.filter(t=>t.id!==e)),eO("Upload failed")}}}catch{}},[]),e4=(0,r.useCallback)(e=>{et(t=>t.filter(t=>t.id!==e))},[]),e8=(0,r.useCallback)((e,t)=>{et(r=>r.map(r=>r.id===e?{...r,notes:t}:r))},[]),e6=(0,r.useRef)(null),e7=(0,r.useCallback)(e=>{(e.ctrlKey||e.metaKey)&&"Enter"===e.key&&(e.preventDefault(),e6.current?.requestSubmit())},[]),e9=(0,r.useCallback)(()=>{e$(!0)},[]),te=(0,r.useCallback)(()=>{setTimeout(()=>{let e=eK.current?.contains(document.activeElement),t=eK.current?.querySelector('[aria-expanded="true"]')!==null;e||t||e$(!1)},0)},[]),tt=d&&d.length>0,tr=!O&&!eE,ta=!O&&void 0!==u,ts=[{id:"allowPrd",label:A("createDrawer.prd"),description:A("createDrawer.prdDescription")},{id:"allowPlan",label:A("createDrawer.plan"),description:A("createDrawer.planDescription")},{id:"allowMerge",label:A("createDrawer.merge"),description:A("createDrawer.mergeDescription")}];return(0,t.jsx)(v.BaseDrawer,{open:e,onClose:eQ,size:"md",modal:!1,dismissOnOutsideClick:!0,"data-testid":"feature-create-drawer",header:(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)("div",{className:"h-2.5 w-2.5 shrink-0 rounded-full bg-blue-500"}),(0,t.jsx)(C.DrawerTitle,{children:A("createDrawer.title")})]}),o?(0,t.jsx)(C.DrawerDescription,{asChild:!0,children:(0,t.jsx)("div",{children:(0,t.jsx)(T.Badge,{variant:"secondary",children:A("createDrawer.creating")})})}):null]}),footer:(0,t.jsxs)("div",{className:"flex flex-row justify-end gap-2",children:[(0,t.jsx)(y.Button,{variant:"outline",onClick:eQ,disabled:o,children:A("createDrawer.cancel")}),(0,t.jsx)(y.Button,{type:"submit",form:"create-feature-form",disabled:!Y.trim()||o||tr,children:o?A("createDrawer.creating"):A("createDrawer.createFeature")})]}),children:(0,t.jsx)("div",{className:"overflow-y-auto p-4",children:(0,t.jsx)(F.TooltipProvider,{delayDuration:400,children:(0,t.jsxs)("form",{ref:e6,id:"create-feature-form",onSubmit:e2,onKeyDown:e7,className:"flex flex-col gap-4",children:[ta?(0,t.jsxs)("div",{className:"flex flex-col gap-1.5","data-testid":"repo-selector-section",children:[(0,t.jsx)(D.Label,{className:"text-muted-foreground text-xs font-semibold tracking-wider",children:A("createDrawer.repository")}),(0,t.jsx)(W,{repositories:eR,value:eE,onChange:ez,onAddRepository:e=>{eI(t=>[...t,e]),ez(e.path)},disabled:o})]}):O?(0,t.jsxs)("div",{className:"flex flex-col gap-1.5","data-testid":"repo-readonly-section",children:[(0,t.jsx)(D.Label,{className:"text-muted-foreground text-xs font-semibold tracking-wider",children:A("createDrawer.repository")}),(0,t.jsx)("p",{className:"text-sm","data-testid":"repo-readonly-label",children:u?.find(e=>e.path===O)?.name??O.split("/").pop()})]}):null,(0,t.jsxs)("div",{role:"region","aria-label":A("createDrawer.fileDropZone"),"data-drag-over":eM?"true":"false",onDragEnter:eY,onDragLeave:e_,onDragOver:e0,onDrop:e1,className:(0,j.cn)("flex flex-col gap-1.5 rounded-md border-2 border-transparent p-1 transition-colors",eM&&"border-primary/50 bg-primary/5"),children:[(0,t.jsx)(D.Label,{htmlFor:"feature-description",className:"text-muted-foreground text-xs font-semibold tracking-wider",children:A("createDrawer.describeFeature")}),(0,t.jsxs)("div",{ref:eK,onFocus:e9,onBlur:te,className:(0,j.cn)("border-input flex h-56 flex-col overflow-hidden rounded-md border shadow-xs transition-[color,box-shadow]",eB&&"ring-ring/50 border-ring ring-[3px]"),children:[(0,t.jsx)(N.Textarea,{id:"feature-description",placeholder:A("createDrawer.featurePlaceholder"),value:Y,onChange:e=>_(e.target.value),onPaste:e5,required:!0,disabled:o,className:"min-h-0 flex-1 resize-none rounded-none border-0 shadow-none focus-visible:ring-0"}),ee.length>0&&(0,t.jsx)("div",{className:"flex flex-wrap items-center gap-1.5 px-3 py-2",children:ee.map(e=>(0,t.jsx)(E.AttachmentChip,{name:e.name,size:e.size,mimeType:e.mimeType,path:e.path,onRemove:()=>e4(e.id),disabled:o,loading:e.loading,notes:e.notes,onNotesChange:t=>e8(e.id,t)},e.id))}),eA?(0,t.jsx)("p",{className:"text-destructive px-3 pb-2 text-xs",children:eA}):null,(0,t.jsxs)("div",{className:"border-input flex items-center gap-3 border-t px-3 py-1.5",children:[(0,t.jsx)(R.AgentModelPicker,{initialAgentType:eS??k??"claude-code",initialModel:eF??S??"claude-sonnet-4-6",mode:"override",onAgentModelChange:(e,t)=>{eP(e),eL(t)},disabled:o,className:"w-55"}),(0,t.jsxs)(F.Tooltip,{children:[(0,t.jsx)(F.TooltipTrigger,{asChild:!0,children:(0,t.jsxs)("div",{className:"ml-auto flex cursor-pointer items-center gap-2",children:[(0,t.jsx)(P.Switch,{id:"pending-mode",checked:eb,onCheckedChange:ej,disabled:o}),(0,t.jsxs)(D.Label,{htmlFor:"pending-mode",className:"flex cursor-pointer items-center gap-1 text-sm font-medium",children:[(0,t.jsx)(h.Clock,{className:"h-3.5 w-3.5"}),A("createDrawer.pendingMode")]})]})}),(0,t.jsx)(F.TooltipContent,{side:"bottom",children:A("createDrawer.pendingModeDescription")})]}),(0,t.jsxs)(F.Tooltip,{children:[(0,t.jsx)(F.TooltipTrigger,{asChild:!0,children:(0,t.jsxs)("div",{className:"flex cursor-pointer items-center gap-2",children:[(0,t.jsx)(P.Switch,{id:"fast-mode",checked:ef,onCheckedChange:eg,disabled:o}),(0,t.jsxs)(D.Label,{htmlFor:"fast-mode",className:"flex cursor-pointer items-center gap-1 text-sm font-medium",children:[(0,t.jsx)(p.Zap,{className:"h-3.5 w-3.5"}),A("createDrawer.fastModeLabel")]})]})}),(0,t.jsx)(F.TooltipContent,{side:"bottom",children:A("createDrawer.fastModeDescription")})]}),(0,t.jsxs)(F.Tooltip,{children:[(0,t.jsx)(F.TooltipTrigger,{asChild:!0,children:(0,t.jsx)("button",{type:"button",onClick:e3,disabled:o,"aria-label":A("chat.attachFiles"),className:"text-muted-foreground hover:text-foreground cursor-pointer rounded p-1 transition-colors",children:(0,t.jsx)(n.PaperclipIcon,{className:"h-4 w-4"})})}),(0,t.jsx)(F.TooltipContent,{side:"bottom",children:A("chat.attachFiles")})]})]})]})]}),tt&&void 0!==m?(0,t.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,t.jsx)(D.Label,{htmlFor:"parent-feature",className:"text-muted-foreground text-xs font-semibold tracking-wider",children:A("createDrawer.parentFeature")}),(0,t.jsx)(K,{features:d,value:em,onChange:ex,disabled:o})]}):null,(0,t.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,t.jsxs)("div",{className:"border-input flex items-center gap-4 rounded-md border px-3 py-2.5",children:[(0,t.jsxs)(F.Tooltip,{children:[(0,t.jsx)(F.TooltipTrigger,{asChild:!0,children:(0,t.jsx)("span",{className:"text-muted-foreground w-16 shrink-0 cursor-default text-xs font-semibold tracking-wider",children:A("createDrawer.approve")})}),(0,t.jsx)(F.TooltipContent,{side:"bottom",children:A("createDrawer.approveDescription")})]}),(0,t.jsx)("div",{className:"flex flex-1 items-center gap-4",children:ts.map(e=>(0,t.jsxs)(F.Tooltip,{children:[(0,t.jsx)(F.TooltipTrigger,{asChild:!0,children:(0,t.jsxs)("div",{className:"flex cursor-pointer items-center gap-1.5",children:[(0,t.jsx)(P.Switch,{id:`approve-${e.id}`,size:"sm",checked:er[e.id]??!1,onCheckedChange:t=>ea(r=>({...r,[e.id]:t})),disabled:o||ef&&("allowPrd"===e.id||"allowPlan"===e.id)}),(0,t.jsx)(D.Label,{htmlFor:`approve-${e.id}`,className:"cursor-pointer text-xs font-medium",children:e.label})]})}),(0,t.jsx)(F.TooltipContent,{side:"bottom",children:ef&&("allowPrd"===e.id||"allowPlan"===e.id)?A("createDrawer.skippedInFastMode"):e.description})]},e.id))}),(0,t.jsxs)(F.Tooltip,{children:[(0,t.jsx)(F.TooltipTrigger,{asChild:!0,children:(0,t.jsx)("button",{type:"button",onClick:()=>{let e=ts.every(e=>er[e.id]),t={};for(let r of ts)t[r.id]=!e;ea(t)},disabled:o,className:(0,j.cn)("text-muted-foreground hover:text-foreground cursor-pointer rounded px-1.5 py-0.5 text-[10px] font-semibold tracking-wider uppercase transition-colors",ts.every(e=>er[e.id])&&"text-primary"),children:A("createDrawer.all")})}),(0,t.jsx)(F.TooltipContent,{side:"bottom",children:A("createDrawer.toggleAllApprovalGates")})]})]}),(0,t.jsxs)("div",{className:"border-input flex items-center gap-4 rounded-md border px-3 py-2.5",children:[(0,t.jsxs)(F.Tooltip,{children:[(0,t.jsx)(F.TooltipTrigger,{asChild:!0,children:(0,t.jsx)("span",{className:"text-muted-foreground w-16 shrink-0 cursor-default text-xs font-semibold tracking-wider",children:A("createDrawer.evidence")})}),(0,t.jsx)(F.TooltipContent,{side:"bottom",children:A("createDrawer.evidenceDescription")})]}),(0,t.jsxs)("div",{className:"flex flex-1 items-center gap-4",children:[(0,t.jsxs)(F.Tooltip,{children:[(0,t.jsx)(F.TooltipTrigger,{asChild:!0,children:(0,t.jsxs)("div",{className:"flex cursor-pointer items-center gap-1.5",children:[(0,t.jsx)(P.Switch,{id:"enable-evidence",size:"sm",checked:ed,onCheckedChange:e=>{ep(e),e||eu(!1)},disabled:o}),(0,t.jsx)(D.Label,{htmlFor:"enable-evidence",className:"cursor-pointer text-xs font-medium",children:A("createDrawer.collect")})]})}),(0,t.jsx)(F.TooltipContent,{side:"bottom",children:A("createDrawer.collectDescription")})]}),(0,t.jsxs)(F.Tooltip,{children:[(0,t.jsx)(F.TooltipTrigger,{asChild:!0,children:(0,t.jsxs)("div",{className:"flex cursor-pointer items-center gap-1.5",children:[(0,t.jsx)(P.Switch,{id:"commit-evidence",size:"sm",checked:eh,onCheckedChange:eu,disabled:o||!ed||!eo&&!ew}),(0,t.jsx)(D.Label,{htmlFor:"commit-evidence",className:(0,j.cn)("cursor-pointer text-xs font-medium",(!ed||!eo&&!ew)&&"opacity-50"),children:A("createDrawer.addToPr")})]})}),(0,t.jsx)(F.TooltipContent,{side:"bottom",children:eo||ew?ed?A("createDrawer.addToPrDescription"):A("createDrawer.requiresEvidence"):A("createDrawer.requiresPr")})]})]})]}),(0,t.jsxs)("div",{className:"border-input flex items-center gap-4 rounded-md border px-3 py-2.5",children:[(0,t.jsxs)(F.Tooltip,{children:[(0,t.jsx)(F.TooltipTrigger,{asChild:!0,children:(0,t.jsx)("span",{className:"text-muted-foreground w-16 shrink-0 cursor-default text-xs font-semibold tracking-wider",children:A("createDrawer.skills")})}),(0,t.jsx)(F.TooltipContent,{side:"bottom",children:A("createDrawer.skillsDescription")})]}),(0,t.jsx)("div",{className:"flex flex-1 items-center gap-4",children:(0,t.jsxs)(F.Tooltip,{children:[(0,t.jsx)(F.TooltipTrigger,{asChild:!0,children:(0,t.jsxs)("div",{className:"flex cursor-pointer items-center gap-1.5",children:[(0,t.jsx)(P.Switch,{id:"inject-skills",size:"sm",checked:eD,onCheckedChange:eT,disabled:o}),(0,t.jsxs)(D.Label,{htmlFor:"inject-skills",className:"flex cursor-pointer items-center gap-1 text-xs font-medium",children:[(0,t.jsx)(g.Puzzle,{className:"h-3 w-3"}),A("createDrawer.injectSkills")]})]})}),(0,t.jsx)(F.TooltipContent,{side:"bottom",children:A("createDrawer.injectSkillsDescription")})]})})]}),(0,t.jsxs)("div",{className:"border-input flex items-start gap-4 rounded-md border px-3 py-2.5",children:[(0,t.jsx)("span",{className:"text-muted-foreground w-16 shrink-0 pt-0.5 text-xs font-semibold tracking-wider",children:A("createDrawer.git")}),(0,t.jsxs)("div",{className:"flex flex-1 flex-wrap items-center gap-4",children:[(0,t.jsxs)(F.Tooltip,{children:[(0,t.jsx)(F.TooltipTrigger,{asChild:!0,children:(0,t.jsxs)("div",{className:"flex cursor-pointer items-center gap-1.5",children:[(0,t.jsx)(P.Switch,{id:"push",size:"sm",checked:!!ew||es||eo,onCheckedChange:e=>{ei(e),!e&&eo&&el(!1)},disabled:o||ew}),(0,t.jsx)(D.Label,{htmlFor:"push",className:(0,j.cn)("cursor-pointer text-xs font-medium",ew&&"opacity-50"),children:A("createDrawer.push")})]})}),(0,t.jsx)(F.TooltipContent,{side:"bottom",children:ew?"Enabled — contributing to upstream":A("createDrawer.pushDescription")})]}),(0,t.jsxs)(F.Tooltip,{children:[(0,t.jsx)(F.TooltipTrigger,{asChild:!0,children:(0,t.jsxs)("div",{className:"flex cursor-pointer items-center gap-1.5",children:[(0,t.jsx)(P.Switch,{id:"open-pr",size:"sm",checked:!!ew||eo,onCheckedChange:e=>{el(e),e||eu(!1)},disabled:o||ew}),(0,t.jsx)(D.Label,{htmlFor:"open-pr",className:(0,j.cn)("cursor-pointer text-xs font-medium",ew&&"opacity-50"),children:A("createDrawer.pr")})]})}),(0,t.jsx)(F.TooltipContent,{side:"bottom",children:ew?"Enabled — contributing to upstream":A("createDrawer.prDescription")})]}),(0,t.jsxs)(F.Tooltip,{children:[(0,t.jsx)(F.TooltipTrigger,{asChild:!0,children:(0,t.jsxs)("div",{className:"flex cursor-pointer items-center gap-1.5",children:[(0,t.jsx)(P.Switch,{id:"ci-watch",size:"sm",checked:en,onCheckedChange:ec,disabled:o}),(0,t.jsx)(D.Label,{htmlFor:"ci-watch",className:"cursor-pointer text-xs font-medium",children:A("createDrawer.watch")})]})}),(0,t.jsx)(F.TooltipContent,{side:"bottom",children:A("createDrawer.watchDescription")})]}),(0,t.jsx)("div",{className:"bg-border h-4 w-px shrink-0"}),(0,t.jsxs)(F.Tooltip,{children:[(0,t.jsx)(F.TooltipTrigger,{asChild:!0,children:(0,t.jsxs)("div",{className:"flex cursor-pointer items-center gap-1.5",children:[(0,t.jsx)(P.Switch,{id:"rebase-before-branch",size:"sm",checked:ek,onCheckedChange:eN,disabled:o}),(0,t.jsxs)(D.Label,{htmlFor:"rebase-before-branch",className:"flex cursor-pointer items-center gap-1 text-xs font-medium",children:[(0,t.jsx)(b.RefreshCw,{className:"h-3 w-3"}),A("createDrawer.sync")]})]})}),(0,t.jsx)(F.TooltipContent,{side:"bottom",children:A("createDrawer.syncDescription")})]}),(0,t.jsxs)(F.Tooltip,{children:[(0,t.jsx)(F.TooltipTrigger,{asChild:!0,children:(0,t.jsxs)("div",{className:"flex cursor-pointer items-center gap-1.5",children:[(0,t.jsx)(P.Switch,{id:"commit-specs",size:"sm",checked:eC,onCheckedChange:ey,disabled:o}),(0,t.jsxs)(D.Label,{htmlFor:"commit-specs",className:"flex cursor-pointer items-center gap-1 text-xs font-medium",children:[(0,t.jsx)(f.FileText,{className:"h-3 w-3"}),A("createDrawer.commitSpecs")]})]})}),(0,t.jsx)(F.TooltipContent,{side:"bottom",children:A("createDrawer.commitSpecsDescription")})]}),!eW&&(0,t.jsxs)(F.Tooltip,{children:[(0,t.jsx)(F.TooltipTrigger,{asChild:!0,children:(0,t.jsxs)("div",{className:"flex cursor-pointer items-center gap-1.5",children:[(0,t.jsx)(P.Switch,{id:"fork-and-pr",size:"sm",checked:ew,onCheckedChange:e=>{ev(e),e&&ey(!1)},disabled:o}),(0,t.jsxs)(D.Label,{htmlFor:"fork-and-pr",className:"flex cursor-pointer items-center gap-1 text-xs font-medium",children:[(0,t.jsx)(x.GitFork,{className:"h-3 w-3"}),A("createDrawer.forkAndPr")]})]})}),(0,t.jsx)(F.TooltipContent,{side:"bottom",children:A("createDrawer.forkAndPrDescription")})]})]})]})]})]})})})})}function K({features:e,value:a,onChange:s,disabled:i}){let{t:o}=(0,l.useTranslation)("web"),[n,p]=(0,r.useState)(!1),[h,u]=(0,r.useState)(""),m=(0,r.useRef)(null),x=e.find(e=>e.id===a),f=h.trim()?e.filter(e=>e.name.toLowerCase().includes(h.toLowerCase())||e.id.toLowerCase().includes(h.toLowerCase())):e,g=(0,r.useCallback)(e=>{s(e),p(!1),u("")},[s]);return(0,r.useEffect)(()=>{n?setTimeout(()=>m.current?.focus(),0):u("")},[n]),(0,t.jsxs)(S.Popover,{open:n,onOpenChange:p,children:[(0,t.jsx)(S.PopoverTrigger,{asChild:!0,children:(0,t.jsxs)("button",{id:"parent-feature",type:"button",role:"combobox","aria-expanded":n,"aria-label":"Parent Feature",disabled:i,"data-testid":"parent-feature-combobox",className:(0,j.cn)("border-input bg-background ring-offset-background focus:ring-ring flex h-9 w-full items-center justify-between rounded-md border px-3 py-2 text-sm focus:ring-2 focus:ring-offset-2 focus:outline-none disabled:cursor-not-allowed disabled:opacity-50",!x&&"text-muted-foreground"),children:[(0,t.jsx)("span",{className:"truncate",children:x?`${x.name} (${x.id.slice(0,8)})`:o("createDrawer.selectParent")}),(0,t.jsx)(c.ChevronsUpDown,{className:"ms-2 h-4 w-4 shrink-0 opacity-50"})]})}),(0,t.jsx)(S.PopoverContent,{className:"w-80 p-0",align:"start","data-testid":"parent-feature-combobox-content",children:(0,t.jsxs)("div",{className:"flex flex-col",children:[(0,t.jsx)("div",{className:"border-b p-2",children:(0,t.jsx)(k.Input,{ref:m,placeholder:o("createDrawer.searchFeatures"),value:h,onChange:e=>u(e.target.value),className:"h-8 border-0 p-0 text-sm shadow-none focus-visible:ring-0","data-testid":"parent-feature-search"})}),(0,t.jsxs)("div",{className:"max-h-48 overflow-y-auto py-1",role:"listbox","aria-label":"Features",children:[(0,t.jsxs)("button",{type:"button",role:"option","aria-selected":void 0===a,onClick:()=>g(void 0),className:(0,j.cn)("hover:bg-accent hover:text-accent-foreground flex w-full items-center gap-2 px-3 py-2 text-sm",void 0===a&&"bg-accent/50"),"data-testid":"parent-feature-option-none",children:[(0,t.jsx)(d.CheckIcon,{className:(0,j.cn)("h-4 w-4 shrink-0",void 0!==a&&"invisible")}),(0,t.jsx)("span",{className:"text-muted-foreground italic",children:o("createDrawer.noParent")})]}),0===f.length&&h?(0,t.jsx)("p",{className:"text-muted-foreground px-3 py-2 text-sm",children:o("createDrawer.noFeaturesFound")}):f.map(e=>(0,t.jsxs)("button",{type:"button",role:"option","aria-selected":a===e.id,onClick:()=>g(e.id),className:(0,j.cn)("hover:bg-accent hover:text-accent-foreground flex w-full items-center gap-2 px-3 py-2 text-sm",a===e.id&&"bg-accent/50"),"data-testid":`parent-feature-option-${e.id}`,children:[(0,t.jsx)(d.CheckIcon,{className:(0,j.cn)("h-4 w-4 shrink-0",a!==e.id&&"invisible")}),(0,t.jsxs)("span",{className:"truncate",children:[e.name," ",(0,t.jsxs)("span",{className:"text-muted-foreground font-mono text-xs",children:["(",e.id.slice(0,8),")"]})]})]},e.id))]})]})})]})}function W({repositories:e,value:a,onChange:s,onAddRepository:i,disabled:o}){let[n,p]=(0,r.useState)(!1),[h,f]=(0,r.useState)(""),[g,b]=(0,r.useState)(!1),[w,v]=(0,r.useState)(null),[C,y]=(0,r.useState)(!1),N=(0,r.useRef)(null),{reactFileManager:D}=(0,A.useFeatureFlags)(),{t:P}=(0,l.useTranslation)("web"),F=e.find(e=>e.path===a),L=h.trim()?e.filter(e=>e.name.toLowerCase().includes(h.toLowerCase())||e.path.toLowerCase().includes(h.toLowerCase())):e,E=(0,r.useCallback)(e=>{s(e),p(!1),f("")},[s]),z=(0,r.useCallback)(async e=>{let t=await (0,O.addRepository)({path:e});if(t.error){v(t.error),b(!1);return}if(t.repository){let e={id:t.repository.id,name:t.repository.name,path:t.repository.path};i?.(e),s(e.path),p(!1),f("")}},[i,s]),R=(0,r.useCallback)(async()=>{if(!g){if(D)return void y(!0);b(!0),v(null);try{let e=await (0,M.pickFolder)();if(!e)return void b(!1);await z(e)}catch{y(!0)}finally{b(!1)}}},[g,D,z]),B=(0,r.useCallback)(async e=>{if(y(!1),e){b(!0),v(null);try{await z(e)}catch(e){v(e instanceof Error?e.message:"Failed to add repository")}finally{b(!1)}}},[z]);return(0,r.useEffect)(()=>{n?setTimeout(()=>N.current?.focus(),0):f("")},[n]),(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(S.Popover,{open:n,onOpenChange:p,children:[(0,t.jsx)(S.PopoverTrigger,{asChild:!0,children:(0,t.jsxs)("button",{type:"button",role:"combobox","aria-expanded":n,"aria-label":"Repository",disabled:o,"data-testid":"repository-combobox",className:(0,j.cn)("border-input bg-background ring-offset-background focus:ring-ring flex h-9 w-full items-center justify-between rounded-md border px-3 py-2 text-sm focus:ring-2 focus:ring-offset-2 focus:outline-none disabled:cursor-not-allowed disabled:opacity-50",!F&&"text-muted-foreground"),children:[(0,t.jsx)("span",{className:"truncate",children:F?F.name:"Select repository..."}),(0,t.jsx)(c.ChevronsUpDown,{className:"ms-2 h-4 w-4 shrink-0 opacity-50"})]})}),(0,t.jsx)(S.PopoverContent,{className:"w-80 p-0",align:"start","data-testid":"repository-combobox-content",children:(0,t.jsxs)("div",{className:"flex flex-col",children:[(0,t.jsx)("div",{className:"border-b p-2",children:(0,t.jsx)(k.Input,{ref:N,placeholder:P("createDrawer.searchRepositories"),value:h,onChange:e=>f(e.target.value),className:"h-8 border-0 p-0 text-sm shadow-none focus-visible:ring-0","data-testid":"repository-search"})}),(0,t.jsx)("div",{className:"max-h-48 overflow-y-auto py-1",role:"listbox","aria-label":"Repositories",children:0===L.length?(0,t.jsx)("p",{className:"text-muted-foreground px-3 py-2 text-sm","data-testid":"repository-empty",children:"No repositories found."}):L.map(e=>(0,t.jsxs)("button",{type:"button",role:"option","aria-selected":a===e.path,onClick:()=>E(e.path),className:(0,j.cn)("hover:bg-accent hover:text-accent-foreground flex w-full items-center gap-2 px-3 py-2 text-sm",a===e.path&&"bg-accent/50"),"data-testid":`repository-option-${e.id}`,children:[(0,t.jsx)(d.CheckIcon,{className:(0,j.cn)("h-4 w-4 shrink-0",a!==e.path&&"invisible")}),(0,t.jsxs)("span",{className:"flex flex-col items-start truncate",children:[(0,t.jsxs)("span",{className:"flex items-center gap-1.5 truncate",children:[e.name,e.isFork?(0,t.jsxs)(T.Badge,{variant:"outline",className:"h-4 shrink-0 px-1 text-[10px]",children:[(0,t.jsx)(x.GitFork,{className:"mr-0.5 h-2.5 w-2.5"}),"Fork"]}):null]}),(0,t.jsx)("span",{className:"text-muted-foreground truncate text-xs",children:e.path})]})]},e.id))}),(0,t.jsx)(I.Separator,{}),(0,t.jsxs)("button",{type:"button",onClick:R,disabled:g,className:"hover:bg-accent hover:text-accent-foreground flex w-full items-center gap-2 px-3 py-2 text-sm","data-testid":"add-repository-item",children:[g?(0,t.jsx)(m.Loader2,{className:"h-4 w-4 shrink-0 animate-spin"}):(0,t.jsx)(u.FolderPlus,{className:"h-4 w-4 shrink-0"}),(0,t.jsx)("span",{children:"Add new repository..."})]}),w?(0,t.jsx)("p",{className:"px-3 pb-2 text-xs text-red-500","data-testid":"add-repository-error",children:w}):null]})})]}),(0,t.jsx)(U.ReactFileManagerDialog,{open:C,onOpenChange:e=>{e||y(!1)},onSelect:B})]})}function Z({repositoryPath:e,initialParentId:i,initialDescription:l,features:n,repositories:c,workflowDefaults:d,currentAgentType:p,currentModel:h,canPushDirectly:u}){let m=(0,a.useRouter)(),[x,f]=(0,r.useState)(!1),g=(0,a.usePathname)().startsWith("/create"),b=!x&&g;(0,r.useEffect)(()=>{!g&&x&&f(!1)},[g,x]);let j=(0,r.useCallback)(()=>{m.push("/")},[m]),w=(0,r.useCallback)(e=>{f(!0),m.push("/"),o(e).then(t=>{t.error?s.toast.error(t.error):window.dispatchEvent(new CustomEvent("shep:feature-created",{detail:{featureId:t.feature.id,name:t.feature.name,description:t.feature.description,repositoryPath:t.feature.repositoryPath,parentId:e.parentId}}))}).catch(()=>{s.toast.error("Failed to create feature"),f(!1)})},[m]);return(0,t.jsx)(q,{open:b,onClose:j,onSubmit:w,repositoryPath:e,features:n,repositories:c,workflowDefaults:d,initialParentId:i,initialDescription:l,isSubmitting:x,currentAgentType:p,currentModel:h,canPushDirectly:u})}e.s(["CreateDrawerClient",()=>Z],15203)}]);
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,15203,e=>{"use strict";var t=e.i(20314),r=e.i(79054),a=e.i(31406),s=e.i(60112),i=e.i(21023);let o=(0,i.createServerReference)("4084f24e87bf49d86e3fe8f7f9bcaad7d237dc025f",i.callServer,void 0,i.findSourceMapURL,"createFeature");e.i(41001);var l=e.i(64780),n=e.i(16868),c=e.i(83843),d=e.i(97667),p=e.i(53360),h=e.i(55016),u=e.i(91925),m=e.i(83428),x=e.i(81542),f=e.i(70471),g=e.i(12103),b=e.i(59311),j=e.i(31777),w=e.i(8361);e.i(1650);var v=e.i(11495),C=e.i(45811),y=e.i(35364),k=e.i(98127),N=e.i(48306),D=e.i(41957),T=e.i(81846),S=e.i(90382),P=e.i(51911),F=e.i(2828),L=e.i(30153);e.i(50032);var E=e.i(86254);let z=(0,i.createServerReference)("40e3b04fa9a1f937d436007743423ae063bd45d9a5",i.callServer,void 0,i.findSourceMapURL,"getViewerPermission");var R=e.i(41413),I=e.i(25235),M=e.i(78521);e.i(13322);var U=e.i(61201),A=e.i(75921),O=e.i(9702),B=e.i(42076);let $=new Set([".png",".jpg",".jpeg",".gif",".webp",".svg",".bmp",".ico",".pdf",".doc",".docx",".xls",".xlsx",".ppt",".pptx",".txt",".md",".csv",".json",".yaml",".yml",".xml",".ts",".tsx",".js",".jsx",".py",".rb",".go",".rs",".java",".c",".cpp",".h",".hpp",".cs",".swift",".kt",".html",".css",".scss",".less",".sh",".bash",".zsh",".fish",".toml",".ini",".cfg",".conf",".env",".zip",".tar",".gz",".log"]),G={allowPrd:!1,allowPlan:!1,allowMerge:!1};function q({open:e,onClose:a,onSubmit:s,repositoryPath:i,isSubmitting:o=!1,workflowDefaults:c,features:d,repositories:u,initialParentId:m,currentAgentType:k,currentModel:S,initialDescription:I,canPushDirectly:M}){let U=(0,w.useSoundAction)("create"),{t:A}=(0,l.useTranslation)("web"),O=i&&(!u||0===u.length||u.some(e=>e.path===i))?i:"",q=c?.approvalGates??G,Z=c?.push??!1,J=c?.openPr??!1,V=c?.ciWatchEnabled!==!1,H=c?.enableEvidence??!1,Q=c?.commitEvidence??!1,X=c?.fast!==!1,[Y,_]=(0,r.useState)(I??"");(0,r.useEffect)(()=>{I&&_(I)},[I]);let[ee,et]=(0,r.useState)([]),[er,ea]=(0,r.useState)({...q}),[es,ei]=(0,r.useState)(Z),[eo,el]=(0,r.useState)(J),[en,ec]=(0,r.useState)(c?.ciWatchEnabled!==!1),[ed,ep]=(0,r.useState)(H),[eh,eu]=(0,r.useState)(Q),[em,ex]=(0,r.useState)(void 0),[ef,eg]=(0,r.useState)(X),[eb,ej]=(0,r.useState)(!1),[ew,ev]=(0,r.useState)(!1),[eC,ey]=(0,r.useState)(!0),[ek,eN]=(0,r.useState)(!0),[eD,eT]=(0,r.useState)(c?.injectSkills??!1),[eS,eP]=(0,r.useState)(void 0),[eF,eL]=(0,r.useState)(void 0),[eE,ez]=(0,r.useState)(O||void 0),[eR,eI]=(0,r.useState)(u??[]),[eM,eU]=(0,r.useState)(!1),[eA,eO]=(0,r.useState)(null),[eB,e$]=(0,r.useState)(!1),eG=(0,r.useRef)(crypto.randomUUID()),eq=(0,r.useRef)(0),eK=(0,r.useRef)(null);(0,r.useEffect)(()=>{c&&(ea({...c.approvalGates}),ei(c.push),el(c.openPr),ec(!1!==c.ciWatchEnabled),ep(c.enableEvidence),eu(c.commitEvidence),eg(!1!==c.fast),eT(c.injectSkills??!1))},[c]),(0,r.useEffect)(()=>{eI(u??[])},[u]),(0,r.useEffect)(()=>{e&&m&&ex(m)},[e,m]);let[eW,eZ]=(0,r.useState)(M??!1);(0,r.useEffect)(()=>{eZ(M??!1)},[M]);let eJ=(0,r.useRef)(eE);(0,r.useEffect)(()=>{eE&&eE!==eJ.current&&(eJ.current=eE,z(eE).then(e=>eZ(e.canPushDirectly)).catch(()=>eZ(!1)))},[eE]),(0,r.useEffect)(()=>{eW&&(ev(!1),ei(Z),el(J),ey(!0))},[eW,Z,J]);let eV=(0,r.useCallback)(()=>{_(""),et([]),ea({...q}),ei(Z),el(J),ec(V),ep(H),eu(Q),ex(void 0),ez(O||void 0),eI(u??[]),eg(X),ej(!1),ev(!1),ey(!0),eN(!0),eP(void 0),eL(void 0),eO(null),eq.current=0,eU(!1)},[q,Z,J,H,V,Q,X,O,u]),eH=""!==Y.trim()||ee.length>0,{attemptClose:eQ}=(0,L.useGuardedDrawerClose)({open:e,isDirty:eH,onClose:a,onReset:eV}),eX=(0,r.useCallback)(async e=>{for(let t of(eO(null),e)){if(t.size>0xa00000)return void eO(`"${t.name}" exceeds 10 MB limit`);let e=function(e){let t=e.lastIndexOf(".");return t>=0?e.slice(t).toLowerCase():""}(t.name);if(e&&!$.has(e))return void eO(`File type "${e}" is not allowed`)}for(let t of e){let e=crypto.randomUUID();et(r=>[...r,{id:e,name:t.name,size:t.size,mimeType:t.type||"application/octet-stream",path:"",loading:!0}]);try{let r=new FormData;r.append("file",t),r.append("sessionId",eG.current);let a=await fetch("/api/attachments/upload",{method:"POST",body:r});if(!a.ok){let t=await a.json().catch(()=>({error:"Upload failed"}));et(t=>t.filter(t=>t.id!==e)),eO(t.error??"Upload failed");return}let s=await a.json();et(t=>t.some(t=>t.id!==e&&t.path===s.path)?t.filter(t=>t.id!==e):t.map(t=>t.id===e?{...s,id:e,loading:!1}:t))}catch{et(t=>t.filter(t=>t.id!==e)),eO("Upload failed")}}},[]),eY=(0,r.useCallback)(e=>{e.preventDefault(),e.stopPropagation(),eq.current+=1,1===eq.current&&eU(!0)},[]),e_=(0,r.useCallback)(e=>{e.preventDefault(),e.stopPropagation(),eq.current-=1,0===eq.current&&eU(!1)},[]),e0=(0,r.useCallback)(e=>{e.preventDefault(),e.stopPropagation()},[]),e1=(0,r.useCallback)(e=>{e.preventDefault(),e.stopPropagation(),eq.current=0,eU(!1);let t=Array.from(e.dataTransfer.files);t.length>0&&eX(t)},[eX]),e5=(0,r.useCallback)(e=>{let t=e.clipboardData?.items;if(!t)return;let r=[];for(let e of Array.from(t))if("file"===e.kind){let t=e.getAsFile();t&&r.push(t)}r.length>0&&(e.preventDefault(),eX(r))},[eX]),e2=(0,r.useCallback)(e=>{if(e.preventDefault(),!Y.trim())return;let t=eE??O;t&&(U.play(),s({description:Y.trim(),attachments:ee.filter(e=>!e.loading),repositoryPath:t,approvalGates:{allowPrd:er.allowPrd??!1,allowPlan:er.allowPlan??!1,allowMerge:er.allowMerge??!1},push:!!ew||es||eo,openPr:!!ew||eo,ciWatchEnabled:en,enableEvidence:ed,commitEvidence:eh,fast:ef,forkAndPr:ew,commitSpecs:eC,rebaseBeforeBranch:ek,injectSkills:eD,...eb?{pending:eb}:{},...eS?{agentType:eS}:{},...eF?{model:eF}:{},...em?{parentId:em}:{},sessionId:eG.current}),eV())},[Y,ee,er,eE,O,s,es,eo,ed,en,eh,ef,ew,eC,ek,eD,eb,eS,eF,em,U,eV]),e3=(0,r.useCallback)(async()=>{try{let e=await (0,B.pickFiles)();if(!e)return;for(let t of e){let e=crypto.randomUUID();et(r=>[...r,{id:e,name:t.name,size:t.size,mimeType:"application/octet-stream",path:"",loading:!0}]);try{let r=await fetch("/api/attachments/upload-from-path",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:t.path,sessionId:eG.current})});if(!r.ok){let t=await r.json().catch(()=>({error:"Upload failed"}));et(t=>t.filter(t=>t.id!==e)),eO(t.error??"Upload failed");return}let a=await r.json();et(t=>t.some(t=>t.id!==e&&t.path===a.path)?t.filter(t=>t.id!==e):t.map(t=>t.id===e?{...a,id:e,loading:!1}:t))}catch{et(t=>t.filter(t=>t.id!==e)),eO("Upload failed")}}}catch{}},[]),e4=(0,r.useCallback)(e=>{et(t=>t.filter(t=>t.id!==e))},[]),e8=(0,r.useCallback)((e,t)=>{et(r=>r.map(r=>r.id===e?{...r,notes:t}:r))},[]),e6=(0,r.useRef)(null),e7=(0,r.useCallback)(e=>{(e.ctrlKey||e.metaKey)&&"Enter"===e.key&&(e.preventDefault(),e6.current?.requestSubmit())},[]),e9=(0,r.useCallback)(()=>{e$(!0)},[]),te=(0,r.useCallback)(()=>{setTimeout(()=>{let e=eK.current?.contains(document.activeElement),t=eK.current?.querySelector('[aria-expanded="true"]')!==null;e||t||e$(!1)},0)},[]),tt=d&&d.length>0,tr=!O&&!eE,ta=!O&&void 0!==u,ts=[{id:"allowPrd",label:A("createDrawer.prd"),description:A("createDrawer.prdDescription")},{id:"allowPlan",label:A("createDrawer.plan"),description:A("createDrawer.planDescription")},{id:"allowMerge",label:A("createDrawer.merge"),description:A("createDrawer.mergeDescription")}];return(0,t.jsx)(v.BaseDrawer,{open:e,onClose:eQ,size:"md",modal:!1,dismissOnOutsideClick:!0,"data-testid":"feature-create-drawer",header:(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)("div",{className:"h-2.5 w-2.5 shrink-0 rounded-full bg-blue-500"}),(0,t.jsx)(C.DrawerTitle,{children:A("createDrawer.title")})]}),o?(0,t.jsx)(C.DrawerDescription,{asChild:!0,children:(0,t.jsx)("div",{children:(0,t.jsx)(T.Badge,{variant:"secondary",children:A("createDrawer.creating")})})}):null]}),footer:(0,t.jsxs)("div",{className:"flex flex-row justify-end gap-2",children:[(0,t.jsx)(y.Button,{variant:"outline",onClick:eQ,disabled:o,children:A("createDrawer.cancel")}),(0,t.jsx)(y.Button,{type:"submit",form:"create-feature-form",disabled:!Y.trim()||o||tr,children:o?A("createDrawer.creating"):A("createDrawer.createFeature")})]}),children:(0,t.jsx)("div",{className:"overflow-y-auto p-4",children:(0,t.jsx)(F.TooltipProvider,{delayDuration:400,children:(0,t.jsxs)("form",{ref:e6,id:"create-feature-form",onSubmit:e2,onKeyDown:e7,className:"flex flex-col gap-4",children:[ta?(0,t.jsxs)("div",{className:"flex flex-col gap-1.5","data-testid":"repo-selector-section",children:[(0,t.jsx)(D.Label,{className:"text-muted-foreground text-xs font-semibold tracking-wider",children:A("createDrawer.repository")}),(0,t.jsx)(W,{repositories:eR,value:eE,onChange:ez,onAddRepository:e=>{eI(t=>[...t,e]),ez(e.path)},disabled:o})]}):O?(0,t.jsxs)("div",{className:"flex flex-col gap-1.5","data-testid":"repo-readonly-section",children:[(0,t.jsx)(D.Label,{className:"text-muted-foreground text-xs font-semibold tracking-wider",children:A("createDrawer.repository")}),(0,t.jsx)("p",{className:"text-sm","data-testid":"repo-readonly-label",children:u?.find(e=>e.path===O)?.name??O.split("/").pop()})]}):null,(0,t.jsxs)("div",{role:"region","aria-label":A("createDrawer.fileDropZone"),"data-drag-over":eM?"true":"false",onDragEnter:eY,onDragLeave:e_,onDragOver:e0,onDrop:e1,className:(0,j.cn)("flex flex-col gap-1.5 rounded-md border-2 border-transparent p-1 transition-colors",eM&&"border-primary/50 bg-primary/5"),children:[(0,t.jsx)(D.Label,{htmlFor:"feature-description",className:"text-muted-foreground text-xs font-semibold tracking-wider",children:A("createDrawer.describeFeature")}),(0,t.jsxs)("div",{ref:eK,onFocus:e9,onBlur:te,className:(0,j.cn)("border-input flex h-56 flex-col overflow-hidden rounded-md border shadow-xs transition-[color,box-shadow]",eB&&"ring-ring/50 border-ring ring-[3px]"),children:[(0,t.jsx)(N.Textarea,{id:"feature-description",placeholder:A("createDrawer.featurePlaceholder"),value:Y,onChange:e=>_(e.target.value),onPaste:e5,required:!0,disabled:o,className:"min-h-0 flex-1 resize-none rounded-none border-0 shadow-none focus-visible:ring-0"}),ee.length>0&&(0,t.jsx)("div",{className:"flex flex-wrap items-center gap-1.5 px-3 py-2",children:ee.map(e=>(0,t.jsx)(E.AttachmentChip,{name:e.name,size:e.size,mimeType:e.mimeType,path:e.path,onRemove:()=>e4(e.id),disabled:o,loading:e.loading,notes:e.notes,onNotesChange:t=>e8(e.id,t)},e.id))}),eA?(0,t.jsx)("p",{className:"text-destructive px-3 pb-2 text-xs",children:eA}):null,(0,t.jsxs)("div",{className:"border-input flex items-center gap-3 border-t px-3 py-1.5",children:[(0,t.jsx)(R.AgentModelPicker,{initialAgentType:eS??k??"claude-code",initialModel:eF??S??"claude-sonnet-4-6",mode:"override",onAgentModelChange:(e,t)=>{eP(e),eL(t)},disabled:o,className:"w-55"}),(0,t.jsxs)(F.Tooltip,{children:[(0,t.jsx)(F.TooltipTrigger,{asChild:!0,children:(0,t.jsxs)("div",{className:"ml-auto flex cursor-pointer items-center gap-2",children:[(0,t.jsx)(P.Switch,{id:"pending-mode",checked:eb,onCheckedChange:ej,disabled:o}),(0,t.jsxs)(D.Label,{htmlFor:"pending-mode",className:"flex cursor-pointer items-center gap-1 text-sm font-medium",children:[(0,t.jsx)(h.Clock,{className:"h-3.5 w-3.5"}),A("createDrawer.pendingMode")]})]})}),(0,t.jsx)(F.TooltipContent,{side:"bottom",children:A("createDrawer.pendingModeDescription")})]}),(0,t.jsxs)(F.Tooltip,{children:[(0,t.jsx)(F.TooltipTrigger,{asChild:!0,children:(0,t.jsxs)("div",{className:"flex cursor-pointer items-center gap-2",children:[(0,t.jsx)(P.Switch,{id:"fast-mode",checked:ef,onCheckedChange:eg,disabled:o}),(0,t.jsxs)(D.Label,{htmlFor:"fast-mode",className:"flex cursor-pointer items-center gap-1 text-sm font-medium",children:[(0,t.jsx)(p.Zap,{className:"h-3.5 w-3.5"}),A("createDrawer.fastModeLabel")]})]})}),(0,t.jsx)(F.TooltipContent,{side:"bottom",children:A("createDrawer.fastModeDescription")})]}),(0,t.jsxs)(F.Tooltip,{children:[(0,t.jsx)(F.TooltipTrigger,{asChild:!0,children:(0,t.jsx)("button",{type:"button",onClick:e3,disabled:o,"aria-label":A("chat.attachFiles"),className:"text-muted-foreground hover:text-foreground cursor-pointer rounded p-1 transition-colors",children:(0,t.jsx)(n.PaperclipIcon,{className:"h-4 w-4"})})}),(0,t.jsx)(F.TooltipContent,{side:"bottom",children:A("chat.attachFiles")})]})]})]})]}),tt&&void 0!==m?(0,t.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,t.jsx)(D.Label,{htmlFor:"parent-feature",className:"text-muted-foreground text-xs font-semibold tracking-wider",children:A("createDrawer.parentFeature")}),(0,t.jsx)(K,{features:d,value:em,onChange:ex,disabled:o})]}):null,(0,t.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,t.jsxs)("div",{className:"border-input flex items-center gap-4 rounded-md border px-3 py-2.5",children:[(0,t.jsxs)(F.Tooltip,{children:[(0,t.jsx)(F.TooltipTrigger,{asChild:!0,children:(0,t.jsx)("span",{className:"text-muted-foreground w-16 shrink-0 cursor-default text-xs font-semibold tracking-wider",children:A("createDrawer.approve")})}),(0,t.jsx)(F.TooltipContent,{side:"bottom",children:A("createDrawer.approveDescription")})]}),(0,t.jsx)("div",{className:"flex flex-1 items-center gap-4",children:ts.map(e=>(0,t.jsxs)(F.Tooltip,{children:[(0,t.jsx)(F.TooltipTrigger,{asChild:!0,children:(0,t.jsxs)("div",{className:"flex cursor-pointer items-center gap-1.5",children:[(0,t.jsx)(P.Switch,{id:`approve-${e.id}`,size:"sm",checked:er[e.id]??!1,onCheckedChange:t=>ea(r=>({...r,[e.id]:t})),disabled:o||ef&&("allowPrd"===e.id||"allowPlan"===e.id)}),(0,t.jsx)(D.Label,{htmlFor:`approve-${e.id}`,className:"cursor-pointer text-xs font-medium",children:e.label})]})}),(0,t.jsx)(F.TooltipContent,{side:"bottom",children:ef&&("allowPrd"===e.id||"allowPlan"===e.id)?A("createDrawer.skippedInFastMode"):e.description})]},e.id))}),(0,t.jsxs)(F.Tooltip,{children:[(0,t.jsx)(F.TooltipTrigger,{asChild:!0,children:(0,t.jsx)("button",{type:"button",onClick:()=>{let e=ts.every(e=>er[e.id]),t={};for(let r of ts)t[r.id]=!e;ea(t)},disabled:o,className:(0,j.cn)("text-muted-foreground hover:text-foreground cursor-pointer rounded px-1.5 py-0.5 text-[10px] font-semibold tracking-wider uppercase transition-colors",ts.every(e=>er[e.id])&&"text-primary"),children:A("createDrawer.all")})}),(0,t.jsx)(F.TooltipContent,{side:"bottom",children:A("createDrawer.toggleAllApprovalGates")})]})]}),(0,t.jsxs)("div",{className:"border-input flex items-center gap-4 rounded-md border px-3 py-2.5",children:[(0,t.jsxs)(F.Tooltip,{children:[(0,t.jsx)(F.TooltipTrigger,{asChild:!0,children:(0,t.jsx)("span",{className:"text-muted-foreground w-16 shrink-0 cursor-default text-xs font-semibold tracking-wider",children:A("createDrawer.evidence")})}),(0,t.jsx)(F.TooltipContent,{side:"bottom",children:A("createDrawer.evidenceDescription")})]}),(0,t.jsxs)("div",{className:"flex flex-1 items-center gap-4",children:[(0,t.jsxs)(F.Tooltip,{children:[(0,t.jsx)(F.TooltipTrigger,{asChild:!0,children:(0,t.jsxs)("div",{className:"flex cursor-pointer items-center gap-1.5",children:[(0,t.jsx)(P.Switch,{id:"enable-evidence",size:"sm",checked:ed,onCheckedChange:e=>{ep(e),e||eu(!1)},disabled:o}),(0,t.jsx)(D.Label,{htmlFor:"enable-evidence",className:"cursor-pointer text-xs font-medium",children:A("createDrawer.collect")})]})}),(0,t.jsx)(F.TooltipContent,{side:"bottom",children:A("createDrawer.collectDescription")})]}),(0,t.jsxs)(F.Tooltip,{children:[(0,t.jsx)(F.TooltipTrigger,{asChild:!0,children:(0,t.jsxs)("div",{className:"flex cursor-pointer items-center gap-1.5",children:[(0,t.jsx)(P.Switch,{id:"commit-evidence",size:"sm",checked:eh,onCheckedChange:eu,disabled:o||!ed||!eo&&!ew}),(0,t.jsx)(D.Label,{htmlFor:"commit-evidence",className:(0,j.cn)("cursor-pointer text-xs font-medium",(!ed||!eo&&!ew)&&"opacity-50"),children:A("createDrawer.addToPr")})]})}),(0,t.jsx)(F.TooltipContent,{side:"bottom",children:eo||ew?ed?A("createDrawer.addToPrDescription"):A("createDrawer.requiresEvidence"):A("createDrawer.requiresPr")})]})]})]}),(0,t.jsxs)("div",{className:"border-input flex items-center gap-4 rounded-md border px-3 py-2.5",children:[(0,t.jsxs)(F.Tooltip,{children:[(0,t.jsx)(F.TooltipTrigger,{asChild:!0,children:(0,t.jsx)("span",{className:"text-muted-foreground w-16 shrink-0 cursor-default text-xs font-semibold tracking-wider",children:A("createDrawer.skills")})}),(0,t.jsx)(F.TooltipContent,{side:"bottom",children:A("createDrawer.skillsDescription")})]}),(0,t.jsx)("div",{className:"flex flex-1 items-center gap-4",children:(0,t.jsxs)(F.Tooltip,{children:[(0,t.jsx)(F.TooltipTrigger,{asChild:!0,children:(0,t.jsxs)("div",{className:"flex cursor-pointer items-center gap-1.5",children:[(0,t.jsx)(P.Switch,{id:"inject-skills",size:"sm",checked:eD,onCheckedChange:eT,disabled:o}),(0,t.jsxs)(D.Label,{htmlFor:"inject-skills",className:"flex cursor-pointer items-center gap-1 text-xs font-medium",children:[(0,t.jsx)(g.Puzzle,{className:"h-3 w-3"}),A("createDrawer.injectSkills")]})]})}),(0,t.jsx)(F.TooltipContent,{side:"bottom",children:A("createDrawer.injectSkillsDescription")})]})})]}),(0,t.jsxs)("div",{className:"border-input flex items-start gap-4 rounded-md border px-3 py-2.5",children:[(0,t.jsx)("span",{className:"text-muted-foreground w-16 shrink-0 pt-0.5 text-xs font-semibold tracking-wider",children:A("createDrawer.git")}),(0,t.jsxs)("div",{className:"flex flex-1 flex-wrap items-center gap-4",children:[(0,t.jsxs)(F.Tooltip,{children:[(0,t.jsx)(F.TooltipTrigger,{asChild:!0,children:(0,t.jsxs)("div",{className:"flex cursor-pointer items-center gap-1.5",children:[(0,t.jsx)(P.Switch,{id:"push",size:"sm",checked:!!ew||es||eo,onCheckedChange:e=>{ei(e),!e&&eo&&el(!1)},disabled:o||ew}),(0,t.jsx)(D.Label,{htmlFor:"push",className:(0,j.cn)("cursor-pointer text-xs font-medium",ew&&"opacity-50"),children:A("createDrawer.push")})]})}),(0,t.jsx)(F.TooltipContent,{side:"bottom",children:ew?"Enabled — contributing to upstream":A("createDrawer.pushDescription")})]}),(0,t.jsxs)(F.Tooltip,{children:[(0,t.jsx)(F.TooltipTrigger,{asChild:!0,children:(0,t.jsxs)("div",{className:"flex cursor-pointer items-center gap-1.5",children:[(0,t.jsx)(P.Switch,{id:"open-pr",size:"sm",checked:!!ew||eo,onCheckedChange:e=>{el(e),e||eu(!1)},disabled:o||ew}),(0,t.jsx)(D.Label,{htmlFor:"open-pr",className:(0,j.cn)("cursor-pointer text-xs font-medium",ew&&"opacity-50"),children:A("createDrawer.pr")})]})}),(0,t.jsx)(F.TooltipContent,{side:"bottom",children:ew?"Enabled — contributing to upstream":A("createDrawer.prDescription")})]}),(0,t.jsxs)(F.Tooltip,{children:[(0,t.jsx)(F.TooltipTrigger,{asChild:!0,children:(0,t.jsxs)("div",{className:"flex cursor-pointer items-center gap-1.5",children:[(0,t.jsx)(P.Switch,{id:"ci-watch",size:"sm",checked:en,onCheckedChange:ec,disabled:o}),(0,t.jsx)(D.Label,{htmlFor:"ci-watch",className:"cursor-pointer text-xs font-medium",children:A("createDrawer.watch")})]})}),(0,t.jsx)(F.TooltipContent,{side:"bottom",children:A("createDrawer.watchDescription")})]}),(0,t.jsx)("div",{className:"bg-border h-4 w-px shrink-0"}),(0,t.jsxs)(F.Tooltip,{children:[(0,t.jsx)(F.TooltipTrigger,{asChild:!0,children:(0,t.jsxs)("div",{className:"flex cursor-pointer items-center gap-1.5",children:[(0,t.jsx)(P.Switch,{id:"rebase-before-branch",size:"sm",checked:ek,onCheckedChange:eN,disabled:o}),(0,t.jsxs)(D.Label,{htmlFor:"rebase-before-branch",className:"flex cursor-pointer items-center gap-1 text-xs font-medium",children:[(0,t.jsx)(b.RefreshCw,{className:"h-3 w-3"}),A("createDrawer.sync")]})]})}),(0,t.jsx)(F.TooltipContent,{side:"bottom",children:A("createDrawer.syncDescription")})]}),(0,t.jsxs)(F.Tooltip,{children:[(0,t.jsx)(F.TooltipTrigger,{asChild:!0,children:(0,t.jsxs)("div",{className:"flex cursor-pointer items-center gap-1.5",children:[(0,t.jsx)(P.Switch,{id:"commit-specs",size:"sm",checked:eC,onCheckedChange:ey,disabled:o}),(0,t.jsxs)(D.Label,{htmlFor:"commit-specs",className:"flex cursor-pointer items-center gap-1 text-xs font-medium",children:[(0,t.jsx)(f.FileText,{className:"h-3 w-3"}),A("createDrawer.commitSpecs")]})]})}),(0,t.jsx)(F.TooltipContent,{side:"bottom",children:A("createDrawer.commitSpecsDescription")})]}),!eW&&(0,t.jsxs)(F.Tooltip,{children:[(0,t.jsx)(F.TooltipTrigger,{asChild:!0,children:(0,t.jsxs)("div",{className:"flex cursor-pointer items-center gap-1.5",children:[(0,t.jsx)(P.Switch,{id:"fork-and-pr",size:"sm",checked:ew,onCheckedChange:e=>{ev(e),e&&ey(!1)},disabled:o}),(0,t.jsxs)(D.Label,{htmlFor:"fork-and-pr",className:"flex cursor-pointer items-center gap-1 text-xs font-medium",children:[(0,t.jsx)(x.GitFork,{className:"h-3 w-3"}),A("createDrawer.forkAndPr")]})]})}),(0,t.jsx)(F.TooltipContent,{side:"bottom",children:A("createDrawer.forkAndPrDescription")})]})]})]})]})]})})})})}function K({features:e,value:a,onChange:s,disabled:i}){let{t:o}=(0,l.useTranslation)("web"),[n,p]=(0,r.useState)(!1),[h,u]=(0,r.useState)(""),m=(0,r.useRef)(null),x=e.find(e=>e.id===a),f=h.trim()?e.filter(e=>e.name.toLowerCase().includes(h.toLowerCase())||e.id.toLowerCase().includes(h.toLowerCase())):e,g=(0,r.useCallback)(e=>{s(e),p(!1),u("")},[s]);return(0,r.useEffect)(()=>{n?setTimeout(()=>m.current?.focus(),0):u("")},[n]),(0,t.jsxs)(S.Popover,{open:n,onOpenChange:p,children:[(0,t.jsx)(S.PopoverTrigger,{asChild:!0,children:(0,t.jsxs)("button",{id:"parent-feature",type:"button",role:"combobox","aria-expanded":n,"aria-label":"Parent Feature",disabled:i,"data-testid":"parent-feature-combobox",className:(0,j.cn)("border-input bg-background ring-offset-background focus:ring-ring flex h-9 w-full items-center justify-between rounded-md border px-3 py-2 text-sm focus:ring-2 focus:ring-offset-2 focus:outline-none disabled:cursor-not-allowed disabled:opacity-50",!x&&"text-muted-foreground"),children:[(0,t.jsx)("span",{className:"truncate",children:x?`${x.name} (${x.id.slice(0,8)})`:o("createDrawer.selectParent")}),(0,t.jsx)(c.ChevronsUpDown,{className:"ms-2 h-4 w-4 shrink-0 opacity-50"})]})}),(0,t.jsx)(S.PopoverContent,{className:"w-80 p-0",align:"start","data-testid":"parent-feature-combobox-content",children:(0,t.jsxs)("div",{className:"flex flex-col",children:[(0,t.jsx)("div",{className:"border-b p-2",children:(0,t.jsx)(k.Input,{ref:m,placeholder:o("createDrawer.searchFeatures"),value:h,onChange:e=>u(e.target.value),className:"h-8 border-0 p-0 text-sm shadow-none focus-visible:ring-0","data-testid":"parent-feature-search"})}),(0,t.jsxs)("div",{className:"max-h-48 overflow-y-auto py-1",role:"listbox","aria-label":"Features",children:[(0,t.jsxs)("button",{type:"button",role:"option","aria-selected":void 0===a,onClick:()=>g(void 0),className:(0,j.cn)("hover:bg-accent hover:text-accent-foreground flex w-full items-center gap-2 px-3 py-2 text-sm",void 0===a&&"bg-accent/50"),"data-testid":"parent-feature-option-none",children:[(0,t.jsx)(d.CheckIcon,{className:(0,j.cn)("h-4 w-4 shrink-0",void 0!==a&&"invisible")}),(0,t.jsx)("span",{className:"text-muted-foreground italic",children:o("createDrawer.noParent")})]}),0===f.length&&h?(0,t.jsx)("p",{className:"text-muted-foreground px-3 py-2 text-sm",children:o("createDrawer.noFeaturesFound")}):f.map(e=>(0,t.jsxs)("button",{type:"button",role:"option","aria-selected":a===e.id,onClick:()=>g(e.id),className:(0,j.cn)("hover:bg-accent hover:text-accent-foreground flex w-full items-center gap-2 px-3 py-2 text-sm",a===e.id&&"bg-accent/50"),"data-testid":`parent-feature-option-${e.id}`,children:[(0,t.jsx)(d.CheckIcon,{className:(0,j.cn)("h-4 w-4 shrink-0",a!==e.id&&"invisible")}),(0,t.jsxs)("span",{className:"truncate",children:[e.name," ",(0,t.jsxs)("span",{className:"text-muted-foreground font-mono text-xs",children:["(",e.id.slice(0,8),")"]})]})]},e.id))]})]})})]})}function W({repositories:e,value:a,onChange:s,onAddRepository:i,disabled:o}){let[n,p]=(0,r.useState)(!1),[h,f]=(0,r.useState)(""),[g,b]=(0,r.useState)(!1),[w,v]=(0,r.useState)(null),[C,y]=(0,r.useState)(!1),N=(0,r.useRef)(null),{reactFileManager:D}=(0,A.useFeatureFlags)(),{t:P}=(0,l.useTranslation)("web"),F=e.find(e=>e.path===a),L=h.trim()?e.filter(e=>e.name.toLowerCase().includes(h.toLowerCase())||e.path.toLowerCase().includes(h.toLowerCase())):e,E=(0,r.useCallback)(e=>{s(e),p(!1),f("")},[s]),z=(0,r.useCallback)(async e=>{let t=await (0,O.addRepository)({path:e});if(t.error){v(t.error),b(!1);return}if(t.repository){let e={id:t.repository.id,name:t.repository.name,path:t.repository.path};i?.(e),s(e.path),p(!1),f("")}},[i,s]),R=(0,r.useCallback)(async()=>{if(!g){if(D)return void y(!0);b(!0),v(null);try{let e=await (0,M.pickFolder)();if(!e)return void b(!1);await z(e)}catch{y(!0)}finally{b(!1)}}},[g,D,z]),B=(0,r.useCallback)(async e=>{if(y(!1),e){b(!0),v(null);try{await z(e)}catch(e){v(e instanceof Error?e.message:"Failed to add repository")}finally{b(!1)}}},[z]);return(0,r.useEffect)(()=>{n?setTimeout(()=>N.current?.focus(),0):f("")},[n]),(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(S.Popover,{open:n,onOpenChange:p,children:[(0,t.jsx)(S.PopoverTrigger,{asChild:!0,children:(0,t.jsxs)("button",{type:"button",role:"combobox","aria-expanded":n,"aria-label":"Repository",disabled:o,"data-testid":"repository-combobox",className:(0,j.cn)("border-input bg-background ring-offset-background focus:ring-ring flex h-9 w-full items-center justify-between rounded-md border px-3 py-2 text-sm focus:ring-2 focus:ring-offset-2 focus:outline-none disabled:cursor-not-allowed disabled:opacity-50",!F&&"text-muted-foreground"),children:[(0,t.jsx)("span",{className:"truncate",children:F?F.name:"Select repository..."}),(0,t.jsx)(c.ChevronsUpDown,{className:"ms-2 h-4 w-4 shrink-0 opacity-50"})]})}),(0,t.jsx)(S.PopoverContent,{className:"w-80 p-0",align:"start","data-testid":"repository-combobox-content",children:(0,t.jsxs)("div",{className:"flex flex-col",children:[(0,t.jsx)("div",{className:"border-b p-2",children:(0,t.jsx)(k.Input,{ref:N,placeholder:P("createDrawer.searchRepositories"),value:h,onChange:e=>f(e.target.value),className:"h-8 border-0 p-0 text-sm shadow-none focus-visible:ring-0","data-testid":"repository-search"})}),(0,t.jsx)("div",{className:"max-h-48 overflow-y-auto py-1",role:"listbox","aria-label":"Repositories",children:0===L.length?(0,t.jsx)("p",{className:"text-muted-foreground px-3 py-2 text-sm","data-testid":"repository-empty",children:"No repositories found."}):L.map(e=>(0,t.jsxs)("button",{type:"button",role:"option","aria-selected":a===e.path,onClick:()=>E(e.path),className:(0,j.cn)("hover:bg-accent hover:text-accent-foreground flex w-full items-center gap-2 px-3 py-2 text-sm",a===e.path&&"bg-accent/50"),"data-testid":`repository-option-${e.id}`,children:[(0,t.jsx)(d.CheckIcon,{className:(0,j.cn)("h-4 w-4 shrink-0",a!==e.path&&"invisible")}),(0,t.jsxs)("span",{className:"flex flex-col items-start truncate",children:[(0,t.jsxs)("span",{className:"flex items-center gap-1.5 truncate",children:[e.name,e.isFork?(0,t.jsxs)(T.Badge,{variant:"outline",className:"h-4 shrink-0 px-1 text-[10px]",children:[(0,t.jsx)(x.GitFork,{className:"mr-0.5 h-2.5 w-2.5"}),"Fork"]}):null]}),(0,t.jsx)("span",{className:"text-muted-foreground truncate text-xs",children:e.path})]})]},e.id))}),(0,t.jsx)(I.Separator,{}),(0,t.jsxs)("button",{type:"button",onClick:R,disabled:g,className:"hover:bg-accent hover:text-accent-foreground flex w-full items-center gap-2 px-3 py-2 text-sm","data-testid":"add-repository-item",children:[g?(0,t.jsx)(m.Loader2,{className:"h-4 w-4 shrink-0 animate-spin"}):(0,t.jsx)(u.FolderPlus,{className:"h-4 w-4 shrink-0"}),(0,t.jsx)("span",{children:"Add new repository..."})]}),w?(0,t.jsx)("p",{className:"px-3 pb-2 text-xs text-red-500","data-testid":"add-repository-error",children:w}):null]})})]}),(0,t.jsx)(U.ReactFileManagerDialog,{open:C,onOpenChange:e=>{e||y(!1)},onSelect:B})]})}function Z({repositoryPath:e,initialParentId:i,initialDescription:l,features:n,repositories:c,workflowDefaults:d,currentAgentType:p,currentModel:h,canPushDirectly:u}){let m=(0,a.useRouter)(),[x,f]=(0,r.useState)(!1),g=(0,a.usePathname)().startsWith("/create"),b=!x&&g;(0,r.useEffect)(()=>{!g&&x&&f(!1)},[g,x]);let j=(0,r.useCallback)(()=>{m.push("/")},[m]),w=(0,r.useCallback)(e=>{f(!0),m.push("/"),o(e).then(t=>{t.error?s.toast.error(t.error):window.dispatchEvent(new CustomEvent("shep:feature-created",{detail:{featureId:t.feature.id,name:t.feature.name,description:t.feature.description,repositoryPath:t.feature.repositoryPath,parentId:e.parentId}}))}).catch(()=>{s.toast.error("Failed to create feature"),f(!1)})},[m]);return(0,t.jsx)(q,{open:b,onClose:j,onSubmit:w,repositoryPath:e,features:n,repositories:c,workflowDefaults:d,initialParentId:i,initialDescription:l,isSubmitting:x,currentAgentType:p,currentModel:h,canPushDirectly:u})}e.s(["CreateDrawerClient",()=>Z],15203)}]);
|