@shepai/cli 1.194.3-pr586.23e3597 → 1.194.4
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/package.json +1 -1
- package/web/.next/BUILD_ID +1 -1
- 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 +2 -2
- package/web/.next/required-server-files.json +2 -2
- package/web/.next/server/app/(dashboard)/@drawer/adopt/page/react-loadable-manifest.json +3 -3
- package/web/.next/server/app/(dashboard)/@drawer/adopt/page/server-reference-manifest.json +36 -36
- 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/react-loadable-manifest.json +3 -3
- package/web/.next/server/app/(dashboard)/@drawer/chat/page/server-reference-manifest.json +34 -34
- 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/react-loadable-manifest.json +3 -3
- package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +37 -37
- 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/react-loadable-manifest.json +3 -3
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/server-reference-manifest.json +46 -46
- 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/react-loadable-manifest.json +3 -3
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +46 -46
- 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/react-loadable-manifest.json +3 -3
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page/server-reference-manifest.json +35 -35
- 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/react-loadable-manifest.json +3 -3
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +35 -35
- 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/react-loadable-manifest.json +3 -3
- package/web/.next/server/app/(dashboard)/chat/page/server-reference-manifest.json +34 -34
- 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)/control-center/page/react-loadable-manifest.json +3 -3
- package/web/.next/server/app/(dashboard)/control-center/page/server-reference-manifest.json +34 -34
- package/web/.next/server/app/(dashboard)/control-center/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/control-center/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/create/page/react-loadable-manifest.json +3 -3
- package/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +37 -37
- 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/react-loadable-manifest.json +3 -3
- package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page/server-reference-manifest.json +46 -46
- 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/react-loadable-manifest.json +3 -3
- package/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +46 -46
- 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)/repository/[repositoryId]/[tab]/page/react-loadable-manifest.json +3 -3
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page/server-reference-manifest.json +35 -35
- 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/react-loadable-manifest.json +3 -3
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +35 -35
- 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.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/react-loadable-manifest.json +3 -3
- package/web/.next/server/app/_not-found/page/server-reference-manifest.json +8 -8
- package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/application/[id]/page/react-loadable-manifest.json +3 -3
- package/web/.next/server/app/application/[id]/page/server-reference-manifest.json +17 -17
- 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/react-loadable-manifest.json +3 -3
- package/web/.next/server/app/applications/page/server-reference-manifest.json +18 -18
- package/web/.next/server/app/applications/page.js.nft.json +1 -1
- package/web/.next/server/app/applications/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/features/page/react-loadable-manifest.json +3 -3
- package/web/.next/server/app/features/page/server-reference-manifest.json +30 -30
- 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/page/react-loadable-manifest.json +3 -3
- package/web/.next/server/app/page/server-reference-manifest.json +8 -8
- package/web/.next/server/app/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/projects/[slug]/items/[itemId]/page/react-loadable-manifest.json +3 -3
- package/web/.next/server/app/projects/[slug]/items/[itemId]/page/server-reference-manifest.json +15 -15
- package/web/.next/server/app/projects/[slug]/items/[itemId]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/projects/[slug]/page/react-loadable-manifest.json +3 -3
- package/web/.next/server/app/projects/[slug]/page/server-reference-manifest.json +27 -27
- package/web/.next/server/app/projects/[slug]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/projects/[slug]/pages/page/react-loadable-manifest.json +3 -3
- package/web/.next/server/app/projects/[slug]/pages/page/server-reference-manifest.json +11 -11
- package/web/.next/server/app/projects/[slug]/pages/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/projects/[slug]/settings/page/react-loadable-manifest.json +3 -3
- package/web/.next/server/app/projects/[slug]/settings/page/server-reference-manifest.json +17 -17
- package/web/.next/server/app/projects/[slug]/settings/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/projects/page/react-loadable-manifest.json +3 -3
- package/web/.next/server/app/projects/page/server-reference-manifest.json +9 -9
- package/web/.next/server/app/projects/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/settings/page/react-loadable-manifest.json +3 -3
- package/web/.next/server/app/settings/page/server-reference-manifest.json +11 -11
- package/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/skills/page/react-loadable-manifest.json +3 -3
- package/web/.next/server/app/skills/page/server-reference-manifest.json +16 -16
- package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/tools/page/react-loadable-manifest.json +3 -3
- package/web/.next/server/app/tools/page/server-reference-manifest.json +14 -14
- package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/version/page/react-loadable-manifest.json +3 -3
- package/web/.next/server/app/version/page/server-reference-manifest.json +8 -8
- package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
- package/web/.next/server/chunks/[root-of-the-server]__10e976f3._.js +1 -1
- package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_adopt_page_actions_99cb41a4.js +1 -1
- package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_adopt_page_actions_99cb41a4.js.map +1 -1
- package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_chat_page_actions_3bcbcc2f.js +1 -1
- package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_chat_page_actions_3bcbcc2f.js.map +1 -1
- package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_chat_page_actions_059f6735.js +1 -1
- package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_chat_page_actions_059f6735.js.map +1 -1
- package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_control-center_page_actions_86edeb51.js +1 -1
- package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_control-center_page_actions_86edeb51.js.map +1 -1
- package/web/.next/server/chunks/ssr/744ca_web_app_projects_[slug]_items_[itemId]_work-item-detail-client_tsx_d2e02407._.js +1 -1
- package/web/.next/server/chunks/ssr/744ca_web_app_projects_[slug]_items_[itemId]_work-item-detail-client_tsx_d2e02407._.js.map +1 -1
- package/web/.next/server/chunks/ssr/744ca_web_app_projects_[slug]_settings_project-settings-client_tsx_e8b85ddc._.js +1 -1
- package/web/.next/server/chunks/ssr/744ca_web_app_projects_[slug]_settings_project-settings-client_tsx_e8b85ddc._.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 +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__012a0e7d._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__012a0e7d._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0462fa34._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0462fa34._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1973d644._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1a86d5fe._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1a86d5fe._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__30326387._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__30326387._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__3438c354._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__3438c354._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__361129f0._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__361129f0._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__4adb4a94._.js +3 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__4adb4a94._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__5c25ef9b._.js +2 -2
- package/web/.next/server/chunks/ssr/[root-of-the-server]__5c25ef9b._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__5c5f9704._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__5c5f9704._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__638955bc._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__78e1366f._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__78e1366f._.js.map +1 -1
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__0d04b8e2._.js → [root-of-the-server]__8ccbc357._.js} +2 -2
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__0d04b8e2._.js.map → [root-of-the-server]__8ccbc357._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__97b6831c._.js +3 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__9b16348d._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__9b16348d._.js.map +1 -1
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__1e902e32._.js → [root-of-the-server]__b2926b69._.js} +2 -2
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__1e902e32._.js.map → [root-of-the-server]__b2926b69._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__b3bc9689._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__b3bc9689._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__ba8cbee2._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__ba8cbee2._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__dbde193f._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__dbde193f._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__f6adb460._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__f6adb460._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_101de7c3._.js +1 -1
- package/web/.next/server/chunks/ssr/_101de7c3._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_12ba4a07._.js +1 -1
- package/web/.next/server/chunks/ssr/_12ba4a07._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_15634d5b._.js +1 -1
- package/web/.next/server/chunks/ssr/_15634d5b._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_27c2f774._.js +1 -1
- package/web/.next/server/chunks/ssr/_27c2f774._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_30787024._.js +1 -1
- package/web/.next/server/chunks/ssr/_30787024._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_3bd60fa3._.js +1 -1
- package/web/.next/server/chunks/ssr/_402d53bf._.js +1 -1
- package/web/.next/server/chunks/ssr/_402d53bf._.js.map +1 -1
- 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/_6868b4b1._.js +1 -1
- package/web/.next/server/chunks/ssr/{_3906be1d._.js → _759e7aaa._.js} +2 -2
- package/web/.next/server/chunks/ssr/{_3906be1d._.js.map → _759e7aaa._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/{_12f37a55._.js → _7cd98562._.js} +2 -2
- package/web/.next/server/chunks/ssr/{_12f37a55._.js.map → _7cd98562._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/_805ae1aa._.js +1 -1
- package/web/.next/server/chunks/ssr/_805ae1aa._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_8a700ff4._.js +1 -1
- package/web/.next/server/chunks/ssr/_8a700ff4._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_8f4f8aa1._.js +1 -1
- package/web/.next/server/chunks/ssr/_8f4f8aa1._.js.map +1 -1
- package/web/.next/server/chunks/ssr/{_fe68c1e2._.js → _9df39bfe._.js} +2 -2
- package/web/.next/server/chunks/ssr/{_fe68c1e2._.js.map → _9df39bfe._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/{_1055ec32._.js → _a31c3a42._.js} +2 -2
- package/web/.next/server/chunks/ssr/{_1055ec32._.js.map → _a31c3a42._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/_b40a4fc3._.js +1 -1
- package/web/.next/server/chunks/ssr/_b40a4fc3._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_c44ec376._.js +1 -1
- package/web/.next/server/chunks/ssr/_c44ec376._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_cd641c61._.js +1 -1
- package/web/.next/server/chunks/ssr/_cd641c61._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_d53224a9._.js +1 -1
- package/web/.next/server/chunks/ssr/_d53224a9._.js.map +1 -1
- package/web/.next/server/chunks/ssr/{_60246ee2._.js → _de93c45c._.js} +2 -2
- package/web/.next/server/chunks/ssr/{_60246ee2._.js.map → _de93c45c._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/{_8ee3123d._.js → _e0e86221._.js} +2 -2
- package/web/.next/server/chunks/ssr/{_8ee3123d._.js.map → _e0e86221._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/_e6271303._.js +1 -1
- package/web/.next/server/chunks/ssr/_e6271303._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_ed8fd56c._.js +1 -1
- package/web/.next/server/chunks/ssr/_ed8fd56c._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_f602cc9f._.js +1 -1
- package/web/.next/server/chunks/ssr/_f602cc9f._.js.map +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/src_presentation_web_05bba4dc._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_05bba4dc._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_43451480._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_43451480._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_4b306bb3._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_4b306bb3._.js.map +1 -1
- package/web/.next/server/chunks/ssr/{src_presentation_web_1f525bd4._.js → src_presentation_web_5c844690._.js} +2 -2
- package/web/.next/server/chunks/ssr/{src_presentation_web_1f525bd4._.js.map → src_presentation_web_5c844690._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_81dd84ae._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_81dd84ae._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_9a543843._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_9a543843._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_7ab26c98._.js +3 -3
- package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_adopt-local-directory_ts_75f1f28c._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_adopt-local-directory_ts_75f1f28c._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_approve-feature_ts_9453ce8b._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_open-directory_ts_1209d917._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_open-directory_ts_1209d917._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_app_features_feature-tree-page-client_tsx_34c5cbbf._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_b504e3e2._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_b504e3e2._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_b5838705._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_b5838705._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_b6b4baa1._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_b6b4baa1._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_c3d0de23._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_c3d0de23._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_66643378._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_66643378._.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_dc5ba3cf._.js → src_presentation_web_e596fda8._.js} +2 -2
- package/web/.next/server/chunks/ssr/{src_presentation_web_dc5ba3cf._.js.map → src_presentation_web_e596fda8._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_fc29283f._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_fc29283f._.js.map +1 -1
- 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 +98 -98
- package/web/.next/static/chunks/{1d72f699758c6d3a.js → 089bd320dc4b1575.js} +1 -1
- package/web/.next/static/chunks/{913f8613ffba3e5c.js → 0fc17b433aa79b46.js} +1 -1
- package/web/.next/static/chunks/105bb00cb34ccd38.js +1 -0
- package/web/.next/static/chunks/{d5b120471ecd81c3.js → 18be29465f4a1def.js} +1 -1
- package/web/.next/static/chunks/1f42ad4a0931acd3.js +1 -0
- package/web/.next/static/chunks/{dddb3a86ceab0299.js → 298594ed8c886cbf.js} +1 -1
- package/web/.next/static/chunks/{6d5150e080c53d51.js → 33317caa5c5abd6b.js} +1 -1
- package/web/.next/static/chunks/{6ac3de2ae9fd6923.js → 34593f30cd188c4a.js} +1 -1
- package/web/.next/static/chunks/{3be081e466e5c38f.js → 37ea114b14bec27f.js} +1 -1
- package/web/.next/static/chunks/{5d7f74c25dacc25c.js → 3c250fbfb60ee24f.js} +1 -1
- package/web/.next/static/chunks/{79865a986c6f7b78.js → 3c98769f57d9cab5.js} +1 -1
- package/web/.next/static/chunks/{88de900956cc7c59.js → 3d2af4aff402ec27.js} +1 -1
- package/web/.next/static/chunks/{60fd7ec231b71fe6.js → 424eadec8be0f312.js} +1 -1
- package/web/.next/static/chunks/{600304d205fb6d78.js → 4936903aae95a25f.js} +1 -1
- package/web/.next/static/chunks/4d47b81085b62d87.js +1 -0
- package/web/.next/static/chunks/{127b0c5b93da3ad5.js → 4e2de41996b256eb.js} +1 -1
- package/web/.next/static/chunks/{e09a852e65d50ea9.js → 512f87d97c19d83c.js} +1 -1
- package/web/.next/static/chunks/{d8a8d0ea290869a7.js → 51de8a6b0bdc70c9.js} +1 -1
- package/web/.next/static/chunks/57a7139e142ed273.js +1 -0
- package/web/.next/static/chunks/{31eb52265493ef76.js → 61757ff9dcbbd032.js} +1 -1
- package/web/.next/static/chunks/674e4d59f39b85e2.js +1 -0
- package/web/.next/static/chunks/93ea366bd74183ac.js +1 -0
- package/web/.next/static/chunks/{b0658275cec08831.js → ae7430dbb2e98782.js} +1 -1
- package/web/.next/static/chunks/{07361c8c12a5843e.js → b2abfb9855755aa4.js} +1 -1
- package/web/.next/static/chunks/{eb53dfcd51b8c265.js → c3d369f4301955a1.js} +1 -1
- package/web/.next/static/chunks/{07c57742ecdf243e.js → cd057f6e3acdf607.js} +1 -1
- package/web/.next/static/chunks/{afc90b9d319294e0.js → d5563287e193adaa.js} +1 -1
- package/web/.next/static/chunks/{c777b5c3be68f05b.js → d861a3318a70ff49.js} +1 -1
- package/web/.next/static/chunks/{88cebfaa6dd82cc7.js → da7737afc53217ed.js} +3 -3
- package/web/.next/static/chunks/{4cecc66a490b21f7.js → e115c6778a53c0b0.js} +1 -1
- package/web/.next/static/chunks/{39b106ba3f6b82ea.js → ea904b744cea3776.js} +1 -1
- package/web/.next/static/chunks/{6ae0cf4dd1f41683.js → f0c7b0a956112e63.js} +1 -1
- package/web/.next/static/chunks/{a59dfab21ca0ba91.js → f31db8ecfc2d481e.js} +1 -1
- package/web/.next/static/chunks/{a98de0590c6ebab9.js → f8a21f4841d519ff.js} +1 -1
- package/web/.next/static/chunks/00f78bad91244b81.js +0 -1
- package/web/.next/static/chunks/55b11c087456741a.js +0 -1
- package/web/.next/static/chunks/64b32c7716c3cde3.js +0 -1
- package/web/.next/static/chunks/83b6dc76bfe00b00.js +0 -1
- package/web/.next/static/chunks/a29ef3fcc3085a7d.js +0 -1
- package/web/.next/static/chunks/b6f72b83e6cf64bc.js +0 -1
- /package/web/.next/static/{VT3SIc3eQMRpCzfl2igIb → wfZhz3kojQGb8pd6OW9Lk}/_buildManifest.js +0 -0
- /package/web/.next/static/{VT3SIc3eQMRpCzfl2igIb → wfZhz3kojQGb8pd6OW9Lk}/_clientMiddlewareManifest.json +0 -0
- /package/web/.next/static/{VT3SIc3eQMRpCzfl2igIb → wfZhz3kojQGb8pd6OW9Lk}/_ssgManifest.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../src/presentation/web/components/features/control-center/control-center-empty-state.tsx","../../../../../../../src/presentation/web/app/actions/data%3Accb460%20%3Ctext/javascript%3E","../../../../../../../src/presentation/web/app/actions/data%3A3a1956%20%3Ctext/javascript%3E","../../../../../../../src/presentation/web/components/common/react-file-manager-dialog/react-file-manager-dialog.tsx","../../../../../../../node_modules/.pnpm/lucide-react%400.563.0_react%4019.2.4/node_modules/lucide-react/src/icons/folder-plus.ts","../../../../../../../node_modules/.pnpm/lucide-react%400.563.0_react%4019.2.4/node_modules/lucide-react/src/icons/folder.ts","../../../../../../../src/presentation/web/app/actions/data%3A9300b3%20%3Ctext/javascript%3E","../../../../../../../src/presentation/web/components/common/floating-action-button/floating-action-button.tsx","../../../../../../../src/presentation/web/app/actions/data%3Ae5d4ac%20%3Ctext/javascript%3E","../../../../../../../src/presentation/web/components/features/control-center/new-project-dialog.tsx","../../../../../../../node_modules/.pnpm/lucide-react%400.563.0_react%4019.2.4/node_modules/lucide-react/src/icons/sliders-horizontal.ts","../../../../../../../src/presentation/web/app/actions/data%3Acdb8ff%20%3Ctext/javascript%3E","../../../../../../../src/presentation/web/app/actions/data%3A428687%20%3Ctext/javascript%3E","../../../../../../../src/presentation/web/app/actions/data%3A29d734%20%3Ctext/javascript%3E"],"sourcesContent":["'use client';\n\nimport { useState, useCallback, useRef, useEffect } from 'react';\nimport {\n SendHorizontal,\n Paperclip,\n Loader2,\n LayoutGrid,\n Zap,\n ClipboardList,\n ChevronDown,\n Check,\n X,\n} from 'lucide-react';\nimport { useTranslation } from 'react-i18next';\nimport { cn } from '@/lib/utils';\nimport { createProjectAndFeature } from '@/app/actions/create-project-and-feature';\nimport { createApplication } from '@/app/actions/create-application';\nimport { AgentModelPicker } from '@/components/features/settings/AgentModelPicker';\nimport { AttachmentChip } from '@/components/common/attachment-chip';\nimport { ShepLogo } from '@/components/common/shep-logo';\nimport { Tooltip, TooltipContent, TooltipTrigger } from '@/components/ui/tooltip';\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from '@/components/ui/dropdown-menu';\nimport { useAttachments } from '@/hooks/use-attachments';\n\ntype BuildMode = 'application' | 'fast' | 'spec';\n\nconst BUILD_MODES: BuildMode[] = ['application', 'fast', 'spec'];\n\nconst BUILD_MODE_CONFIG: Record<\n BuildMode,\n {\n icon: React.ElementType;\n label: string;\n placeholder: string;\n suggestions: string[];\n }\n> = {\n application: {\n icon: LayoutGrid,\n label: 'Application',\n placeholder: 'Build a modern e-commerce storefront with product catalog...',\n suggestions: [\n 'A landing page with hero, features, and pricing sections',\n 'Full-stack SaaS app with auth, billing, and dashboard',\n 'Mobile-first social media app with real-time chat',\n 'Personal portfolio with blog and project showcase',\n ],\n },\n fast: {\n icon: Zap,\n label: 'Fast',\n placeholder: 'Add a dark mode toggle to the settings page...',\n suggestions: [\n 'Add pagination to the users list endpoint',\n 'Fix the broken logout redirect',\n 'Add input validation to the signup form',\n 'Refactor the API error handling middleware',\n ],\n },\n spec: {\n icon: ClipboardList,\n label: 'Spec Driven',\n placeholder: 'Implement a role-based access control system with audit logging...',\n suggestions: [\n 'OAuth2 authentication with SSO and MFA support',\n 'Event-driven notification system with email and push',\n 'REST API with versioning, rate limiting, and OpenAPI docs',\n 'Data pipeline with ETL, validation, and monitoring',\n ],\n },\n};\n\nexport interface ControlCenterEmptyStateProps {\n onRepositorySelect?: (path: string) => void;\n onApplicationCreated?: (applicationId: string) => void;\n onClose?: () => void;\n className?: string;\n}\n\nexport function ControlCenterEmptyState({\n onRepositorySelect,\n onApplicationCreated,\n onClose,\n className,\n}: ControlCenterEmptyStateProps) {\n const { t } = useTranslation('web');\n const [description, setDescription] = useState('');\n const [overrideAgent, setOverrideAgent] = useState<string | undefined>(undefined);\n const [overrideModel, setOverrideModel] = useState<string | undefined>(undefined);\n const [buildMode, setBuildMode] = useState<BuildMode>('application');\n const [submitting, setSubmitting] = useState(false);\n const [error, setError] = useState<string | null>(null);\n const [isFocused, setIsFocused] = useState(false);\n const textareaRef = useRef<HTMLTextAreaElement>(null);\n const att = useAttachments();\n\n // Apps-only surface (no onRepositorySelect handler): fast/spec modes don't\n // make sense — there's no canvas to attach a feature to. Force application\n // mode and hide the dropdown so the UI doesn't promise behavior we don't have.\n const showModeDropdown = Boolean(onRepositorySelect);\n const effectiveMode: BuildMode = showModeDropdown ? buildMode : 'application';\n\n // Circular mode switching with Shift+Tab, close overlay with Escape\n const cycleBuildMode = useCallback(() => {\n setBuildMode((prev) => {\n const idx = BUILD_MODES.indexOf(prev);\n return BUILD_MODES[(idx + 1) % BUILD_MODES.length];\n });\n }, []);\n\n useEffect(() => {\n const handleGlobalKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'Escape' && onClose) onClose();\n // Shift+Tab cycles only when the dropdown is actually visible —\n // mutating hidden state would be confusing.\n if (e.key === 'Tab' && e.shiftKey && onRepositorySelect) {\n e.preventDefault();\n cycleBuildMode();\n }\n };\n window.addEventListener('keydown', handleGlobalKeyDown);\n return () => window.removeEventListener('keydown', handleGlobalKeyDown);\n }, [onClose, cycleBuildMode, onRepositorySelect]);\n\n const handleSubmit = useCallback(async () => {\n if (!description.trim() || submitting) return;\n\n setSubmitting(true);\n setError(null);\n\n try {\n // When there's no onRepositorySelect handler (e.g. applications-only\n // surface), fast/spec modes can't navigate to a repository canvas.\n // Route ALL modes through the application creation flow so the user\n // lands on /application/[id] regardless of selected mode.\n const useApplicationFlow = effectiveMode === 'application' || !onRepositorySelect;\n\n if (useApplicationFlow) {\n // The server action creates the app AND synchronously posts the\n // user's prompt as the first interactive chat message, so when we\n // navigate, /application/[id] SSR-loads chat state and the message\n // is visible on first paint. No prompt in the URL, no extra\n // round trip on the client.\n const result = await createApplication({\n description: description.trim(),\n agentType: overrideAgent,\n modelOverride: overrideModel,\n initialPrompt: description.trim(),\n });\n\n if (result.error) {\n setError(result.error);\n setSubmitting(false);\n return;\n }\n\n if (result.application) {\n onApplicationCreated?.(result.application.id);\n }\n } else {\n const result = await createProjectAndFeature({\n description: description.trim(),\n attachments: att.completedAttachments.map((a) => ({\n path: a.path,\n name: a.name,\n notes: a.notes,\n })),\n agentType: overrideAgent,\n model: overrideModel,\n fast: effectiveMode === 'fast',\n });\n\n if (result.error) {\n setError(result.error);\n setSubmitting(false);\n return;\n }\n\n if (result.repositoryPath) {\n onRepositorySelect?.(result.repositoryPath);\n }\n\n if (result.feature && result.repositoryPath) {\n window.dispatchEvent(\n new CustomEvent('shep:feature-created', {\n detail: {\n featureId: result.feature.id,\n name: result.feature.name,\n description: result.feature.description,\n repositoryPath: result.repositoryPath,\n },\n })\n );\n }\n }\n } catch {\n setError('Something went wrong. Please try again.');\n setSubmitting(false);\n }\n }, [\n description,\n submitting,\n effectiveMode,\n att.completedAttachments,\n overrideAgent,\n overrideModel,\n onRepositorySelect,\n onApplicationCreated,\n ]);\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLTextAreaElement>) => {\n if (e.key === 'Enter' && (e.ctrlKey || e.metaKey)) {\n e.preventDefault();\n handleSubmit();\n }\n },\n [handleSubmit]\n );\n\n const handlePickFiles = useCallback(async () => {\n try {\n const res = await fetch('/api/dialog/pick-files');\n if (!res.ok) return;\n const data = (await res.json()) as { paths?: string[] };\n if (!data.paths?.length) return;\n for (const filePath of data.paths) {\n const uploadRes = await fetch('/api/attachments/upload-from-path', {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ path: filePath, sessionId: 'onboarding' }),\n });\n if (!uploadRes.ok) continue;\n const uploaded = (await uploadRes.json()) as {\n id: string;\n name: string;\n size: number;\n mimeType: string;\n path: string;\n };\n att.addAttachment(uploaded);\n }\n } catch {\n // Native picker not available — ignore\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps -- att.addAttachment is stable\n }, [att.addAttachment]);\n\n const handleSuggestionClick = useCallback((suggestion: string) => {\n setDescription(suggestion);\n textareaRef.current?.focus();\n }, []);\n\n const modeConfig = BUILD_MODE_CONFIG[effectiveMode];\n const ModeIcon = modeConfig.icon;\n\n return (\n <div\n data-testid=\"control-center-empty-state\"\n className={cn(\n 'relative flex h-full w-full flex-col items-center justify-center overflow-hidden px-8',\n className\n )}\n >\n {/* Gradient background — covers canvas dots */}\n <div className=\"onboard-bg pointer-events-none absolute inset-0 animate-[onboard-fade-in_1.2s_ease-out_both]\" />\n\n {/* Close button — only shown when used as overlay */}\n {onClose ? (\n <button\n type=\"button\"\n onClick={onClose}\n aria-label=\"Close\"\n 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\"\n >\n <X className=\"h-5 w-5\" />\n </button>\n ) : null}\n\n <div className=\"relative flex w-full max-w-2xl flex-col items-center\">\n {/* Shep Logo */}\n <div\n className=\"mb-6 animate-[onboard-logo_0.8s_cubic-bezier(0.16,1,0.3,1)_both]\"\n style={{ animationDelay: '0ms' }}\n >\n <ShepLogo size={72} className=\"text-foreground\" />\n </div>\n\n {/* Hero text */}\n <h1\n 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\"\n style={{ animationDelay: '120ms' }}\n >\n What do you want to build?\n </h1>\n <p\n 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\"\n style={{ animationDelay: '220ms' }}\n >\n Describe your idea and Shep creates the project for you.\n </p>\n\n {/* Prompt box */}\n <div\n className=\"mt-10 w-full animate-[onboard-fade-up_0.7s_cubic-bezier(0.16,1,0.3,1)_both]\"\n style={{ animationDelay: '350ms' }}\n >\n <div\n onFocus={() => setIsFocused(true)}\n onBlur={() => setIsFocused(false)}\n onDragEnter={att.handleDragEnter}\n onDragLeave={att.handleDragLeave}\n onDragOver={att.handleDragOver}\n onDrop={att.handleDrop}\n className={cn(\n 'flex flex-col rounded-xl border transition-all duration-200',\n 'border-border/60 bg-background shadow-sm dark:border-white/10 dark:bg-white/[0.04]',\n isFocused &&\n 'ring-ring/50 border-ring shadow-md ring-[3px] dark:border-orange-500/40 dark:ring-orange-500/25',\n att.isDragOver && 'border-primary/50 bg-primary/5',\n submitting && 'opacity-70'\n )}\n >\n {/* Textarea — supports paste for images */}\n <textarea\n ref={textareaRef}\n rows={2}\n autoFocus\n value={description}\n onChange={(e) => setDescription(e.target.value)}\n onKeyDown={handleKeyDown}\n onPaste={att.handlePaste}\n placeholder={modeConfig.placeholder}\n disabled={submitting}\n 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\"\n />\n\n {/* Attachment chips */}\n {att.attachments.length > 0 ? (\n <div className=\"flex shrink-0 items-center gap-2.5 overflow-x-auto overflow-y-visible px-5 pt-2 pb-2\">\n {att.attachments.map((file) => (\n <AttachmentChip\n key={file.id}\n name={file.name}\n size={file.size}\n mimeType={file.mimeType}\n path={file.path}\n onRemove={() => att.removeAttachment(file.id)}\n loading={file.loading}\n notes={file.notes}\n onNotesChange={(notes) => att.updateNotes(file.id, notes)}\n />\n ))}\n </div>\n ) : null}\n\n {/* Upload error */}\n {att.uploadError ? (\n <p className=\"text-destructive px-4 pb-2 text-xs\">{att.uploadError}</p>\n ) : null}\n\n {/* Controls bar */}\n <div className=\"border-border/60 flex shrink-0 items-center gap-3 border-t px-3 py-2 dark:border-white/10\">\n <AgentModelPicker\n initialAgentType={overrideAgent ?? 'claude-code'}\n initialModel={overrideModel ?? 'claude-sonnet-4-6'}\n mode=\"override\"\n showInstallStatus\n onAgentModelChange={(agent, model) => {\n setOverrideAgent(agent);\n setOverrideModel(model);\n }}\n className=\"w-55\"\n />\n <div className=\"flex-1\" />\n\n {/* Build mode dropdown — Shift+Tab to cycle. Only shown when\n the surface can actually act on fast/spec (i.e. there's an\n onRepositorySelect handler tied to a canvas). */}\n {showModeDropdown ? (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <button\n type=\"button\"\n data-testid=\"build-mode-selector\"\n 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\"\n >\n <span\n key={effectiveMode}\n className=\"flex animate-[onboard-fade-up_0.25s_ease-out_both] items-center gap-1.5\"\n >\n <ModeIcon className=\"h-3.5 w-3.5\" />\n {modeConfig.label}\n </span>\n <ChevronDown className=\"h-3 w-3 opacity-50\" />\n </button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\" className=\"min-w-[160px]\">\n {BUILD_MODES.map((mode) => {\n const cfg = BUILD_MODE_CONFIG[mode];\n const Icon = cfg.icon;\n const isActive = effectiveMode === mode;\n return (\n <DropdownMenuItem\n key={mode}\n onClick={() => setBuildMode(mode)}\n data-testid={`build-mode-${mode}`}\n className=\"flex items-center gap-2\"\n >\n <Icon className=\"h-3.5 w-3.5\" />\n <span className=\"flex-1\">{cfg.label}</span>\n {isActive ? <Check className=\"text-foreground h-3.5 w-3.5\" /> : null}\n </DropdownMenuItem>\n );\n })}\n </DropdownMenuContent>\n </DropdownMenu>\n ) : null}\n\n <Tooltip>\n <TooltipTrigger asChild>\n <button\n type=\"button\"\n onClick={handlePickFiles}\n disabled={submitting}\n aria-label={t('chat.attachFiles')}\n className=\"text-muted-foreground hover:text-foreground cursor-pointer rounded p-1 transition-colors disabled:opacity-50\"\n >\n <Paperclip className=\"h-4 w-4\" />\n </button>\n </TooltipTrigger>\n <TooltipContent side=\"top\">{t('chat.attachFiles')}</TooltipContent>\n </Tooltip>\n\n <button\n type=\"button\"\n onClick={handleSubmit}\n disabled={!description.trim() || submitting}\n className={cn(\n 'bg-foreground text-background inline-flex h-8 w-8 shrink-0 cursor-pointer items-center justify-center rounded-lg',\n 'hover:bg-foreground/90 disabled:pointer-events-none disabled:opacity-30',\n 'transition-all duration-150'\n )}\n >\n {submitting ? (\n <Loader2 className=\"h-3.5 w-3.5 animate-spin\" />\n ) : (\n <SendHorizontal className=\"h-3.5 w-3.5\" />\n )}\n </button>\n </div>\n </div>\n\n {error ? <p className=\"text-destructive mt-2 text-center text-sm\">{error}</p> : null}\n </div>\n\n {/* Suggestion chips — re-animate on mode change */}\n <div\n key={effectiveMode}\n className=\"mt-6 flex animate-[onboard-fade-up_0.4s_ease-out_both] flex-wrap justify-center gap-2\"\n >\n {modeConfig.suggestions.map((suggestion) => (\n <button\n key={suggestion}\n type=\"button\"\n onClick={() => handleSuggestionClick(suggestion)}\n disabled={submitting}\n 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]\"\n >\n {suggestion}\n </button>\n ))}\n </div>\n </div>\n </div>\n );\n}\n","/* __next_internal_action_entry_do_not_use__ [{\"4002cb2cd5637e166af94ad41d670792e2dcfe4205\":\"createProjectAndFeature\"},\"src/presentation/web/app/actions/create-project-and-feature.ts\",\"\"] */\"use turbopack no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_0=/*#__PURE__*/createServerReference(\"4002cb2cd5637e166af94ad41d670792e2dcfe4205\",callServer,void 0,findSourceMapURL,\"createProjectAndFeature\");export{$$RSC_SERVER_ACTION_0 as createProjectAndFeature};","/* __next_internal_action_entry_do_not_use__ [{\"40606d2b1076b8b1fbed9a9e24749c8e59c8ba8ed2\":\"createApplication\"},\"src/presentation/web/app/actions/create-application.ts\",\"\"] */\"use turbopack no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_0=/*#__PURE__*/createServerReference(\"40606d2b1076b8b1fbed9a9e24749c8e59c8ba8ed2\",callServer,void 0,findSourceMapURL,\"createApplication\");export{$$RSC_SERVER_ACTION_0 as createApplication};","'use client';\n\nimport { useCallback, useEffect, useRef, useState } from 'react';\nimport { ChevronRight, Folder, FolderOpen, Loader2, Pencil } from 'lucide-react';\nimport { toast } from 'sonner';\nimport { Dialog, DialogContent, DialogDescription, DialogTitle } from '@/components/ui/dialog';\nimport { Button } from '@/components/ui/button';\nimport { ScrollArea } from '@/components/ui/scroll-area';\nimport type {\n DirectoryEntry,\n DirectoryListResponse,\n ReactFileManagerDialogProps,\n} from './react-file-manager-dialog-config';\n\nasync function fetchDirectory(dirPath?: string): Promise<DirectoryListResponse> {\n const params = new URLSearchParams();\n if (dirPath) {\n params.set('path', dirPath);\n }\n const res = await fetch(`/api/directory/list?${params.toString()}`);\n if (!res.ok) {\n const body = await res.json().catch(() => ({ error: 'Failed to load directory' }));\n throw new Error(body.error ?? 'Failed to load directory');\n }\n return res.json();\n}\n\nfunction parseBreadcrumbs(currentPath: string) {\n if (!currentPath) return [];\n const isWindows = /^[a-zA-Z]:/.test(currentPath);\n const separator = isWindows ? '\\\\' : '/';\n const parts = currentPath.split(/[\\\\/]/).filter(Boolean);\n\n const crumbs: { label: string; path: string }[] = [];\n for (let i = 0; i < parts.length; i++) {\n const path = isWindows\n ? parts.slice(0, i + 1).join(separator)\n : separator + parts.slice(0, i + 1).join(separator);\n crumbs.push({ label: parts[i], path });\n }\n return crumbs;\n}\n\nconst MAX_VISIBLE_CRUMBS = 3;\n\nfunction AddressBar({\n currentPath,\n isEditing,\n onToggleEdit,\n onNavigate,\n}: {\n currentPath: string;\n isEditing: boolean;\n onToggleEdit: () => void;\n onNavigate: (path: string) => void;\n}) {\n const inputRef = useRef<HTMLInputElement>(null);\n const [inputValue, setInputValue] = useState(currentPath);\n\n useEffect(() => {\n setInputValue(currentPath);\n }, [currentPath]);\n\n useEffect(() => {\n if (isEditing && inputRef.current) {\n inputRef.current.focus();\n inputRef.current.select();\n }\n }, [isEditing]);\n\n function handleSubmit() {\n const trimmed = inputValue.trim();\n if (trimmed) {\n onNavigate(trimmed);\n }\n }\n\n function closeEdit() {\n setInputValue(currentPath);\n onToggleEdit();\n }\n\n const breadcrumbs = parseBreadcrumbs(currentPath);\n const needsCollapse = breadcrumbs.length > MAX_VISIBLE_CRUMBS;\n const visibleCrumbs = needsCollapse ? breadcrumbs.slice(-MAX_VISIBLE_CRUMBS) : breadcrumbs;\n\n return (\n <div className=\"border-b px-4 py-3\">\n {/* Title */}\n <h2 className=\"text-foreground mb-2.5 text-sm font-semibold tracking-[-0.01em]\">\n Select Folder\n </h2>\n\n {/* Address bar */}\n {isEditing ? (\n <input\n ref={inputRef}\n type=\"text\"\n value={inputValue}\n onChange={(e) => setInputValue(e.target.value)}\n onKeyDown={(e) => {\n if (e.key === 'Enter') {\n e.preventDefault();\n handleSubmit();\n }\n if (e.key === 'Escape') {\n e.preventDefault();\n closeEdit();\n }\n }}\n onBlur={closeEdit}\n className=\"bg-muted/60 border-border focus:ring-ring/20 focus:border-ring w-full rounded-lg border px-3 py-2 font-mono text-xs transition-all outline-none focus:ring-2\"\n placeholder=\"Type a path and press Enter...\"\n spellCheck={false}\n autoComplete=\"off\"\n />\n ) : (\n <div className=\"bg-muted/40 flex items-center gap-1 rounded-lg px-2.5 py-2\">\n {/* Root */}\n <button\n type=\"button\"\n onClick={() => onNavigate('/')}\n className=\"text-muted-foreground hover:text-foreground hover:bg-background shrink-0 rounded px-1.5 py-0.5 font-mono text-xs transition-colors\"\n >\n /\n </button>\n\n {/* Collapsed middle */}\n {needsCollapse ? (\n <>\n <ChevronRight className=\"text-muted-foreground/30 h-3 w-3 shrink-0\" />\n <span className=\"text-muted-foreground/40 font-mono text-xs\">...</span>\n </>\n ) : null}\n\n {/* Visible crumbs */}\n {visibleCrumbs.map((crumb, i) => {\n const isLast = i === visibleCrumbs.length - 1;\n return (\n <span key={crumb.path} className=\"flex shrink-0 items-center gap-1\">\n <ChevronRight className=\"text-muted-foreground/30 h-3 w-3\" />\n {isLast ? (\n <span className=\"bg-primary/10 text-primary rounded px-2 py-0.5 font-mono text-xs font-medium\">\n {crumb.label}\n </span>\n ) : (\n <button\n type=\"button\"\n onClick={() => onNavigate(crumb.path)}\n className=\"text-muted-foreground hover:text-foreground hover:bg-background rounded px-1.5 py-0.5 font-mono text-xs transition-colors\"\n >\n {crumb.label}\n </button>\n )}\n </span>\n );\n })}\n\n {/* Edit path button — inside the path row */}\n <div className=\"flex-1\" />\n <button\n type=\"button\"\n onClick={onToggleEdit}\n className=\"text-muted-foreground/40 hover:text-foreground hover:bg-background shrink-0 rounded p-1 transition-colors\"\n aria-label=\"Edit path\"\n >\n <Pencil className=\"h-3 w-3\" />\n </button>\n </div>\n )}\n </div>\n );\n}\n\nexport function ReactFileManagerDialog({\n open,\n onOpenChange,\n onSelect,\n initialPath,\n}: ReactFileManagerDialogProps) {\n const [entries, setEntries] = useState<DirectoryEntry[]>([]);\n const [currentPath, setCurrentPath] = useState('');\n const [isLoading, setIsLoading] = useState(false);\n const [isEditingPath, setIsEditingPath] = useState(false);\n const hasLoadedRef = useRef(false);\n const [renderKey, setRenderKey] = useState(0);\n\n const loadDirectory = useCallback(async (dirPath?: string) => {\n setIsLoading(true);\n setIsEditingPath(false);\n try {\n const data = await fetchDirectory(dirPath);\n setEntries(data.entries);\n setCurrentPath(data.currentPath);\n setRenderKey((k) => k + 1);\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to load directory';\n toast.error(message);\n } finally {\n setIsLoading(false);\n }\n }, []);\n\n useEffect(() => {\n if (open && !hasLoadedRef.current) {\n hasLoadedRef.current = true;\n loadDirectory(initialPath);\n }\n if (!open) {\n hasLoadedRef.current = false;\n setIsEditingPath(false);\n }\n }, [open, initialPath, loadDirectory]);\n\n function handleNavigate(path: string) {\n loadDirectory(path);\n }\n\n function handleSelect() {\n if (currentPath) {\n onSelect(currentPath);\n onOpenChange(false);\n }\n }\n\n function handleCancel() {\n onSelect(null);\n onOpenChange(false);\n }\n\n return (\n <Dialog\n open={open}\n onOpenChange={(isOpen) => {\n if (!isOpen) {\n handleCancel();\n }\n }}\n >\n <DialogContent\n className=\"flex h-[min(520px,85dvh)] w-full max-w-[460px] flex-col gap-0 overflow-hidden p-0\"\n onCloseAutoFocus={(e) => e.preventDefault()}\n >\n <DialogTitle className=\"sr-only\">Select Folder</DialogTitle>\n <DialogDescription className=\"sr-only\">\n Navigate to a folder and select it\n </DialogDescription>\n\n {/* ── Header with address bar ── */}\n <AddressBar\n currentPath={currentPath}\n isEditing={isEditingPath}\n onToggleEdit={() => setIsEditingPath((v) => !v)}\n onNavigate={handleNavigate}\n />\n\n {/* ── Folder list ── */}\n <ScrollArea className=\"min-h-0 flex-1\">\n {isLoading && entries.length === 0 ? (\n <div className=\"space-y-0.5 p-2\">\n {Array.from({ length: 8 }).map((_, i) => (\n <div\n // eslint-disable-next-line react/no-array-index-key\n key={`skeleton-${i}`}\n className=\"flex items-center gap-3 rounded-lg px-3 py-2.5\"\n style={{ opacity: 1 - i * 0.1 }}\n >\n <div className=\"bg-muted h-4 w-4 animate-pulse rounded\" />\n <div\n className=\"bg-muted h-3.5 animate-pulse rounded\"\n style={{ width: `${40 + Math.random() * 35}%` }}\n />\n </div>\n ))}\n </div>\n ) : entries.length === 0 ? (\n <div className=\"flex flex-col items-center justify-center py-20\">\n <FolderOpen className=\"text-muted-foreground/25 mb-3 h-10 w-10\" />\n <p className=\"text-muted-foreground/60 text-sm\">Empty folder</p>\n </div>\n ) : (\n <div key={renderKey} className=\"p-2\">\n {entries.map((entry, i) => (\n <button\n key={entry.path}\n type=\"button\"\n onClick={() => handleNavigate(entry.path)}\n className=\"folder-row group flex w-full items-center gap-3 rounded-lg px-3 py-2.5 text-left transition-all hover:bg-[var(--color-primary)]/[0.06] active:scale-[0.997]\"\n style={{ animationDelay: `${i * 20}ms` }}\n >\n <Folder className=\"text-muted-foreground/50 group-hover:text-primary h-[18px] w-[18px] shrink-0 transition-colors\" />\n <span className=\"text-foreground min-w-0 flex-1 truncate text-[13px] font-medium\">\n {entry.name}\n </span>\n <ChevronRight className=\"text-muted-foreground/0 group-hover:text-muted-foreground/40 h-3.5 w-3.5 shrink-0 transition-all\" />\n </button>\n ))}\n </div>\n )}\n </ScrollArea>\n\n {/* ── Footer ── */}\n <div className=\"flex items-center gap-2 border-t px-4 py-3\">\n <p className=\"text-muted-foreground min-w-0 flex-1 truncate font-mono text-[11px] leading-none\">\n {currentPath || '\\u00A0'}\n </p>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={handleCancel}\n className=\"text-muted-foreground h-8 shrink-0 px-3 text-xs\"\n >\n Cancel\n </Button>\n <Button\n size=\"sm\"\n onClick={handleSelect}\n disabled={!currentPath || isLoading}\n className=\"h-8 shrink-0 px-5 text-xs font-medium\"\n >\n {isLoading ? <Loader2 className=\"mr-1.5 h-3 w-3 animate-spin\" /> : null}\n Select\n </Button>\n </div>\n </DialogContent>\n </Dialog>\n );\n}\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M12 10v6', key: '1bos4e' }],\n ['path', { d: 'M9 13h6', key: '1uhe8q' }],\n [\n 'path',\n {\n d: 'M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z',\n key: '1kt360',\n },\n ],\n];\n\n/**\n * @component @name FolderPlus\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/folder-plus\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst FolderPlus = createLucideIcon('folder-plus', __iconNode);\n\nexport default FolderPlus;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z',\n key: '1kt360',\n },\n ],\n];\n\n/**\n * @component @name Folder\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/folder\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Folder = createLucideIcon('folder', __iconNode);\n\nexport default Folder;\n","/* __next_internal_action_entry_do_not_use__ [{\"40a65e24d344abc12687070db11ffe885c7d74b649\":\"addRepository\"},\"src/presentation/web/app/actions/add-repository.ts\",\"\"] */\"use turbopack no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_0=/*#__PURE__*/createServerReference(\"40a65e24d344abc12687070db11ffe885c7d74b649\",callServer,void 0,findSourceMapURL,\"addRepository\");export{$$RSC_SERVER_ACTION_0 as addRepository};","'use client';\n\nimport React, { useEffect, useState } from 'react';\nimport { Plus, Loader2, X } from 'lucide-react';\nimport { useTranslation } from 'react-i18next';\nimport { cn } from '@/lib/utils';\nimport { Button } from '@/components/ui/button';\n\nexport interface FloatingActionButtonAction {\n /** Unique key for the action. */\n id: string;\n /** Accessible label shown next to the icon. */\n label: string;\n /** Lucide icon component. */\n icon: React.ReactNode;\n /** Called when the action is clicked. */\n onClick: () => void;\n /** Whether the action is currently loading. */\n loading?: boolean;\n /** Whether the action is disabled. */\n disabled?: boolean;\n}\n\nexport interface FloatingActionButtonProps {\n /** Action items shown when the FAB is expanded. */\n actions: FloatingActionButtonAction[];\n /** Additional CSS classes for the wrapper. */\n className?: string;\n /** Inline styles for the wrapper (e.g. dynamic positioning). */\n style?: React.CSSProperties;\n}\n\n/** Stagger delay between each item animation in ms. */\nconst STAGGER_MS = 50;\n\n/** Total animation duration in ms. */\nconst DURATION_MS = 250;\n\n/**\n * (+) FAB with expandable action menu.\n * Renders inline — parent controls positioning.\n */\nexport function FloatingActionButton({ actions, className, style }: FloatingActionButtonProps) {\n const { t } = useTranslation('web');\n const [open, setOpen] = useState(false);\n\n // Close on Escape key\n useEffect(() => {\n if (!open) return;\n function handleKeyDown(e: KeyboardEvent) {\n if (e.key === 'Escape') {\n setOpen(false);\n }\n }\n document.addEventListener('keydown', handleKeyDown);\n return () => document.removeEventListener('keydown', handleKeyDown);\n }, [open]);\n\n return (\n <>\n {/* Invisible click-outside catcher */}\n {open ? (\n <div\n data-testid=\"fab-overlay\"\n className=\"fixed inset-0 z-40\"\n onClick={() => setOpen(false)}\n aria-hidden=\"true\"\n />\n ) : null}\n\n <div\n data-testid=\"floating-action-button\"\n className={cn('relative z-50', className)}\n style={style}\n >\n {/* Action chips — expand upward */}\n <div\n className={cn(\n 'absolute start-0 bottom-[calc(100%+24px)] flex flex-col items-start gap-2',\n !open && 'pointer-events-none'\n )}\n data-testid=\"fab-actions\"\n >\n {actions.map((action, i) => {\n const openDelay = (actions.length - 1 - i) * STAGGER_MS;\n\n return (\n <button\n key={action.id}\n data-testid={`fab-action-${action.id}`}\n aria-label={action.label}\n disabled={action.disabled ?? action.loading}\n className={cn(\n 'flex h-10 items-center gap-2.5 rounded-full px-4',\n 'bg-background text-foreground shadow-md',\n 'border-border border',\n 'hover:bg-accent hover:text-accent-foreground',\n 'disabled:pointer-events-none disabled:opacity-50',\n 'text-sm font-medium whitespace-nowrap',\n open ? 'translate-y-0 opacity-100' : 'pointer-events-none translate-y-0 opacity-0'\n )}\n style={{\n transition: `opacity ${open ? DURATION_MS : 120}ms ease-out ${open ? openDelay : 0}ms, transform ${open ? DURATION_MS : 120}ms ease-out ${open ? openDelay : 0}ms`,\n }}\n onClick={() => {\n action.onClick();\n setOpen(false);\n }}\n >\n <span className=\"flex h-5 w-5 shrink-0 items-center justify-center\">\n {action.loading ? <Loader2 className=\"h-4 w-4 animate-spin\" /> : action.icon}\n </span>\n <span>{action.label}</span>\n </button>\n );\n })}\n </div>\n\n {/* FAB trigger */}\n <Button\n size=\"icon\"\n data-testid=\"fab-trigger\"\n aria-label={open ? t('fab.closeActions') : t('fab.createNew')}\n className={cn(\n 'relative h-14 w-14 rounded-full shadow-lg',\n 'bg-indigo-500 text-white hover:bg-indigo-400 dark:bg-indigo-500 dark:hover:bg-indigo-400',\n 'transition-all duration-200 hover:scale-105 hover:shadow-xl active:scale-95'\n )}\n onClick={() => setOpen((prev) => !prev)}\n >\n <Plus\n className={cn(\n 'absolute h-7 w-7 stroke-[2.5] transition-all',\n open ? 'scale-0 rotate-90 opacity-0' : 'scale-100 rotate-0 opacity-100'\n )}\n style={{ transitionDuration: `${DURATION_MS}ms` }}\n />\n <X\n className={cn(\n 'absolute h-6 w-6 stroke-[2.5] transition-all',\n open ? 'scale-100 rotate-0 opacity-100' : 'scale-0 -rotate-90 opacity-0'\n )}\n style={{ transitionDuration: `${DURATION_MS}ms` }}\n />\n </Button>\n </div>\n </>\n );\n}\n","/* __next_internal_action_entry_do_not_use__ [{\"405f847f00fb02f1bae177485c4f9eab305d5a79ec\":\"createProjectFolder\"},\"src/presentation/web/app/actions/create-project-folder.ts\",\"\"] */\"use turbopack no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_0=/*#__PURE__*/createServerReference(\"405f847f00fb02f1bae177485c4f9eab305d5a79ec\",callServer,void 0,findSourceMapURL,\"createProjectFolder\");export{$$RSC_SERVER_ACTION_0 as createProjectFolder};","'use client';\n\nimport { useEffect, useState } from 'react';\nimport { Loader2 } from 'lucide-react';\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n} from '@/components/ui/dialog';\nimport { Input } from '@/components/ui/input';\nimport { Button } from '@/components/ui/button';\nimport { createProjectFolder } from '@/app/actions/create-project-folder';\n\nexport interface NewProjectDialogProps {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n /** Called with the absolute path of the newly-created project folder. */\n onCreated: (path: string) => void;\n}\n\nexport function NewProjectDialog({ open, onOpenChange, onCreated }: NewProjectDialogProps) {\n const [name, setName] = useState('');\n const [busy, setBusy] = useState(false);\n const [error, setError] = useState<string | null>(null);\n\n // Reset state every time the dialog opens.\n useEffect(() => {\n if (open) {\n setName('');\n setBusy(false);\n setError(null);\n }\n }, [open]);\n\n const handleSubmit = async (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n const trimmed = name.trim();\n if (!trimmed || busy) return;\n\n setBusy(true);\n setError(null);\n const result = await createProjectFolder(trimmed);\n if (!result.ok || !result.path) {\n setError(result.error ?? 'Failed to create project.');\n setBusy(false);\n return;\n }\n\n // Hand the new path off to the empty state's existing add-repo flow.\n onCreated(result.path);\n onOpenChange(false);\n };\n\n return (\n <Dialog open={open} onOpenChange={onOpenChange}>\n <DialogContent className=\"max-w-sm\">\n <form onSubmit={handleSubmit}>\n <DialogHeader>\n <DialogTitle>New project</DialogTitle>\n <DialogDescription>\n Create an empty project folder inside your Shep home directory. Git will be\n initialised automatically when the project is added.\n </DialogDescription>\n </DialogHeader>\n <div className=\"py-4\">\n <Input\n autoFocus\n value={name}\n onChange={(e) => {\n setName(e.target.value);\n if (error) setError(null);\n }}\n placeholder=\"my-prototype\"\n disabled={busy}\n data-testid=\"new-project-name-input\"\n />\n {error ? (\n <p className=\"text-destructive mt-2 text-xs\" role=\"alert\">\n {error}\n </p>\n ) : null}\n </div>\n <DialogFooter>\n <Button\n type=\"button\"\n variant=\"ghost\"\n onClick={() => onOpenChange(false)}\n disabled={busy}\n >\n Cancel\n </Button>\n <Button type=\"submit\" disabled={!name.trim() || busy}>\n {busy ? (\n <>\n <Loader2 className=\"mr-2 h-4 w-4 animate-spin\" />\n Creating…\n </>\n ) : (\n 'Create project'\n )}\n </Button>\n </DialogFooter>\n </form>\n </DialogContent>\n </Dialog>\n );\n}\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M10 5H3', key: '1qgfaw' }],\n ['path', { d: 'M12 19H3', key: 'yhmn1j' }],\n ['path', { d: 'M14 3v4', key: '1sua03' }],\n ['path', { d: 'M16 17v4', key: '1q0r14' }],\n ['path', { d: 'M21 12h-9', key: '1o4lsq' }],\n ['path', { d: 'M21 19h-5', key: '1rlt1p' }],\n ['path', { d: 'M21 5h-7', key: '1oszz2' }],\n ['path', { d: 'M8 10v4', key: 'tgpxqk' }],\n ['path', { d: 'M8 12H3', key: 'a7s4jb' }],\n];\n\n/**\n * @component @name SlidersHorizontal\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/sliders-horizontal\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst SlidersHorizontal = createLucideIcon('sliders-horizontal', __iconNode);\n\nexport default SlidersHorizontal;\n","/* __next_internal_action_entry_do_not_use__ [{\"40e1210fbd379dfd9b187d89169c855d14964f0a3a\":\"archiveFeature\"},\"src/presentation/web/app/actions/archive-feature.ts\",\"\"] */\"use turbopack no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_0=/*#__PURE__*/createServerReference(\"40e1210fbd379dfd9b187d89169c855d14964f0a3a\",callServer,void 0,findSourceMapURL,\"archiveFeature\");export{$$RSC_SERVER_ACTION_0 as archiveFeature};","/* __next_internal_action_entry_do_not_use__ [{\"40a195374dfcd86d9e2e050372657dddd15758381f\":\"unarchiveFeature\"},\"src/presentation/web/app/actions/unarchive-feature.ts\",\"\"] */\"use turbopack no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_0=/*#__PURE__*/createServerReference(\"40a195374dfcd86d9e2e050372657dddd15758381f\",callServer,void 0,findSourceMapURL,\"unarchiveFeature\");export{$$RSC_SERVER_ACTION_0 as unarchiveFeature};","/* __next_internal_action_entry_do_not_use__ [{\"78765481ad3f9e65792efd59a008701e1622c34fb4\":\"deleteFeature\"},\"src/presentation/web/app/actions/delete-feature.ts\",\"\"] */\"use turbopack no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_0=/*#__PURE__*/createServerReference(\"78765481ad3f9e65792efd59a008701e1622c34fb4\",callServer,void 0,findSourceMapURL,\"deleteFeature\");export{$$RSC_SERVER_ACTION_0 as deleteFeature};"],"names":[],"mappings":"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","ignoreList":[4,5,10]}
|
|
1
|
+
{"version":3,"sources":["../../../../../../../src/presentation/web/components/features/control-center/control-center-empty-state.tsx","../../../../../../../src/presentation/web/app/actions/data%3A4dce58%20%3Ctext/javascript%3E","../../../../../../../src/presentation/web/app/actions/data%3A3c9861%20%3Ctext/javascript%3E","../../../../../../../src/presentation/web/components/common/react-file-manager-dialog/react-file-manager-dialog.tsx","../../../../../../../node_modules/.pnpm/lucide-react%400.563.0_react%4019.2.4/node_modules/lucide-react/src/icons/folder-plus.ts","../../../../../../../node_modules/.pnpm/lucide-react%400.563.0_react%4019.2.4/node_modules/lucide-react/src/icons/folder.ts","../../../../../../../src/presentation/web/app/actions/data%3Ae772e1%20%3Ctext/javascript%3E","../../../../../../../src/presentation/web/components/common/floating-action-button/floating-action-button.tsx","../../../../../../../src/presentation/web/app/actions/data%3A79d2b0%20%3Ctext/javascript%3E","../../../../../../../src/presentation/web/components/features/control-center/new-project-dialog.tsx","../../../../../../../node_modules/.pnpm/lucide-react%400.563.0_react%4019.2.4/node_modules/lucide-react/src/icons/sliders-horizontal.ts","../../../../../../../src/presentation/web/app/actions/data%3A4c815b%20%3Ctext/javascript%3E","../../../../../../../src/presentation/web/app/actions/data%3Af7af1c%20%3Ctext/javascript%3E","../../../../../../../src/presentation/web/app/actions/data%3A49ee9a%20%3Ctext/javascript%3E"],"sourcesContent":["'use client';\n\nimport { useState, useCallback, useRef, useEffect } from 'react';\nimport {\n SendHorizontal,\n Paperclip,\n Loader2,\n LayoutGrid,\n Zap,\n ClipboardList,\n ChevronDown,\n Check,\n X,\n} from 'lucide-react';\nimport { useTranslation } from 'react-i18next';\nimport { cn } from '@/lib/utils';\nimport { createProjectAndFeature } from '@/app/actions/create-project-and-feature';\nimport { createApplication } from '@/app/actions/create-application';\nimport { AgentModelPicker } from '@/components/features/settings/AgentModelPicker';\nimport { AttachmentChip } from '@/components/common/attachment-chip';\nimport { ShepLogo } from '@/components/common/shep-logo';\nimport { Tooltip, TooltipContent, TooltipTrigger } from '@/components/ui/tooltip';\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from '@/components/ui/dropdown-menu';\nimport { useAttachments } from '@/hooks/use-attachments';\n\ntype BuildMode = 'application' | 'fast' | 'spec';\n\nconst BUILD_MODES: BuildMode[] = ['application', 'fast', 'spec'];\n\nconst BUILD_MODE_CONFIG: Record<\n BuildMode,\n {\n icon: React.ElementType;\n label: string;\n placeholder: string;\n suggestions: string[];\n }\n> = {\n application: {\n icon: LayoutGrid,\n label: 'Application',\n placeholder: 'Build a modern e-commerce storefront with product catalog...',\n suggestions: [\n 'A landing page with hero, features, and pricing sections',\n 'Full-stack SaaS app with auth, billing, and dashboard',\n 'Mobile-first social media app with real-time chat',\n 'Personal portfolio with blog and project showcase',\n ],\n },\n fast: {\n icon: Zap,\n label: 'Fast',\n placeholder: 'Add a dark mode toggle to the settings page...',\n suggestions: [\n 'Add pagination to the users list endpoint',\n 'Fix the broken logout redirect',\n 'Add input validation to the signup form',\n 'Refactor the API error handling middleware',\n ],\n },\n spec: {\n icon: ClipboardList,\n label: 'Spec Driven',\n placeholder: 'Implement a role-based access control system with audit logging...',\n suggestions: [\n 'OAuth2 authentication with SSO and MFA support',\n 'Event-driven notification system with email and push',\n 'REST API with versioning, rate limiting, and OpenAPI docs',\n 'Data pipeline with ETL, validation, and monitoring',\n ],\n },\n};\n\nexport interface ControlCenterEmptyStateProps {\n onRepositorySelect?: (path: string) => void;\n onApplicationCreated?: (applicationId: string) => void;\n onClose?: () => void;\n className?: string;\n}\n\nexport function ControlCenterEmptyState({\n onRepositorySelect,\n onApplicationCreated,\n onClose,\n className,\n}: ControlCenterEmptyStateProps) {\n const { t } = useTranslation('web');\n const [description, setDescription] = useState('');\n const [overrideAgent, setOverrideAgent] = useState<string | undefined>(undefined);\n const [overrideModel, setOverrideModel] = useState<string | undefined>(undefined);\n const [buildMode, setBuildMode] = useState<BuildMode>('application');\n const [submitting, setSubmitting] = useState(false);\n const [error, setError] = useState<string | null>(null);\n const [isFocused, setIsFocused] = useState(false);\n const textareaRef = useRef<HTMLTextAreaElement>(null);\n const att = useAttachments();\n\n // Apps-only surface (no onRepositorySelect handler): fast/spec modes don't\n // make sense — there's no canvas to attach a feature to. Force application\n // mode and hide the dropdown so the UI doesn't promise behavior we don't have.\n const showModeDropdown = Boolean(onRepositorySelect);\n const effectiveMode: BuildMode = showModeDropdown ? buildMode : 'application';\n\n // Circular mode switching with Shift+Tab, close overlay with Escape\n const cycleBuildMode = useCallback(() => {\n setBuildMode((prev) => {\n const idx = BUILD_MODES.indexOf(prev);\n return BUILD_MODES[(idx + 1) % BUILD_MODES.length];\n });\n }, []);\n\n useEffect(() => {\n const handleGlobalKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'Escape' && onClose) onClose();\n // Shift+Tab cycles only when the dropdown is actually visible —\n // mutating hidden state would be confusing.\n if (e.key === 'Tab' && e.shiftKey && onRepositorySelect) {\n e.preventDefault();\n cycleBuildMode();\n }\n };\n window.addEventListener('keydown', handleGlobalKeyDown);\n return () => window.removeEventListener('keydown', handleGlobalKeyDown);\n }, [onClose, cycleBuildMode, onRepositorySelect]);\n\n const handleSubmit = useCallback(async () => {\n if (!description.trim() || submitting) return;\n\n setSubmitting(true);\n setError(null);\n\n try {\n // When there's no onRepositorySelect handler (e.g. applications-only\n // surface), fast/spec modes can't navigate to a repository canvas.\n // Route ALL modes through the application creation flow so the user\n // lands on /application/[id] regardless of selected mode.\n const useApplicationFlow = effectiveMode === 'application' || !onRepositorySelect;\n\n if (useApplicationFlow) {\n // The server action creates the app AND synchronously posts the\n // user's prompt as the first interactive chat message, so when we\n // navigate, /application/[id] SSR-loads chat state and the message\n // is visible on first paint. No prompt in the URL, no extra\n // round trip on the client.\n const result = await createApplication({\n description: description.trim(),\n agentType: overrideAgent,\n modelOverride: overrideModel,\n initialPrompt: description.trim(),\n });\n\n if (result.error) {\n setError(result.error);\n setSubmitting(false);\n return;\n }\n\n if (result.application) {\n onApplicationCreated?.(result.application.id);\n }\n } else {\n const result = await createProjectAndFeature({\n description: description.trim(),\n attachments: att.completedAttachments.map((a) => ({\n path: a.path,\n name: a.name,\n notes: a.notes,\n })),\n agentType: overrideAgent,\n model: overrideModel,\n fast: effectiveMode === 'fast',\n });\n\n if (result.error) {\n setError(result.error);\n setSubmitting(false);\n return;\n }\n\n if (result.repositoryPath) {\n onRepositorySelect?.(result.repositoryPath);\n }\n\n if (result.feature && result.repositoryPath) {\n window.dispatchEvent(\n new CustomEvent('shep:feature-created', {\n detail: {\n featureId: result.feature.id,\n name: result.feature.name,\n description: result.feature.description,\n repositoryPath: result.repositoryPath,\n },\n })\n );\n }\n }\n } catch {\n setError('Something went wrong. Please try again.');\n setSubmitting(false);\n }\n }, [\n description,\n submitting,\n effectiveMode,\n att.completedAttachments,\n overrideAgent,\n overrideModel,\n onRepositorySelect,\n onApplicationCreated,\n ]);\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLTextAreaElement>) => {\n if (e.key === 'Enter' && (e.ctrlKey || e.metaKey)) {\n e.preventDefault();\n handleSubmit();\n }\n },\n [handleSubmit]\n );\n\n const handlePickFiles = useCallback(async () => {\n try {\n const res = await fetch('/api/dialog/pick-files');\n if (!res.ok) return;\n const data = (await res.json()) as { paths?: string[] };\n if (!data.paths?.length) return;\n for (const filePath of data.paths) {\n const uploadRes = await fetch('/api/attachments/upload-from-path', {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ path: filePath, sessionId: 'onboarding' }),\n });\n if (!uploadRes.ok) continue;\n const uploaded = (await uploadRes.json()) as {\n id: string;\n name: string;\n size: number;\n mimeType: string;\n path: string;\n };\n att.addAttachment(uploaded);\n }\n } catch {\n // Native picker not available — ignore\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps -- att.addAttachment is stable\n }, [att.addAttachment]);\n\n const handleSuggestionClick = useCallback((suggestion: string) => {\n setDescription(suggestion);\n textareaRef.current?.focus();\n }, []);\n\n const modeConfig = BUILD_MODE_CONFIG[effectiveMode];\n const ModeIcon = modeConfig.icon;\n\n return (\n <div\n data-testid=\"control-center-empty-state\"\n className={cn(\n 'relative flex h-full w-full flex-col items-center justify-center overflow-hidden px-8',\n className\n )}\n >\n {/* Gradient background — covers canvas dots */}\n <div className=\"onboard-bg pointer-events-none absolute inset-0 animate-[onboard-fade-in_1.2s_ease-out_both]\" />\n\n {/* Close button — only shown when used as overlay */}\n {onClose ? (\n <button\n type=\"button\"\n onClick={onClose}\n aria-label=\"Close\"\n 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\"\n >\n <X className=\"h-5 w-5\" />\n </button>\n ) : null}\n\n <div className=\"relative flex w-full max-w-2xl flex-col items-center\">\n {/* Shep Logo */}\n <div\n className=\"mb-6 animate-[onboard-logo_0.8s_cubic-bezier(0.16,1,0.3,1)_both]\"\n style={{ animationDelay: '0ms' }}\n >\n <ShepLogo size={72} className=\"text-foreground\" />\n </div>\n\n {/* Hero text */}\n <h1\n 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\"\n style={{ animationDelay: '120ms' }}\n >\n What do you want to build?\n </h1>\n <p\n 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\"\n style={{ animationDelay: '220ms' }}\n >\n Describe your idea and Shep creates the project for you.\n </p>\n\n {/* Prompt box */}\n <div\n className=\"mt-10 w-full animate-[onboard-fade-up_0.7s_cubic-bezier(0.16,1,0.3,1)_both]\"\n style={{ animationDelay: '350ms' }}\n >\n <div\n onFocus={() => setIsFocused(true)}\n onBlur={() => setIsFocused(false)}\n onDragEnter={att.handleDragEnter}\n onDragLeave={att.handleDragLeave}\n onDragOver={att.handleDragOver}\n onDrop={att.handleDrop}\n className={cn(\n 'flex flex-col rounded-xl border transition-all duration-200',\n 'border-border/60 bg-background shadow-sm dark:border-white/10 dark:bg-white/[0.04]',\n isFocused &&\n 'ring-ring/50 border-ring shadow-md ring-[3px] dark:border-orange-500/40 dark:ring-orange-500/25',\n att.isDragOver && 'border-primary/50 bg-primary/5',\n submitting && 'opacity-70'\n )}\n >\n {/* Textarea — supports paste for images */}\n <textarea\n ref={textareaRef}\n rows={2}\n autoFocus\n value={description}\n onChange={(e) => setDescription(e.target.value)}\n onKeyDown={handleKeyDown}\n onPaste={att.handlePaste}\n placeholder={modeConfig.placeholder}\n disabled={submitting}\n 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\"\n />\n\n {/* Attachment chips */}\n {att.attachments.length > 0 ? (\n <div className=\"flex shrink-0 items-center gap-2.5 overflow-x-auto overflow-y-visible px-5 pt-2 pb-2\">\n {att.attachments.map((file) => (\n <AttachmentChip\n key={file.id}\n name={file.name}\n size={file.size}\n mimeType={file.mimeType}\n path={file.path}\n onRemove={() => att.removeAttachment(file.id)}\n loading={file.loading}\n notes={file.notes}\n onNotesChange={(notes) => att.updateNotes(file.id, notes)}\n />\n ))}\n </div>\n ) : null}\n\n {/* Upload error */}\n {att.uploadError ? (\n <p className=\"text-destructive px-4 pb-2 text-xs\">{att.uploadError}</p>\n ) : null}\n\n {/* Controls bar */}\n <div className=\"border-border/60 flex shrink-0 items-center gap-3 border-t px-3 py-2 dark:border-white/10\">\n <AgentModelPicker\n initialAgentType={overrideAgent ?? 'claude-code'}\n initialModel={overrideModel ?? 'claude-sonnet-4-6'}\n mode=\"override\"\n showInstallStatus\n onAgentModelChange={(agent, model) => {\n setOverrideAgent(agent);\n setOverrideModel(model);\n }}\n className=\"w-55\"\n />\n <div className=\"flex-1\" />\n\n {/* Build mode dropdown — Shift+Tab to cycle. Only shown when\n the surface can actually act on fast/spec (i.e. there's an\n onRepositorySelect handler tied to a canvas). */}\n {showModeDropdown ? (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <button\n type=\"button\"\n data-testid=\"build-mode-selector\"\n 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\"\n >\n <span\n key={effectiveMode}\n className=\"flex animate-[onboard-fade-up_0.25s_ease-out_both] items-center gap-1.5\"\n >\n <ModeIcon className=\"h-3.5 w-3.5\" />\n {modeConfig.label}\n </span>\n <ChevronDown className=\"h-3 w-3 opacity-50\" />\n </button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\" className=\"min-w-[160px]\">\n {BUILD_MODES.map((mode) => {\n const cfg = BUILD_MODE_CONFIG[mode];\n const Icon = cfg.icon;\n const isActive = effectiveMode === mode;\n return (\n <DropdownMenuItem\n key={mode}\n onClick={() => setBuildMode(mode)}\n data-testid={`build-mode-${mode}`}\n className=\"flex items-center gap-2\"\n >\n <Icon className=\"h-3.5 w-3.5\" />\n <span className=\"flex-1\">{cfg.label}</span>\n {isActive ? <Check className=\"text-foreground h-3.5 w-3.5\" /> : null}\n </DropdownMenuItem>\n );\n })}\n </DropdownMenuContent>\n </DropdownMenu>\n ) : null}\n\n <Tooltip>\n <TooltipTrigger asChild>\n <button\n type=\"button\"\n onClick={handlePickFiles}\n disabled={submitting}\n aria-label={t('chat.attachFiles')}\n className=\"text-muted-foreground hover:text-foreground cursor-pointer rounded p-1 transition-colors disabled:opacity-50\"\n >\n <Paperclip className=\"h-4 w-4\" />\n </button>\n </TooltipTrigger>\n <TooltipContent side=\"top\">{t('chat.attachFiles')}</TooltipContent>\n </Tooltip>\n\n <button\n type=\"button\"\n onClick={handleSubmit}\n disabled={!description.trim() || submitting}\n className={cn(\n 'bg-foreground text-background inline-flex h-8 w-8 shrink-0 cursor-pointer items-center justify-center rounded-lg',\n 'hover:bg-foreground/90 disabled:pointer-events-none disabled:opacity-30',\n 'transition-all duration-150'\n )}\n >\n {submitting ? (\n <Loader2 className=\"h-3.5 w-3.5 animate-spin\" />\n ) : (\n <SendHorizontal className=\"h-3.5 w-3.5\" />\n )}\n </button>\n </div>\n </div>\n\n {error ? <p className=\"text-destructive mt-2 text-center text-sm\">{error}</p> : null}\n </div>\n\n {/* Suggestion chips — re-animate on mode change */}\n <div\n key={effectiveMode}\n className=\"mt-6 flex animate-[onboard-fade-up_0.4s_ease-out_both] flex-wrap justify-center gap-2\"\n >\n {modeConfig.suggestions.map((suggestion) => (\n <button\n key={suggestion}\n type=\"button\"\n onClick={() => handleSuggestionClick(suggestion)}\n disabled={submitting}\n 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]\"\n >\n {suggestion}\n </button>\n ))}\n </div>\n </div>\n </div>\n );\n}\n","/* __next_internal_action_entry_do_not_use__ [{\"4035e1ac88876828a7d56567d1258244abdb67fa5b\":\"createProjectAndFeature\"},\"src/presentation/web/app/actions/create-project-and-feature.ts\",\"\"] */\"use turbopack no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_0=/*#__PURE__*/createServerReference(\"4035e1ac88876828a7d56567d1258244abdb67fa5b\",callServer,void 0,findSourceMapURL,\"createProjectAndFeature\");export{$$RSC_SERVER_ACTION_0 as createProjectAndFeature};","/* __next_internal_action_entry_do_not_use__ [{\"40b2732c90dc8f6013e5f8355e9e55f993a9a7ef67\":\"createApplication\"},\"src/presentation/web/app/actions/create-application.ts\",\"\"] */\"use turbopack no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_0=/*#__PURE__*/createServerReference(\"40b2732c90dc8f6013e5f8355e9e55f993a9a7ef67\",callServer,void 0,findSourceMapURL,\"createApplication\");export{$$RSC_SERVER_ACTION_0 as createApplication};","'use client';\n\nimport { useCallback, useEffect, useRef, useState } from 'react';\nimport { ChevronRight, Folder, FolderOpen, Loader2, Pencil } from 'lucide-react';\nimport { toast } from 'sonner';\nimport { Dialog, DialogContent, DialogDescription, DialogTitle } from '@/components/ui/dialog';\nimport { Button } from '@/components/ui/button';\nimport { ScrollArea } from '@/components/ui/scroll-area';\nimport type {\n DirectoryEntry,\n DirectoryListResponse,\n ReactFileManagerDialogProps,\n} from './react-file-manager-dialog-config';\n\nasync function fetchDirectory(dirPath?: string): Promise<DirectoryListResponse> {\n const params = new URLSearchParams();\n if (dirPath) {\n params.set('path', dirPath);\n }\n const res = await fetch(`/api/directory/list?${params.toString()}`);\n if (!res.ok) {\n const body = await res.json().catch(() => ({ error: 'Failed to load directory' }));\n throw new Error(body.error ?? 'Failed to load directory');\n }\n return res.json();\n}\n\nfunction parseBreadcrumbs(currentPath: string) {\n if (!currentPath) return [];\n const isWindows = /^[a-zA-Z]:/.test(currentPath);\n const separator = isWindows ? '\\\\' : '/';\n const parts = currentPath.split(/[\\\\/]/).filter(Boolean);\n\n const crumbs: { label: string; path: string }[] = [];\n for (let i = 0; i < parts.length; i++) {\n const path = isWindows\n ? parts.slice(0, i + 1).join(separator)\n : separator + parts.slice(0, i + 1).join(separator);\n crumbs.push({ label: parts[i], path });\n }\n return crumbs;\n}\n\nconst MAX_VISIBLE_CRUMBS = 3;\n\nfunction AddressBar({\n currentPath,\n isEditing,\n onToggleEdit,\n onNavigate,\n}: {\n currentPath: string;\n isEditing: boolean;\n onToggleEdit: () => void;\n onNavigate: (path: string) => void;\n}) {\n const inputRef = useRef<HTMLInputElement>(null);\n const [inputValue, setInputValue] = useState(currentPath);\n\n useEffect(() => {\n setInputValue(currentPath);\n }, [currentPath]);\n\n useEffect(() => {\n if (isEditing && inputRef.current) {\n inputRef.current.focus();\n inputRef.current.select();\n }\n }, [isEditing]);\n\n function handleSubmit() {\n const trimmed = inputValue.trim();\n if (trimmed) {\n onNavigate(trimmed);\n }\n }\n\n function closeEdit() {\n setInputValue(currentPath);\n onToggleEdit();\n }\n\n const breadcrumbs = parseBreadcrumbs(currentPath);\n const needsCollapse = breadcrumbs.length > MAX_VISIBLE_CRUMBS;\n const visibleCrumbs = needsCollapse ? breadcrumbs.slice(-MAX_VISIBLE_CRUMBS) : breadcrumbs;\n\n return (\n <div className=\"border-b px-4 py-3\">\n {/* Title */}\n <h2 className=\"text-foreground mb-2.5 text-sm font-semibold tracking-[-0.01em]\">\n Select Folder\n </h2>\n\n {/* Address bar */}\n {isEditing ? (\n <input\n ref={inputRef}\n type=\"text\"\n value={inputValue}\n onChange={(e) => setInputValue(e.target.value)}\n onKeyDown={(e) => {\n if (e.key === 'Enter') {\n e.preventDefault();\n handleSubmit();\n }\n if (e.key === 'Escape') {\n e.preventDefault();\n closeEdit();\n }\n }}\n onBlur={closeEdit}\n className=\"bg-muted/60 border-border focus:ring-ring/20 focus:border-ring w-full rounded-lg border px-3 py-2 font-mono text-xs transition-all outline-none focus:ring-2\"\n placeholder=\"Type a path and press Enter...\"\n spellCheck={false}\n autoComplete=\"off\"\n />\n ) : (\n <div className=\"bg-muted/40 flex items-center gap-1 rounded-lg px-2.5 py-2\">\n {/* Root */}\n <button\n type=\"button\"\n onClick={() => onNavigate('/')}\n className=\"text-muted-foreground hover:text-foreground hover:bg-background shrink-0 rounded px-1.5 py-0.5 font-mono text-xs transition-colors\"\n >\n /\n </button>\n\n {/* Collapsed middle */}\n {needsCollapse ? (\n <>\n <ChevronRight className=\"text-muted-foreground/30 h-3 w-3 shrink-0\" />\n <span className=\"text-muted-foreground/40 font-mono text-xs\">...</span>\n </>\n ) : null}\n\n {/* Visible crumbs */}\n {visibleCrumbs.map((crumb, i) => {\n const isLast = i === visibleCrumbs.length - 1;\n return (\n <span key={crumb.path} className=\"flex shrink-0 items-center gap-1\">\n <ChevronRight className=\"text-muted-foreground/30 h-3 w-3\" />\n {isLast ? (\n <span className=\"bg-primary/10 text-primary rounded px-2 py-0.5 font-mono text-xs font-medium\">\n {crumb.label}\n </span>\n ) : (\n <button\n type=\"button\"\n onClick={() => onNavigate(crumb.path)}\n className=\"text-muted-foreground hover:text-foreground hover:bg-background rounded px-1.5 py-0.5 font-mono text-xs transition-colors\"\n >\n {crumb.label}\n </button>\n )}\n </span>\n );\n })}\n\n {/* Edit path button — inside the path row */}\n <div className=\"flex-1\" />\n <button\n type=\"button\"\n onClick={onToggleEdit}\n className=\"text-muted-foreground/40 hover:text-foreground hover:bg-background shrink-0 rounded p-1 transition-colors\"\n aria-label=\"Edit path\"\n >\n <Pencil className=\"h-3 w-3\" />\n </button>\n </div>\n )}\n </div>\n );\n}\n\nexport function ReactFileManagerDialog({\n open,\n onOpenChange,\n onSelect,\n initialPath,\n}: ReactFileManagerDialogProps) {\n const [entries, setEntries] = useState<DirectoryEntry[]>([]);\n const [currentPath, setCurrentPath] = useState('');\n const [isLoading, setIsLoading] = useState(false);\n const [isEditingPath, setIsEditingPath] = useState(false);\n const hasLoadedRef = useRef(false);\n const [renderKey, setRenderKey] = useState(0);\n\n const loadDirectory = useCallback(async (dirPath?: string) => {\n setIsLoading(true);\n setIsEditingPath(false);\n try {\n const data = await fetchDirectory(dirPath);\n setEntries(data.entries);\n setCurrentPath(data.currentPath);\n setRenderKey((k) => k + 1);\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to load directory';\n toast.error(message);\n } finally {\n setIsLoading(false);\n }\n }, []);\n\n useEffect(() => {\n if (open && !hasLoadedRef.current) {\n hasLoadedRef.current = true;\n loadDirectory(initialPath);\n }\n if (!open) {\n hasLoadedRef.current = false;\n setIsEditingPath(false);\n }\n }, [open, initialPath, loadDirectory]);\n\n function handleNavigate(path: string) {\n loadDirectory(path);\n }\n\n function handleSelect() {\n if (currentPath) {\n onSelect(currentPath);\n onOpenChange(false);\n }\n }\n\n function handleCancel() {\n onSelect(null);\n onOpenChange(false);\n }\n\n return (\n <Dialog\n open={open}\n onOpenChange={(isOpen) => {\n if (!isOpen) {\n handleCancel();\n }\n }}\n >\n <DialogContent\n className=\"flex h-[min(520px,85dvh)] w-full max-w-[460px] flex-col gap-0 overflow-hidden p-0\"\n onCloseAutoFocus={(e) => e.preventDefault()}\n >\n <DialogTitle className=\"sr-only\">Select Folder</DialogTitle>\n <DialogDescription className=\"sr-only\">\n Navigate to a folder and select it\n </DialogDescription>\n\n {/* ── Header with address bar ── */}\n <AddressBar\n currentPath={currentPath}\n isEditing={isEditingPath}\n onToggleEdit={() => setIsEditingPath((v) => !v)}\n onNavigate={handleNavigate}\n />\n\n {/* ── Folder list ── */}\n <ScrollArea className=\"min-h-0 flex-1\">\n {isLoading && entries.length === 0 ? (\n <div className=\"space-y-0.5 p-2\">\n {Array.from({ length: 8 }).map((_, i) => (\n <div\n // eslint-disable-next-line react/no-array-index-key\n key={`skeleton-${i}`}\n className=\"flex items-center gap-3 rounded-lg px-3 py-2.5\"\n style={{ opacity: 1 - i * 0.1 }}\n >\n <div className=\"bg-muted h-4 w-4 animate-pulse rounded\" />\n <div\n className=\"bg-muted h-3.5 animate-pulse rounded\"\n style={{ width: `${40 + Math.random() * 35}%` }}\n />\n </div>\n ))}\n </div>\n ) : entries.length === 0 ? (\n <div className=\"flex flex-col items-center justify-center py-20\">\n <FolderOpen className=\"text-muted-foreground/25 mb-3 h-10 w-10\" />\n <p className=\"text-muted-foreground/60 text-sm\">Empty folder</p>\n </div>\n ) : (\n <div key={renderKey} className=\"p-2\">\n {entries.map((entry, i) => (\n <button\n key={entry.path}\n type=\"button\"\n onClick={() => handleNavigate(entry.path)}\n className=\"folder-row group flex w-full items-center gap-3 rounded-lg px-3 py-2.5 text-left transition-all hover:bg-[var(--color-primary)]/[0.06] active:scale-[0.997]\"\n style={{ animationDelay: `${i * 20}ms` }}\n >\n <Folder className=\"text-muted-foreground/50 group-hover:text-primary h-[18px] w-[18px] shrink-0 transition-colors\" />\n <span className=\"text-foreground min-w-0 flex-1 truncate text-[13px] font-medium\">\n {entry.name}\n </span>\n <ChevronRight className=\"text-muted-foreground/0 group-hover:text-muted-foreground/40 h-3.5 w-3.5 shrink-0 transition-all\" />\n </button>\n ))}\n </div>\n )}\n </ScrollArea>\n\n {/* ── Footer ── */}\n <div className=\"flex items-center gap-2 border-t px-4 py-3\">\n <p className=\"text-muted-foreground min-w-0 flex-1 truncate font-mono text-[11px] leading-none\">\n {currentPath || '\\u00A0'}\n </p>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={handleCancel}\n className=\"text-muted-foreground h-8 shrink-0 px-3 text-xs\"\n >\n Cancel\n </Button>\n <Button\n size=\"sm\"\n onClick={handleSelect}\n disabled={!currentPath || isLoading}\n className=\"h-8 shrink-0 px-5 text-xs font-medium\"\n >\n {isLoading ? <Loader2 className=\"mr-1.5 h-3 w-3 animate-spin\" /> : null}\n Select\n </Button>\n </div>\n </DialogContent>\n </Dialog>\n );\n}\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M12 10v6', key: '1bos4e' }],\n ['path', { d: 'M9 13h6', key: '1uhe8q' }],\n [\n 'path',\n {\n d: 'M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z',\n key: '1kt360',\n },\n ],\n];\n\n/**\n * @component @name FolderPlus\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/folder-plus\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst FolderPlus = createLucideIcon('folder-plus', __iconNode);\n\nexport default FolderPlus;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z',\n key: '1kt360',\n },\n ],\n];\n\n/**\n * @component @name Folder\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/folder\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Folder = createLucideIcon('folder', __iconNode);\n\nexport default Folder;\n","/* __next_internal_action_entry_do_not_use__ [{\"40f81c7d612692dda7d814be9521f369bf5c1a96ef\":\"addRepository\"},\"src/presentation/web/app/actions/add-repository.ts\",\"\"] */\"use turbopack no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_0=/*#__PURE__*/createServerReference(\"40f81c7d612692dda7d814be9521f369bf5c1a96ef\",callServer,void 0,findSourceMapURL,\"addRepository\");export{$$RSC_SERVER_ACTION_0 as addRepository};","'use client';\n\nimport React, { useEffect, useState } from 'react';\nimport { Plus, Loader2, X } from 'lucide-react';\nimport { useTranslation } from 'react-i18next';\nimport { cn } from '@/lib/utils';\nimport { Button } from '@/components/ui/button';\n\nexport interface FloatingActionButtonAction {\n /** Unique key for the action. */\n id: string;\n /** Accessible label shown next to the icon. */\n label: string;\n /** Lucide icon component. */\n icon: React.ReactNode;\n /** Called when the action is clicked. */\n onClick: () => void;\n /** Whether the action is currently loading. */\n loading?: boolean;\n /** Whether the action is disabled. */\n disabled?: boolean;\n}\n\nexport interface FloatingActionButtonProps {\n /** Action items shown when the FAB is expanded. */\n actions: FloatingActionButtonAction[];\n /** Additional CSS classes for the wrapper. */\n className?: string;\n /** Inline styles for the wrapper (e.g. dynamic positioning). */\n style?: React.CSSProperties;\n}\n\n/** Stagger delay between each item animation in ms. */\nconst STAGGER_MS = 50;\n\n/** Total animation duration in ms. */\nconst DURATION_MS = 250;\n\n/**\n * (+) FAB with expandable action menu.\n * Renders inline — parent controls positioning.\n */\nexport function FloatingActionButton({ actions, className, style }: FloatingActionButtonProps) {\n const { t } = useTranslation('web');\n const [open, setOpen] = useState(false);\n\n // Close on Escape key\n useEffect(() => {\n if (!open) return;\n function handleKeyDown(e: KeyboardEvent) {\n if (e.key === 'Escape') {\n setOpen(false);\n }\n }\n document.addEventListener('keydown', handleKeyDown);\n return () => document.removeEventListener('keydown', handleKeyDown);\n }, [open]);\n\n return (\n <>\n {/* Invisible click-outside catcher */}\n {open ? (\n <div\n data-testid=\"fab-overlay\"\n className=\"fixed inset-0 z-40\"\n onClick={() => setOpen(false)}\n aria-hidden=\"true\"\n />\n ) : null}\n\n <div\n data-testid=\"floating-action-button\"\n className={cn('relative z-50', className)}\n style={style}\n >\n {/* Action chips — expand upward */}\n <div\n className={cn(\n 'absolute start-0 bottom-[calc(100%+24px)] flex flex-col items-start gap-2',\n !open && 'pointer-events-none'\n )}\n data-testid=\"fab-actions\"\n >\n {actions.map((action, i) => {\n const openDelay = (actions.length - 1 - i) * STAGGER_MS;\n\n return (\n <button\n key={action.id}\n data-testid={`fab-action-${action.id}`}\n aria-label={action.label}\n disabled={action.disabled ?? action.loading}\n className={cn(\n 'flex h-10 items-center gap-2.5 rounded-full px-4',\n 'bg-background text-foreground shadow-md',\n 'border-border border',\n 'hover:bg-accent hover:text-accent-foreground',\n 'disabled:pointer-events-none disabled:opacity-50',\n 'text-sm font-medium whitespace-nowrap',\n open ? 'translate-y-0 opacity-100' : 'pointer-events-none translate-y-0 opacity-0'\n )}\n style={{\n transition: `opacity ${open ? DURATION_MS : 120}ms ease-out ${open ? openDelay : 0}ms, transform ${open ? DURATION_MS : 120}ms ease-out ${open ? openDelay : 0}ms`,\n }}\n onClick={() => {\n action.onClick();\n setOpen(false);\n }}\n >\n <span className=\"flex h-5 w-5 shrink-0 items-center justify-center\">\n {action.loading ? <Loader2 className=\"h-4 w-4 animate-spin\" /> : action.icon}\n </span>\n <span>{action.label}</span>\n </button>\n );\n })}\n </div>\n\n {/* FAB trigger */}\n <Button\n size=\"icon\"\n data-testid=\"fab-trigger\"\n aria-label={open ? t('fab.closeActions') : t('fab.createNew')}\n className={cn(\n 'relative h-14 w-14 rounded-full shadow-lg',\n 'bg-indigo-500 text-white hover:bg-indigo-400 dark:bg-indigo-500 dark:hover:bg-indigo-400',\n 'transition-all duration-200 hover:scale-105 hover:shadow-xl active:scale-95'\n )}\n onClick={() => setOpen((prev) => !prev)}\n >\n <Plus\n className={cn(\n 'absolute h-7 w-7 stroke-[2.5] transition-all',\n open ? 'scale-0 rotate-90 opacity-0' : 'scale-100 rotate-0 opacity-100'\n )}\n style={{ transitionDuration: `${DURATION_MS}ms` }}\n />\n <X\n className={cn(\n 'absolute h-6 w-6 stroke-[2.5] transition-all',\n open ? 'scale-100 rotate-0 opacity-100' : 'scale-0 -rotate-90 opacity-0'\n )}\n style={{ transitionDuration: `${DURATION_MS}ms` }}\n />\n </Button>\n </div>\n </>\n );\n}\n","/* __next_internal_action_entry_do_not_use__ [{\"40eb3dbc918a45a3b96875f9fa0fc78b9af0bd1487\":\"createProjectFolder\"},\"src/presentation/web/app/actions/create-project-folder.ts\",\"\"] */\"use turbopack no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_0=/*#__PURE__*/createServerReference(\"40eb3dbc918a45a3b96875f9fa0fc78b9af0bd1487\",callServer,void 0,findSourceMapURL,\"createProjectFolder\");export{$$RSC_SERVER_ACTION_0 as createProjectFolder};","'use client';\n\nimport { useEffect, useState } from 'react';\nimport { Loader2 } from 'lucide-react';\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n} from '@/components/ui/dialog';\nimport { Input } from '@/components/ui/input';\nimport { Button } from '@/components/ui/button';\nimport { createProjectFolder } from '@/app/actions/create-project-folder';\n\nexport interface NewProjectDialogProps {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n /** Called with the absolute path of the newly-created project folder. */\n onCreated: (path: string) => void;\n}\n\nexport function NewProjectDialog({ open, onOpenChange, onCreated }: NewProjectDialogProps) {\n const [name, setName] = useState('');\n const [busy, setBusy] = useState(false);\n const [error, setError] = useState<string | null>(null);\n\n // Reset state every time the dialog opens.\n useEffect(() => {\n if (open) {\n setName('');\n setBusy(false);\n setError(null);\n }\n }, [open]);\n\n const handleSubmit = async (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n const trimmed = name.trim();\n if (!trimmed || busy) return;\n\n setBusy(true);\n setError(null);\n const result = await createProjectFolder(trimmed);\n if (!result.ok || !result.path) {\n setError(result.error ?? 'Failed to create project.');\n setBusy(false);\n return;\n }\n\n // Hand the new path off to the empty state's existing add-repo flow.\n onCreated(result.path);\n onOpenChange(false);\n };\n\n return (\n <Dialog open={open} onOpenChange={onOpenChange}>\n <DialogContent className=\"max-w-sm\">\n <form onSubmit={handleSubmit}>\n <DialogHeader>\n <DialogTitle>New project</DialogTitle>\n <DialogDescription>\n Create an empty project folder inside your Shep home directory. Git will be\n initialised automatically when the project is added.\n </DialogDescription>\n </DialogHeader>\n <div className=\"py-4\">\n <Input\n autoFocus\n value={name}\n onChange={(e) => {\n setName(e.target.value);\n if (error) setError(null);\n }}\n placeholder=\"my-prototype\"\n disabled={busy}\n data-testid=\"new-project-name-input\"\n />\n {error ? (\n <p className=\"text-destructive mt-2 text-xs\" role=\"alert\">\n {error}\n </p>\n ) : null}\n </div>\n <DialogFooter>\n <Button\n type=\"button\"\n variant=\"ghost\"\n onClick={() => onOpenChange(false)}\n disabled={busy}\n >\n Cancel\n </Button>\n <Button type=\"submit\" disabled={!name.trim() || busy}>\n {busy ? (\n <>\n <Loader2 className=\"mr-2 h-4 w-4 animate-spin\" />\n Creating…\n </>\n ) : (\n 'Create project'\n )}\n </Button>\n </DialogFooter>\n </form>\n </DialogContent>\n </Dialog>\n );\n}\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M10 5H3', key: '1qgfaw' }],\n ['path', { d: 'M12 19H3', key: 'yhmn1j' }],\n ['path', { d: 'M14 3v4', key: '1sua03' }],\n ['path', { d: 'M16 17v4', key: '1q0r14' }],\n ['path', { d: 'M21 12h-9', key: '1o4lsq' }],\n ['path', { d: 'M21 19h-5', key: '1rlt1p' }],\n ['path', { d: 'M21 5h-7', key: '1oszz2' }],\n ['path', { d: 'M8 10v4', key: 'tgpxqk' }],\n ['path', { d: 'M8 12H3', key: 'a7s4jb' }],\n];\n\n/**\n * @component @name SlidersHorizontal\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/sliders-horizontal\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst SlidersHorizontal = createLucideIcon('sliders-horizontal', __iconNode);\n\nexport default SlidersHorizontal;\n","/* __next_internal_action_entry_do_not_use__ [{\"4013f3cd3a971be0d58fc4cf5ea14002bcc733ab0f\":\"archiveFeature\"},\"src/presentation/web/app/actions/archive-feature.ts\",\"\"] */\"use turbopack no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_0=/*#__PURE__*/createServerReference(\"4013f3cd3a971be0d58fc4cf5ea14002bcc733ab0f\",callServer,void 0,findSourceMapURL,\"archiveFeature\");export{$$RSC_SERVER_ACTION_0 as archiveFeature};","/* __next_internal_action_entry_do_not_use__ [{\"408b3a14223958b11118eff6abea3566ca905f99ee\":\"unarchiveFeature\"},\"src/presentation/web/app/actions/unarchive-feature.ts\",\"\"] */\"use turbopack no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_0=/*#__PURE__*/createServerReference(\"408b3a14223958b11118eff6abea3566ca905f99ee\",callServer,void 0,findSourceMapURL,\"unarchiveFeature\");export{$$RSC_SERVER_ACTION_0 as unarchiveFeature};","/* __next_internal_action_entry_do_not_use__ [{\"7852c9212fd4068012c5c253b2d83efcec73bd3e39\":\"deleteFeature\"},\"src/presentation/web/app/actions/delete-feature.ts\",\"\"] */\"use turbopack no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_0=/*#__PURE__*/createServerReference(\"7852c9212fd4068012c5c253b2d83efcec73bd3e39\",callServer,void 0,findSourceMapURL,\"deleteFeature\");export{$$RSC_SERVER_ACTION_0 as deleteFeature};"],"names":[],"mappings":"0DAEA,EAAA,EAAA,CAAA,CAAA,QACA,EAAA,EAAA,CAAA,CAAA,QAAA,EAAA,EAAA,CAAA,CAAA,QAAA,EAAA,EAAA,CAAA,CAAA,QAAA,EAAA,EAAA,CAAA,CAAA,QAAA,EAAA,EAAA,CAAA,CAAA,QAAA,EAAA,EAAA,CAAA,CAAA,OAAA,EAAA,EAAA,CAAA,CAAA,QAAA,EAAA,EAAA,CAAA,CAAA,QAAA,EAAA,EAAA,CAAA,CAAA,QAWA,EAAA,CAAA,CAAA,QAAA,IAAA,EAAA,EAAA,CAAA,CAAA,QACA,EAAA,EAAA,CAAA,CAAA,QCf8N,EAAA,EAAA,CAAA,CAAA,QAAsG,IAAM,EAAmC,CAAA,EAAA,EAAA,iBAAb,IAAa,AAAqB,EAAC,KAAxB,wCAAqE,EAAA,UAAU,CAAC,KAAK,EAAE,EAAA,gBAAgB,CAAC,2BCAvJ,EAAmC,CAAA,EAAA,EAAA,kBAAb,GAAa,AAAqB,EAAC,MAAxB,uCAAqE,EAAA,UAAU,CAAC,KAAK,EAAE,EAAA,gBAAgB,CAAC,qBFkBrc,IAAA,EAAA,EAAA,CAAA,CAAA,QACA,EAAA,CAAA,CAAA,QAAA,IAAA,EAAA,EAAA,CAAA,CAAA,QACA,EAAA,CAAA,CAAA,QAAA,IAAA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,QACA,EAAA,EAAA,CAAA,CAAA,QAMA,EAAA,EAAA,CAAA,CAAA,QAIA,IAAM,EAA2B,CAAC,cAAe,OAAQ,OAAO,CAE1D,EAQF,CACF,YAAa,CACX,KAAM,EAAA,UAAU,CAChB,MAAO,cACP,YAAa,+DACb,YAAa,CACX,2DACA,wDACA,oDACA,oDACD,AACH,EACA,KAAM,CACJ,KAAM,EAAA,GAAG,CACT,MAAO,OACP,YAAa,iDACb,YAAa,CACX,4CACA,iCACA,0CACA,6CACD,AACH,EACA,KAAM,CACJ,KAAM,EAAA,aAAa,CACnB,MAAO,cACP,YAAa,qEACb,YAAa,CACX,iDACA,uDACA,4DACA,qDACD,AACH,CACF,EASO,SAAS,EAAwB,oBACtC,CAAkB,sBAClB,CAAoB,SACpB,CAAO,WACP,CAAS,CACoB,EAC7B,GAAM,CAAE,GAAC,CAAE,CAAG,CAAA,EAAA,EAAA,cAAA,AAAc,EAAC,OACvB,CAAC,EAAa,EAAe,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAC,IACzC,CAAC,EAAe,EAAiB,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,OAAqB,GACjE,CAAC,EAAe,EAAiB,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAqB,QACjE,CAAC,EAAW,EAAa,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAY,eAChD,CAAC,EAAY,EAAc,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,GAAC,GACvC,CAAC,EAAO,EAAS,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAgB,MAC5C,CAAC,EAAW,EAAa,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,GAAC,GACrC,EAAc,CAAA,EAAA,EAAA,MAAA,AAAM,EAAsB,MAC1C,EAAM,CAAA,EAAA,EAAA,cAAA,AAAc,IAKpB,EAAmB,EAAQ,EAC3B,EAA2B,EAAmB,EAAY,cAG1D,EAAiB,CAAA,EAAA,EAAA,WAAA,AAAW,EAAC,KACjC,EAAa,AAAC,IACZ,IAAM,EAAM,EAAY,OAAO,CAAC,GAChC,OAAO,CAAW,CAAC,CAAC,GAAM,CAAC,CAAI,EAAY,MAAM,CAAC,AACpD,EACF,EAAG,EAAE,EAEL,CAAA,EAAA,EAAA,SAAA,AAAS,EAAC,KACR,IAAM,EAAuB,AAAD,IACZ,WAAV,EAAE,GAAG,EAAiB,GAAS,IAGrB,QAAV,EAAE,GAAG,EAAc,EAAE,QAAQ,EAAI,IACnC,EAAE,cADqD,AACvC,GAChB,IAEJ,EAEA,OADA,OAAO,gBAAgB,CAAC,UAAW,GAC5B,IAAM,OAAO,mBAAmB,CAAC,UAAW,EACrD,EAAG,CAAC,EAAS,EAAgB,EAAmB,EAEhD,IAAM,EAAe,CAAA,EAAA,EAAA,WAAA,AAAW,EAAC,UAC/B,GAAI,AAAC,EAAY,IAAI,KAAM,GAE3B,GAAc,GACd,EAAS,CAH8B,KAKvC,GAAI,CAOF,GAF6C,CAEzC,eAFuB,CAAmC,EAAC,EAwBxD,CACL,IAAM,EAAS,MAAM,EAAwB,CAC3C,YAAa,EAAY,IAAI,GAC7B,YAAa,EAAI,oBAAoB,CAAC,GAAG,CAAC,AAAC,IAAM,AAAC,CAChD,KAAM,EAAE,IAAI,CACZ,KAAM,EAAE,IAAI,CACZ,MAAO,EAAE,KAAK,AAChB,CAAC,GACD,UAAW,EACX,MAAO,EACP,KAAwB,SAAlB,CACR,GAEA,GAAI,EAAO,KAAK,CAAE,CAChB,EAAS,EAAO,KAAK,EACrB,EAAc,IACd,MACF,CAEI,EAAO,cAAc,EAAE,AACzB,IAAqB,EAAO,cAAc,EAGxC,EAAO,OAAO,EAAI,EAAO,cAAc,EAAE,AAC3C,OAAO,aAAa,CAClB,IAAI,YAAY,uBAAwB,CACtC,OAAQ,CACN,UAAW,EAAO,OAAO,CAAC,EAAE,CAC5B,KAAM,EAAO,OAAO,CAAC,IAAI,CACzB,YAAa,EAAO,OAAO,CAAC,WAAW,CACvC,eAAgB,EAAO,cAAc,AACvC,CACF,GAGN,KAzDwB,CAMtB,IAAM,EAAS,MAAM,EAAkB,CACrC,YAAa,EAAY,IAAI,GAC7B,UAAW,EACX,cAAe,EACf,cAAe,EAAY,IAAI,EACjC,GAEA,GAAI,EAAO,KAAK,CAAE,CAChB,EAAS,EAAO,KAAK,EACrB,GAAc,GACd,MACF,CAEI,EAAO,WAAW,EACpB,AADsB,IACC,EAAO,WAAW,CAAC,EAAE,CAEhD,CAoCF,CAAE,KAAM,CACN,EAAS,2CACT,GAAc,EAChB,EACF,EAAG,CACD,EACA,EACA,EACA,EAAI,oBAAoB,CACxB,EACA,EACA,EACA,EACD,EAEK,EAAgB,CAAA,EAAA,EAAA,WAAA,AAAW,EAC/B,AAAC,IACe,UAAV,CAAqB,CAAnB,GAAG,GAAiB,EAAE,OAAO,EAAI,EAAE,OAAA,AAAO,GAAG,CACjD,EAAE,cAAc,GAChB,IAEJ,EACA,CAAC,EAAa,EAGV,EAAkB,CAAA,EAAA,EAAA,WAAA,AAAW,EAAC,UAClC,GAAI,CACF,IAAM,EAAM,MAAM,MAAM,0BACxB,GAAI,CAAC,EAAI,EAAE,CAAE,OACb,IAAM,EAAQ,MAAM,EAAI,IAAI,GAC5B,GAAI,CAAC,EAAK,KAAK,EAAE,OAAQ,OACzB,IAAK,IAAM,KAAY,EAAK,KAAK,CAAE,CACjC,IAAM,EAAY,MAAM,MAAM,oCAAqC,CACjE,OAAQ,OACR,QAAS,CAAE,eAAgB,kBAAmB,EAC9C,KAAM,KAAK,SAAS,CAAC,CAAE,KAAM,EAAU,UAAW,YAAa,EACjE,GACA,GAAI,CAAC,EAAU,EAAE,CAAE,SACnB,IAAM,EAAY,MAAM,EAAU,IAAI,GAOtC,EAAI,aAAa,CAAC,EACpB,CACF,CAAE,KAAM,CAER,CAEF,EAAG,CAAC,EAAI,aAAa,CAAC,EAEhB,EAAwB,CAAA,EAAA,EAAA,WAAW,AAAX,EAAY,AAAC,IACzC,EAAe,GACf,EAAY,OAAO,EAAE,OACvB,EAAG,EAAE,EAEC,EAAa,CAAiB,CAAC,EAAc,CAC7C,EAAW,EAAW,IAAI,CAEhC,MACE,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CACC,cAAY,6BACZ,UAAW,CAAA,EAAA,EAAA,EAAA,AAAE,EACX,wFACA,aAIF,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,UAAU,iGAGd,EACC,CAAA,EAAA,EAAA,GAAA,EAAC,SAAA,CACC,KAAK,SACL,QAAS,EACT,aAAW,QACX,UAAU,qJAEV,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAC,CAAA,CAAC,UAAU,cAEb,KAEJ,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,iEAEb,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CACC,UAAU,mEACV,MAAO,CAAE,eAAgB,KAAM,WAE/B,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,QAAQ,CAAA,CAAC,KAAM,GAAI,UAAU,sBAIhC,CAAA,EAAA,EAAA,GAAA,EAAC,KAAA,CACC,UAAU,qIACV,MAAO,CAAE,eAAgB,OAAQ,WAClC,+BAGD,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,CACC,UAAU,2IACV,MAAO,CAAE,eAAgB,OAAQ,WAClC,6DAKD,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CACC,UAAU,8EACV,MAAO,CAAE,eAAgB,OAAQ,YAEjC,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CACC,QAAS,IAAM,GAAa,GAC5B,OAAQ,IAAM,GAAa,GAC3B,YAAa,EAAI,eAAe,CAChC,YAAa,EAAI,eAAe,CAChC,WAAY,EAAI,cAAc,CAC9B,OAAQ,EAAI,UAAU,CACtB,UAAW,CAAA,EAAA,EAAA,EAAA,AAAE,EACX,8DACA,qFACA,GACE,kGACF,EAAI,UAAU,EAAI,iCAClB,GAAc,wBAIhB,CAAA,EAAA,EAAA,GAAA,EAAC,WAAA,CACC,IAAK,EACL,KAAM,EACN,SAAS,CAAA,CAAA,EACT,MAAO,EACP,SAAU,AAAC,GAAM,EAAe,EAAE,MAAM,CAAC,KAAK,EAC9C,UAAW,EACX,QAAS,EAAI,WAAW,CACxB,YAAa,EAAW,WAAW,CACnC,SAAU,EACV,UAAU,oNAIX,EAAI,WAAW,CAAC,MAAM,CAAG,EACxB,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,UAAU,gGACZ,EAAI,WAAW,CAAC,GAAG,CAAC,AAAC,GACpB,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,cAAc,CAAA,CAEb,KAAM,EAAK,IAAI,CACf,KAAM,EAAK,IAAI,CACf,SAAU,EAAK,QAAQ,CACvB,KAAM,EAAK,IAAI,CACf,SAAU,IAAM,EAAI,gBAAgB,CAAC,EAAK,EAAE,EAC5C,QAAS,EAAK,OAAO,CACrB,MAAO,EAAK,KAAK,CACjB,cAAgB,AAAD,GAAW,EAAI,WAAW,CAAC,EAAK,EAAE,CAAE,IAR9C,EAAK,EAAE,KAYhB,KAGH,EAAI,WAAW,CACd,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,CAAE,UAAU,8CAAsC,EAAI,WAAW,GAChE,KAGJ,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,sGACb,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,gBAAgB,CAAA,CACf,iBAAkB,GAAiB,cACnC,aAAc,GAAiB,oBAC/B,KAAK,WACL,iBAAiB,CAAA,CAAA,EACjB,mBAAoB,CAAC,EAAO,KAC1B,EAAiB,GACjB,EAAiB,EACnB,EACA,UAAU,SAEZ,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,UAAU,WAKd,EACC,CAAA,EAAA,EAAA,IAAA,EAAC,EAAA,YAAY,CAAA,WACX,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,mBAAmB,CAAA,CAAC,OAAO,CAAA,CAAA,WAC1B,CAAA,EAAA,EAAA,IAAA,EAAC,SAAA,CACC,KAAK,SACL,cAAY,sBACZ,UAAU,mKAEV,CAAA,EAAA,EAAA,IAAA,EAAC,OAAA,CAEC,UAAU,oFAEV,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAS,UAAU,gBACnB,EAAW,KAAK,GAJZ,GAMP,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,WAAW,CAAA,CAAC,UAAU,4BAG3B,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,mBAAmB,CAAA,CAAC,MAAM,MAAM,UAAU,yBACxC,EAAY,GAAG,CAAC,AAAC,IAChB,IAAM,EAAM,CAAiB,CAAC,EAAK,CAC7B,EAAO,EAAI,IAAI,CACf,EAAW,IAAkB,EACnC,MACE,CAAA,EAAA,EAAA,IAAA,EAAC,EAAA,gBAAgB,CAAA,CAEf,QAAS,IAAM,EAAa,GAC5B,cAAa,CAAC,WAAW,EAAE,EAAA,CAAM,CACjC,UAAU,oCAEV,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAK,UAAU,gBAChB,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,kBAAU,EAAI,KAAK,GAClC,EAAW,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,KAAK,CAAA,CAAC,UAAU,gCAAmC,OAP3D,EAUX,QAGF,KAEJ,CAAA,EAAA,EAAA,IAAA,EAAC,EAAA,OAAO,CAAA,WACN,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,cAAc,CAAA,CAAC,OAAO,CAAA,CAAA,WACrB,CAAA,EAAA,EAAA,GAAA,EAAC,SAAA,CACC,KAAK,SACL,QAAS,EACT,SAAU,EACV,aAAY,EAAE,oBACd,UAAU,wHAEV,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,SAAS,CAAA,CAAC,UAAU,gBAGzB,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,cAAc,CAAA,CAAC,KAAK,eAAO,EAAE,yBAGhC,CAAA,EAAA,EAAA,GAAA,EAAC,SAAA,CACC,KAAK,SACL,QAAS,EACT,SAAU,CAAC,EAAY,IAAI,IAAM,EACjC,UAAW,CAAA,EAAA,EAAA,EAAE,AAAF,EACT,mHACA,0EACA,wCAGD,EACC,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,OAAO,CAAA,CAAC,UAAU,6BAEnB,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,cAAc,CAAA,CAAC,UAAU,wBAMjC,EAAQ,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,CAAE,UAAU,qDAA6C,IAAa,QAIlF,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAEC,UAAU,iGAET,EAAW,WAAW,CAAC,GAAG,CAAC,AAAC,GAC3B,CAAA,EAAA,EAAA,GAAA,EAAC,SAAA,CAEC,KAAK,SACL,QAAS,IAAM,EAAsB,GACrC,SAAU,EACV,UAAU,mSAET,GANI,KALJ,QAkBf,wGIxcA,CAAA,GAAM,EAAA,CAAA,EAAa,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAiB,CAAjB,AAAiB,CAAjB,AAAiB,CAAjB,AAAiB,CAAjB,AAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAvB7B,CAuB4C,CAtBhD,AAsBgD,CAtBhD,AAsBgD,CAtBhD,AAsBgD,CAtBhD,AAsBgD,CAtBhD,AAsBgD,CAAA,AAtBhD,CAsBgD,AAtBhD,CAAQ,AAAR,AAsBgD,CAtBxC,AAAE,AAsBsC,CAAU,CAtB7C,AAsB6C,CAtB7C,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAY,CAAA,CAAA,CAAA,CAAA,AAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,SAChC,CAAA,AAAE,EAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAW,CAAA,CAAA,CAAA,CAAA,AAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,SAGtC,CCDK,ADEH,CAAA,CAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,sHACE,CAAA,CAAA,CAAA,QAGX,qDDXA,EAAA,EAAA,CAAA,CAAA,QACA,EAAA,EAAA,CAAA,CAAA,QEqBA,CDbI,ACaJ,GAAM,EAAA,CAAA,EAAS,CAAT,AAAS,CAAT,AAAS,CAAT,AAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAiB,CAAjB,AAAiB,CAAjB,AAAiB,CAAjB,AAAiB,CAAjB,AAAiB,CAAA,CAAA,CAAA,CAAA,CArBI,CAqBM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAlBtC,CACE,AAiBoC,CAAU,AAjB9C,ADAF,CAAA,ACiBgD,ADjBhD,yHCCE,GAAA,CAAA,AAAK,CAAA,CAAA,CAAA,QAGX,CDDW,CDPX,ACOW,IDPX,EAAA,EAAA,CAAA,CAAA,QAAA,EAAA,EAAA,CAAA,CAAA,QAAA,EAAA,EAAA,CAAA,CAAA,QACA,EAAA,EAAA,CAAA,CAAA,QACA,EAAA,EAAA,CAAA,CAAA,QACA,EAAA,EAAA,CAAA,CAAA,QACA,EAAA,EAAA,CAAA,CAAA,QAOA,eAAe,EAAe,CAAgB,EAC5C,IAAM,EAAS,IAAI,gBACf,GACF,EAAO,GAAG,CADC,AACA,OAAQ,GAErB,IAAM,EAAM,MAAM,MAAM,CAAC,oBAAoB,EAAE,EAAO,QAAQ,GAAA,CAAI,EAClE,GAAI,CAAC,EAAI,EAAE,CAET,CAFW,KAEL,AAAI,MAAM,CADH,MAAM,EAAI,IAAI,GAAG,KAAK,CAAC,IAAM,CAAC,CAAE,MAAO,2BAA2B,CAAC,CAAA,EAC3D,KAAK,EAAI,4BAEhC,OAAO,EAAI,IAAI,EACjB,CAoBA,SAAS,EAAW,aAClB,CAAW,WACX,CAAS,cACT,CAAY,YACZ,CAAU,CAMX,EACC,IAAM,EAAW,CAAA,EAAA,EAAA,MAAA,AAAM,EAAmB,MACpC,CAAC,EAAY,EAAc,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAC,GAoB7C,SAAS,IACP,EAAc,GACd,GACF,CArBA,CAAA,EAAA,EAAA,SAAA,AAAS,EAAC,KACR,EAAc,EAChB,EAAG,CAAC,EAAY,EAEhB,CAAA,EAAA,EAAA,SAAA,AAAS,EAAC,KACJ,GAAa,EAAS,OAAO,EAAE,CACjC,EAAS,OAAO,CAAC,KAAK,GACtB,EAAS,OAAO,CAAC,MAAM,GAE3B,EAAG,CAAC,EAAU,EAcd,IAAM,EAvDR,AAuDsB,SAvDb,AAAiB,CAAmB,EAC3C,GAAI,CAAC,EAAa,MAAO,EAAE,CAC3B,IAAM,EAAY,aAAa,IAAI,CAAC,GAC9B,EAAY,EAAY,KAAO,IAC/B,EAAQ,EAAY,KAAK,CAAC,SAAS,MAAM,CAAC,SAE1C,EAA4C,EAAE,CACpD,IAAK,IAAI,EAAI,EAAG,EAAI,EAAM,MAAM,CAAE,IAAK,CACrC,IAAM,EAAO,EACT,EAAM,KAAK,CAAC,EAAG,EAAI,GAAG,IAAI,CAAC,GAC3B,EAAY,EAAM,KAAK,CAAC,EAAG,EAAI,GAAG,IAAI,CAAC,GAC3C,EAAO,IAAI,CAAC,CAAE,MAAO,CAAK,CAAC,EAAE,MAAE,CAAK,EACtC,CACA,OAAO,CACT,EAyCuC,GAC/B,EAAgB,EAAY,MAAM,CAxCf,EAwCkB,AACrC,EAAgB,EAAgB,EAAY,KAAK,CAAC,CAAC,GAAsB,EAE/E,MACE,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,+BAEb,CAAA,EAAA,EAAA,GAAA,EAAC,KAAA,CAAG,UAAU,2EAAkE,kBAK/E,EACC,CAAA,EAAA,EAAA,GAAA,EAAC,QAAA,CACC,IAAK,EACL,KAAK,OACL,MAAO,EACP,SAAU,AAAC,GAAM,EAAc,EAAE,MAAM,CAAC,KAAK,EAC7C,UAAW,AAAC,IACV,GAAc,UAAV,EAAE,GAAG,CAAc,OACrB,EAAE,cAAc,IA/BpB,EAAU,EAAW,IAAI,KAE7B,EAAW,EA+BL,CACc,UAAU,CAApB,EAAE,GAAG,GACP,EAAE,cAAc,GAChB,IAEJ,EACA,OAAQ,EACR,UAAU,+JACV,YAAY,iCACZ,YAAY,EACZ,aAAa,QAGf,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,uEAEb,CAAA,EAAA,EAAA,GAAA,EAAC,SAAA,CACC,KAAK,SACL,QAAS,IAAM,EAAW,KAC1B,UAAU,8IACX,MAKA,EACC,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,QAAA,CAAA,WACE,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,YAAY,CAAA,CAAC,UAAU,8CACxB,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,sDAA6C,WAE7D,KAGH,EAAc,GAAG,CAAC,CAAC,EAAO,KACzB,IAAM,EAAS,IAAM,EAAc,MAAM,CAAG,EAC5C,MACE,CAAA,EAAA,EAAA,IAAA,EAAC,OAAA,CAAsB,UAAU,6CAC/B,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,YAAY,CAAA,CAAC,UAAU,qCACvB,EACC,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,wFACb,EAAM,KAAK,GAGd,CAAA,EAAA,EAAA,GAAA,EAAC,SAAA,CACC,KAAK,SACL,QAAS,IAAM,EAAW,EAAM,IAAI,EACpC,UAAU,qIAET,EAAM,KAAK,KAZP,EAAM,IAAI,CAiBzB,GAGA,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,UAAU,WACf,CAAA,EAAA,EAAA,GAAA,EAAC,SAAA,CACC,KAAK,SACL,QAAS,EACT,UAAU,4GACV,aAAW,qBAEX,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,MAAM,CAAA,CAAC,UAAU,mBAM9B,CAEO,SAAS,EAAuB,MACrC,CAAI,cACJ,CAAY,UACZ,CAAQ,aACR,CAAW,CACiB,EAC5B,GAAM,CAAC,EAAS,EAAW,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAmB,EAAE,EACrD,CAAC,EAAa,EAAe,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAC,IACzC,CAAC,EAAW,EAAa,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,GAAC,GACrC,CAAC,EAAe,EAAiB,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAC,IAC7C,EAAe,CAAA,EAAA,EAAA,MAAA,AAAM,GAAC,GACtB,CAAC,EAAW,EAAa,CAAG,CAAA,EAAA,EAAA,QAAQ,AAAR,EAAS,GAErC,EAAgB,CAAA,EAAA,EAAA,WAAA,AAAW,EAAC,MAAO,IACvC,GAAa,GACb,GAAiB,GACjB,GAAI,CACF,IAAM,EAAO,MAAM,EAAe,GAClC,EAAW,EAAK,OAAO,EACvB,EAAe,EAAK,WAAW,EAC/B,EAAa,AAAC,GAAM,EAAI,EAC1B,CAAE,MAAO,EAAgB,CACvB,IAAM,EAAU,aAAiB,MAAQ,EAAM,OAAO,CAAG,2BACzD,EAAA,KAAK,CAAC,KAAK,CAAC,EACd,QAAU,CACR,GAAa,EACf,CACF,EAAG,EAAE,EAaL,SAAS,EAAe,CAAY,EAClC,EAAc,EAChB,CASA,SAAS,IACP,EAAS,MACT,GAAa,EACf,CAEA,MA3BA,CAAA,EAAA,EAAA,SAAA,AAAS,EAAC,KACJ,GAAQ,CAAC,EAAa,OAAO,EAAE,CACjC,EAAa,OAAO,EAAG,EACvB,EAAc,IAEX,IACH,EADS,AACI,OAAO,EAAG,EACvB,GAAiB,GAErB,EAAG,CAAC,EAAM,EAAa,EAAc,EAmBnC,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,MAAM,CAAA,CACL,KAAM,EACN,aAAc,AAAC,IACT,AAAC,GACH,GAEJ,EAHe,SAKf,CAAA,EAAA,EAAA,IAAA,EAAC,EAAA,aAAa,CAAA,CACZ,UAAU,oFACV,iBAAkB,AAAC,GAAM,EAAE,cAAc,aAEzC,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,WAAW,CAAA,CAAC,UAAU,mBAAU,kBACjC,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,iBAAiB,CAAA,CAAC,UAAU,mBAAU,uCAKvC,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CACC,YAAa,EACb,UAAW,EACX,aAAc,IAAM,EAAiB,AAAC,GAAM,CAAC,GAC7C,WAAY,IAId,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,UAAU,CAAA,CAAC,UAAU,0BACnB,GAAgC,IAAnB,EAAQ,MAAM,CAC1B,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,UAAU,2BACZ,MAAM,IAAI,CAAC,CAAE,OAAQ,CAAE,GAAG,GAAG,CAAC,CAAC,EAAG,IACjC,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAGC,UAAU,iDACV,MAAO,CAAE,QAAS,EAAQ,GAAJ,CAAQ,YAE9B,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,UAAU,2CACf,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CACC,UAAU,uCACV,MAAO,CAAE,MAAO,CAAA,EAAG,GAAqB,GAAhB,KAAK,MAAM,GAAQ,CAAC,CAAC,AAAC,MAP3C,CAAC,SAAS,EAAE,EAAA,CAAG,KAYxB,AAAmB,MAAX,MAAM,CAChB,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,4DACb,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,UAAU,CAAA,CAAC,UAAU,4CACtB,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,CAAE,UAAU,4CAAmC,oBAGlD,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAoB,UAAU,eAC5B,EAAQ,GAAG,CAAC,CAAC,EAAO,IACnB,CAAA,EAAA,EAAA,IAAA,EAAC,SAAA,CAEC,KAAK,SACL,QAAS,IAAM,EAAe,EAAM,IAAI,EACxC,UAAU,8JACV,MAAO,CAAE,eAAgB,CAAA,EAAO,GAAJ,EAAO,EAAE,CAAC,AAAC,YAEvC,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAO,UAAU,mGAClB,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,2EACb,EAAM,IAAI,GAEb,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,YAAY,CAAA,CAAC,UAAU,uGAVnB,EAAM,IAAI,IAHX,KAqBd,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,uDACb,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,CAAE,UAAU,4FACV,GAAe,MAElB,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,MAAM,CAAA,CACL,QAAQ,QACR,KAAK,KACL,QAAS,EACT,UAAU,2DACX,WAGD,CAAA,EAAA,EAAA,IAAA,EAAC,EAAA,MAAM,CAAA,CACL,KAAK,KACL,QAlGV,CAkGmB,QAlGV,EACH,IACF,EAAS,GACT,GAAa,CAFE,EAInB,EA8FU,SAAU,CAAC,GAAe,EAC1B,UAAU,kDAET,EAAY,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,OAAO,CAAA,CAAC,UAAU,gCAAmC,KAAK,mBAOpF,sFGvUwM,IAAA,EAAA,EAAA,CAAA,CAAA,QAAsG,IAAM,EAAmC,CAAA,EAAA,EAAA,iBAAb,IAAa,AAAqB,EAAC,KAAxB,wCAAqE,EAAA,UAAU,CAAC,KAAK,EAAE,EAAA,gBAAgB,CAAC,4FI0B7b,CAAA,CAAA,CAAA,CAAM,AAAN,CAAA,CAAM,CAAA,EAAoB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAApB,CAAoB,AAApB,CAAA,AAAoB,CAAA,IAAA,EAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAvBP,CAClC,AAsB+D,CAtB9D,AAsB8D,CAtB9D,AAsB8D,CAtB9D,AAsB8D,CAtB9D,AAsB8D,CAtB9D,AAsB8D,CAtB9D,AAsB8D,CAtB9D,AAsB8D,CAtB9D,AAAQ,AAsBsD,CAtBtD,AAAE,AAsBoD,CAAU,CAAA,AAtB3D,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAW,CAAA,CAAA,CAAA,CAAA,AAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CACxC,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,AAAR,CAAU,AAAF,EAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAY,CAAA,CAAA,CAAA,CAAA,AAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CACzC,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAQ,CAAA,AAAE,EAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAW,CAAA,CAAA,CAAA,CAAA,AAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CACxC,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAQ,CAAA,AAAE,EAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAY,CAAA,CAAA,CAAA,CAAA,AAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CACzC,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAQ,CAAA,AAAE,EAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAa,CAAA,CAAA,CAAA,CAAA,AAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CAC1C,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAQ,CAAA,AAAE,EAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAa,CAAA,CAAA,CAAA,CAAK,AAAL,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CAC1C,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAQ,CAAA,AAAE,EAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAY,CAAA,CAAA,CAAA,CAAA,AAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CACzC,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,AAAR,CAAQ,AAAE,EAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAW,CAAA,CAAA,CAAA,CAAA,AAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CACxC,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAQ,CAAA,AAAE,EAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAW,CAAA,CAAA,CAAA,CAAA,AAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CAC1C,4DHXA,EAAA,EAAA,CAAA,CAAA,QACA,EAAA,EAAA,CAAA,CAAA,QAAA,EAAA,EAAA,CAAA,CAAA,QAAA,EAAA,EAAA,CAAA,CAAA,QACA,EAAA,CAAA,CAAA,QAAA,IAAA,EAAA,EAAA,CAAA,CAAA,QACA,EAAA,EAAA,CAAA,CAAA,QACA,EAAA,EAAA,CAAA,CAAA,QAoCO,SAAS,EAAqB,SAAE,CAAO,WAAE,CAAS,OAAE,CAAK,CAA6B,EAC3F,GAAM,GAAE,CAAC,CAAE,CAAG,CAAA,EAAA,EAAA,cAAA,AAAc,EAAC,OACvB,CAAC,EAAM,EAAQ,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,GAAC,GAcjC,MAXA,CAAA,EAAA,EAAA,SAAA,AAAS,EAAC,KACR,GAAK,CAAD,CAOJ,IAPW,GAMX,SAAS,gBAAgB,CAAC,UAAW,GAC9B,IAAM,SAAS,mBAAmB,CAAC,UAAW,GANrD,SAAS,EAAc,CAAgB,EACvB,UAAU,CAApB,EAAE,GAAG,EACP,GAAQ,EAEZ,CAGF,EAAG,CAAC,EAAK,EAGP,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,QAAA,CAAA,WAEG,EACC,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CACC,cAAY,cACZ,UAAU,qBACV,QAAS,IAAM,GAAQ,GACvB,cAAY,SAEZ,KAEJ,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CACC,cAAY,yBACZ,UAAW,CAAA,EAAA,EAAA,EAAA,AAAE,EAAC,gBAAiB,GAC/B,MAAO,YAGP,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CACC,UAAW,CAAA,EAAA,EAAA,EAAE,AAAF,EACT,4EACA,CAAC,GAAQ,uBAEX,cAAY,uBAEX,EAAQ,GAAG,CAAC,CAAC,EAAQ,KACpB,IAAM,EAAY,CAAC,EAAQ,MAAM,CAAG,GAAI,CAAC,CAnDlC,GAmDsC,AAE7C,MACE,CAAA,EAAA,EAAA,IAAA,EAAC,SAAA,CAEC,cAAa,CAAC,WAAW,EAAE,EAAO,EAAE,CAAA,CAAE,CACtC,aAAY,EAAO,KAAK,CACxB,SAAU,EAAO,QAAQ,EAAI,EAAO,OAAO,CAC3C,UAAW,CAAA,EAAA,EAAA,EAAE,AAAF,EACT,mDACA,0CACA,uBACA,+CACA,mDACA,wCACA,EAAO,4BAA8B,+CAEvC,MAAO,CACL,WAAY,CAAC,QAAQ,EAAE,MAAqB,CAAd,GAAkB,YAAY,EAAE,EAAO,EAAY,EAAE,cAAc,EAAE,EAlEjG,IAkEsH,CAAd,GAAkB,YAAY,EAAE,EAAO,EAAY,EAAE,EAAE,CAAC,AACpK,EACA,QAAS,KACP,EAAO,OAAO,GACd,GAAQ,EACV,YAEA,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,6DACb,EAAO,OAAO,CAAG,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,OAAO,CAAA,CAAC,UAAU,yBAA4B,EAAO,IAAI,GAE9E,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,UAAM,EAAO,KAAK,KAxBd,EAAO,EAAE,CA2BpB,KAIF,CAAA,EAAA,EAAA,IAAA,EAAC,EAAA,MAAM,CAAA,CACL,KAAK,OACL,cAAY,cACZ,YAAA,CAAmB,EAAP,EAAS,mBAAwB,GAAF,cAC3C,UAAW,CAAA,EAAA,EAAA,EAAA,AAAE,EACX,4CACA,2FACA,+EAEF,QAAS,IAAM,EAAQ,AAAC,GAAS,CAAC,aAElC,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,IAAI,CAAA,CACH,UAAW,CAAA,EAAA,EAAA,EAAA,AAAE,EACX,+CACA,EAAO,8BAAgC,kCAEzC,MAAO,CAAE,mBAAoB,GAAG,IAAgB,IAElD,CAAA,EAAA,CAF8C,CAE9C,CAFgD,CAAC,CAEjD,EAAC,EAAA,CAAC,CAAA,CACA,UAAW,CAAA,EAAA,EAAA,EAAA,AAAE,EACX,+CACA,EAAO,iCAAmC,gCAE5C,MAAO,CAAE,mBAAoB,GAAG,IAAgB,QAAJ,EAAE,CAAC,CAM3D,2DEhJA,IAAA,EAAA,EAAA,CAAA,CAAA,QAQA,EAAA,EAAA,CAAA,CAAA,QDZqN,EAAA,EAAA,CAAA,CAAA,QAAsG,IAAM,EAAmC,CAAA,EAAA,EAAA,iBAAb,IAAkC,AAArB,EAAsB,KAAxB,wCAAqE,EAAA,UAAU,CAAC,KAAK,EAAE,EAAA,gBAAgB,CAAC,uBCuBnc,SAAS,EAAiB,MAAE,CAAI,cAAE,CAAY,WAAE,CAAS,CAAyB,EACvF,GAAM,CAAC,EAAM,EAAQ,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAC,IAC3B,CAAC,EAAM,EAAQ,CAAG,CAAA,EAAA,EAAA,QAAQ,AAAR,GAAS,GAC3B,CAAC,EAAO,EAAS,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAgB,MAGlD,CAAA,EAAA,EAAA,SAAA,AAAS,EAAC,KACJ,IACF,EADQ,AACA,IACR,GAAQ,GACR,EAAS,MAEb,EAAG,CAAC,EAAK,EAET,IAAM,EAAe,MAAO,IAC1B,EAAE,cAAc,GAChB,IAAM,EAAU,EAAK,IAAI,GACzB,GAAI,CAAC,GAAW,EAAM,OAEtB,GAAQ,GACR,EAAS,MACT,IAAM,EAAS,MAAM,EAAoB,GACzC,GAAI,CAAC,EAAO,EAAE,EAAI,CAAC,EAAO,IAAI,CAAE,CAC9B,EAAS,EAAO,KAAK,EAAI,6BACzB,GAAQ,GACR,MACF,CAGA,EAAU,EAAO,IAAI,EACrB,GAAa,EACf,EAEA,MACE,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,MAAM,CAAA,CAAC,KAAM,EAAM,aAAc,WAChC,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,aAAa,CAAA,CAAC,UAAU,oBACvB,CAAA,EAAA,EAAA,IAAA,EAAC,OAAA,CAAK,SAAU,YACd,CAAA,EAAA,EAAA,IAAA,EAAC,EAAA,YAAY,CAAA,WACX,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,WAAW,CAAA,UAAC,gBACb,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,iBAAiB,CAAA,UAAC,wIAKrB,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,iBACb,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,KAAK,CAAA,CACJ,SAAS,CAAA,CAAA,EACT,MAAO,EACP,SAAU,AAAC,IACT,EAAQ,EAAE,MAAM,CAAC,KAAK,EAClB,GAAO,EAAS,KACtB,EACA,YAAY,eACZ,SAAU,EACV,cAAY,2BAEb,EACC,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,CAAE,UAAU,gCAAgC,KAAK,iBAC/C,IAED,QAEN,CAAA,EAAA,EAAA,IAAA,EAAC,EAAA,YAAY,CAAA,WACX,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,MAAM,CAAA,CACL,KAAK,SACL,QAAQ,QACR,QAAS,IAAM,EAAa,IAC5B,SAAU,WACX,WAGD,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,MAAM,CAAA,CAAC,KAAK,SAAS,SAAU,CAAC,EAAK,IAAI,IAAM,WAC7C,EACC,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,QAAA,CAAA,WACE,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,OAAO,CAAA,CAAC,UAAU,8BAA8B,eAInD,4BAQhB,iEE7G0M,IAAA,EAAA,EAAA,CAAA,CAAA,QAAsG,IAAM,EAAmC,CAAA,EAAA,EAAA,iBAAb,IAAa,AAAqB,EAAC,KAAxB,wCAAqE,EAAA,UAAU,CAAC,KAAK,EAAE,EAAA,gBAAgB,CAAC,yECAjP,IAAA,EAAA,EAAA,CAAA,CAAA,QAAsG,IAAM,EAAmC,CAAA,EAAA,EAAA,iBAAb,IAAa,AAAqB,EAAC,KAAxB,wCAAqE,EAAA,UAAU,CAAC,KAAK,EAAE,EAAA,gBAAgB,CAAC,6ECA3P,IAAA,EAAA,EAAA,CAAA,CAAA,QAAsG,IAAM,EAAmC,CAAA,EAAA,EAAA,iBAAb,IAAa,AAAqB,EAAC,KAAxB,wCAAqE,EAAA,UAAU,CAAC,KAAK,EAAE,EAAA,gBAAgB,CAAC","ignoreList":[4,5,10]}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[642642,a=>{"use strict";let b=(0,a.i(225700).default)("file-text",[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M10 9H8",key:"b1mrlr"}],["path",{d:"M16 13H8",key:"t4e002"}],["path",{d:"M16 17H8",key:"z1uh3a"}]]);a.s(["default",()=>b])},503410,a=>{"use strict";let b=(0,a.i(225700).default)("chevron-right",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]);a.s(["ChevronRight",()=>b],503410)},216605,a=>{"use strict";let b=(0,a.i(225700).default)("trash-2",[["path",{d:"M10 11v6",key:"nco0om"}],["path",{d:"M14 11v6",key:"outv1u"}],["path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6",key:"miytrc"}],["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2",key:"e791ji"}]]);a.s(["Trash2",()=>b],216605)},162147,a=>{"use strict";var b=a.i(642642);a.s(["FileText",()=>b.default])},196954,a=>{"use strict";var b=a.i(556365),c=a.i(944592),d=a.i(431848),e=a.i(867837),f=a.i(162147),g=a.i(216605),h=a.i(225700);let i=(0,h.default)("star",[["path",{d:"M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z",key:"r04s7s"}]]),j=(0,h.default)("star-off",[["path",{d:"m10.344 4.688 1.181-2.393a.53.53 0 0 1 .95 0l2.31 4.679a2.12 2.12 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.237 3.152",key:"19ctli"}],["path",{d:"m17.945 17.945.43 2.505a.53.53 0 0 1-.771.56l-4.618-2.428a2.12 2.12 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.12 2.12 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a8 8 0 0 0 .4-.099",key:"ptqqvy"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]]);var k=a.i(503410),l=a.i(385536),m=a.i(118948),n=a.i(390920),o=a.i(289111);let p=(0,o.createServerReference)("
|
|
1
|
+
module.exports=[642642,a=>{"use strict";let b=(0,a.i(225700).default)("file-text",[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M10 9H8",key:"b1mrlr"}],["path",{d:"M16 13H8",key:"t4e002"}],["path",{d:"M16 17H8",key:"z1uh3a"}]]);a.s(["default",()=>b])},503410,a=>{"use strict";let b=(0,a.i(225700).default)("chevron-right",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]);a.s(["ChevronRight",()=>b],503410)},216605,a=>{"use strict";let b=(0,a.i(225700).default)("trash-2",[["path",{d:"M10 11v6",key:"nco0om"}],["path",{d:"M14 11v6",key:"outv1u"}],["path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6",key:"miytrc"}],["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2",key:"e791ji"}]]);a.s(["Trash2",()=>b],216605)},162147,a=>{"use strict";var b=a.i(642642);a.s(["FileText",()=>b.default])},196954,a=>{"use strict";var b=a.i(556365),c=a.i(944592),d=a.i(431848),e=a.i(867837),f=a.i(162147),g=a.i(216605),h=a.i(225700);let i=(0,h.default)("star",[["path",{d:"M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z",key:"r04s7s"}]]),j=(0,h.default)("star-off",[["path",{d:"m10.344 4.688 1.181-2.393a.53.53 0 0 1 .95 0l2.31 4.679a2.12 2.12 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.237 3.152",key:"19ctli"}],["path",{d:"m17.945 17.945.43 2.505a.53.53 0 0 1-.771.56l-4.618-2.428a2.12 2.12 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.12 2.12 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a8 8 0 0 0 .4-.099",key:"ptqqvy"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]]);var k=a.i(503410),l=a.i(385536),m=a.i(118948),n=a.i(390920),o=a.i(289111);let p=(0,o.createServerReference)("40e7a2fdd51c8db14fb647e0b3104aa7678b8bdb4f",o.callServer,void 0,o.findSourceMapURL,"createPage"),q=(0,o.createServerReference)("60be903223774e27f8ee828d5d17341763ade51460",o.callServer,void 0,o.findSourceMapURL,"updatePage"),r=(0,o.createServerReference)("402cf7a6df94d06781d23611beeb31fbfe8c405575",o.callServer,void 0,o.findSourceMapURL,"deletePage"),s=(0,d.default)(async()=>{},{loadableGenerated:{modules:[853645]},ssr:!1});function t({projectId:a,pages:d,className:h}){let[o,t]=(0,c.useState)(d),[u,v]=(0,c.useState)(null),[w,x]=(0,c.useState)(!1),[y,z]=(0,c.useState)(""),[A,B]=(0,c.useState)(null),C=o.find(a=>a.id===u),D=o.filter(a=>!a.parentId),E=(0,c.useCallback)(a=>o.filter(b=>b.parentId===a),[o]),F=(0,c.useCallback)(async()=>{let b=y.trim();if(!b)return;let c=await p({projectId:a,title:b});c.page&&(t(a=>[...a,c.page]),v(c.page.id),z(""),x(!1))},[a,y]),G=(0,c.useCallback)(async a=>{if(!u)return;let b=await q(u,{content:a});b.page&&t(a=>a.map(a=>a.id===b.page.id?b.page:a))},[u]),H=(0,c.useCallback)(async(a,b)=>{let c=b.trim();if(!c)return;let d=await q(a,{title:c});d.page&&t(a=>a.map(a=>a.id===d.page.id?d.page:a)),B(null)},[]),I=(0,c.useCallback)(async a=>{(await r(a)).error||(t(b=>b.filter(b=>b.id!==a)),u===a&&v(null))},[u]),J=(0,c.useCallback)(async(a,b)=>{let c=await q(a,{isFavorite:!b});c.page&&t(a=>a.map(a=>a.id===c.page.id?c.page:a))},[]),K=(a,c=0)=>{let d=E(a.id),e=u===a.id,h=A===a.id;return(0,b.jsxs)("div",{children:[(0,b.jsxs)("div",{"data-testid":`page-item-${a.id}`,className:(0,l.cn)("group hover:bg-accent/50 flex cursor-pointer items-center gap-1 rounded-sm px-2 py-1 text-xs",e&&"bg-accent"),style:{paddingLeft:`${8+16*c}px`},onClick:()=>v(a.id),children:[d.length>0&&(0,b.jsx)(k.ChevronRight,{className:"text-muted-foreground h-3 w-3 shrink-0"}),(0,b.jsx)(f.FileText,{className:"text-muted-foreground h-3 w-3 shrink-0"}),h?(0,b.jsx)(n.Input,{autoFocus:!0,defaultValue:a.title,className:"h-5 text-xs",onBlur:b=>H(a.id,b.target.value),onKeyDown:b=>{"Enter"===b.key&&H(a.id,b.currentTarget.value),"Escape"===b.key&&B(null)},onClick:a=>a.stopPropagation()}):(0,b.jsx)("span",{className:"flex-1 truncate",onDoubleClick:b=>{b.stopPropagation(),B(a.id)},children:a.title}),(0,b.jsxs)("div",{className:"hidden gap-0.5 group-hover:flex",children:[(0,b.jsx)(m.Button,{variant:"ghost",size:"sm",className:"h-4 w-4 p-0",onClick:b=>{b.stopPropagation(),J(a.id,a.isFavorite)},title:a.isFavorite?"Unfavorite":"Favorite",children:a.isFavorite?(0,b.jsx)(i,{className:"h-2.5 w-2.5 fill-yellow-400 text-yellow-400"}):(0,b.jsx)(j,{className:"h-2.5 w-2.5"})}),(0,b.jsx)(m.Button,{variant:"ghost",size:"sm",className:"text-destructive h-4 w-4 p-0",onClick:b=>{b.stopPropagation(),I(a.id)},title:"Delete page",children:(0,b.jsx)(g.Trash2,{className:"h-2.5 w-2.5"})})]})]}),d.map(a=>K(a,c+1))]},a.id)};return(0,b.jsxs)("div",{"data-testid":"pages-panel",className:(0,l.cn)("flex h-full gap-0",h),children:[(0,b.jsxs)("div",{className:"flex w-56 shrink-0 flex-col border-r",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between border-b px-3 py-2",children:[(0,b.jsx)("span",{className:"text-xs font-medium",children:"Pages"}),(0,b.jsx)(m.Button,{variant:"ghost",size:"sm",className:"h-5 w-5 p-0",onClick:()=>x(!0),"data-testid":"create-page-btn",children:(0,b.jsx)(e.Plus,{className:"h-3 w-3"})})]}),(0,b.jsxs)("div",{className:"flex-1 overflow-y-auto p-1",children:[w?(0,b.jsx)("div",{className:"mb-1 px-2",children:(0,b.jsx)(n.Input,{autoFocus:!0,placeholder:"Page title...",value:y,onChange:a=>z(a.target.value),onKeyDown:a=>{"Enter"===a.key&&F(),"Escape"===a.key&&(x(!1),z(""))},onBlur:()=>{y.trim()?F():(x(!1),z(""))},className:"h-6 text-xs","data-testid":"new-page-input"})}):null,0!==D.length||w?D.map(a=>K(a)):(0,b.jsxs)("div",{className:"flex flex-col items-center justify-center py-8 text-center",children:[(0,b.jsx)(f.FileText,{className:"mb-2 h-5 w-5 opacity-20"}),(0,b.jsx)("p",{className:"text-muted-foreground text-[10px]",children:"No pages yet"})]})]})]}),(0,b.jsx)("div",{className:"flex flex-1 flex-col overflow-hidden",children:C?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("div",{className:"border-b px-4 py-2",children:(0,b.jsx)("h2",{className:"text-sm font-medium",children:C.title})}),(0,b.jsx)("div",{className:"flex-1 overflow-y-auto",children:(0,b.jsx)(s,{content:C.content??"",onUpdate:G})})]}):(0,b.jsx)("div",{className:"flex flex-1 items-center justify-center",children:(0,b.jsxs)("div",{className:"text-center",children:[(0,b.jsx)(f.FileText,{className:"mx-auto mb-2 h-8 w-8 opacity-20"}),(0,b.jsx)("p",{className:"text-muted-foreground text-xs",children:"Select or create a page"})]})})})]})}a.s(["PagesPanel",()=>t],196954)}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=_e6271303._.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../node_modules/.pnpm/lucide-react%400.563.0_react%4019.2.4/node_modules/lucide-react/src/icons/file-text.ts","../../../../../../../node_modules/.pnpm/lucide-react%400.563.0_react%4019.2.4/node_modules/lucide-react/src/icons/chevron-right.ts","../../../../../../../node_modules/.pnpm/lucide-react%400.563.0_react%4019.2.4/node_modules/lucide-react/src/icons/trash-2.ts","../../../../../../../src/presentation/web/app/actions/data%3A6d8a0d%20%3Ctext/javascript%3E","../../../../../../../src/presentation/web/app/actions/data%3A9edc88%20%3Ctext/javascript%3E","../../../../../../../src/presentation/web/app/actions/data%3A0e8090%20%3Ctext/javascript%3E","../../../../../../../src/presentation/web/components/pm/page-editor/pages-panel.tsx","../../../../../../../node_modules/.pnpm/lucide-react%400.563.0_react%4019.2.4/node_modules/lucide-react/src/icons/star-off.ts","../../../../../../../node_modules/.pnpm/lucide-react%400.563.0_react%4019.2.4/node_modules/lucide-react/src/icons/star.ts"],"sourcesContent":["import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z',\n key: '1oefj6',\n },\n ],\n ['path', { d: 'M14 2v5a1 1 0 0 0 1 1h5', key: 'wfsgrz' }],\n ['path', { d: 'M10 9H8', key: 'b1mrlr' }],\n ['path', { d: 'M16 13H8', key: 't4e002' }],\n ['path', { d: 'M16 17H8', key: 'z1uh3a' }],\n];\n\n/**\n * @component @name FileText\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/file-text\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst FileText = createLucideIcon('file-text', __iconNode);\n\nexport default FileText;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [['path', { d: 'm9 18 6-6-6-6', key: 'mthhwq' }]];\n\n/**\n * @component @name ChevronRight\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/chevron-right\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ChevronRight = createLucideIcon('chevron-right', __iconNode);\n\nexport default ChevronRight;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M10 11v6', key: 'nco0om' }],\n ['path', { d: 'M14 11v6', key: 'outv1u' }],\n ['path', { d: 'M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6', key: 'miytrc' }],\n ['path', { d: 'M3 6h18', key: 'd0wm0j' }],\n ['path', { d: 'M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2', key: 'e791ji' }],\n];\n\n/**\n * @component @name Trash2\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/trash-2\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Trash2 = createLucideIcon('trash-2', __iconNode);\n\nexport default Trash2;\n","/* __next_internal_action_entry_do_not_use__ [{\"4099c48b13dbd6a651dabc395e735634daf713d6e4\":\"createPage\"},\"src/presentation/web/app/actions/manage-pages.ts\",\"\"] */\"use turbopack no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_0=/*#__PURE__*/createServerReference(\"4099c48b13dbd6a651dabc395e735634daf713d6e4\",callServer,void 0,findSourceMapURL,\"createPage\");export{$$RSC_SERVER_ACTION_0 as createPage};","/* __next_internal_action_entry_do_not_use__ [{\"60cee3b542196ab0b51114bb538fba578a26209c51\":\"updatePage\"},\"src/presentation/web/app/actions/manage-pages.ts\",\"\"] */\"use turbopack no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_3=/*#__PURE__*/createServerReference(\"60cee3b542196ab0b51114bb538fba578a26209c51\",callServer,void 0,findSourceMapURL,\"updatePage\");export{$$RSC_SERVER_ACTION_3 as updatePage};","/* __next_internal_action_entry_do_not_use__ [{\"4077e557813b897a494e51132c4fdcbcc06caa04e9\":\"deletePage\"},\"src/presentation/web/app/actions/manage-pages.ts\",\"\"] */\"use turbopack no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_4=/*#__PURE__*/createServerReference(\"4077e557813b897a494e51132c4fdcbcc06caa04e9\",callServer,void 0,findSourceMapURL,\"deletePage\");export{$$RSC_SERVER_ACTION_4 as deletePage};","'use client';\n\nimport { useState, useCallback } from 'react';\nimport dynamic from 'next/dynamic';\nimport { Plus, FileText, Trash2, Star, StarOff, ChevronRight } from 'lucide-react';\nimport { cn } from '@/lib/utils';\nimport { Button } from '@/components/ui/button';\nimport { Input } from '@/components/ui/input';\nimport type { Page } from '@shepai/core/domain/generated/output';\nimport { createPage, updatePage, deletePage } from '@/app/actions/manage-pages';\n\n// Defer the Tiptap-based editor (13 @tiptap/* packages + lowlight syntax\n// grammars). This panel is mounted on every project route but most users\n// don't open the editor on every visit — splitting the editor chunk cuts\n// the project-route initial bundle by ~200KB gzip.\nconst PageEditor = dynamic(() => import('./page-editor').then((m) => m.PageEditor), {\n ssr: false,\n});\n\nexport interface PagesPanelProps {\n projectId: string;\n pages: Page[];\n className?: string;\n}\n\nexport function PagesPanel({ projectId, pages: initialPages, className }: PagesPanelProps) {\n const [pages, setPages] = useState<Page[]>(initialPages);\n const [selectedPageId, setSelectedPageId] = useState<string | null>(null);\n const [isCreating, setIsCreating] = useState(false);\n const [newTitle, setNewTitle] = useState('');\n const [editingTitle, setEditingTitle] = useState<string | null>(null);\n\n const selectedPage = pages.find((p) => p.id === selectedPageId);\n\n const rootPages = pages.filter((p) => !p.parentId);\n\n const getChildren = useCallback(\n (parentId: string) => pages.filter((p) => p.parentId === parentId),\n [pages]\n );\n\n const handleCreate = useCallback(async () => {\n const title = newTitle.trim();\n if (!title) return;\n\n const result = await createPage({ projectId, title });\n if (result.page) {\n setPages((prev) => [...prev, result.page!]);\n setSelectedPageId(result.page.id);\n setNewTitle('');\n setIsCreating(false);\n }\n }, [projectId, newTitle]);\n\n const handleContentUpdate = useCallback(\n async (content: string) => {\n if (!selectedPageId) return;\n const result = await updatePage(selectedPageId, { content });\n if (result.page) {\n setPages((prev) => prev.map((p) => (p.id === result.page!.id ? result.page! : p)));\n }\n },\n [selectedPageId]\n );\n\n const handleTitleUpdate = useCallback(async (pageId: string, title: string) => {\n const trimmed = title.trim();\n if (!trimmed) return;\n const result = await updatePage(pageId, { title: trimmed });\n if (result.page) {\n setPages((prev) => prev.map((p) => (p.id === result.page!.id ? result.page! : p)));\n }\n setEditingTitle(null);\n }, []);\n\n const handleDelete = useCallback(\n async (pageId: string) => {\n const result = await deletePage(pageId);\n if (!result.error) {\n setPages((prev) => prev.filter((p) => p.id !== pageId));\n if (selectedPageId === pageId) setSelectedPageId(null);\n }\n },\n [selectedPageId]\n );\n\n const handleToggleFavorite = useCallback(async (pageId: string, current: boolean) => {\n const result = await updatePage(pageId, { isFavorite: !current });\n if (result.page) {\n setPages((prev) => prev.map((p) => (p.id === result.page!.id ? result.page! : p)));\n }\n }, []);\n\n const renderPageItem = (page: Page, depth = 0) => {\n const children = getChildren(page.id);\n const isSelected = selectedPageId === page.id;\n const isEditing = editingTitle === page.id;\n\n return (\n <div key={page.id}>\n <div\n data-testid={`page-item-${page.id}`}\n className={cn(\n 'group hover:bg-accent/50 flex cursor-pointer items-center gap-1 rounded-sm px-2 py-1 text-xs',\n isSelected && 'bg-accent'\n )}\n style={{ paddingLeft: `${8 + depth * 16}px` }}\n onClick={() => setSelectedPageId(page.id)}\n >\n {children.length > 0 && (\n <ChevronRight className=\"text-muted-foreground h-3 w-3 shrink-0\" />\n )}\n <FileText className=\"text-muted-foreground h-3 w-3 shrink-0\" />\n {isEditing ? (\n <Input\n autoFocus\n defaultValue={page.title}\n className=\"h-5 text-xs\"\n onBlur={(e) => handleTitleUpdate(page.id, e.target.value)}\n onKeyDown={(e) => {\n if (e.key === 'Enter') handleTitleUpdate(page.id, e.currentTarget.value);\n if (e.key === 'Escape') setEditingTitle(null);\n }}\n onClick={(e) => e.stopPropagation()}\n />\n ) : (\n <span\n className=\"flex-1 truncate\"\n onDoubleClick={(e) => {\n e.stopPropagation();\n setEditingTitle(page.id);\n }}\n >\n {page.title}\n </span>\n )}\n <div className=\"hidden gap-0.5 group-hover:flex\">\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-4 w-4 p-0\"\n onClick={(e) => {\n e.stopPropagation();\n handleToggleFavorite(page.id, page.isFavorite);\n }}\n title={page.isFavorite ? 'Unfavorite' : 'Favorite'}\n >\n {page.isFavorite ? (\n <Star className=\"h-2.5 w-2.5 fill-yellow-400 text-yellow-400\" />\n ) : (\n <StarOff className=\"h-2.5 w-2.5\" />\n )}\n </Button>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"text-destructive h-4 w-4 p-0\"\n onClick={(e) => {\n e.stopPropagation();\n handleDelete(page.id);\n }}\n title=\"Delete page\"\n >\n <Trash2 className=\"h-2.5 w-2.5\" />\n </Button>\n </div>\n </div>\n {children.map((child) => renderPageItem(child, depth + 1))}\n </div>\n );\n };\n\n return (\n <div data-testid=\"pages-panel\" className={cn('flex h-full gap-0', className)}>\n {/* Sidebar */}\n <div className=\"flex w-56 shrink-0 flex-col border-r\">\n <div className=\"flex items-center justify-between border-b px-3 py-2\">\n <span className=\"text-xs font-medium\">Pages</span>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-5 w-5 p-0\"\n onClick={() => setIsCreating(true)}\n data-testid=\"create-page-btn\"\n >\n <Plus className=\"h-3 w-3\" />\n </Button>\n </div>\n <div className=\"flex-1 overflow-y-auto p-1\">\n {isCreating ? (\n <div className=\"mb-1 px-2\">\n <Input\n autoFocus\n placeholder=\"Page title...\"\n value={newTitle}\n onChange={(e) => setNewTitle(e.target.value)}\n onKeyDown={(e) => {\n if (e.key === 'Enter') handleCreate();\n if (e.key === 'Escape') {\n setIsCreating(false);\n setNewTitle('');\n }\n }}\n onBlur={() => {\n if (newTitle.trim()) handleCreate();\n else {\n setIsCreating(false);\n setNewTitle('');\n }\n }}\n className=\"h-6 text-xs\"\n data-testid=\"new-page-input\"\n />\n </div>\n ) : null}\n {rootPages.length === 0 && !isCreating ? (\n <div className=\"flex flex-col items-center justify-center py-8 text-center\">\n <FileText className=\"mb-2 h-5 w-5 opacity-20\" />\n <p className=\"text-muted-foreground text-[10px]\">No pages yet</p>\n </div>\n ) : (\n rootPages.map((page) => renderPageItem(page))\n )}\n </div>\n </div>\n\n {/* Editor pane */}\n <div className=\"flex flex-1 flex-col overflow-hidden\">\n {selectedPage ? (\n <>\n <div className=\"border-b px-4 py-2\">\n <h2 className=\"text-sm font-medium\">{selectedPage.title}</h2>\n </div>\n <div className=\"flex-1 overflow-y-auto\">\n <PageEditor content={selectedPage.content ?? ''} onUpdate={handleContentUpdate} />\n </div>\n </>\n ) : (\n <div className=\"flex flex-1 items-center justify-center\">\n <div className=\"text-center\">\n <FileText className=\"mx-auto mb-2 h-8 w-8 opacity-20\" />\n <p className=\"text-muted-foreground text-xs\">Select or create a page</p>\n </div>\n </div>\n )}\n </div>\n </div>\n );\n}\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'm10.344 4.688 1.181-2.393a.53.53 0 0 1 .95 0l2.31 4.679a2.12 2.12 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.237 3.152',\n key: '19ctli',\n },\n ],\n [\n 'path',\n {\n d: 'm17.945 17.945.43 2.505a.53.53 0 0 1-.771.56l-4.618-2.428a2.12 2.12 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.12 2.12 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a8 8 0 0 0 .4-.099',\n key: 'ptqqvy',\n },\n ],\n ['path', { d: 'm2 2 20 20', key: '1ooewy' }],\n];\n\n/**\n * @component @name StarOff\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/star-off\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst StarOff = createLucideIcon('star-off', __iconNode);\n\nexport default StarOff;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z',\n key: 'r04s7s',\n },\n ],\n];\n\n/**\n * @component @name Star\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/star\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Star = createLucideIcon('star', __iconNode);\n\nexport default Star;\n"],"names":[],"mappings":"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","ignoreList":[1,2,7,8]}
|
|
1
|
+
{"version":3,"sources":["../../../../../../../node_modules/.pnpm/lucide-react%400.563.0_react%4019.2.4/node_modules/lucide-react/src/icons/file-text.ts","../../../../../../../node_modules/.pnpm/lucide-react%400.563.0_react%4019.2.4/node_modules/lucide-react/src/icons/chevron-right.ts","../../../../../../../node_modules/.pnpm/lucide-react%400.563.0_react%4019.2.4/node_modules/lucide-react/src/icons/trash-2.ts","../../../../../../../src/presentation/web/app/actions/data%3Aea0282%20%3Ctext/javascript%3E","../../../../../../../src/presentation/web/app/actions/data%3Aa43cd4%20%3Ctext/javascript%3E","../../../../../../../src/presentation/web/app/actions/data%3A7eaf88%20%3Ctext/javascript%3E","../../../../../../../src/presentation/web/components/pm/page-editor/pages-panel.tsx","../../../../../../../node_modules/.pnpm/lucide-react%400.563.0_react%4019.2.4/node_modules/lucide-react/src/icons/star-off.ts","../../../../../../../node_modules/.pnpm/lucide-react%400.563.0_react%4019.2.4/node_modules/lucide-react/src/icons/star.ts"],"sourcesContent":["import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z',\n key: '1oefj6',\n },\n ],\n ['path', { d: 'M14 2v5a1 1 0 0 0 1 1h5', key: 'wfsgrz' }],\n ['path', { d: 'M10 9H8', key: 'b1mrlr' }],\n ['path', { d: 'M16 13H8', key: 't4e002' }],\n ['path', { d: 'M16 17H8', key: 'z1uh3a' }],\n];\n\n/**\n * @component @name FileText\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/file-text\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst FileText = createLucideIcon('file-text', __iconNode);\n\nexport default FileText;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [['path', { d: 'm9 18 6-6-6-6', key: 'mthhwq' }]];\n\n/**\n * @component @name ChevronRight\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/chevron-right\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ChevronRight = createLucideIcon('chevron-right', __iconNode);\n\nexport default ChevronRight;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M10 11v6', key: 'nco0om' }],\n ['path', { d: 'M14 11v6', key: 'outv1u' }],\n ['path', { d: 'M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6', key: 'miytrc' }],\n ['path', { d: 'M3 6h18', key: 'd0wm0j' }],\n ['path', { d: 'M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2', key: 'e791ji' }],\n];\n\n/**\n * @component @name Trash2\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/trash-2\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Trash2 = createLucideIcon('trash-2', __iconNode);\n\nexport default Trash2;\n","/* __next_internal_action_entry_do_not_use__ [{\"40e7a2fdd51c8db14fb647e0b3104aa7678b8bdb4f\":\"createPage\"},\"src/presentation/web/app/actions/manage-pages.ts\",\"\"] */\"use turbopack no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_0=/*#__PURE__*/createServerReference(\"40e7a2fdd51c8db14fb647e0b3104aa7678b8bdb4f\",callServer,void 0,findSourceMapURL,\"createPage\");export{$$RSC_SERVER_ACTION_0 as createPage};","/* __next_internal_action_entry_do_not_use__ [{\"60be903223774e27f8ee828d5d17341763ade51460\":\"updatePage\"},\"src/presentation/web/app/actions/manage-pages.ts\",\"\"] */\"use turbopack no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_3=/*#__PURE__*/createServerReference(\"60be903223774e27f8ee828d5d17341763ade51460\",callServer,void 0,findSourceMapURL,\"updatePage\");export{$$RSC_SERVER_ACTION_3 as updatePage};","/* __next_internal_action_entry_do_not_use__ [{\"402cf7a6df94d06781d23611beeb31fbfe8c405575\":\"deletePage\"},\"src/presentation/web/app/actions/manage-pages.ts\",\"\"] */\"use turbopack no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_4=/*#__PURE__*/createServerReference(\"402cf7a6df94d06781d23611beeb31fbfe8c405575\",callServer,void 0,findSourceMapURL,\"deletePage\");export{$$RSC_SERVER_ACTION_4 as deletePage};","'use client';\n\nimport { useState, useCallback } from 'react';\nimport dynamic from 'next/dynamic';\nimport { Plus, FileText, Trash2, Star, StarOff, ChevronRight } from 'lucide-react';\nimport { cn } from '@/lib/utils';\nimport { Button } from '@/components/ui/button';\nimport { Input } from '@/components/ui/input';\nimport type { Page } from '@shepai/core/domain/generated/output';\nimport { createPage, updatePage, deletePage } from '@/app/actions/manage-pages';\n\n// Defer the Tiptap-based editor (13 @tiptap/* packages + lowlight syntax\n// grammars). This panel is mounted on every project route but most users\n// don't open the editor on every visit — splitting the editor chunk cuts\n// the project-route initial bundle by ~200KB gzip.\nconst PageEditor = dynamic(() => import('./page-editor').then((m) => m.PageEditor), {\n ssr: false,\n});\n\nexport interface PagesPanelProps {\n projectId: string;\n pages: Page[];\n className?: string;\n}\n\nexport function PagesPanel({ projectId, pages: initialPages, className }: PagesPanelProps) {\n const [pages, setPages] = useState<Page[]>(initialPages);\n const [selectedPageId, setSelectedPageId] = useState<string | null>(null);\n const [isCreating, setIsCreating] = useState(false);\n const [newTitle, setNewTitle] = useState('');\n const [editingTitle, setEditingTitle] = useState<string | null>(null);\n\n const selectedPage = pages.find((p) => p.id === selectedPageId);\n\n const rootPages = pages.filter((p) => !p.parentId);\n\n const getChildren = useCallback(\n (parentId: string) => pages.filter((p) => p.parentId === parentId),\n [pages]\n );\n\n const handleCreate = useCallback(async () => {\n const title = newTitle.trim();\n if (!title) return;\n\n const result = await createPage({ projectId, title });\n if (result.page) {\n setPages((prev) => [...prev, result.page!]);\n setSelectedPageId(result.page.id);\n setNewTitle('');\n setIsCreating(false);\n }\n }, [projectId, newTitle]);\n\n const handleContentUpdate = useCallback(\n async (content: string) => {\n if (!selectedPageId) return;\n const result = await updatePage(selectedPageId, { content });\n if (result.page) {\n setPages((prev) => prev.map((p) => (p.id === result.page!.id ? result.page! : p)));\n }\n },\n [selectedPageId]\n );\n\n const handleTitleUpdate = useCallback(async (pageId: string, title: string) => {\n const trimmed = title.trim();\n if (!trimmed) return;\n const result = await updatePage(pageId, { title: trimmed });\n if (result.page) {\n setPages((prev) => prev.map((p) => (p.id === result.page!.id ? result.page! : p)));\n }\n setEditingTitle(null);\n }, []);\n\n const handleDelete = useCallback(\n async (pageId: string) => {\n const result = await deletePage(pageId);\n if (!result.error) {\n setPages((prev) => prev.filter((p) => p.id !== pageId));\n if (selectedPageId === pageId) setSelectedPageId(null);\n }\n },\n [selectedPageId]\n );\n\n const handleToggleFavorite = useCallback(async (pageId: string, current: boolean) => {\n const result = await updatePage(pageId, { isFavorite: !current });\n if (result.page) {\n setPages((prev) => prev.map((p) => (p.id === result.page!.id ? result.page! : p)));\n }\n }, []);\n\n const renderPageItem = (page: Page, depth = 0) => {\n const children = getChildren(page.id);\n const isSelected = selectedPageId === page.id;\n const isEditing = editingTitle === page.id;\n\n return (\n <div key={page.id}>\n <div\n data-testid={`page-item-${page.id}`}\n className={cn(\n 'group hover:bg-accent/50 flex cursor-pointer items-center gap-1 rounded-sm px-2 py-1 text-xs',\n isSelected && 'bg-accent'\n )}\n style={{ paddingLeft: `${8 + depth * 16}px` }}\n onClick={() => setSelectedPageId(page.id)}\n >\n {children.length > 0 && (\n <ChevronRight className=\"text-muted-foreground h-3 w-3 shrink-0\" />\n )}\n <FileText className=\"text-muted-foreground h-3 w-3 shrink-0\" />\n {isEditing ? (\n <Input\n autoFocus\n defaultValue={page.title}\n className=\"h-5 text-xs\"\n onBlur={(e) => handleTitleUpdate(page.id, e.target.value)}\n onKeyDown={(e) => {\n if (e.key === 'Enter') handleTitleUpdate(page.id, e.currentTarget.value);\n if (e.key === 'Escape') setEditingTitle(null);\n }}\n onClick={(e) => e.stopPropagation()}\n />\n ) : (\n <span\n className=\"flex-1 truncate\"\n onDoubleClick={(e) => {\n e.stopPropagation();\n setEditingTitle(page.id);\n }}\n >\n {page.title}\n </span>\n )}\n <div className=\"hidden gap-0.5 group-hover:flex\">\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-4 w-4 p-0\"\n onClick={(e) => {\n e.stopPropagation();\n handleToggleFavorite(page.id, page.isFavorite);\n }}\n title={page.isFavorite ? 'Unfavorite' : 'Favorite'}\n >\n {page.isFavorite ? (\n <Star className=\"h-2.5 w-2.5 fill-yellow-400 text-yellow-400\" />\n ) : (\n <StarOff className=\"h-2.5 w-2.5\" />\n )}\n </Button>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"text-destructive h-4 w-4 p-0\"\n onClick={(e) => {\n e.stopPropagation();\n handleDelete(page.id);\n }}\n title=\"Delete page\"\n >\n <Trash2 className=\"h-2.5 w-2.5\" />\n </Button>\n </div>\n </div>\n {children.map((child) => renderPageItem(child, depth + 1))}\n </div>\n );\n };\n\n return (\n <div data-testid=\"pages-panel\" className={cn('flex h-full gap-0', className)}>\n {/* Sidebar */}\n <div className=\"flex w-56 shrink-0 flex-col border-r\">\n <div className=\"flex items-center justify-between border-b px-3 py-2\">\n <span className=\"text-xs font-medium\">Pages</span>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-5 w-5 p-0\"\n onClick={() => setIsCreating(true)}\n data-testid=\"create-page-btn\"\n >\n <Plus className=\"h-3 w-3\" />\n </Button>\n </div>\n <div className=\"flex-1 overflow-y-auto p-1\">\n {isCreating ? (\n <div className=\"mb-1 px-2\">\n <Input\n autoFocus\n placeholder=\"Page title...\"\n value={newTitle}\n onChange={(e) => setNewTitle(e.target.value)}\n onKeyDown={(e) => {\n if (e.key === 'Enter') handleCreate();\n if (e.key === 'Escape') {\n setIsCreating(false);\n setNewTitle('');\n }\n }}\n onBlur={() => {\n if (newTitle.trim()) handleCreate();\n else {\n setIsCreating(false);\n setNewTitle('');\n }\n }}\n className=\"h-6 text-xs\"\n data-testid=\"new-page-input\"\n />\n </div>\n ) : null}\n {rootPages.length === 0 && !isCreating ? (\n <div className=\"flex flex-col items-center justify-center py-8 text-center\">\n <FileText className=\"mb-2 h-5 w-5 opacity-20\" />\n <p className=\"text-muted-foreground text-[10px]\">No pages yet</p>\n </div>\n ) : (\n rootPages.map((page) => renderPageItem(page))\n )}\n </div>\n </div>\n\n {/* Editor pane */}\n <div className=\"flex flex-1 flex-col overflow-hidden\">\n {selectedPage ? (\n <>\n <div className=\"border-b px-4 py-2\">\n <h2 className=\"text-sm font-medium\">{selectedPage.title}</h2>\n </div>\n <div className=\"flex-1 overflow-y-auto\">\n <PageEditor content={selectedPage.content ?? ''} onUpdate={handleContentUpdate} />\n </div>\n </>\n ) : (\n <div className=\"flex flex-1 items-center justify-center\">\n <div className=\"text-center\">\n <FileText className=\"mx-auto mb-2 h-8 w-8 opacity-20\" />\n <p className=\"text-muted-foreground text-xs\">Select or create a page</p>\n </div>\n </div>\n )}\n </div>\n </div>\n );\n}\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'm10.344 4.688 1.181-2.393a.53.53 0 0 1 .95 0l2.31 4.679a2.12 2.12 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.237 3.152',\n key: '19ctli',\n },\n ],\n [\n 'path',\n {\n d: 'm17.945 17.945.43 2.505a.53.53 0 0 1-.771.56l-4.618-2.428a2.12 2.12 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.12 2.12 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a8 8 0 0 0 .4-.099',\n key: 'ptqqvy',\n },\n ],\n ['path', { d: 'm2 2 20 20', key: '1ooewy' }],\n];\n\n/**\n * @component @name StarOff\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/star-off\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst StarOff = createLucideIcon('star-off', __iconNode);\n\nexport default StarOff;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z',\n key: 'r04s7s',\n },\n ],\n];\n\n/**\n * @component @name Star\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/star\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Star = createLucideIcon('star', __iconNode);\n\nexport default Star;\n"],"names":[],"mappings":"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","ignoreList":[1,2,7,8]}
|