shipscreens 0.1.6 → 0.1.7
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/README.md +14 -4
- package/bin/shipscreens.js +352 -18
- package/cli/commands/captureScreenshots.js +409 -0
- package/cli/commands/importScreenshots.js +377 -0
- package/cli/commands/inspectReleaseContext.js +607 -0
- package/cli/commands/planRelease.js +324 -0
- package/cli/commands/writeStarterConfig.js +233 -0
- package/cli/mcpServer.js +172 -3
- package/dist/.well-known/ai-agents.json +58 -11
- package/dist/.well-known/llms-full.txt +80 -17
- package/dist/.well-known/llms.txt +38 -12
- package/dist/.well-known/mcp-server.json +4 -4
- package/dist/ai-agents.json +58 -11
- package/dist/app/assets/AgentCli-nIqgOG-i.js +17 -0
- package/dist/app/assets/AgentCli-nIqgOG-i.js.map +1 -0
- package/dist/app/assets/AgentHandoffPanel-Bf_AJepG.js +2 -0
- package/dist/app/assets/AgentHandoffPanel-Bf_AJepG.js.map +1 -0
- package/dist/app/assets/AgentStarterWorkflowFigure-DW4SMMy7.js +2 -0
- package/dist/app/assets/AgentStarterWorkflowFigure-DW4SMMy7.js.map +1 -0
- package/dist/app/assets/App-BRKxkubQ.css +1 -0
- package/dist/app/assets/App-CZiyX8-L.js +14 -0
- package/dist/app/assets/App-CZiyX8-L.js.map +1 -0
- package/dist/app/assets/AppReviewAso-DYOCuqgV.js +4 -0
- package/dist/app/assets/AppReviewAso-DYOCuqgV.js.map +1 -0
- package/dist/app/assets/Cancelled-CP6V6uDb.js +2 -0
- package/dist/app/assets/Cancelled-CP6V6uDb.js.map +1 -0
- package/dist/app/assets/CopyButton-BFCx6EPg.js +2 -0
- package/dist/app/assets/CopyButton-BFCx6EPg.js.map +1 -0
- package/dist/app/assets/DesignPartner-B4J7f0Bx.js +4 -0
- package/dist/app/assets/DesignPartner-B4J7f0Bx.js.map +1 -0
- package/dist/app/assets/FastlaneScreenshots-cdZE6cGY.js +90 -0
- package/dist/app/assets/FastlaneScreenshots-cdZE6cGY.js.map +1 -0
- package/dist/app/assets/FirstExport-qfY7uE8r.js +6 -0
- package/dist/app/assets/FirstExport-qfY7uE8r.js.map +1 -0
- package/dist/app/assets/FitPanel-B1J0V1jK.js +2 -0
- package/dist/app/assets/FitPanel-B1J0V1jK.js.map +1 -0
- package/dist/app/assets/FivePanelFramework-C4yq58kM.js +62 -0
- package/dist/app/assets/FivePanelFramework-C4yq58kM.js.map +1 -0
- package/dist/app/assets/ForgotPassword-KF_HFGyb.js +2 -0
- package/dist/app/assets/ForgotPassword-KF_HFGyb.js.map +1 -0
- package/dist/app/assets/Landing-B_CvZDXJ.js +2 -0
- package/dist/app/assets/Landing-B_CvZDXJ.js.map +1 -0
- package/dist/app/assets/LanguageSwitcher-hFv9zl1u.js +2 -0
- package/dist/app/assets/LanguageSwitcher-hFv9zl1u.js.map +1 -0
- package/dist/app/assets/Legal-BwGbEjDk.js +2 -0
- package/dist/app/assets/Legal-BwGbEjDk.js.map +1 -0
- package/dist/app/assets/NotFound-Ba1Bw7uu.js +2 -0
- package/dist/app/assets/NotFound-Ba1Bw7uu.js.map +1 -0
- package/dist/app/assets/Pricing-Dt-V4Gqc.js +20 -0
- package/dist/app/assets/Pricing-Dt-V4Gqc.js.map +1 -0
- package/dist/app/assets/Privacy-C6MrXYPO.js +2 -0
- package/dist/app/assets/Privacy-C6MrXYPO.js.map +1 -0
- package/dist/app/assets/Proof-C3DDFAhm.js +20 -0
- package/dist/app/assets/Proof-C3DDFAhm.js.map +1 -0
- package/dist/app/assets/ReleaseFitIntake-DBeb9AFJ.js +27 -0
- package/dist/app/assets/ReleaseFitIntake-DBeb9AFJ.js.map +1 -0
- package/dist/app/assets/SalesEntryQuickRequestCard-Bfa93AYu.js +2 -0
- package/dist/app/assets/SalesEntryQuickRequestCard-Bfa93AYu.js.map +1 -0
- package/dist/app/assets/Security-C1OmAgom.js +2 -0
- package/dist/app/assets/Security-C1OmAgom.js.map +1 -0
- package/dist/app/assets/SignIn-C_wwnmvu.js +2 -0
- package/dist/app/assets/SignIn-C_wwnmvu.js.map +1 -0
- package/dist/app/assets/SignUp-Dm5HalC6.js +2 -0
- package/dist/app/assets/SignUp-Dm5HalC6.js.map +1 -0
- package/dist/app/assets/SiteHeader-CJqQ0pL3.js +2 -0
- package/dist/app/assets/SiteHeader-CJqQ0pL3.js.map +1 -0
- package/dist/app/assets/StickyMobileCta-REC3DROG.js +2 -0
- package/dist/app/assets/StickyMobileCta-REC3DROG.js.map +1 -0
- package/dist/app/assets/StoreAssetsPipeline-DNnnBp0D.js +6 -0
- package/dist/app/assets/StoreAssetsPipeline-DNnnBp0D.js.map +1 -0
- package/dist/app/assets/Success-D6b4wLPD.js +2 -0
- package/dist/app/assets/Success-D6b4wLPD.js.map +1 -0
- package/dist/app/assets/Terms-BMt39FQK.js +2 -0
- package/dist/app/assets/Terms-BMt39FQK.js.map +1 -0
- package/dist/app/assets/ToolGuardrailsPanel-Cclxwdrb.js +2 -0
- package/dist/app/assets/ToolGuardrailsPanel-Cclxwdrb.js.map +1 -0
- package/dist/app/assets/ToolsIndex-d1szo5bn.js +6 -0
- package/dist/app/assets/ToolsIndex-d1szo5bn.js.map +1 -0
- package/dist/app/assets/TrustSalesEntryPanel-DuncpgMs.js +2 -0
- package/dist/app/assets/TrustSalesEntryPanel-DuncpgMs.js.map +1 -0
- package/dist/app/assets/WorkloadCalculator-BbFWF2Ls.js +5 -0
- package/dist/app/assets/WorkloadCalculator-BbFWF2Ls.js.map +1 -0
- package/dist/app/assets/agentHandoff-BGmHqDwv.js +2 -0
- package/dist/app/assets/agentHandoff-BGmHqDwv.js.map +1 -0
- package/dist/app/assets/apiClient-3WVm94VW.js +2 -0
- package/dist/app/assets/apiClient-3WVm94VW.js.map +1 -0
- package/dist/app/assets/calculator-CofuwQa8.js +2 -0
- package/dist/app/assets/calculator-CofuwQa8.js.map +1 -0
- package/dist/app/assets/check-Fm2iQO64.js +2 -0
- package/dist/app/assets/check-Fm2iQO64.js.map +1 -0
- package/dist/app/assets/chevron-down-BIXHKpnf.js +2 -0
- package/dist/app/assets/chevron-down-BIXHKpnf.js.map +1 -0
- package/dist/app/assets/chunk-BHe-jwch.js +1 -0
- package/dist/app/assets/circle-check-X08qqy40.js +2 -0
- package/dist/app/assets/circle-check-X08qqy40.js.map +1 -0
- package/dist/app/assets/copy-KD-LYJ0z.js +2 -0
- package/dist/app/assets/copy-KD-LYJ0z.js.map +1 -0
- package/dist/app/assets/crop-K1LOmRty.js +2 -0
- package/dist/app/assets/crop-K1LOmRty.js.map +1 -0
- package/dist/app/assets/designPartnerRequest-DYqMElJd.js +2 -0
- package/dist/app/assets/designPartnerRequest-DYqMElJd.js.map +1 -0
- package/dist/app/assets/designPartnerSalesEntry-BpRINg3I.js +2 -0
- package/dist/app/assets/designPartnerSalesEntry-BpRINg3I.js.map +1 -0
- package/dist/app/assets/download-BXzoc-Y3.js +2 -0
- package/dist/app/assets/download-BXzoc-Y3.js.map +1 -0
- package/dist/app/assets/eye-CHvLhG2r.js +2 -0
- package/dist/app/assets/eye-CHvLhG2r.js.map +1 -0
- package/dist/app/assets/file-text-CU-ETLz1.js +2 -0
- package/dist/app/assets/file-text-CU-ETLz1.js.map +1 -0
- package/dist/app/assets/folder-tree-raVH0Y5V.js +2 -0
- package/dist/app/assets/folder-tree-raVH0Y5V.js.map +1 -0
- package/dist/app/assets/grid-3x3-cWuhGQfz.js +2 -0
- package/dist/app/assets/grid-3x3-cWuhGQfz.js.map +1 -0
- package/dist/app/assets/hardeningOffer-tkjlPDU-.js +2 -0
- package/dist/app/assets/hardeningOffer-tkjlPDU-.js.map +1 -0
- package/dist/app/assets/hero/agent-starter-workflow.png +0 -0
- package/dist/app/assets/hero/agent-starter-workflow.webp +0 -0
- package/dist/app/assets/html2canvas-pro.esm-OQkwCdu_.js +6 -0
- package/dist/app/assets/html2canvas-pro.esm-OQkwCdu_.js.map +1 -0
- package/dist/app/assets/index-BW_YmKvl.css +2 -0
- package/dist/app/assets/index-D7D6ZRCW.js +212 -0
- package/dist/app/assets/index-D7D6ZRCW.js.map +1 -0
- package/dist/app/assets/jszip.min-XyfP2hUJ.js +3 -0
- package/dist/app/assets/jszip.min-XyfP2hUJ.js.map +1 -0
- package/dist/app/assets/layout-grid-Cq_e979G.js +2 -0
- package/dist/app/assets/layout-grid-Cq_e979G.js.map +1 -0
- package/dist/app/assets/lock-Di7P18Ts.js +2 -0
- package/dist/app/assets/lock-Di7P18Ts.js.map +1 -0
- package/dist/app/assets/rocket-DHdrCHKD.js +2 -0
- package/dist/app/assets/rocket-DHdrCHKD.js.map +1 -0
- package/dist/app/assets/shield-check-CxpHNdp0.js +2 -0
- package/dist/app/assets/shield-check-CxpHNdp0.js.map +1 -0
- package/dist/app/assets/smartphone-DXKiqu57.js +2 -0
- package/dist/app/assets/smartphone-DXKiqu57.js.map +1 -0
- package/dist/app/assets/stripeClient-CuZgvzca.js +2 -0
- package/dist/app/assets/stripeClient-CuZgvzca.js.map +1 -0
- package/dist/app/assets/terminal-J0iyJTv2.js +2 -0
- package/dist/app/assets/terminal-J0iyJTv2.js.map +1 -0
- package/dist/app/assets/triangle-alert-BA0HP6zD.js +2 -0
- package/dist/app/assets/triangle-alert-BA0HP6zD.js.map +1 -0
- package/dist/app/assets/useAuth-CoS4r8yi.js +22 -0
- package/dist/app/assets/useAuth-CoS4r8yi.js.map +1 -0
- package/dist/app/assets/users-C-fz7pbn.js +2 -0
- package/dist/app/assets/users-C-fz7pbn.js.map +1 -0
- package/dist/app/index.html +9 -8
- package/dist/assets/AgentCli-nIqgOG-i.js +17 -0
- package/dist/assets/AgentCli-nIqgOG-i.js.map +1 -0
- package/dist/assets/AgentHandoffPanel-Bf_AJepG.js +2 -0
- package/dist/assets/AgentHandoffPanel-Bf_AJepG.js.map +1 -0
- package/dist/assets/AgentStarterWorkflowFigure-DW4SMMy7.js +2 -0
- package/dist/assets/AgentStarterWorkflowFigure-DW4SMMy7.js.map +1 -0
- package/dist/assets/App-BRKxkubQ.css +1 -0
- package/dist/assets/App-CZiyX8-L.js +14 -0
- package/dist/assets/App-CZiyX8-L.js.map +1 -0
- package/dist/assets/AppReviewAso-DYOCuqgV.js +4 -0
- package/dist/assets/AppReviewAso-DYOCuqgV.js.map +1 -0
- package/dist/assets/Cancelled-CP6V6uDb.js +2 -0
- package/dist/assets/Cancelled-CP6V6uDb.js.map +1 -0
- package/dist/assets/CopyButton-BFCx6EPg.js +2 -0
- package/dist/assets/CopyButton-BFCx6EPg.js.map +1 -0
- package/dist/assets/DesignPartner-B4J7f0Bx.js +4 -0
- package/dist/assets/DesignPartner-B4J7f0Bx.js.map +1 -0
- package/dist/assets/FastlaneScreenshots-cdZE6cGY.js +90 -0
- package/dist/assets/FastlaneScreenshots-cdZE6cGY.js.map +1 -0
- package/dist/assets/FirstExport-qfY7uE8r.js +6 -0
- package/dist/assets/FirstExport-qfY7uE8r.js.map +1 -0
- package/dist/assets/FitPanel-B1J0V1jK.js +2 -0
- package/dist/assets/FitPanel-B1J0V1jK.js.map +1 -0
- package/dist/assets/FivePanelFramework-C4yq58kM.js +62 -0
- package/dist/assets/FivePanelFramework-C4yq58kM.js.map +1 -0
- package/dist/assets/ForgotPassword-KF_HFGyb.js +2 -0
- package/dist/assets/ForgotPassword-KF_HFGyb.js.map +1 -0
- package/dist/assets/Landing-B_CvZDXJ.js +2 -0
- package/dist/assets/Landing-B_CvZDXJ.js.map +1 -0
- package/dist/assets/LanguageSwitcher-hFv9zl1u.js +2 -0
- package/dist/assets/LanguageSwitcher-hFv9zl1u.js.map +1 -0
- package/dist/assets/Legal-BwGbEjDk.js +2 -0
- package/dist/assets/Legal-BwGbEjDk.js.map +1 -0
- package/dist/assets/NotFound-Ba1Bw7uu.js +2 -0
- package/dist/assets/NotFound-Ba1Bw7uu.js.map +1 -0
- package/dist/assets/Pricing-Dt-V4Gqc.js +20 -0
- package/dist/assets/Pricing-Dt-V4Gqc.js.map +1 -0
- package/dist/assets/Privacy-C6MrXYPO.js +2 -0
- package/dist/assets/Privacy-C6MrXYPO.js.map +1 -0
- package/dist/assets/Proof-C3DDFAhm.js +20 -0
- package/dist/assets/Proof-C3DDFAhm.js.map +1 -0
- package/dist/assets/ReleaseFitIntake-DBeb9AFJ.js +27 -0
- package/dist/assets/ReleaseFitIntake-DBeb9AFJ.js.map +1 -0
- package/dist/assets/SalesEntryQuickRequestCard-Bfa93AYu.js +2 -0
- package/dist/assets/SalesEntryQuickRequestCard-Bfa93AYu.js.map +1 -0
- package/dist/assets/Security-C1OmAgom.js +2 -0
- package/dist/assets/Security-C1OmAgom.js.map +1 -0
- package/dist/assets/SignIn-C_wwnmvu.js +2 -0
- package/dist/assets/SignIn-C_wwnmvu.js.map +1 -0
- package/dist/assets/SignUp-Dm5HalC6.js +2 -0
- package/dist/assets/SignUp-Dm5HalC6.js.map +1 -0
- package/dist/assets/SiteHeader-CJqQ0pL3.js +2 -0
- package/dist/assets/SiteHeader-CJqQ0pL3.js.map +1 -0
- package/dist/assets/StickyMobileCta-REC3DROG.js +2 -0
- package/dist/assets/StickyMobileCta-REC3DROG.js.map +1 -0
- package/dist/assets/StoreAssetsPipeline-DNnnBp0D.js +6 -0
- package/dist/assets/StoreAssetsPipeline-DNnnBp0D.js.map +1 -0
- package/dist/assets/Success-D6b4wLPD.js +2 -0
- package/dist/assets/Success-D6b4wLPD.js.map +1 -0
- package/dist/assets/Terms-BMt39FQK.js +2 -0
- package/dist/assets/Terms-BMt39FQK.js.map +1 -0
- package/dist/assets/ToolGuardrailsPanel-Cclxwdrb.js +2 -0
- package/dist/assets/ToolGuardrailsPanel-Cclxwdrb.js.map +1 -0
- package/dist/assets/ToolsIndex-d1szo5bn.js +6 -0
- package/dist/assets/ToolsIndex-d1szo5bn.js.map +1 -0
- package/dist/assets/TrustSalesEntryPanel-DuncpgMs.js +2 -0
- package/dist/assets/TrustSalesEntryPanel-DuncpgMs.js.map +1 -0
- package/dist/assets/WorkloadCalculator-BbFWF2Ls.js +5 -0
- package/dist/assets/WorkloadCalculator-BbFWF2Ls.js.map +1 -0
- package/dist/assets/agentHandoff-BGmHqDwv.js +2 -0
- package/dist/assets/agentHandoff-BGmHqDwv.js.map +1 -0
- package/dist/assets/apiClient-3WVm94VW.js +2 -0
- package/dist/assets/apiClient-3WVm94VW.js.map +1 -0
- package/dist/assets/calculator-CofuwQa8.js +2 -0
- package/dist/assets/calculator-CofuwQa8.js.map +1 -0
- package/dist/assets/check-Fm2iQO64.js +2 -0
- package/dist/assets/check-Fm2iQO64.js.map +1 -0
- package/dist/assets/chevron-down-BIXHKpnf.js +2 -0
- package/dist/assets/chevron-down-BIXHKpnf.js.map +1 -0
- package/dist/assets/chunk-BHe-jwch.js +1 -0
- package/dist/assets/circle-check-X08qqy40.js +2 -0
- package/dist/assets/circle-check-X08qqy40.js.map +1 -0
- package/dist/assets/copy-KD-LYJ0z.js +2 -0
- package/dist/assets/copy-KD-LYJ0z.js.map +1 -0
- package/dist/assets/crop-K1LOmRty.js +2 -0
- package/dist/assets/crop-K1LOmRty.js.map +1 -0
- package/dist/assets/designPartnerRequest-DYqMElJd.js +2 -0
- package/dist/assets/designPartnerRequest-DYqMElJd.js.map +1 -0
- package/dist/assets/designPartnerSalesEntry-BpRINg3I.js +2 -0
- package/dist/assets/designPartnerSalesEntry-BpRINg3I.js.map +1 -0
- package/dist/assets/download-BXzoc-Y3.js +2 -0
- package/dist/assets/download-BXzoc-Y3.js.map +1 -0
- package/dist/assets/eye-CHvLhG2r.js +2 -0
- package/dist/assets/eye-CHvLhG2r.js.map +1 -0
- package/dist/assets/file-text-CU-ETLz1.js +2 -0
- package/dist/assets/file-text-CU-ETLz1.js.map +1 -0
- package/dist/assets/folder-tree-raVH0Y5V.js +2 -0
- package/dist/assets/folder-tree-raVH0Y5V.js.map +1 -0
- package/dist/assets/grid-3x3-cWuhGQfz.js +2 -0
- package/dist/assets/grid-3x3-cWuhGQfz.js.map +1 -0
- package/dist/assets/hardeningOffer-tkjlPDU-.js +2 -0
- package/dist/assets/hardeningOffer-tkjlPDU-.js.map +1 -0
- package/dist/assets/hero/agent-starter-workflow.png +0 -0
- package/dist/assets/hero/agent-starter-workflow.webp +0 -0
- package/dist/assets/html2canvas-pro.esm-OQkwCdu_.js +6 -0
- package/dist/assets/html2canvas-pro.esm-OQkwCdu_.js.map +1 -0
- package/dist/assets/index-BW_YmKvl.css +2 -0
- package/dist/assets/index-D7D6ZRCW.js +212 -0
- package/dist/assets/index-D7D6ZRCW.js.map +1 -0
- package/dist/assets/jszip.min-XyfP2hUJ.js +3 -0
- package/dist/assets/jszip.min-XyfP2hUJ.js.map +1 -0
- package/dist/assets/layout-grid-Cq_e979G.js +2 -0
- package/dist/assets/layout-grid-Cq_e979G.js.map +1 -0
- package/dist/assets/lock-Di7P18Ts.js +2 -0
- package/dist/assets/lock-Di7P18Ts.js.map +1 -0
- package/dist/assets/rocket-DHdrCHKD.js +2 -0
- package/dist/assets/rocket-DHdrCHKD.js.map +1 -0
- package/dist/assets/shield-check-CxpHNdp0.js +2 -0
- package/dist/assets/shield-check-CxpHNdp0.js.map +1 -0
- package/dist/assets/smartphone-DXKiqu57.js +2 -0
- package/dist/assets/smartphone-DXKiqu57.js.map +1 -0
- package/dist/assets/stripeClient-CuZgvzca.js +2 -0
- package/dist/assets/stripeClient-CuZgvzca.js.map +1 -0
- package/dist/assets/terminal-J0iyJTv2.js +2 -0
- package/dist/assets/terminal-J0iyJTv2.js.map +1 -0
- package/dist/assets/triangle-alert-BA0HP6zD.js +2 -0
- package/dist/assets/triangle-alert-BA0HP6zD.js.map +1 -0
- package/dist/assets/useAuth-CoS4r8yi.js +22 -0
- package/dist/assets/useAuth-CoS4r8yi.js.map +1 -0
- package/dist/assets/users-C-fz7pbn.js +2 -0
- package/dist/assets/users-C-fz7pbn.js.map +1 -0
- package/dist/cancelled/index.html +3 -2
- package/dist/design-partner/index.html +6 -5
- package/dist/downloads/shipscreens-github-actions-template.yml +1 -1
- package/dist/forgot-password/index.html +3 -2
- package/dist/index.html +9 -8
- package/dist/legal/index.html +3 -2
- package/dist/llms-full.txt +80 -17
- package/dist/llms.txt +38 -12
- package/dist/mcp-server.json +4 -4
- package/dist/pricing/index.html +6 -5
- package/dist/privacy/index.html +3 -2
- package/dist/proof/index.html +6 -5
- package/dist/security/index.html +3 -2
- package/dist/signin/index.html +3 -2
- package/dist/signup/index.html +3 -2
- package/dist/success/index.html +3 -2
- package/dist/terms/index.html +3 -2
- package/dist/tools/5-panel-screenshot-framework/index.html +6 -5
- package/dist/tools/agent-cli/index.html +8 -7
- package/dist/tools/app-review-aso/index.html +6 -5
- package/dist/tools/app-store-localization-screenshot-automation/index.html +8 -7
- package/dist/tools/app-store-screenshot-automation/index.html +8 -7
- package/dist/tools/app-store-screenshot-requirements-checklist/index.html +8 -7
- package/dist/tools/claude-code-mcp-screenshot-automation/index.html +8 -7
- package/dist/tools/cursor-mcp-screenshot-automation/index.html +8 -7
- package/dist/tools/deterministic-screenshot-reruns/index.html +8 -7
- package/dist/tools/device-locale-screenshot-matrix/index.html +8 -7
- package/dist/tools/fastlane-screenshot-folder-structure/index.html +8 -7
- package/dist/tools/fastlane-screenshot-pipeline/index.html +8 -7
- package/dist/tools/fastlane-screenshots/index.html +6 -5
- package/dist/tools/first-export/index.html +6 -5
- package/dist/tools/gemini-cli-mcp-screenshot-automation/index.html +8 -7
- package/dist/tools/google-play-screenshot-automation/index.html +8 -7
- package/dist/tools/google-play-screenshot-requirements-checklist/index.html +8 -7
- package/dist/tools/index.html +6 -5
- package/dist/tools/ipad-screenshot-review-requirements/index.html +8 -7
- package/dist/tools/openai-responses-tool-screenshot-automation/index.html +8 -7
- package/dist/tools/screenshot-ci-pipeline/index.html +8 -7
- package/dist/tools/screenshot-naming-order-drift/index.html +8 -7
- package/dist/tools/screenshot-workload-calculator/index.html +6 -5
- package/dist/tools/store-assets-pipeline/index.html +3 -2
- package/dist/tools/vscode-copilot-mcp-screenshot-automation/index.html +8 -7
- package/package.json +7 -7
- package/dist/app/assets/AgentCli-xKYtzL3B.js +0 -17
- package/dist/app/assets/AgentCli-xKYtzL3B.js.map +0 -1
- package/dist/app/assets/App-C1cNw_fn.js +0 -13
- package/dist/app/assets/App-C1cNw_fn.js.map +0 -1
- package/dist/app/assets/App-oQfE_p3A.css +0 -1
- package/dist/app/assets/AppReviewAso-CaIT-L7Z.js +0 -4
- package/dist/app/assets/AppReviewAso-CaIT-L7Z.js.map +0 -1
- package/dist/app/assets/Cancelled-Dmw7PTD-.js +0 -2
- package/dist/app/assets/Cancelled-Dmw7PTD-.js.map +0 -1
- package/dist/app/assets/CopyButton-CPRHmu8l.js +0 -2
- package/dist/app/assets/CopyButton-CPRHmu8l.js.map +0 -1
- package/dist/app/assets/DesignPartner-Ckp1GhNv.js +0 -4
- package/dist/app/assets/DesignPartner-Ckp1GhNv.js.map +0 -1
- package/dist/app/assets/FastlaneScreenshots-CB-zv5Us.js +0 -100
- package/dist/app/assets/FastlaneScreenshots-CB-zv5Us.js.map +0 -1
- package/dist/app/assets/FirstExport-RXbvVQdK.js +0 -6
- package/dist/app/assets/FirstExport-RXbvVQdK.js.map +0 -1
- package/dist/app/assets/FitPanel-ic91y-49.js +0 -2
- package/dist/app/assets/FitPanel-ic91y-49.js.map +0 -1
- package/dist/app/assets/FivePanelFramework-BZKNcycb.js +0 -62
- package/dist/app/assets/FivePanelFramework-BZKNcycb.js.map +0 -1
- package/dist/app/assets/ForgotPassword-CKOfAvWk.js +0 -2
- package/dist/app/assets/ForgotPassword-CKOfAvWk.js.map +0 -1
- package/dist/app/assets/Landing-D0cuDDUk.js +0 -2
- package/dist/app/assets/Landing-D0cuDDUk.js.map +0 -1
- package/dist/app/assets/LanguageSwitcher-BrToLEgF.js +0 -2
- package/dist/app/assets/LanguageSwitcher-BrToLEgF.js.map +0 -1
- package/dist/app/assets/Legal-Cm-hVzjY.js +0 -2
- package/dist/app/assets/Legal-Cm-hVzjY.js.map +0 -1
- package/dist/app/assets/NotFound-B0I6I440.js +0 -2
- package/dist/app/assets/NotFound-B0I6I440.js.map +0 -1
- package/dist/app/assets/Pricing-p-NIjjtK.js +0 -29
- package/dist/app/assets/Pricing-p-NIjjtK.js.map +0 -1
- package/dist/app/assets/Privacy-BhfPkK0y.js +0 -2
- package/dist/app/assets/Privacy-BhfPkK0y.js.map +0 -1
- package/dist/app/assets/Proof-D-7QbTGX.js +0 -20
- package/dist/app/assets/Proof-D-7QbTGX.js.map +0 -1
- package/dist/app/assets/Security-DFafJQIT.js +0 -2
- package/dist/app/assets/Security-DFafJQIT.js.map +0 -1
- package/dist/app/assets/SignIn--6nNsUCm.js +0 -2
- package/dist/app/assets/SignIn--6nNsUCm.js.map +0 -1
- package/dist/app/assets/SignUp-yh5ydmFf.js +0 -2
- package/dist/app/assets/SignUp-yh5ydmFf.js.map +0 -1
- package/dist/app/assets/SiteHeader-NTK-cM9O.js +0 -2
- package/dist/app/assets/SiteHeader-NTK-cM9O.js.map +0 -1
- package/dist/app/assets/StickyMobileCta-DVXAyhaH.js +0 -2
- package/dist/app/assets/StickyMobileCta-DVXAyhaH.js.map +0 -1
- package/dist/app/assets/StoreAssetsPipeline-Cbs1bNK5.js +0 -6
- package/dist/app/assets/StoreAssetsPipeline-Cbs1bNK5.js.map +0 -1
- package/dist/app/assets/Success-C3n0m1XU.js +0 -2
- package/dist/app/assets/Success-C3n0m1XU.js.map +0 -1
- package/dist/app/assets/Terms-C72ybAwA.js +0 -2
- package/dist/app/assets/Terms-C72ybAwA.js.map +0 -1
- package/dist/app/assets/ToolGuardrailsPanel-meKxUeSB.js +0 -2
- package/dist/app/assets/ToolGuardrailsPanel-meKxUeSB.js.map +0 -1
- package/dist/app/assets/ToolsIndex-CnvNTvyW.js +0 -6
- package/dist/app/assets/ToolsIndex-CnvNTvyW.js.map +0 -1
- package/dist/app/assets/WorkloadCalculator-CK4qVUcQ.js +0 -5
- package/dist/app/assets/WorkloadCalculator-CK4qVUcQ.js.map +0 -1
- package/dist/app/assets/arrow-right-Dglia5EE.js +0 -2
- package/dist/app/assets/arrow-right-Dglia5EE.js.map +0 -1
- package/dist/app/assets/calculator-CAgtsVuH.js +0 -2
- package/dist/app/assets/calculator-CAgtsVuH.js.map +0 -1
- package/dist/app/assets/check-B5h9hATV.js +0 -2
- package/dist/app/assets/check-B5h9hATV.js.map +0 -1
- package/dist/app/assets/chevron-down-By2Ts8dG.js +0 -2
- package/dist/app/assets/chevron-down-By2Ts8dG.js.map +0 -1
- package/dist/app/assets/circle-check-DaJ6APMi.js +0 -2
- package/dist/app/assets/circle-check-DaJ6APMi.js.map +0 -1
- package/dist/app/assets/clipboard-copy-IDfWU9SE.js +0 -2
- package/dist/app/assets/clipboard-copy-IDfWU9SE.js.map +0 -1
- package/dist/app/assets/copy-KSn4Rc2b.js +0 -2
- package/dist/app/assets/copy-KSn4Rc2b.js.map +0 -1
- package/dist/app/assets/crop-C9hwiw0i.js +0 -2
- package/dist/app/assets/crop-C9hwiw0i.js.map +0 -1
- package/dist/app/assets/download-eqwxO8bs.js +0 -2
- package/dist/app/assets/download-eqwxO8bs.js.map +0 -1
- package/dist/app/assets/eye-Dg61f0nU.js +0 -2
- package/dist/app/assets/eye-Dg61f0nU.js.map +0 -1
- package/dist/app/assets/file-text-BQPKCil3.js +0 -2
- package/dist/app/assets/file-text-BQPKCil3.js.map +0 -1
- package/dist/app/assets/folder-tree-9hq6oigy.js +0 -2
- package/dist/app/assets/folder-tree-9hq6oigy.js.map +0 -1
- package/dist/app/assets/grid-3x3-BHXRyOIx.js +0 -2
- package/dist/app/assets/grid-3x3-BHXRyOIx.js.map +0 -1
- package/dist/app/assets/index-my6BmN7T.js +0 -204
- package/dist/app/assets/index-my6BmN7T.js.map +0 -1
- package/dist/app/assets/index-rv91vbLH.css +0 -1
- package/dist/app/assets/layout-grid-DDQvnEgx.js +0 -2
- package/dist/app/assets/layout-grid-DDQvnEgx.js.map +0 -1
- package/dist/app/assets/rocket-0KMviRpJ.js +0 -2
- package/dist/app/assets/rocket-0KMviRpJ.js.map +0 -1
- package/dist/app/assets/shield-check-BvKEQ2hc.js +0 -2
- package/dist/app/assets/shield-check-BvKEQ2hc.js.map +0 -1
- package/dist/app/assets/signIn-Ckla1_0O.js +0 -2
- package/dist/app/assets/signIn-Ckla1_0O.js.map +0 -1
- package/dist/app/assets/smartphone-I0w1b2DV.js +0 -2
- package/dist/app/assets/smartphone-I0w1b2DV.js.map +0 -1
- package/dist/app/assets/terminal-CLpUSQqd.js +0 -2
- package/dist/app/assets/terminal-CLpUSQqd.js.map +0 -1
- package/dist/app/assets/triangle-alert-w7TZ0yy2.js +0 -2
- package/dist/app/assets/triangle-alert-w7TZ0yy2.js.map +0 -1
- package/dist/app/assets/useAuth-N3hsUaDj.js +0 -4
- package/dist/app/assets/useAuth-N3hsUaDj.js.map +0 -1
- package/dist/app/assets/users-DsQdkuR3.js +0 -2
- package/dist/app/assets/users-DsQdkuR3.js.map +0 -1
- package/dist/assets/AgentCli-xKYtzL3B.js +0 -17
- package/dist/assets/AgentCli-xKYtzL3B.js.map +0 -1
- package/dist/assets/App-C1cNw_fn.js +0 -13
- package/dist/assets/App-C1cNw_fn.js.map +0 -1
- package/dist/assets/App-oQfE_p3A.css +0 -1
- package/dist/assets/AppReviewAso-CaIT-L7Z.js +0 -4
- package/dist/assets/AppReviewAso-CaIT-L7Z.js.map +0 -1
- package/dist/assets/Cancelled-Dmw7PTD-.js +0 -2
- package/dist/assets/Cancelled-Dmw7PTD-.js.map +0 -1
- package/dist/assets/CopyButton-CPRHmu8l.js +0 -2
- package/dist/assets/CopyButton-CPRHmu8l.js.map +0 -1
- package/dist/assets/DesignPartner-Ckp1GhNv.js +0 -4
- package/dist/assets/DesignPartner-Ckp1GhNv.js.map +0 -1
- package/dist/assets/FastlaneScreenshots-CB-zv5Us.js +0 -100
- package/dist/assets/FastlaneScreenshots-CB-zv5Us.js.map +0 -1
- package/dist/assets/FirstExport-RXbvVQdK.js +0 -6
- package/dist/assets/FirstExport-RXbvVQdK.js.map +0 -1
- package/dist/assets/FitPanel-ic91y-49.js +0 -2
- package/dist/assets/FitPanel-ic91y-49.js.map +0 -1
- package/dist/assets/FivePanelFramework-BZKNcycb.js +0 -62
- package/dist/assets/FivePanelFramework-BZKNcycb.js.map +0 -1
- package/dist/assets/ForgotPassword-CKOfAvWk.js +0 -2
- package/dist/assets/ForgotPassword-CKOfAvWk.js.map +0 -1
- package/dist/assets/Landing-D0cuDDUk.js +0 -2
- package/dist/assets/Landing-D0cuDDUk.js.map +0 -1
- package/dist/assets/LanguageSwitcher-BrToLEgF.js +0 -2
- package/dist/assets/LanguageSwitcher-BrToLEgF.js.map +0 -1
- package/dist/assets/Legal-Cm-hVzjY.js +0 -2
- package/dist/assets/Legal-Cm-hVzjY.js.map +0 -1
- package/dist/assets/NotFound-B0I6I440.js +0 -2
- package/dist/assets/NotFound-B0I6I440.js.map +0 -1
- package/dist/assets/Pricing-p-NIjjtK.js +0 -29
- package/dist/assets/Pricing-p-NIjjtK.js.map +0 -1
- package/dist/assets/Privacy-BhfPkK0y.js +0 -2
- package/dist/assets/Privacy-BhfPkK0y.js.map +0 -1
- package/dist/assets/Proof-D-7QbTGX.js +0 -20
- package/dist/assets/Proof-D-7QbTGX.js.map +0 -1
- package/dist/assets/Security-DFafJQIT.js +0 -2
- package/dist/assets/Security-DFafJQIT.js.map +0 -1
- package/dist/assets/SignIn--6nNsUCm.js +0 -2
- package/dist/assets/SignIn--6nNsUCm.js.map +0 -1
- package/dist/assets/SignUp-yh5ydmFf.js +0 -2
- package/dist/assets/SignUp-yh5ydmFf.js.map +0 -1
- package/dist/assets/SiteHeader-NTK-cM9O.js +0 -2
- package/dist/assets/SiteHeader-NTK-cM9O.js.map +0 -1
- package/dist/assets/StickyMobileCta-DVXAyhaH.js +0 -2
- package/dist/assets/StickyMobileCta-DVXAyhaH.js.map +0 -1
- package/dist/assets/StoreAssetsPipeline-Cbs1bNK5.js +0 -6
- package/dist/assets/StoreAssetsPipeline-Cbs1bNK5.js.map +0 -1
- package/dist/assets/Success-C3n0m1XU.js +0 -2
- package/dist/assets/Success-C3n0m1XU.js.map +0 -1
- package/dist/assets/Terms-C72ybAwA.js +0 -2
- package/dist/assets/Terms-C72ybAwA.js.map +0 -1
- package/dist/assets/ToolGuardrailsPanel-meKxUeSB.js +0 -2
- package/dist/assets/ToolGuardrailsPanel-meKxUeSB.js.map +0 -1
- package/dist/assets/ToolsIndex-CnvNTvyW.js +0 -6
- package/dist/assets/ToolsIndex-CnvNTvyW.js.map +0 -1
- package/dist/assets/WorkloadCalculator-CK4qVUcQ.js +0 -5
- package/dist/assets/WorkloadCalculator-CK4qVUcQ.js.map +0 -1
- package/dist/assets/arrow-right-Dglia5EE.js +0 -2
- package/dist/assets/arrow-right-Dglia5EE.js.map +0 -1
- package/dist/assets/calculator-CAgtsVuH.js +0 -2
- package/dist/assets/calculator-CAgtsVuH.js.map +0 -1
- package/dist/assets/check-B5h9hATV.js +0 -2
- package/dist/assets/check-B5h9hATV.js.map +0 -1
- package/dist/assets/chevron-down-By2Ts8dG.js +0 -2
- package/dist/assets/chevron-down-By2Ts8dG.js.map +0 -1
- package/dist/assets/circle-check-DaJ6APMi.js +0 -2
- package/dist/assets/circle-check-DaJ6APMi.js.map +0 -1
- package/dist/assets/clipboard-copy-IDfWU9SE.js +0 -2
- package/dist/assets/clipboard-copy-IDfWU9SE.js.map +0 -1
- package/dist/assets/copy-KSn4Rc2b.js +0 -2
- package/dist/assets/copy-KSn4Rc2b.js.map +0 -1
- package/dist/assets/crop-C9hwiw0i.js +0 -2
- package/dist/assets/crop-C9hwiw0i.js.map +0 -1
- package/dist/assets/download-eqwxO8bs.js +0 -2
- package/dist/assets/download-eqwxO8bs.js.map +0 -1
- package/dist/assets/eye-Dg61f0nU.js +0 -2
- package/dist/assets/eye-Dg61f0nU.js.map +0 -1
- package/dist/assets/file-text-BQPKCil3.js +0 -2
- package/dist/assets/file-text-BQPKCil3.js.map +0 -1
- package/dist/assets/folder-tree-9hq6oigy.js +0 -2
- package/dist/assets/folder-tree-9hq6oigy.js.map +0 -1
- package/dist/assets/grid-3x3-BHXRyOIx.js +0 -2
- package/dist/assets/grid-3x3-BHXRyOIx.js.map +0 -1
- package/dist/assets/index-my6BmN7T.js +0 -204
- package/dist/assets/index-my6BmN7T.js.map +0 -1
- package/dist/assets/index-rv91vbLH.css +0 -1
- package/dist/assets/layout-grid-DDQvnEgx.js +0 -2
- package/dist/assets/layout-grid-DDQvnEgx.js.map +0 -1
- package/dist/assets/rocket-0KMviRpJ.js +0 -2
- package/dist/assets/rocket-0KMviRpJ.js.map +0 -1
- package/dist/assets/shield-check-BvKEQ2hc.js +0 -2
- package/dist/assets/shield-check-BvKEQ2hc.js.map +0 -1
- package/dist/assets/signIn-Ckla1_0O.js +0 -2
- package/dist/assets/signIn-Ckla1_0O.js.map +0 -1
- package/dist/assets/smartphone-I0w1b2DV.js +0 -2
- package/dist/assets/smartphone-I0w1b2DV.js.map +0 -1
- package/dist/assets/terminal-CLpUSQqd.js +0 -2
- package/dist/assets/terminal-CLpUSQqd.js.map +0 -1
- package/dist/assets/triangle-alert-w7TZ0yy2.js +0 -2
- package/dist/assets/triangle-alert-w7TZ0yy2.js.map +0 -1
- package/dist/assets/useAuth-N3hsUaDj.js +0 -4
- package/dist/assets/useAuth-N3hsUaDj.js.map +0 -1
- package/dist/assets/users-DsQdkuR3.js +0 -2
- package/dist/assets/users-DsQdkuR3.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StoreAssetsPipeline-DNnnBp0D.js","names":[],"sources":["../../node_modules/lucide-react/dist/esm/icons/tablet.mjs","../../src/pages/StoreAssetsPipeline.jsx"],"sourcesContent":["/**\n * @license lucide-react v1.18.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\"rect\", { width: \"16\", height: \"20\", x: \"4\", y: \"2\", rx: \"2\", ry: \"2\", key: \"76otgf\" }],\n [\"line\", { x1: \"12\", x2: \"12.01\", y1: \"18\", y2: \"18\", key: \"1dp563\" }]\n];\nconst Tablet = createLucideIcon(\"tablet\", __iconNode);\n\nexport { __iconNode, Tablet as default };\n//# sourceMappingURL=tablet.mjs.map\n","import React, { useEffect } from 'react';\nimport { ArrowRight, ChevronDown, Copy, Crop, FolderTree, Grid, Tablet } from 'lucide-react';\nimport { useTranslation } from 'react-i18next';\nimport AgentHandoffPanel from '../components/AgentHandoffPanel';\nimport CliPreflightCard from '../components/CliPreflightCard';\nimport CopyButton from '../components/CopyButton';\nimport FitPanel from '../components/FitPanel';\nimport StagingBadge from '../components/StagingBadge';\nimport StickyMobileCta from '../components/StickyMobileCta';\nimport SiteHeader from '../components/SiteHeader';\nimport ToolGuardrailsPanel from '../components/ToolGuardrailsPanel';\nimport usePageTitle from '../hooks/usePageTitle';\nimport { trackEvent, trackEventAndFollowLink } from '../lib/analytics';\n\nconst normalizeLang = (lang) => {\n const base = (lang || '').split('-')[0];\n return base === 'ja' ? 'ja' : 'en';\n};\n\nconst COPY = {\n en: {\n badge: 'Store assets pipeline kit',\n title: 'Store Assets Pipeline Kit',\n subtitle:\n 'Capture -> copy -> layout -> export. Keep your existing design tools, then lock an outcome-first panel order + path naming with reproducible outputs and upload checks before App Store / Google Play upload.',\n ctaPrimary: 'Tell your coding agent to handle release ops',\n ctaSecondary: 'Back to tools',\n agentPromptTitle: 'Give your agent this prompt',\n agentPromptBody: 'Use this when iPad/review requirements, safe areas, or upload roots are the real bottleneck.',\n agentPrompt:\n 'Use ShipScreens as the build step for our store-assets release step. Keep our current capture/layout workflow, inspect this repo, choose the best path for this workspace (workspace-local MCP if available, otherwise pure CLI), shrink the device/locale matrix to the smallest set you can rerun confidently, keep iPad/review-safe source files and Play-safe areas in scope, generate deterministic Fastlane-ready outputs, run verify/stage, and return a short report with output paths, warnings, and next steps. Only ask me if device or locale scope or panel #1 messaging is unclear.',\n agentPromptNote: 'Recommended: give one instruction, then review the first export and upload roots.',\n heroCliTitle: 'CLI quickstart (2 steps)',\n heroCliNote: 'wizard -> agent-run --stage (raw mode, no Playwright).',\n heroCliSummary: 'Outputs: fastlane/ + reproducible ZIP + staged upload root + proof reports.',\n heroCliCopyLabel: 'Copy all commands',\n heroCliTemplatesLabel: 'Starter templates',\n heroCliConfigLabel: 'config.yml',\n heroCliCsvLabel: 'copy.csv',\n heroCliCmd: [\n 'npx --yes shipscreens wizard',\n 'npx --yes shipscreens agent-run --mode raw --zip --out out/agent --stage',\n ].join('\\n'),\n proUnlockTitle: 'Unlock Pro (CLI)',\n proUnlockBody: 'Remove the watermark and unlock full matrix batch exports via CLI auth:',\n proUnlockCmd: 'npx --yes shipscreens auth login',\n proUnlockNote: 'Completes a one-time browser sign-in; then rerun agent-run with --require-pro.',\n navTools: 'Tools',\n overviewTitle: 'Pipeline overview',\n overviewSteps: ['Capture', 'Copy', 'Layout', 'Export', 'Upload (ASC/Play)'],\n checklistTitle: 'Checklists',\n checklists: [\n {\n key: 'ipad13',\n icon: Tablet,\n title: 'iPad 13-inch capture',\n body: 'Get the right source before you generate.',\n bullets: [\n 'Use a real device shot when possible (13-inch / 2064x2752).',\n 'If you use Simulator, export at native size (no scaling).',\n 'Keep UI clean; avoid overlays that won’t match store previews.',\n ],\n },\n {\n key: 'ordering',\n icon: FolderTree,\n title: 'Stable ordering + per-locale folders',\n body: 'Make re-uploads boring and predictable.',\n bullets: [\n 'Pick a fixed screenshot count (e.g. 5) and zero-pad names: 01.png..05.png.',\n 'Keep panel #1 focused on one user outcome and target audience.',\n 'Clarity check: if panel #1 could fit many apps, rewrite it with one concrete outcome.',\n 'Use one folder per locale (en-US/, ja-JP/) so exports never mix.',\n 'Re-export the same tree every release; the stores stay consistent.',\n ],\n },\n {\n key: 'buckets',\n icon: Grid,\n title: 'Size bucket shortcuts',\n body: 'Start minimal, expand later.',\n bullets: [\n 'iPhone-only: pick the largest iPhone bucket first.',\n 'Add iPad 13-inch only if you ship iPad-first.',\n 'Android: one phone bucket; add tablet only if needed.',\n ],\n },\n {\n key: 'play-safe',\n icon: Crop,\n title: 'Play feature graphic safe area',\n body: 'Avoid hidden crops in Play previews.',\n bullets: [\n 'Keep text/logos inside the central 80-86% area.',\n 'Avoid edge-aligned UI; Play crops in some previews.',\n 'Preview in Play Console before you finalize.',\n 'If screenshots still look generic, add a short app preview video as supporting proof.',\n ],\n },\n ],\n treeTitle: 'Minimal folder tree (manual uploads)',\n treeBody: 'Start iPhone-only with 5 screenshots. Add more buckets later if needed.',\n treeExample: [\n 'screenshots/',\n ' en-US/',\n ' 01.png',\n ' 02.png',\n ' 03.png',\n ' 04.png',\n ' 05.png',\n ' de-DE/',\n ' 01.png',\n ' 02.png',\n ' 03.png',\n ' 04.png',\n ' 05.png',\n ].join('\\n'),\n note: 'Translation happens outside ShipScreens; we focus on reproducible exports, upload-ready outputs, and CI guardrails (verify + stage) while keeping your brand style intact.',\n scopeNote: 'Upload is handled in App Store Connect / Play Console.',\n assetsTitle: 'Templates & tools',\n assetsCta: 'Open tool',\n assets: [\n {\n key: 'csv',\n title: 'Screenshot copy CSV template',\n desc: 'Download a copy template and estimate workload.',\n href: '/tools/screenshot-workload-calculator/',\n },\n {\n key: 'framework',\n title: '5-panel screenshot script',\n desc: 'Hook -> Problem -> Proof -> How -> CTA.',\n href: '/tools/5-panel-screenshot-framework/',\n },\n ],\n nextTitle: 'Next: start from the coding-agent guide',\n nextBody: 'Hand off the current store-assets workflow first, then use the sample project only when you want to test the browser fallback yourself.',\n nextCtaSample: 'Open sample project',\n },\n ja: {\n badge: 'ストア素材パイプラインキット',\n title: 'ストア素材パイプラインキット',\n subtitle:\n 'Capture -> Copy -> Layout -> Export。既存ツールはそのまま使い、成果訴求順 + パス命名を固定した再現性出力と提出前チェックで提出前事故を減らす。',\n ctaPrimary: 'AIエージェントでリリース工程を固める',\n ctaSecondary: 'ツール一覧へ',\n agentPromptTitle: 'coding agent に渡すプロンプト',\n agentPromptBody: 'iPad 審査、safe area、upload root が実ボトルネックなら、手で整える前にこれを渡します。',\n agentPrompt:\n 'ShipScreens を使って、ストア素材のリリース工程を固めてください。今の capture/layout フローは維持し、この repo を確認して、このプロジェクトで MCP が使えるならそれを使い、無ければ CLI を使ってください。端末/言語の行列を最小の再実行しやすい構成に絞り、iPad/review-safe な素材、Play safe area、verify と stage を実行し、出力パス・警告・次の作業を短く報告してください。端末/言語スコープか1枚目訴求が不明なときだけ確認してください。',\n agentPromptNote: 'おすすめは、1回指示して最初のエクスポートと upload root だけ確認することです。',\n heroCliTitle: 'CLIクイックスタート(2ステップ)',\n heroCliNote: 'wizard -> agent-run --stage(raw / Playwright不要)。',\n heroCliSummary: '出力: fastlane/ + 再現性ZIP + staged upload root + proof report。',\n heroCliCopyLabel: 'コマンドをすべてコピー',\n heroCliTemplatesLabel: 'スターター雛形',\n heroCliConfigLabel: 'config.yml',\n heroCliCsvLabel: 'copy.csv',\n heroCliCmd: [\n 'npx --yes shipscreens wizard',\n 'npx --yes shipscreens agent-run --mode raw --zip --out out/agent --stage',\n ].join('\\n'),\n proUnlockTitle: 'Proを解除(CLI)',\n proUnlockBody: '透かし解除&フル一括(端末×言語)のために、まずはCLI認証を実行:',\n proUnlockCmd: 'npx --yes shipscreens auth login',\n proUnlockNote: '初回のみブラウザでサインインします。以後は agent-run --require-pro で再実行。',\n navTools: 'ツール一覧',\n overviewTitle: 'パイプライン概要',\n overviewSteps: ['素材取り', 'コピー', 'レイアウト', '出力', 'アップロード (ASC/Play)'],\n checklistTitle: 'チェックリスト',\n checklists: [\n {\n key: 'ipad13',\n icon: Tablet,\n title: 'iPad 13-inch 実スクショ',\n body: '生成前の素材を揃える。',\n bullets: [\n '実機があれば 13-inch / 2064x2752 の実スクショを用意。',\n 'Simulator を使う場合は native サイズで書き出す。',\n 'ストア表示とズレるUIオーバーレイは避ける。',\n ],\n },\n {\n key: 'ordering',\n icon: FolderTree,\n title: '順序固定 (01..05) + ロケール別フォルダ',\n body: '毎回の更新を退屈にする。',\n bullets: [\n '枚数を固定し、ファイル名は 01..05 のゼロ埋めにする(1,10,2 を防止)。',\n '1枚目は「誰が・何を得るか」を1メッセージに絞る。',\n '確認: 1枚目の訴求が他の多くのアプリにも当てはまるなら、成果を具体化して書き直す。',\n 'ロケールごとにフォルダを分ける(en-US/, ja-JP/)。',\n '毎リリース同じツリーを再出力してアップロードする。',\n ],\n },\n {\n key: 'buckets',\n icon: Grid,\n title: 'サイズバケット削減',\n body: '最小セットでまず出す。',\n bullets: [\n 'iPhone-only は最大サイズ1バケットから。',\n 'iPad は13-inchが必要な場合のみ追加。',\n 'Android はスマホ1バケット、必要ならタブレット。',\n ],\n },\n {\n key: 'play-safe',\n icon: Crop,\n title: 'Play feature graphic 安全域',\n body: '隠れクロップを避ける。',\n bullets: [\n '文字/ロゴは中央 80-86% に収める。',\n '端に寄せすぎない(プレビューで切れる)。',\n 'Play Console のプレビューで最終確認。',\n 'スクショだけで埋もれる場合は短いアプリ動画を補助で追加。',\n ],\n },\n ],\n treeTitle: '最小フォルダツリー(手動アップロード)',\n treeBody: 'まずは iPhone-only + 5枚から。必要になってからバケットを増やす。',\n treeExample: [\n 'screenshots/',\n ' en-US/',\n ' 01.png',\n ' 02.png',\n ' 03.png',\n ' 04.png',\n ' 05.png',\n ' de-DE/',\n ' 01.png',\n ' 02.png',\n ' 03.png',\n ' 04.png',\n ' 05.png',\n ].join('\\n'),\n note: '翻訳は外部でOK。ShipScreensは見た目を崩さずに、レイアウト/順序の安定・再現性出力・Fastlane公式パス生成(CI)と verify+stage の事故防止を担います。',\n scopeNote: 'アップロードは App Store Connect / Play Console 側で行います。',\n assetsTitle: 'テンプレ/ツール',\n assetsCta: 'ツールを開く',\n assets: [\n {\n key: 'csv',\n title: 'コピーCSVテンプレ + 作業量見積もり',\n desc: 'CSV雛形と端末x言語の計算。',\n href: '/tools/screenshot-workload-calculator/',\n },\n {\n key: 'framework',\n title: '5枚構成スクリプト',\n desc: 'Hook -> Problem -> Proof -> How -> CTA。',\n href: '/tools/5-panel-screenshot-framework/',\n },\n ],\n nextTitle: '次: まず coding agent ガイドから進める',\n nextBody: '現状の store-assets workflow を coding agent に渡し、ブラウザ fallback はサンプル確認が必要なときだけ使います。',\n nextCtaSample: 'サンプルを開く',\n },\n};\n\nconst StoreAssetsPipeline = () => {\n const { i18n, t } = useTranslation();\n const lang = normalizeLang(i18n.resolvedLanguage || i18n.language);\n const copy = COPY[lang] || COPY.en;\n const partnerCopy = t('landing.partner', { returnObjects: true }) || {};\n const partnerScopeBullets = Array.isArray(partnerCopy.scopeBullets) ? partnerCopy.scopeBullets.filter(Boolean) : [];\n const supportEmail = 'support@shimaumaservices.co.jp';\n const partnerSubject = t('landing.partner.emailSubject', { defaultValue: 'ShipScreens first export review' });\n const partnerBody = t('landing.partner.emailBody', { defaultValue: '' });\n const partnerMailto = `mailto:${supportEmail}?subject=${encodeURIComponent(partnerSubject)}&body=${encodeURIComponent(\n partnerBody\n )}`;\n const designPartnerOfferLabel = t('landing.partner.offerCta', {\n defaultValue: lang === 'ja' ? '15分レビューを開く' : 'Open 15-min review',\n });\n const openAppHref = '/app/?sample=5panel&entry_source=store_assets_pipeline_open_app_header';\n const agentHandoffHref = '#agent-handoff';\n const agentCliGuideHref = '/tools/agent-cli/?entry_source=store_assets_pipeline_agent_handoff#agent-bootstrap';\n const designPartnerOfferHref =\n '/design-partner/?entry_source=store_assets_pipeline_design_partner_offer&scope=matrix&blocker=naming_order';\n const payFirstPartnerHref = '/pricing?offer=pay_first&entry_source=store_assets_pipeline_pay_first_partner_block';\n const sampleProjectHref = '/app/?sample=5panel&entry_source=store_assets_pipeline_open_sample_project';\n const configDownloadHref = '/downloads/shipscreens-agent-cli-config.yml';\n const csvDownloadHref = '/downloads/shipscreens-agent-cli-copy.csv';\n const copyButtonLabel = t('common.copy', { defaultValue: 'Copy' });\n const codeToggleLabel = t('common.showCommands', { defaultValue: 'Show commands' });\n const defaultCodeOpen = typeof window === 'undefined' ? true : window.matchMedia('(min-width: 640px)').matches;\n\n usePageTitle('titles.storeAssetsPipeline', { defaultValue: copy.title });\n\n useEffect(() => {\n trackEvent('tool_view', { tool: 'store_assets_pipeline' });\n }, []);\n\n return (\n <div className=\"min-h-screen bg-linear-to-b from-slate-950 via-slate-900 to-slate-950 text-white\">\n <StagingBadge />\n <SiteHeader\n variant=\"dark\"\n active=\"tools\"\n openAppHref={openAppHref}\n onToolsClick={(event) =>\n trackEventAndFollowLink(event, 'tool_cta_click', { tool: 'store_assets_pipeline', cta: 'open_tools_header' })\n }\n onPricingClick={(event) =>\n trackEventAndFollowLink(event, 'tool_cta_click', { tool: 'store_assets_pipeline', cta: 'pricing_header' })\n }\n onOpenAppClick={(event) =>\n trackEventAndFollowLink(event, 'tool_cta_click', { tool: 'store_assets_pipeline', cta: 'open_app_header' })\n }\n primaryCta={{\n href: agentHandoffHref,\n label: (\n <span className=\"inline-flex items-center gap-2\">\n {t('landing.nav.primaryCta')} <ArrowRight size={16} />\n </span>\n ),\n onClick: (event) =>\n trackEventAndFollowLink(event, 'tool_cta_click', { tool: 'store_assets_pipeline', cta: 'open_agent_cli_header' }),\n }}\n />\n\n <main className=\"max-w-5xl mx-auto px-6 pb-24 space-y-10\">\n <section className=\"max-w-3xl mx-auto text-center space-y-4\">\n <div className=\"inline-flex items-center gap-2 px-3 py-1.5 rounded-full border border-slate-800 bg-slate-900/60 text-slate-200 text-xs font-semibold\">\n {copy.badge}\n </div>\n <h1 className=\"text-3xl md:text-5xl font-black leading-tight\">{copy.title}</h1>\n <p className=\"text-slate-300 text-lg leading-relaxed\">{copy.subtitle}</p>\n {copy.agentPrompt && (\n <AgentHandoffPanel\n sectionId=\"agent-handoff\"\n lang={lang}\n prompt={copy.agentPrompt}\n promptTitle={copy.agentPromptTitle}\n promptBody={copy.agentPromptBody}\n promptNote={copy.agentPromptNote}\n guideHref={agentCliGuideHref}\n className=\"max-w-4xl mx-auto text-left\"\n onPromptCopied={(client) =>\n trackEvent('tool_cta_click', { tool: 'store_assets_pipeline', cta: 'copy_agent_prompt', client: client.id })\n }\n onBundleCopied={(client) =>\n trackEvent('tool_cta_click', {\n tool: 'store_assets_pipeline',\n cta: `copy_bootstrap_bundle_${client.id}`,\n client: client.id,\n })\n }\n onClientCommandCopied={(client) =>\n trackEvent('tool_cta_click', {\n tool: 'store_assets_pipeline',\n cta: `copy_client_bootstrap_${client.id}`,\n client: client.id,\n })\n }\n onClientDownload={(client) =>\n trackEvent('tool_download', {\n tool: 'store_assets_pipeline',\n asset: `client_bootstrap_${client.id}`,\n client: client.id,\n })\n }\n onGuideClick={(event, client) =>\n trackEventAndFollowLink(event, 'tool_cta_click', {\n tool: 'store_assets_pipeline',\n cta: 'open_agent_handoff_guide',\n client: client.id,\n })\n }\n />\n )}\n <div className=\"max-w-xl mx-auto text-left bg-slate-900/60 border border-slate-800 rounded-2xl p-4 space-y-2\">\n <div className=\"text-[11px] uppercase tracking-[0.2em] text-slate-500 font-semibold\">{copy.heroCliTitle}</div>\n <p className=\"text-xs text-slate-400\">{copy.heroCliNote}</p>\n <p className=\"text-xs text-slate-500\">{copy.heroCliSummary}</p>\n <CopyButton\n value={copy.heroCliCmd}\n onCopied={() => trackEvent('tool_cta_click', { tool: 'store_assets_pipeline', cta: 'copy_cli_hero' })}\n className=\"inline-flex items-center justify-center gap-2 px-3 py-2 rounded-lg border border-slate-700 bg-slate-950 text-slate-200 hover:bg-slate-900 transition text-xs font-semibold\"\n >\n {({ copyLabel, copyState }) => (\n <>\n <Copy size={14} />\n {copyState === 'idle' ? copy.heroCliCopyLabel : copyLabel || copyButtonLabel}\n </>\n )}\n </CopyButton>\n <details className=\"group\" open={defaultCodeOpen}>\n <summary className=\"flex items-center justify-between text-[11px] font-semibold text-slate-400 cursor-pointer list-none\">\n <span>{codeToggleLabel}</span>\n <ChevronDown size={14} className=\"text-slate-500 transition-transform duration-200 group-open:rotate-180\" />\n </summary>\n <div className=\"mt-2 rounded-xl border border-slate-800 bg-slate-950 p-3\">\n <pre className=\"text-xs text-slate-200 whitespace-pre-wrap\">{copy.heroCliCmd}</pre>\n </div>\n </details>\n <div className=\"pt-1 space-y-2\">\n <div className=\"text-[10px] uppercase tracking-[0.2em] text-slate-500 font-semibold\">\n {copy.heroCliTemplatesLabel}\n </div>\n <div className=\"flex flex-wrap gap-2\">\n <a\n href={configDownloadHref}\n download\n onClick={() => trackEvent('tool_download', { tool: 'store_assets_pipeline', asset: 'config_template' })}\n className=\"inline-flex items-center justify-center gap-2 px-2.5 py-1.5 rounded-md border border-slate-700 bg-slate-950 text-[11px] text-slate-200 hover:bg-slate-900 transition\"\n >\n {copy.heroCliConfigLabel}\n </a>\n <a\n href={csvDownloadHref}\n download\n onClick={() => trackEvent('tool_download', { tool: 'store_assets_pipeline', asset: 'copy_template' })}\n className=\"inline-flex items-center justify-center gap-2 px-2.5 py-1.5 rounded-md border border-slate-700 bg-slate-950 text-[11px] text-slate-200 hover:bg-slate-900 transition\"\n >\n {copy.heroCliCsvLabel}\n </a>\n </div>\n </div>\n </div>\n <ToolGuardrailsPanel\n title={lang === 'ja' ? '詳細: CLIガードレール + Pro解除' : 'Advanced: CLI guardrails + Pro unlock'}\n codeToggleLabel={codeToggleLabel}\n copyButtonLabel={copyButtonLabel}\n preflightHref=\"/tools/agent-cli/#preflight\"\n onPreflightClick={(event) =>\n trackEventAndFollowLink(event, 'tool_cta_click', {\n tool: 'store_assets_pipeline',\n cta: 'open_cli_preflight',\n })\n }\n proUnlockTitle={copy.proUnlockTitle}\n proUnlockBody={copy.proUnlockBody}\n proUnlockCmd={copy.proUnlockCmd}\n proUnlockNote={copy.proUnlockNote}\n onProUnlockCopied={() =>\n trackEvent('tool_cta_click', { tool: 'store_assets_pipeline', cta: 'copy_cli_pro_unlock' })\n }\n />\n <CliPreflightCard\n compact\n href=\"/tools/agent-cli/#preflight\"\n onClick={(event) =>\n trackEventAndFollowLink(event, 'tool_cta_click', {\n tool: 'store_assets_pipeline',\n cta: 'open_cli_preflight_card',\n })\n }\n className=\"max-w-xl mx-auto\"\n />\n </section>\n\n <FitPanel className=\"max-w-4xl mx-auto w-full\" />\n\n <section className=\"space-y-4\">\n <h2 className=\"text-lg font-bold text-white text-center\">{copy.overviewTitle}</h2>\n <div className=\"flex flex-wrap justify-center gap-2 text-sm text-slate-300\">\n {copy.overviewSteps.map((step) => (\n <span key={step} className=\"px-3 py-1 rounded-full border border-slate-800 bg-slate-900/70\">\n {step}\n </span>\n ))}\n </div>\n </section>\n\n <section className=\"space-y-4\">\n <h2 className=\"text-lg font-bold text-white text-center\">{copy.checklistTitle}</h2>\n <div className=\"grid md:grid-cols-3 gap-6\">\n {copy.checklists.map((item) => {\n const Icon = item.icon;\n return (\n <div key={item.key} className=\"bg-slate-900/60 border border-slate-800 rounded-2xl p-6 space-y-4\">\n <div className=\"flex items-center gap-3\">\n <div className=\"w-10 h-10 rounded-xl border border-slate-800 bg-slate-950 flex items-center justify-center\">\n <Icon size={18} className=\"text-slate-200\" />\n </div>\n <div className=\"text-lg font-bold text-white\">{item.title}</div>\n </div>\n <p className=\"text-sm text-slate-300 leading-relaxed\">{item.body}</p>\n <ul className=\"text-xs text-slate-400 list-disc pl-4 space-y-1\">\n {item.bullets.map((bullet) => (\n <li key={bullet}>{bullet}</li>\n ))}\n </ul>\n </div>\n );\n })}\n </div>\n <div className=\"text-xs text-slate-500 text-center space-y-1\">\n <p>{copy.note}</p>\n <p>{copy.scopeNote}</p>\n </div>\n <div className=\"max-w-3xl mx-auto bg-slate-900/60 border border-slate-800 rounded-2xl p-6 space-y-4\">\n <div className=\"flex items-center gap-3\">\n <div className=\"w-10 h-10 rounded-xl border border-slate-800 bg-slate-950 flex items-center justify-center\">\n <FolderTree size={18} className=\"text-slate-200\" />\n </div>\n <div className=\"text-lg font-bold text-white\">{copy.treeTitle}</div>\n </div>\n <p className=\"text-sm text-slate-300 leading-relaxed\">{copy.treeBody}</p>\n <div className=\"rounded-xl border border-slate-800 bg-slate-950/80 p-4 overflow-x-auto\">\n <pre className=\"text-xs text-slate-200 whitespace-pre\">{copy.treeExample}</pre>\n </div>\n </div>\n </section>\n\n <section className=\"space-y-4\">\n <h2 className=\"text-lg font-bold text-white text-center\">{copy.assetsTitle}</h2>\n <div className=\"grid md:grid-cols-2 gap-6\">\n {copy.assets.map((asset) => (\n <a\n key={asset.key}\n href={asset.href}\n onClick={() => trackEvent('tool_cta_click', { tool: 'store_assets_pipeline', cta: `open_${asset.key}` })}\n className=\"bg-slate-900/60 border border-slate-800 rounded-2xl p-6 space-y-3 hover:border-slate-700 transition\"\n >\n <div className=\"text-lg font-bold text-white\">{asset.title}</div>\n <div className=\"text-sm text-slate-300\">{asset.desc}</div>\n <div className=\"text-xs text-blue-200 flex items-center gap-2\">\n {copy.assetsCta} <ArrowRight size={14} />\n </div>\n </a>\n ))}\n </div>\n </section>\n\n <section className=\"bg-slate-900/60 border border-slate-800 rounded-2xl p-6 flex flex-col md:flex-row items-start md:items-center justify-between gap-4\">\n <div className=\"space-y-1\">\n <div className=\"text-sm font-bold text-white\">{copy.nextTitle}</div>\n <div className=\"text-sm text-slate-300\">{copy.nextBody}</div>\n </div>\n <div className=\"flex flex-col sm:flex-row gap-3 w-full md:w-auto\">\n <a\n href={agentHandoffHref}\n onClick={(event) =>\n trackEventAndFollowLink(event, 'tool_cta_click', { tool: 'store_assets_pipeline', cta: 'open_agent_cli_footer' })\n }\n className=\"inline-flex items-center justify-center gap-2 px-5 py-3 rounded-xl bg-blue-500 text-white font-bold hover:bg-blue-600 transition w-full md:w-auto\"\n >\n {copy.ctaPrimary} <ArrowRight size={16} />\n </a>\n <a\n href={sampleProjectHref}\n onClick={(event) =>\n trackEventAndFollowLink(event, 'tool_cta_click', { tool: 'store_assets_pipeline', cta: 'open_sample_project_body' })\n }\n className=\"inline-flex items-center justify-center gap-2 px-5 py-3 rounded-xl border border-slate-700 bg-slate-950 text-slate-200 hover:bg-slate-900 transition w-full md:w-auto\"\n >\n {copy.nextCtaSample} <ArrowRight size={16} />\n </a>\n </div>\n </section>\n\n <section\n id=\"design-partner\"\n className=\"max-w-3xl mx-auto bg-slate-900/60 border border-slate-800 rounded-2xl p-6 space-y-4\"\n >\n <div className=\"text-lg font-bold text-white\">{partnerCopy.title || t('landing.partner.title')}</div>\n <div className=\"text-sm text-slate-300 leading-relaxed\">{partnerCopy.body || t('landing.partner.body')}</div>\n {partnerScopeBullets.length > 0 && (\n <ul className=\"space-y-2 text-sm text-slate-300 list-disc pl-5\">\n {partnerScopeBullets.map((item) => (\n <li key={item}>{item}</li>\n ))}\n </ul>\n )}\n <div className=\"flex flex-col sm:flex-row gap-3\">\n <a\n href={designPartnerOfferHref}\n onClick={(event) =>\n trackEventAndFollowLink(event, 'tool_cta_click', {\n tool: 'store_assets_pipeline',\n cta: 'open_design_partner_offer',\n })\n }\n className=\"flex-1 inline-flex items-center justify-center gap-2 px-4 py-3 rounded-xl bg-blue-500 text-white font-bold hover:bg-blue-600 transition\"\n >\n {designPartnerOfferLabel} <ArrowRight size={16} />\n </a>\n <a\n href={partnerMailto}\n onClick={(event) =>\n trackEventAndFollowLink(event, 'tool_cta_click', { tool: 'store_assets_pipeline', cta: 'email_design_partner' })\n }\n className=\"flex-1 inline-flex items-center justify-center gap-2 px-4 py-3 rounded-xl border border-slate-700 bg-slate-950 text-slate-200 hover:bg-slate-900 transition\"\n >\n {partnerCopy.emailCta || t('landing.partner.emailCta')}\n </a>\n <a\n href=\"https://x.com/shipscreenscom\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n onClick={() => trackEvent('tool_cta_click', { tool: 'store_assets_pipeline', cta: 'dm_design_partner' })}\n className=\"flex-1 inline-flex items-center justify-center gap-2 px-4 py-3 rounded-xl border border-slate-700 bg-slate-950 text-slate-200 hover:bg-slate-900 transition\"\n >\n {partnerCopy.dmCta || t('landing.partner.dmCta')}\n </a>\n <a\n href={payFirstPartnerHref}\n onClick={(event) =>\n trackEventAndFollowLink(event, 'tool_cta_click', {\n tool: 'store_assets_pipeline',\n cta: 'open_pay_first_from_partner_block',\n })\n }\n className=\"flex-1 inline-flex items-center justify-center gap-2 px-4 py-3 rounded-xl border border-emerald-500/40 bg-emerald-500/10 text-emerald-100 font-semibold hover:bg-emerald-500/15 transition\"\n >\n {partnerCopy.payFirstCta || t('landing.partner.payFirstCta')}\n </a>\n </div>\n <div className=\"text-xs text-slate-500\">\n {partnerCopy.emailLabel || t('landing.partner.emailLabel')}{' '}\n <a href={`mailto:${supportEmail}`} className=\"underline underline-offset-4 hover:text-white\">\n {supportEmail}\n </a>\n </div>\n </section>\n\n <section className=\"max-w-3xl mx-auto text-center space-y-4 pt-2\">\n <a\n href=\"/tools/\"\n onClick={() => trackEvent('tool_cta_click', { tool: 'store_assets_pipeline', cta: 'back_to_tools' })}\n className=\"text-xs text-slate-500 hover:text-slate-300 transition-colors underline underline-offset-4\"\n >\n {copy.ctaSecondary}\n </a>\n </section>\n </main>\n <StickyMobileCta\n primary={{\n label: copy.ctaPrimary,\n href: agentHandoffHref,\n onClick: (event) =>\n trackEventAndFollowLink(event, 'tool_cta_click', { tool: 'store_assets_pipeline', cta: 'sticky_primary_agent' }),\n }}\n secondary={{\n label: copy.nextCtaSample,\n href: sampleProjectHref,\n onClick: (event) =>\n trackEventAndFollowLink(event, 'tool_cta_click', { tool: 'store_assets_pipeline', cta: 'sticky_secondary_sample' }),\n }}\n />\n </div>\n );\n};\n\nexport default StoreAssetsPipeline;\n"],"x_google_ignoreList":[0],"mappings":"0tBAaA,IAAM,EAAS,EAAiB,SAAU,CAHxC,CAAC,OAAQ,CAAE,MAAO,KAAM,OAAQ,KAAM,EAAG,IAAK,EAAG,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,QAAS,CAAC,EACvF,CAAC,OAAQ,CAAE,GAAI,KAAM,GAAI,QAAS,GAAI,KAAM,GAAI,KAAM,IAAK,QAAS,CAAC,CAE7B,CAAU,mBCC9C,EAAiB,IACP,GAAQ,IAAI,MAAM,GAAG,EAAE,KACrB,KAAO,KAAO,KAG1B,EAAO,CACX,GAAI,CACF,MAAO,4BACP,MAAO,4BACP,SACE,gNACF,WAAY,+CACZ,aAAc,gBACd,iBAAkB,8BAClB,gBAAiB,+FACjB,YACE,okBACF,gBAAiB,oFACjB,aAAc,2BACd,YAAa,yDACb,eAAgB,8EAChB,iBAAkB,oBAClB,sBAAuB,oBACvB,mBAAoB,aACpB,gBAAiB,WACjB,WAAY,CACV,+BACA,0EACF,EAAE,KAAK;CAAI,EACX,eAAgB,mBAChB,cAAe,0EACf,aAAc,mCACd,cAAe,iFACf,SAAU,QACV,cAAe,oBACf,cAAe,CAAC,UAAW,OAAQ,SAAU,SAAU,mBAAmB,EAC1E,eAAgB,aAChB,WAAY,CACV,CACE,IAAK,SACL,KAAM,EACN,MAAO,uBACP,KAAM,4CACN,QAAS,CACP,8DACA,4DACA,gEACF,CACF,EACA,CACE,IAAK,WACL,KAAM,EACN,MAAO,uCACP,KAAM,0CACN,QAAS,CACP,6EACA,iEACA,wFACA,mEACA,oEACF,CACF,EACA,CACE,IAAK,UACL,KAAM,EACN,MAAO,wBACP,KAAM,+BACN,QAAS,CACP,qDACA,gDACA,uDACF,CACF,EACA,CACE,IAAK,YACL,KAAM,EACN,MAAO,iCACP,KAAM,uCACN,QAAS,CACP,kDACA,sDACA,+CACA,uFACF,CACF,CACF,EACA,UAAW,uCACX,SAAU,0EACV,YAAa,CACX,eACA,WACA,aACA,aACA,aACA,aACA,aACA,WACA,aACA,aACA,aACA,aACA,YACF,EAAE,KAAK;CAAI,EACX,KAAM,6KACN,UAAW,yDACX,YAAa,oBACb,UAAW,YACX,OAAQ,CACN,CACE,IAAK,MACL,MAAO,+BACP,KAAM,kDACN,KAAM,wCACR,EACA,CACE,IAAK,YACL,MAAO,4BACP,KAAM,0CACN,KAAM,sCACR,CACF,EACA,UAAW,0CACX,SAAU,0IACV,cAAe,qBACjB,EACA,GAAI,CACF,MAAO,iBACP,MAAO,iBACP,SACE,6FACF,WAAY,sBACZ,aAAc,SACd,iBAAkB,wBAClB,gBAAiB,2DACjB,YACE,sQACF,gBAAiB,iDACjB,aAAc,qBACd,YAAa,mDACb,eAAgB,8DAChB,iBAAkB,cAClB,sBAAuB,UACvB,mBAAoB,aACpB,gBAAiB,WACjB,WAAY,CACV,+BACA,0EACF,EAAE,KAAK;CAAI,EACX,eAAgB,cAChB,cAAe,qCACf,aAAc,mCACd,cAAe,sDACf,SAAU,QACV,cAAe,WACf,cAAe,CAAC,OAAQ,MAAO,QAAS,KAAM,mBAAmB,EACjE,eAAgB,UAChB,WAAY,CACV,CACE,IAAK,SACL,KAAM,EACN,MAAO,qBACP,KAAM,cACN,QAAS,CACP,wCACA,oCACA,wBACF,CACF,EACA,CACE,IAAK,WACL,KAAM,EACN,MAAO,4BACP,KAAM,eACN,QAAS,CACP,6CACA,4BACA,6CACA,mCACA,2BACF,CACF,EACA,CACE,IAAK,UACL,KAAM,EACN,MAAO,YACP,KAAM,cACN,QAAS,CACP,6BACA,2BACA,8BACF,CACF,EACA,CACE,IAAK,YACL,KAAM,EACN,MAAO,2BACP,KAAM,cACN,QAAS,CACP,wBACA,uBACA,4BACA,8BACF,CACF,CACF,EACA,UAAW,sBACX,SAAU,2CACV,YAAa,CACX,eACA,WACA,aACA,aACA,aACA,aACA,aACA,WACA,aACA,aACA,aACA,aACA,YACF,EAAE,KAAK;CAAI,EACX,KAAM,+FACN,UAAW,mDACX,YAAa,WACb,UAAW,SACX,OAAQ,CACN,CACE,IAAK,MACL,MAAO,uBACP,KAAM,kBACN,KAAM,wCACR,EACA,CACE,IAAK,YACL,MAAO,YACP,KAAM,0CACN,KAAM,sCACR,CACF,EACA,UAAW,8BACX,SAAU,kFACV,cAAe,SACjB,CAC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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{r as e}from"./chunk-BHe-jwch.js";import{S as t,b as n,n as r,r as i,x as a}from"./index-D7D6ZRCW.js";import{n as o,r as s,s as c}from"./LanguageSwitcher-hFv9zl1u.js";import{t as l}from"./SiteHeader-CJqQ0pL3.js";import{n as u,r as d,t as f}from"./hardeningOffer-tkjlPDU-.js";var p=c(`circle-check-big`,[[`path`,{d:`M21.801 10A10 10 0 1 1 17 3.335`,key:`yps3ct`}],[`path`,{d:`m9 11 3 3L22 4`,key:`1pflzl`}]]),m=e(t(),1),h=n(),g=e=>(e||``).split(`-`)[0]===`ja`?`ja`:`en`,_={en:{[f]:{title:`Release setup booked`,description:`Payment succeeded. We will follow up by email within 1 business day to confirm scope and schedule.`,action:`Review the intake`,href:`/design-partner/?entry_source=checkout_success_hardening`,cta:`open_design_partner_after_hardening_checkout`},[u]:{title:`Launch Pass started`,description:`Payment succeeded. Start with the agent guide and keep the release-fit context attached to your request if you need help.`,action:`Open the agent guide`,href:`/tools/agent-cli/?entry_source=checkout_success_launch_pass#release-fit-intake`,cta:`open_agent_cli_after_launch_pass_checkout`},[d]:{title:`Paid teardown booked`,description:`Payment succeeded. We will reply by email within 1 business day with the first release-risk teardown.`,action:`Review the intake`,href:`/design-partner/?entry_source=checkout_success_teardown`,cta:`open_design_partner_after_teardown_checkout`}},ja:{[f]:{title:`リリース整備の購入が完了しました`,description:`決済が完了しました。1営業日以内にメールで scope と進め方を確認します。`,action:`intake を確認する`,href:`/design-partner/?entry_source=checkout_success_hardening`,cta:`open_design_partner_after_hardening_checkout`},[u]:{title:`Launch Pass が開始されました`,description:`決済が完了しました。agent guide から始め、必要なら release-fit の文脈を保持したまま依頼できます。`,action:`agent guide を開く`,href:`/tools/agent-cli/?entry_source=checkout_success_launch_pass#release-fit-intake`,cta:`open_agent_cli_after_launch_pass_checkout`},[d]:{title:`有償 teardown の購入が完了しました`,description:`決済が完了しました。1営業日以内にメールで最初の release-risk teardown を返します。`,action:`intake を確認する`,href:`/design-partner/?entry_source=checkout_success_teardown`,cta:`open_design_partner_after_teardown_checkout`}}},v=()=>{let{t:e,i18n:t}=a();s(`titles.checkoutSuccess`);let n=new URLSearchParams(typeof window<`u`?window.location.search:``),c=n.get(`session_id`),u=n.get(`offer`)||``,d=(_[g(t.resolvedLanguage||t.language)]||_.en)[u]||null,f=c?`/app/?session_id=${c}`:`/app/`,v=d?.href||f,y=d?.cta||`open_app`,b=d?.title||e(`pages.success.title`),x=d?.description||e(`pages.success.description`),S=d?.action||e(`pages.success.action`);return(0,m.useEffect)(()=>{r(`checkout_success_view`,{has_session_id:!!c,offer:u||`pro`})},[u,c]),(0,h.jsxs)(`div`,{className:`min-h-screen bg-slate-50 text-slate-800 flex flex-col`,children:[(0,h.jsx)(o,{}),(0,h.jsx)(l,{variant:`light`,showX:!1,openAppHref:f}),(0,h.jsx)(`main`,{className:`flex-1 flex items-center justify-center px-6 py-10`,children:(0,h.jsxs)(`div`,{className:`max-w-lg w-full bg-white border border-slate-200 rounded-2xl shadow-xs p-8 text-center space-y-4`,children:[(0,h.jsx)(p,{size:48,className:`text-green-500 mx-auto`}),(0,h.jsx)(`h1`,{className:`text-2xl font-bold`,children:b}),(0,h.jsx)(`p`,{className:`text-slate-600`,children:x}),(0,h.jsx)(`a`,{href:v,onClick:e=>i(e,`checkout_success_cta_click`,{cta:y,offer:u||`pro`}),className:`inline-flex justify-center items-center px-4 py-2 rounded-lg bg-blue-600 text-white font-semibold hover:bg-blue-700`,children:S})]})})]})};export{v as default};
|
|
2
|
+
//# sourceMappingURL=Success-D6b4wLPD.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Success-D6b4wLPD.js","names":[],"sources":["../../node_modules/lucide-react/dist/esm/icons/circle-check-big.mjs","../../src/pages/Success.jsx"],"sourcesContent":["/**\n * @license lucide-react v1.18.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\"path\", { d: \"M21.801 10A10 10 0 1 1 17 3.335\", key: \"yps3ct\" }],\n [\"path\", { d: \"m9 11 3 3L22 4\", key: \"1pflzl\" }]\n];\nconst CircleCheckBig = createLucideIcon(\"circle-check-big\", __iconNode);\n\nexport { __iconNode, CircleCheckBig as default };\n//# sourceMappingURL=circle-check-big.mjs.map\n","import React, { useEffect } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { CheckCircle } from 'lucide-react';\nimport StagingBadge from '../components/StagingBadge';\nimport SiteHeader from '../components/SiteHeader';\nimport usePageTitle from '../hooks/usePageTitle';\nimport { trackEvent, trackEventAndFollowLink } from '../lib/analytics';\nimport { HARDENING_OFFER_KEY, LAUNCH_PASS_OFFER_KEY, PAID_TEARDOWN_OFFER_KEY } from '../lib/hardeningOffer';\n\nconst normalizeLang = (lang) => ((lang || '').split('-')[0] === 'ja' ? 'ja' : 'en');\n\nconst OFFER_COPY = {\n en: {\n [HARDENING_OFFER_KEY]: {\n title: 'Release setup booked',\n description:\n 'Payment succeeded. We will follow up by email within 1 business day to confirm scope and schedule.',\n action: 'Review the intake',\n href: '/design-partner/?entry_source=checkout_success_hardening',\n cta: 'open_design_partner_after_hardening_checkout',\n },\n [LAUNCH_PASS_OFFER_KEY]: {\n title: 'Launch Pass started',\n description:\n 'Payment succeeded. Start with the agent guide and keep the release-fit context attached to your request if you need help.',\n action: 'Open the agent guide',\n href: '/tools/agent-cli/?entry_source=checkout_success_launch_pass#release-fit-intake',\n cta: 'open_agent_cli_after_launch_pass_checkout',\n },\n [PAID_TEARDOWN_OFFER_KEY]: {\n title: 'Paid teardown booked',\n description:\n 'Payment succeeded. We will reply by email within 1 business day with the first release-risk teardown.',\n action: 'Review the intake',\n href: '/design-partner/?entry_source=checkout_success_teardown',\n cta: 'open_design_partner_after_teardown_checkout',\n },\n },\n ja: {\n [HARDENING_OFFER_KEY]: {\n title: 'リリース整備の購入が完了しました',\n description:\n '決済が完了しました。1営業日以内にメールで scope と進め方を確認します。',\n action: 'intake を確認する',\n href: '/design-partner/?entry_source=checkout_success_hardening',\n cta: 'open_design_partner_after_hardening_checkout',\n },\n [LAUNCH_PASS_OFFER_KEY]: {\n title: 'Launch Pass が開始されました',\n description:\n '決済が完了しました。agent guide から始め、必要なら release-fit の文脈を保持したまま依頼できます。',\n action: 'agent guide を開く',\n href: '/tools/agent-cli/?entry_source=checkout_success_launch_pass#release-fit-intake',\n cta: 'open_agent_cli_after_launch_pass_checkout',\n },\n [PAID_TEARDOWN_OFFER_KEY]: {\n title: '有償 teardown の購入が完了しました',\n description:\n '決済が完了しました。1営業日以内にメールで最初の release-risk teardown を返します。',\n action: 'intake を確認する',\n href: '/design-partner/?entry_source=checkout_success_teardown',\n cta: 'open_design_partner_after_teardown_checkout',\n },\n },\n};\n\nconst Success = () => {\n const { t, i18n } = useTranslation();\n usePageTitle('titles.checkoutSuccess');\n const params = new URLSearchParams(typeof window !== 'undefined' ? window.location.search : '');\n const sessionId = params.get('session_id');\n const offer = params.get('offer') || '';\n const lang = normalizeLang(i18n.resolvedLanguage || i18n.language);\n const offerCopy = (OFFER_COPY[lang] || OFFER_COPY.en)[offer] || null;\n const appLink = sessionId ? `/app/?session_id=${sessionId}` : '/app/';\n const primaryHref = offerCopy?.href || appLink;\n const primaryCta = offerCopy?.cta || 'open_app';\n const title = offerCopy?.title || t('pages.success.title');\n const description = offerCopy?.description || t('pages.success.description');\n const action = offerCopy?.action || t('pages.success.action');\n\n useEffect(() => {\n trackEvent('checkout_success_view', {\n has_session_id: Boolean(sessionId),\n offer: offer || 'pro',\n });\n }, [offer, sessionId]);\n\n return (\n <div className=\"min-h-screen bg-slate-50 text-slate-800 flex flex-col\">\n <StagingBadge />\n <SiteHeader variant=\"light\" showX={false} openAppHref={appLink} />\n <main className=\"flex-1 flex items-center justify-center px-6 py-10\">\n <div className=\"max-w-lg w-full bg-white border border-slate-200 rounded-2xl shadow-xs p-8 text-center space-y-4\">\n <CheckCircle size={48} className=\"text-green-500 mx-auto\" />\n <h1 className=\"text-2xl font-bold\">{title}</h1>\n <p className=\"text-slate-600\">{description}</p>\n <a\n href={primaryHref}\n onClick={(event) =>\n trackEventAndFollowLink(event, 'checkout_success_cta_click', { cta: primaryCta, offer: offer || 'pro' })\n }\n className=\"inline-flex justify-center items-center px-4 py-2 rounded-lg bg-blue-600 text-white font-semibold hover:bg-blue-700\"\n >\n {action}\n </a>\n </div>\n </main>\n </div>\n );\n};\n\nexport default Success;\n"],"x_google_ignoreList":[0],"mappings":"yRAaA,IAAM,EAAiB,EAAiB,mBAAoB,CAH1D,CAAC,OAAQ,CAAE,EAAG,kCAAmC,IAAK,QAAS,CAAC,EAChE,CAAC,OAAQ,CAAE,EAAG,iBAAkB,IAAK,QAAS,CAAC,CAEW,CAAU,mBCJhE,EAAiB,IAAW,GAAQ,IAAI,MAAM,GAAG,EAAE,KAAO,KAAO,KAAO,KAExE,EAAa,CACjB,GAAI,EACD,GAAsB,CACrB,MAAO,uBACP,YACE,qGACF,OAAQ,oBACR,KAAM,2DACN,IAAK,8CACP,GACC,GAAwB,CACvB,MAAO,sBACP,YACE,4HACF,OAAQ,uBACR,KAAM,iFACN,IAAK,2CACP,GACC,GAA0B,CACzB,MAAO,uBACP,YACE,wGACF,OAAQ,oBACR,KAAM,0DACN,IAAK,6CACP,CACF,EACA,GAAI,EACD,GAAsB,CACrB,MAAO,mBACP,YACE,0CACF,OAAQ,eACR,KAAM,2DACN,IAAK,8CACP,GACC,GAAwB,CACvB,MAAO,uBACP,YACE,gEACF,OAAQ,kBACR,KAAM,iFACN,IAAK,2CACP,GACC,GAA0B,CACzB,MAAO,yBACP,YACE,wDACF,OAAQ,eACR,KAAM,0DACN,IAAK,6CACP,CACF,CACF,EAEM,MAAgB,CACpB,GAAM,CAAE,IAAG,QAAS,EAAe,EACnC,EAAa,wBAAwB,EACrC,IAAM,EAAS,IAAI,gBAAgB,OAAO,OAAW,IAAc,OAAO,SAAS,OAAS,EAAE,EACxF,EAAY,EAAO,IAAI,YAAY,EACnC,EAAQ,EAAO,IAAI,OAAO,GAAK,GAE/B,GAAa,EADN,EAAc,EAAK,kBAAoB,EAAK,QAC3B,IAAS,EAAW,IAAI,IAAU,KAC1D,EAAU,EAAY,oBAAoB,IAAc,QACxD,EAAc,GAAW,MAAQ,EACjC,EAAa,GAAW,KAAO,WAC/B,EAAQ,GAAW,OAAS,EAAE,qBAAqB,EACnD,EAAc,GAAW,aAAe,EAAE,2BAA2B,EACrE,EAAS,GAAW,QAAU,EAAE,sBAAsB,EAS5D,OAPA,EAAA,EAAA,eAAgB,CACd,EAAW,wBAAyB,CAClC,eAAgB,EAAQ,EACxB,MAAO,GAAS,KAClB,CAAC,CACH,EAAG,CAAC,EAAO,CAAS,CAAC,GAGnB,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,iEAAf,EACE,EAAA,EAAA,KAAC,EAAD,CAAe,CAAA,GACf,EAAA,EAAA,KAAC,EAAD,CAAY,QAAQ,QAAQ,MAAO,GAAO,YAAa,CAAU,CAAA,GACjE,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,+DACd,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,4GAAf,EACE,EAAA,EAAA,KAAC,EAAD,CAAa,KAAM,GAAI,UAAU,wBAA0B,CAAA,GAC3D,EAAA,EAAA,KAAC,KAAD,CAAI,UAAU,8BAAsB,CAAU,CAAA,GAC9C,EAAA,EAAA,KAAC,IAAD,CAAG,UAAU,0BAAkB,CAAe,CAAA,GAC9C,EAAA,EAAA,KAAC,IAAD,CACE,KAAM,EACN,QAAU,GACR,EAAwB,EAAO,6BAA8B,CAAE,IAAK,EAAY,MAAO,GAAS,KAAM,CAAC,EAEzG,UAAU,+HAET,CACA,CAAA,CACA,GACD,CAAA,CACH,GAET"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{r as e}from"./chunk-BHe-jwch.js";import{S as t,b as n,c as r,h as i,n as a,o,p as s,r as c,s as l,x as u}from"./index-D7D6ZRCW.js";import{n as d,r as f}from"./LanguageSwitcher-hFv9zl1u.js";import{t as p}from"./SiteHeader-CJqQ0pL3.js";import{t as m}from"./SalesEntryQuickRequestCard-Bfa93AYu.js";import{n as h,r as g,t as _}from"./designPartnerSalesEntry-BpRINg3I.js";import{t as v}from"./TrustSalesEntryPanel-DuncpgMs.js";var y=e(t(),1),b=n(),x=e=>((e||``).split(`-`)[0]||`en`)===`ja`?`ja`:`en`,S=()=>{let{t:e,i18n:t}=u();f(`titles.terms`);let n=x(t.resolvedLanguage||t.language),S=e(`terms.sections`,{returnObjects:!0})||[],w=l(),T=typeof window>`u`?null:i(new URLSearchParams(window.location.search)),E=w.entry_source||``,D=s(E),O={entrySource:E,leadId:T?.leadId||o(),preset:T?.preset||``,appName:T?.appName||``,appUrl:T?.appUrl||``,contactEmail:T?.contactEmail||``,contactName:T?.contactName||``,xHandle:T?.xHandle||``,reviewMode:T?.reviewMode||`async_email`,releaseTimeline:T?.releaseTimeline||``,platform:T?.platform||``,scope:T?.scope||``,workflow:T?.workflow||``,blocker:T?.blocker||``},k={contactEmail:O.contactEmail,contactName:O.contactName,xHandle:O.xHandle,appName:O.appName,appUrl:O.appUrl,reviewMode:O.reviewMode,releaseTimeline:O.releaseTimeline,platform:O.platform,scope:O.scope,workflow:O.workflow,blocker:O.blocker,notes:``},A=D?r(`/`,O):`/`,j=D?r(`/pricing`,O):`/pricing`,M=_(O),N=h(O),P=(0,y.useMemo)(()=>g({entrySource:E,leadId:O.leadId,contactEmail:O.contactEmail}),[E,O.leadId,O.contactEmail]);return(0,y.useEffect)(()=>{a(`terms_view`,{path:typeof window<`u`?window.location.pathname:`/terms`,...P})},[P]),(0,b.jsxs)(`div`,{className:`min-h-screen bg-slate-50 text-slate-800`,children:[(0,b.jsx)(d,{}),(0,b.jsx)(p,{variant:`light`,logoHref:A,pricingHref:j,showX:!1}),(0,b.jsxs)(`main`,{className:`max-w-4xl mx-auto px-4 py-12`,children:[(0,b.jsx)(`h1`,{className:`text-3xl font-bold mb-6`,children:e(`terms.title`)}),(0,b.jsx)(`p`,{className:`mb-4`,children:e(`terms.intro`)}),D?(0,b.jsxs)(`div`,{className:`mb-6 space-y-4`,children:[(0,b.jsx)(m,{lang:n,variant:`light`,form:k,attribution:w,entrySource:E,leadId:O.leadId,sourcePage:`terms`,submitSurface:`terms_sales_entry_quick_card`}),(0,b.jsx)(v,{lang:n,variant:`light`,contactEmail:O.contactEmail,appName:O.appName,appUrl:O.appUrl,requestHref:M,payFirstHref:N,onRequestClick:e=>c(e,`terms_cta_click`,{cta:`open_request_review_sales_entry`,...P}),onPayFirstClick:e=>c(e,`terms_cta_click`,{cta:`open_pay_first_sales_entry`,...P})})]}):null,S.map(e=>(0,b.jsx)(C,{title:e.title,body:e.body},e.title)),(0,b.jsx)(`p`,{className:`mt-6 text-sm text-slate-600`,children:e(`terms.contact`,{email:`support@shimaumaservices.co.jp`})})]})]})},C=({title:e,body:t})=>(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(`h2`,{className:`text-xl font-semibold mt-6 mb-2`,children:e}),(0,b.jsx)(`p`,{className:`mb-3`,children:t})]});export{S as default};
|
|
2
|
+
//# sourceMappingURL=Terms-BMt39FQK.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Terms-BMt39FQK.js","names":[],"sources":["../../src/pages/Terms.jsx"],"sourcesContent":["import React, { useEffect, useMemo } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport SalesEntryQuickRequestCard from '../components/SalesEntryQuickRequestCard';\nimport StagingBadge from '../components/StagingBadge';\nimport SiteHeader from '../components/SiteHeader';\nimport TrustSalesEntryPanel from '../components/TrustSalesEntryPanel';\nimport usePageTitle from '../hooks/usePageTitle';\nimport { trackEvent, trackEventAndFollowLink } from '../lib/analytics';\nimport { getAttributionLeadId, getAttributionParams } from '../lib/attribution';\nimport {\n buildDesignPartnerContextHref,\n isDirectSalesEntrySource,\n sanitizeDesignPartnerQueryPrefill,\n} from '../lib/designPartnerPrefill';\nimport {\n buildDesignPartnerRequestReviewHref,\n buildSalesEntryPayFirstHref,\n buildSalesEntryTrackingContext,\n} from '../lib/designPartnerSalesEntry';\n\nconst normalizeLang = (lang) => (((lang || '').split('-')[0] || 'en') === 'ja' ? 'ja' : 'en');\n\nconst Terms = () => {\n const { t, i18n } = useTranslation();\n usePageTitle('titles.terms');\n const lang = normalizeLang(i18n.resolvedLanguage || i18n.language);\n const sections = t('terms.sections', { returnObjects: true }) || [];\n const attribution = getAttributionParams();\n const prefill =\n typeof window === 'undefined'\n ? null\n : sanitizeDesignPartnerQueryPrefill(new URLSearchParams(window.location.search));\n const entrySource = attribution.entry_source || '';\n const isSalesEntry = isDirectSalesEntrySource(entrySource);\n const salesContext = {\n entrySource,\n leadId: prefill?.leadId || getAttributionLeadId(),\n preset: prefill?.preset || '',\n appName: prefill?.appName || '',\n appUrl: prefill?.appUrl || '',\n contactEmail: prefill?.contactEmail || '',\n contactName: prefill?.contactName || '',\n xHandle: prefill?.xHandle || '',\n reviewMode: prefill?.reviewMode || 'async_email',\n releaseTimeline: prefill?.releaseTimeline || '',\n platform: prefill?.platform || '',\n scope: prefill?.scope || '',\n workflow: prefill?.workflow || '',\n blocker: prefill?.blocker || '',\n };\n const requestForm = {\n contactEmail: salesContext.contactEmail,\n contactName: salesContext.contactName,\n xHandle: salesContext.xHandle,\n appName: salesContext.appName,\n appUrl: salesContext.appUrl,\n reviewMode: salesContext.reviewMode,\n releaseTimeline: salesContext.releaseTimeline,\n platform: salesContext.platform,\n scope: salesContext.scope,\n workflow: salesContext.workflow,\n blocker: salesContext.blocker,\n notes: '',\n };\n const logoHref = isSalesEntry ? buildDesignPartnerContextHref('/', salesContext) : '/';\n const pricingHref = isSalesEntry ? buildDesignPartnerContextHref('/pricing', salesContext) : '/pricing';\n const requestReviewHref = buildDesignPartnerRequestReviewHref(salesContext);\n const payFirstHref = buildSalesEntryPayFirstHref(salesContext);\n const salesEntryTrackingContext = useMemo(\n () =>\n buildSalesEntryTrackingContext({\n entrySource,\n leadId: salesContext.leadId,\n contactEmail: salesContext.contactEmail,\n }),\n [entrySource, salesContext.leadId, salesContext.contactEmail],\n );\n\n useEffect(() => {\n trackEvent('terms_view', {\n path: typeof window !== 'undefined' ? window.location.pathname : '/terms',\n ...salesEntryTrackingContext,\n });\n }, [salesEntryTrackingContext]);\n\n return (\n <div className=\"min-h-screen bg-slate-50 text-slate-800\">\n <StagingBadge />\n <SiteHeader variant=\"light\" logoHref={logoHref} pricingHref={pricingHref} showX={false} />\n\n <main className=\"max-w-4xl mx-auto px-4 py-12\">\n <h1 className=\"text-3xl font-bold mb-6\">{t('terms.title')}</h1>\n <p className=\"mb-4\">{t('terms.intro')}</p>\n {isSalesEntry ? (\n <div className=\"mb-6 space-y-4\">\n <SalesEntryQuickRequestCard\n lang={lang}\n variant=\"light\"\n form={requestForm}\n attribution={attribution}\n entrySource={entrySource}\n leadId={salesContext.leadId}\n sourcePage=\"terms\"\n submitSurface=\"terms_sales_entry_quick_card\"\n />\n <TrustSalesEntryPanel\n lang={lang}\n variant=\"light\"\n contactEmail={salesContext.contactEmail}\n appName={salesContext.appName}\n appUrl={salesContext.appUrl}\n requestHref={requestReviewHref}\n payFirstHref={payFirstHref}\n onRequestClick={(event) =>\n trackEventAndFollowLink(event, 'terms_cta_click', {\n cta: 'open_request_review_sales_entry',\n ...salesEntryTrackingContext,\n })\n }\n onPayFirstClick={(event) =>\n trackEventAndFollowLink(event, 'terms_cta_click', {\n cta: 'open_pay_first_sales_entry',\n ...salesEntryTrackingContext,\n })\n }\n />\n </div>\n ) : null}\n {sections.map((section) => (\n <Section key={section.title} title={section.title} body={section.body} />\n ))}\n <p className=\"mt-6 text-sm text-slate-600\">{t('terms.contact', { email: 'support@shimaumaservices.co.jp' })}</p>\n </main>\n </div>\n );\n};\n\r\nconst Section = ({ title, body }) => (\r\n <>\r\n <h2 className=\"text-xl font-semibold mt-6 mb-2\">{title}</h2>\r\n <p className=\"mb-3\">{body}</p>\r\n </>\r\n);\r\n\r\nexport default Terms;\r\n"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import"./chunk-BHe-jwch.js";import{S as e,b as t}from"./index-D7D6ZRCW.js";import{t as n}from"./chevron-down-BIXHKpnf.js";import{t as r}from"./CopyButton-BFCx6EPg.js";import{t as i}from"./copy-KD-LYJ0z.js";import{n as a}from"./StickyMobileCta-REC3DROG.js";e();var o=t(),s=({title:e,preflightHref:t=`/tools/agent-cli/#preflight`,onPreflightClick:s,proUnlockTitle:c,proUnlockBody:l,proUnlockCmd:u,proUnlockNote:d,onProUnlockCopied:f,copyButtonLabel:p,codeToggleLabel:m=`Show commands`})=>u?(0,o.jsxs)(`details`,{className:`max-w-xl mx-auto text-left bg-slate-900/50 border border-slate-800 rounded-2xl p-4 space-y-4`,children:[(0,o.jsxs)(`summary`,{className:`flex items-center justify-between gap-3 cursor-pointer list-none`,children:[(0,o.jsx)(`span`,{className:`text-xs font-semibold tracking-[0.12em] uppercase text-slate-300`,children:e}),(0,o.jsx)(n,{size:14,className:`text-slate-500`})]}),(0,o.jsxs)(`div`,{className:`space-y-4`,children:[(0,o.jsx)(a,{compact:!0,href:t,onClick:s}),(0,o.jsxs)(`div`,{className:`rounded-2xl border border-slate-800 bg-slate-950/70 p-4 space-y-3`,children:[(0,o.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[(0,o.jsx)(`div`,{className:`text-sm font-bold text-white`,children:c}),(0,o.jsx)(`span`,{className:`text-[10px] font-semibold tracking-[0.2em] text-amber-200 bg-amber-500/10 border border-amber-400/30 px-2 py-1 rounded-full`,children:`PRO`})]}),l&&(0,o.jsx)(`p`,{className:`text-sm text-slate-300`,children:l}),(0,o.jsxs)(`details`,{className:`group`,children:[(0,o.jsxs)(`summary`,{className:`flex items-center justify-between text-[11px] font-semibold text-slate-400 cursor-pointer list-none`,children:[(0,o.jsx)(`span`,{children:m}),(0,o.jsx)(n,{size:14,className:`text-slate-500 transition-transform duration-200 group-open:rotate-180`})]}),(0,o.jsx)(`div`,{className:`mt-2 rounded-xl border border-slate-800 bg-slate-950/80 p-4`,children:(0,o.jsx)(`pre`,{className:`text-xs text-slate-200 whitespace-pre-wrap`,children:u})})]}),(0,o.jsx)(r,{value:u,onCopied:f,className:`inline-flex items-center justify-center gap-2 px-4 py-2 rounded-lg border border-slate-700 bg-slate-950 text-slate-200 hover:bg-slate-900 transition text-sm font-semibold`,children:({copyLabel:e})=>(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(i,{size:14}),e||p]})}),d&&(0,o.jsx)(`div`,{className:`text-xs text-slate-500`,children:d})]})]})]}):null;export{s as t};
|
|
2
|
+
//# sourceMappingURL=ToolGuardrailsPanel-Cclxwdrb.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ToolGuardrailsPanel-Cclxwdrb.js","names":[],"sources":["../../src/components/ToolGuardrailsPanel.jsx"],"sourcesContent":["import React from 'react';\nimport { ChevronDown, Copy } from 'lucide-react';\nimport CopyButton from './CopyButton';\nimport CliPreflightCard from './CliPreflightCard';\n\nconst ToolGuardrailsPanel = ({\n title,\n preflightHref = '/tools/agent-cli/#preflight',\n onPreflightClick,\n proUnlockTitle,\n proUnlockBody,\n proUnlockCmd,\n proUnlockNote,\n onProUnlockCopied,\n copyButtonLabel,\n codeToggleLabel = 'Show commands',\n}) => {\n if (!proUnlockCmd) return null;\n\n return (\n <details className=\"max-w-xl mx-auto text-left bg-slate-900/50 border border-slate-800 rounded-2xl p-4 space-y-4\">\n <summary className=\"flex items-center justify-between gap-3 cursor-pointer list-none\">\n <span className=\"text-xs font-semibold tracking-[0.12em] uppercase text-slate-300\">{title}</span>\n <ChevronDown size={14} className=\"text-slate-500\" />\n </summary>\n <div className=\"space-y-4\">\n <CliPreflightCard compact href={preflightHref} onClick={onPreflightClick} />\n <div className=\"rounded-2xl border border-slate-800 bg-slate-950/70 p-4 space-y-3\">\n <div className=\"flex items-center justify-between gap-3\">\n <div className=\"text-sm font-bold text-white\">{proUnlockTitle}</div>\n <span className=\"text-[10px] font-semibold tracking-[0.2em] text-amber-200 bg-amber-500/10 border border-amber-400/30 px-2 py-1 rounded-full\">\n PRO\n </span>\n </div>\n {proUnlockBody && <p className=\"text-sm text-slate-300\">{proUnlockBody}</p>}\n <details className=\"group\">\n <summary className=\"flex items-center justify-between text-[11px] font-semibold text-slate-400 cursor-pointer list-none\">\n <span>{codeToggleLabel}</span>\n <ChevronDown size={14} className=\"text-slate-500 transition-transform duration-200 group-open:rotate-180\" />\n </summary>\n <div className=\"mt-2 rounded-xl border border-slate-800 bg-slate-950/80 p-4\">\n <pre className=\"text-xs text-slate-200 whitespace-pre-wrap\">{proUnlockCmd}</pre>\n </div>\n </details>\n <CopyButton\n value={proUnlockCmd}\n onCopied={onProUnlockCopied}\n className=\"inline-flex items-center justify-center gap-2 px-4 py-2 rounded-lg border border-slate-700 bg-slate-950 text-slate-200 hover:bg-slate-900 transition text-sm font-semibold\"\n >\n {({ copyLabel }) => (\n <>\n <Copy size={14} />\n {copyLabel || copyButtonLabel}\n </>\n )}\n </CopyButton>\n {proUnlockNote && <div className=\"text-xs text-slate-500\">{proUnlockNote}</div>}\n </div>\n </div>\n </details>\n );\n};\n\nexport default ToolGuardrailsPanel;\n"],"mappings":"8QAKM,GAAuB,CAC3B,QACA,gBAAgB,8BAChB,mBACA,iBACA,gBACA,eACA,gBACA,oBACA,kBACA,kBAAkB,mBAEb,GAGH,EAAA,EAAA,MAAC,UAAD,CAAS,UAAU,wGAAnB,EACE,EAAA,EAAA,MAAC,UAAD,CAAS,UAAU,4EAAnB,EACE,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,4EAAoE,CAAY,CAAA,GAChG,EAAA,EAAA,KAAC,EAAD,CAAa,KAAM,GAAI,UAAU,gBAAkB,CAAA,CAC5C,KACT,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,qBAAf,EACE,EAAA,EAAA,KAAC,EAAD,CAAkB,QAAA,GAAQ,KAAM,EAAe,QAAS,CAAmB,CAAA,GAC3E,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,6EAAf,EACE,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,mDAAf,EACE,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,wCAAgC,CAAoB,CAAA,GACnE,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,uIAA8H,KAExI,CAAA,CACH,IACJ,IAAiB,EAAA,EAAA,KAAC,IAAD,CAAG,UAAU,kCAA0B,CAAiB,CAAA,GAC1E,EAAA,EAAA,MAAC,UAAD,CAAS,UAAU,iBAAnB,EACE,EAAA,EAAA,MAAC,UAAD,CAAS,UAAU,+GAAnB,EACE,EAAA,EAAA,KAAC,OAAD,CAAA,SAAO,CAAsB,CAAA,GAC7B,EAAA,EAAA,KAAC,EAAD,CAAa,KAAM,GAAI,UAAU,wEAA0E,CAAA,CACpG,KACT,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,wEACb,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,sDAA8C,CAAkB,CAAA,CAC5E,CAAA,CACE,KACT,EAAA,EAAA,KAAC,EAAD,CACE,MAAO,EACP,SAAU,EACV,UAAU,uLAER,CAAE,gBACF,EAAA,EAAA,MAAA,EAAA,SAAA,CAAA,SAAA,EACE,EAAA,EAAA,KAAC,EAAD,CAAM,KAAM,EAAK,CAAA,EAChB,GAAa,CACd,CAAA,CAAA,CAEM,CAAA,EACX,IAAiB,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,kCAA0B,CAAmB,CAAA,CAC3E,GACF,GACE,IA1Ce"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import{r as e}from"./chunk-BHe-jwch.js";import{S as t,b as n,l as r,n as i,r as a,x as o}from"./index-D7D6ZRCW.js";import{n as s,r as c,s as l}from"./LanguageSwitcher-hFv9zl1u.js";import{n as u,t as d}from"./circle-check-X08qqy40.js";import{t as f}from"./calculator-CofuwQa8.js";import{r as p,t as m}from"./CopyButton-BFCx6EPg.js";import{t as h}from"./layout-grid-Cq_e979G.js";import{t as g}from"./SiteHeader-CJqQ0pL3.js";import{t as _}from"./rocket-DHdrCHKD.js";import{t as v}from"./shield-check-CxpHNdp0.js";import{t as y}from"./terminal-J0iyJTv2.js";import{n as b,t as x}from"./StickyMobileCta-REC3DROG.js";import{t as S}from"./FitPanel-B1J0V1jK.js";import{t as C}from"./AgentHandoffPanel-Bf_AJepG.js";import{t as w}from"./ToolGuardrailsPanel-Cclxwdrb.js";var T=l(`clipboard-list`,[[`rect`,{width:`8`,height:`4`,x:`8`,y:`2`,rx:`1`,ry:`1`,key:`tgr4d6`}],[`path`,{d:`M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2`,key:`116196`}],[`path`,{d:`M12 11h4`,key:`1jrz19`}],[`path`,{d:`M12 16h4`,key:`n85exb`}],[`path`,{d:`M8 11h.01`,key:`1dfujw`}],[`path`,{d:`M8 16h.01`,key:`18s6g9`}]]),E=l(`folder`,[[`path`,{d:`M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z`,key:`1kt360`}]]),D=l(`wrench`,[[`path`,{d:`M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z`,key:`1ngwbx`}]]),O=e(t(),1),k=n(),A=e=>(e||``).split(`-`)[0]===`ja`?`ja`:`en`,j={en:{badge:`Start here`,title:`Two doors into the same screenshot build step.`,subtitle:`For developers: let your coding agent use ShipScreens with MCP/CLI/CI. For ASO / marketers: keep the current creative workflow and validate release-safe outputs in the browser first. Same deterministic contract underneath.`,useCases:[`Panel #1 is unclear (what outcome / for whom)`,`Headline sounds generic (could fit many apps)`,`01..05 naming / order keeps drifting`,`iPad compatibility or review surprises`,`Fastlane/CI upload-root churn`,`Want the agent to choose MCP or CLI automatically`,`Need a CLI/MCP lane for coding agents or CI`,`App Review / ASO constraints`],quickPathTitle:`Pick the door that matches your role`,quickPathBullets:[`Developers: open the coding-agent guide, keep the current Figma/Canva/AI/manual workflow, and let the agent choose workspace-local MCP or CLI.`,`ASO / marketers: start with browser first export when you want to validate the current creative, panel order, and CSV-driven copy without learning another design tool.`,`In both cases, review panel #1 clarity, 01..05 naming, and upload roots on the first export before scaling.`,`ShipScreens handles release-safe reruns. It does not replace your design stack.`],quickPathPrimary:`Open the coding-agent guide`,quickPathSecondary:`Open browser first export`,agentPromptTitle:`Paste the agent prompt`,agentPromptBody:`Use this when Claude/Cursor/Copilot/Gemini is already part of your mobile app workflow.`,agentPrompt:`Use ShipScreens as the build step for our mobile release screenshots. Keep our current design workflow, inspect this repo, choose workspace-local MCP if available otherwise CLI, capture current device/emulator screens if no screenshot folder exists, generate deterministic Fastlane-ready outputs, run verify/stage, and return a short report with output paths, warnings, and next steps. Only ask me if device or locale scope, panel #1 messaging, or store-upload approval is unclear.`,agentPromptNote:`ShipScreens is not a screenshot generator. It turns one instruction into a deterministic release step around the screenshots you already have.`,demoTitle:`Run a demo export (no assets required)`,demoBody:`If you want to sanity-check the output roots first, run the demo. It creates a throwaway project and stages a clean upload tree.`,demoCmd:`npx --yes shipscreens demo`,demoBullets:[`Output tree: fastlane/ + reproducible ZIP`,`Stages a clean upload root (deliver/supply-safe)`,`Delete the demo folder anytime`],demoNote:`First run may take longer while npx downloads the package.`,heroCliTitle:`CLI quickstart (2 steps)`,heroCliNote:`wizard -> agent-run --stage (raw mode, no Playwright).`,heroCliSummary:`Outputs: fastlane/ + reproducible ZIP + staged upload root + proof reports.`,heroCliCopyLabel:`Copy all commands`,heroCliProLabel:`Then unlock Pro:`,heroCliProCmd:`npx --yes shipscreens auth login`,heroCliTemplatesLabel:`Starter templates`,heroCliConfigLabel:`config.yml`,heroCliCsvLabel:`copy.csv`,heroCliCmd:[`npx --yes shipscreens wizard`,`npx --yes shipscreens agent-run --mode raw --zip --out out/agent --stage`].join(`
|
|
2
|
+
`),noLogin:`No login required · Free tools`,trustNote:`Privacy-first: screenshots stay on your device; ShipScreens prepares Fastlane-ready outputs.`,cards:[{key:`agent_cli`,icon:y,title:`For developers: coding agent + CLI`,desc:`Agent-first and non-interactive: let the agent wire workspace-local MCP or the CLI around your existing PNGs so Fastlane paths, naming, and upload roots stop drifting in local/CI.`,href:`/tools/agent-cli/`,cta:`Open the coding-agent guide`},{key:`first_export`,icon:_,title:`For ASO / marketers: 5-minute First Export`,desc:`Browser-first fallback: keep your design style, validate an outcome-first panel flow, and export a watermarked upload-ready bundle without changing your current tool stack.`,href:`/tools/first-export/`,cta:`Start the 5-minute export`},{key:`calculator`,icon:f,title:`Screenshot Workload Calculator`,desc:`See the real image count from devices x locales, and grab a CSV copy template.`,href:`/tools/screenshot-workload-calculator/`,cta:`Calculate workload`},{key:`fastlane_screenshots`,icon:E,title:`Fastlane Screenshot Folder Structure`,desc:`Copy/paste deliver + supply paths, then prevent ordering/path drift with reproducible exports in CI.`,href:`/tools/fastlane-screenshots/`,cta:`Copy the Fastlane paths`},{key:`framework`,icon:h,title:`5-panel Screenshot Framework`,desc:`A narrative script that keeps panel #1 concrete (outcome first) while preserving your own visual style.`,href:`/tools/5-panel-screenshot-framework/`,cta:`Download the framework`},{key:`pipeline`,icon:T,title:`Store Assets Pipeline Kit`,desc:`Safe-area guide, size buckets, and capture checklist for iPad 13-inch + App Review/ASO constraints before upload.`,href:`/tools/store-assets-pipeline/`,cta:`Get the safe-area guide`},{key:`app_review_aso`,icon:v,title:`App Review + ASO Quick Check`,desc:`A short pre-upload checklist for clarity, policy-safe claims, and store-safe screenshots.`,href:`/tools/app-review-aso/`,cta:`Open the quick check`}],primaryCta:`Open the coding-agent guide`,secondaryCta:`Open browser first export`,cliTitle:`No browser? CLI quickstart`,cliDesc:`Run agent-run in raw mode so build, verify, stage, and report stay together for a non-interactive CI/agent lane.`,cliCmd:[`npx --yes shipscreens wizard`,`# replace assets/en-US/01.png..05.png`,`npx --yes shipscreens agent-run --mode raw --zip --out out/agent --stage`].join(`
|
|
3
|
+
`),cliCta:`Open tell-your-agent guide`,proUnlockTitle:`Unlock Pro (CLI)`,proUnlockBody:`Remove the watermark and unlock full matrix batch exports via CLI auth:`,proUnlockCmd:`npx --yes shipscreens auth login`,proUnlockNote:`Completes a one-time browser sign-in; then rerun agent-run with --require-pro.`,partnerTitle:`15-min first export review`,partnerBody:`In 15 minutes, we map your current flow to an iPhone-first contract, stable naming/order, and upload-safe next steps for the next release.`,partnerEmailCta:`Get a 15-min review`,partnerDmCta:`DM for a 15-min review`,partnerJump:`Get a 15-min first-export review`,advancedTitle:`Advanced: CLI + guardrails`,advancedBody:`Use this when you need deterministic reruns in CI (not required for your first outcome-focused export).`},ja:{badge:`まずここから`,title:`2つの入口から、同じスクショのビルド工程へ。`,subtitle:`開発者には MCP/CLI/CI、ASO / マーケにはブラウザ + CSV。どちらも既存クリエイティブを捨てずに、同じ release-safe contract へ載せるための入口です。`,useCases:[`1枚目で何が得られるか伝わらない`,`見出しが汎用的で、他の多くのアプリにも当てはまる`,`01..05 の命名/順序が崩れる`,`iPad互換や審査で詰まる`,`Fastlane/CI の提出ルートが不安定`,`coding agent に MCP か CLI を自動で選ばせたい`,`coding agent やCI向けの CLI/MCP 導線が必要`,`App Review / ASO 制約`],quickPathTitle:`役割に合わせて入口を選ぶ`,quickPathBullets:[`開発者は coding agent ガイドから入り、既存のFigma/Canva/AI/手動フローを維持したまま、このワークスペースで使える MCP または CLI を選ばせる。`,`ASO / マーケは、新しいデザインツールを覚えずに現行クリエイティブと CSV copy を確認したいときだけ browser first export を使う。`,`どちらの入口でも、最初の出力で 1枚目訴求、01..05 命名、upload root を確認してから広げる。`,`ShipScreens は既存のデザインスタックを置き換えるのではなく、リリース工程を固定する。`],quickPathPrimary:`coding agent ガイドを見る`,quickPathSecondary:`ブラウザ first export を開く`,agentPromptTitle:`coding agent に渡すプロンプト`,agentPromptBody:`Claude/Cursor/Copilot/Gemini を既に使っているなら、まずこれを貼るのが最短です。`,agentPrompt:`このモバイルアプリのリリース用スクリーンショットは、ShipScreens をビルド工程として使って進めてください。今のデザイン運用は維持し、この repo を確認して、このプロジェクトで使える MCP または CLI を選び、Fastlane 向けの再現できる出力を生成し、verify と stage を実行し、出力パス・警告・次の作業を短く報告してください。端末/言語スコープか1枚目訴求が不明なときだけ確認してください。`,agentPromptNote:`価値は「新しく作る」ことではなく、「1回指示するだけで ShipScreens がリリース工程を固める」ことです。`,demoTitle:`デモを書き出す(素材不要)`,demoBody:`まずフォルダ構成と再現性ZIPだけ確認したい場合はデモが最短です。捨てプロジェクトを生成し、クリーンな提出ルートまで stage します。`,demoCmd:`npx --yes shipscreens demo`,demoBullets:[`出力: fastlane/ + 再現性ZIP`,`提出用のクリーンなルートを stage`,`デモは削除してOK`],demoNote:`初回は npx がパッケージを取得するため時間がかかる場合があります。`,heroCliTitle:`CLIクイックスタート(2ステップ)`,heroCliNote:`wizard -> agent-run --stage(raw / Playwright不要)。`,heroCliSummary:`出力: fastlane/ + 再現性ZIP + staged upload root + proof report。`,heroCliCopyLabel:`コマンドをすべてコピー`,heroCliProLabel:`次にProを解除:`,heroCliProCmd:`npx --yes shipscreens auth login`,heroCliTemplatesLabel:`スターター雛形`,heroCliConfigLabel:`config.yml`,heroCliCsvLabel:`copy.csv`,heroCliCmd:[`npx --yes shipscreens wizard`,`npx --yes shipscreens agent-run --mode raw --zip --out out/agent --stage`].join(`
|
|
4
|
+
`),noLogin:`ログイン不要 / 無料ツール`,trustNote:`プライバシー: スクショはローカル保持。ShipScreensはアップロード前の出力整形に集中。`,cards:[{key:`agent_cli`,icon:y,title:`開発者向け: coding agent + CLI`,desc:`coding agent 向けかつ non-interactive: このワークスペースで使う MCP か CLI を選ばせ、既存PNGの再現できる build と提出前チェックで Fastlaneパス・命名・提出ルートの揺れを止めます。`,href:`/tools/agent-cli/`,cta:`coding agent ガイドを見る`},{key:`first_export`,icon:_,title:`ASO / マーケ向け: 5分で初回エクスポート`,desc:`browser-first の代替導線: 既存の見た目を維持したまま、成果訴求の5枚構成を確認してアップロード向け出力を作れます。`,href:`/tools/first-export/`,cta:`5分で出す`},{key:`calculator`,icon:f,title:`スクショ作業量 計算ツール`,desc:`端末x言語から合計枚数と手作業工数を見積もり、CSVテンプレもDLできます。`,href:`/tools/screenshot-workload-calculator/`,cta:`作業量を計算する`},{key:`fastlane_screenshots`,icon:E,title:`Fastlane スクショ フォルダ構成`,desc:`deliver/supply のパスを固定し、順序/命名ドリフトを抑えてCIで再現。`,href:`/tools/fastlane-screenshots/`,cta:`パスをコピーする`},{key:`framework`,icon:h,title:`5枚構成 スクショフレームワーク`,desc:`見た目は自由のまま、訴求順だけ固定する5枚構成(Hook→Problem→Proof→How→CTA)。`,href:`/tools/5-panel-screenshot-framework/`,cta:`フレームワークをダウンロード`},{key:`pipeline`,icon:T,title:`ストア素材パイプラインキット`,desc:`iPad 13-inch 実スクショ、サイズバケット、Play安全域 + App Review/ASO 制約を提出前に確認。`,href:`/tools/store-assets-pipeline/`,cta:`安全域ガイドを見る`},{key:`app_review_aso`,icon:v,title:`App Review / ASO クイックチェック`,desc:`提出前のミニチェック(伝わり方/ポリシー/安全域)。`,href:`/tools/app-review-aso/`,cta:`クイックチェックを見る`}],primaryCta:`coding agent ガイドを見る`,secondaryCta:`ブラウザ first export を開く`,cliTitle:`ブラウザ不要のCLI最短`,cliDesc:`raw モードでローカル出力し、提出前チェック(verify と stage)を足してアップロードルートを安定化。次に non-interactive な CI/agent 導線へ載せる。`,cliCmd:[`npx --yes shipscreens wizard`,`# assets/en-US/01.png〜05.png を差し替え`,`npx --yes shipscreens agent-run --mode raw --zip --out out/agent --stage`].join(`
|
|
5
|
+
`),cliCta:`coding agent ガイドを開く`,proUnlockTitle:`Proを解除(CLI)`,proUnlockBody:`透かし解除&フル一括(端末×言語)のために、まずはCLI認証を実行:`,proUnlockCmd:`npx --yes shipscreens auth login`,proUnlockNote:`初回のみブラウザでサインインします。以後は agent-run --require-pro で再実行。`,partnerTitle:`初回エクスポート15分レビュー`,partnerBody:`15分で現状フローを確認し、iPhone-first の最小構成、命名/順序、提出ルートを固める次アクションを返します。`,partnerEmailCta:`15分レビューを依頼`,partnerDmCta:`Xで15分レビュー相談`,partnerJump:`初回エクスポート15分レビューを依頼`,advancedTitle:`詳細: CLI + ガードレール`,advancedBody:`CIで決定的に再実行したいときに使います(初回の成果訴求確認では必須ではありません)。`}},M=()=>{let{i18n:e,t}=o(),n=A(e.resolvedLanguage||e.language),l=j[n]||j.en,f=t(`landing.partner`,{returnObjects:!0})||{},h=Array.isArray(f.scopeBullets)?f.scopeBullets.filter(Boolean):[],_=`support@shimaumaservices.co.jp`,v=t(`landing.partner.emailSubject`,{defaultValue:`ShipScreens release setup review`}),T=t(`landing.partner.emailBody`,{defaultValue:``}),E=`mailto:${_}?subject=${encodeURIComponent(v)}&body=${encodeURIComponent(T)}`,M=r({entrySource:`tools_index_design_partner_offer`,preset:`manual_figma`}),N=n===`ja`?`オファー詳細を見る`:`See offer details`,P=`#agent-handoff`,F=`/tools/first-export/?entry_source=tools_index_first_export`,I=t(`common.copy`,{defaultValue:`Copy`}),L=new Set([`first_export`,`agent_cli`]),R=l.cards.filter(e=>L.has(e.key)).map(e=>e.key===`agent_cli`?{...e,href:`/tools/agent-cli/?entry_source=tools_index_agent_cli`}:e),z=l.cards.filter(e=>!L.has(e.key));return c(`titles.tools`,{defaultValue:l.title}),(0,O.useEffect)(()=>{i(`tool_view`,{tool:`tools_index`})},[]),(0,k.jsxs)(`div`,{className:`min-h-screen bg-linear-to-b from-slate-950 via-slate-900 to-slate-950 text-white`,children:[(0,k.jsx)(s,{}),(0,k.jsx)(g,{variant:`dark`,active:`tools`,openAppHref:`/app/?sample=5panel&entry_source=tools_index_open_app_header`,onToolsClick:e=>a(e,`tool_cta_click`,{tool:`tools_index`,cta:`open_tools_header`}),onPricingClick:e=>a(e,`tool_cta_click`,{tool:`tools_index`,cta:`pricing_header`}),onOpenAppClick:e=>a(e,`tool_cta_click`,{tool:`tools_index`,cta:`open_app_header`}),primaryCta:{href:P,label:(0,k.jsxs)(`span`,{className:`inline-flex items-center gap-2`,children:[l.primaryCta,` `,(0,k.jsx)(u,{size:16})]}),onClick:e=>a(e,`tool_cta_click`,{tool:`tools_index`,cta:`open_agent_cli_header`})}}),(0,k.jsxs)(`main`,{className:`max-w-5xl mx-auto px-6 pb-24 space-y-10`,children:[(0,k.jsxs)(`section`,{className:`max-w-3xl mx-auto text-center space-y-4`,children:[(0,k.jsxs)(`div`,{className:`inline-flex items-center gap-2 px-3 py-1.5 rounded-full border border-slate-800 bg-slate-900/60 text-slate-200 text-xs font-semibold`,children:[(0,k.jsx)(D,{size:14}),l.badge]}),(0,k.jsx)(`h1`,{className:`text-3xl md:text-5xl font-black leading-tight`,children:l.title}),(0,k.jsx)(`p`,{className:`text-slate-300 text-lg leading-relaxed`,children:l.subtitle}),l.useCases?.length>0&&(0,k.jsx)(`div`,{className:`flex flex-wrap justify-center gap-2 text-xs text-slate-400`,children:l.useCases.map(e=>(0,k.jsx)(`span`,{className:`px-3 py-1 rounded-full border border-slate-800 bg-slate-900/60`,children:e},e))}),(0,k.jsxs)(`div`,{className:`max-w-xl mx-auto text-left bg-slate-900/60 border border-slate-800 rounded-2xl p-4 space-y-2`,children:[(0,k.jsx)(`div`,{className:`text-[11px] uppercase tracking-[0.2em] text-slate-500 font-semibold`,children:l.quickPathTitle}),(0,k.jsx)(`ul`,{className:`space-y-1 text-xs text-slate-300`,children:l.quickPathBullets.map(e=>(0,k.jsxs)(`li`,{className:`flex items-start gap-2`,children:[(0,k.jsx)(d,{size:14,className:`mt-0.5 text-green-400 shrink-0`}),(0,k.jsx)(`span`,{children:e})]},e))}),(0,k.jsxs)(`div`,{className:`flex flex-col sm:flex-row gap-2 pt-1`,children:[(0,k.jsxs)(`a`,{href:P,onClick:e=>a(e,`tool_cta_click`,{tool:`tools_index`,cta:`open_agent_cli_quick_path`}),className:`inline-flex items-center justify-center gap-2 px-3 py-2 rounded-lg bg-blue-500 text-white hover:bg-blue-600 transition text-xs font-semibold`,children:[l.quickPathPrimary,` `,(0,k.jsx)(u,{size:14})]}),(0,k.jsxs)(`a`,{href:F,onClick:e=>a(e,`tool_cta_click`,{tool:`tools_index`,cta:`open_first_export_quick_path`}),className:`inline-flex items-center justify-center gap-2 px-3 py-2 rounded-lg border border-slate-700 bg-slate-950 text-slate-200 hover:bg-slate-900 transition text-xs font-semibold`,children:[l.quickPathSecondary,` `,(0,k.jsx)(u,{size:14})]})]})]}),l.agentPrompt&&(0,k.jsx)(C,{sectionId:`agent-handoff`,lang:n,prompt:l.agentPrompt,promptTitle:l.agentPromptTitle,promptBody:l.agentPromptBody,promptNote:l.agentPromptNote,guideHref:`/tools/agent-cli/?entry_source=tools_index_agent_handoff#agent-bootstrap`,className:`max-w-4xl mx-auto text-left`,onPromptCopied:e=>i(`tool_cta_click`,{tool:`tools_index`,cta:`copy_agent_prompt`,client:e.id}),onBundleCopied:e=>i(`tool_cta_click`,{tool:`tools_index`,cta:`copy_bootstrap_bundle_${e.id}`,client:e.id}),onClientCommandCopied:e=>i(`tool_cta_click`,{tool:`tools_index`,cta:`copy_client_bootstrap_${e.id}`,client:e.id}),onClientDownload:e=>i(`tool_download`,{tool:`tools_index`,asset:`client_bootstrap_${e.id}`,client:e.id}),onGuideClick:(e,t)=>a(e,`tool_cta_click`,{tool:`tools_index`,cta:`open_agent_handoff_guide`,client:t.id})})]}),(0,k.jsxs)(`section`,{className:`space-y-4`,children:[(0,k.jsx)(`div`,{className:`text-xs uppercase tracking-[0.2em] text-slate-500 font-semibold text-center`,children:n===`ja`?`まずここから`:`Start here`}),(0,k.jsx)(`div`,{className:`grid md:grid-cols-2 gap-6`,children:R.map(e=>{let t=e.icon;return(0,k.jsxs)(`div`,{className:`bg-slate-900/70 border border-slate-700 rounded-2xl p-6 space-y-4`,children:[(0,k.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,k.jsx)(`div`,{className:`w-10 h-10 rounded-xl border border-slate-700 bg-slate-950 flex items-center justify-center`,children:(0,k.jsx)(t,{size:18,className:`text-slate-200`})}),(0,k.jsx)(`div`,{className:`text-lg font-bold text-white`,children:e.title})]}),(0,k.jsx)(`p`,{className:`text-sm text-slate-300 leading-relaxed`,children:e.desc}),(0,k.jsxs)(`a`,{href:e.href,onClick:t=>a(t,`tool_cta_click`,{tool:`tools_index`,cta:`open_${e.key}`}),className:`inline-flex items-center justify-center gap-2 px-4 py-3 rounded-xl bg-blue-500 text-white font-bold hover:bg-blue-600 transition w-full`,children:[e.cta,` `,(0,k.jsx)(u,{size:16})]})]},e.key)})})]}),(0,k.jsx)(S,{className:`max-w-4xl mx-auto w-full`}),(0,k.jsx)(`section`,{className:`grid md:grid-cols-2 lg:grid-cols-4 gap-4`,children:z.map(e=>{let t=e.icon;return(0,k.jsxs)(`div`,{className:`bg-slate-900/50 border border-slate-800 rounded-2xl p-5 space-y-3`,children:[(0,k.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,k.jsx)(`div`,{className:`w-9 h-9 rounded-xl border border-slate-800 bg-slate-950 flex items-center justify-center`,children:(0,k.jsx)(t,{size:16,className:`text-slate-200`})}),(0,k.jsx)(`div`,{className:`text-sm font-bold text-white`,children:e.title})]}),(0,k.jsx)(`p`,{className:`text-xs text-slate-300 leading-relaxed`,children:e.desc}),(0,k.jsxs)(`a`,{href:e.href,onClick:t=>a(t,`tool_cta_click`,{tool:`tools_index`,cta:`open_${e.key}`}),className:`inline-flex items-center justify-center gap-2 px-3 py-2 rounded-lg border border-slate-700 bg-slate-950 text-slate-200 font-semibold text-xs hover:bg-slate-900 transition w-full`,children:[e.cta,` `,(0,k.jsx)(u,{size:14})]})]},e.key)})}),(0,k.jsx)(`section`,{className:`max-w-3xl mx-auto`,children:(0,k.jsxs)(`details`,{className:`bg-slate-900/60 border border-slate-800 rounded-2xl p-5 group`,children:[(0,k.jsxs)(`summary`,{className:`flex items-center justify-between text-sm font-bold text-white cursor-pointer list-none`,children:[(0,k.jsx)(`span`,{children:l.advancedTitle}),(0,k.jsx)(`span`,{className:`text-[10px] font-semibold tracking-[0.2em] text-slate-400`,children:n===`ja`?`任意`:`OPTIONAL`})]}),(0,k.jsxs)(`div`,{className:`mt-3 space-y-4`,children:[(0,k.jsx)(`p`,{className:`text-sm text-slate-300`,children:l.advancedBody}),(0,k.jsxs)(`div`,{className:`max-w-xl mx-auto text-left bg-slate-900/60 border border-slate-800 rounded-2xl p-4 space-y-2`,children:[(0,k.jsx)(`div`,{className:`text-[11px] uppercase tracking-[0.2em] text-slate-500 font-semibold`,children:l.heroCliTitle}),(0,k.jsx)(`p`,{className:`text-xs text-slate-400`,children:l.heroCliNote}),(0,k.jsx)(`p`,{className:`text-xs text-slate-500`,children:l.heroCliSummary}),(0,k.jsx)(`div`,{className:`rounded-xl border border-slate-800 bg-slate-950 p-3`,children:(0,k.jsx)(`pre`,{className:`text-xs text-slate-200 whitespace-pre-wrap`,children:l.heroCliCmd})}),(0,k.jsx)(`div`,{className:`flex flex-col sm:flex-row gap-2`,children:(0,k.jsx)(m,{value:l.heroCliCmd,onCopied:()=>i(`tool_cta_click`,{tool:`tools_index`,cta:`copy_cli_hero`}),className:`inline-flex items-center justify-center gap-2 px-3 py-2 rounded-lg border border-slate-700 bg-slate-950 text-slate-200 hover:bg-slate-900 transition text-xs font-semibold`,children:({copyLabel:e,copyState:t})=>(0,k.jsxs)(k.Fragment,{children:[(0,k.jsx)(p,{size:14}),t===`idle`?l.heroCliCopyLabel:e||I]})})}),l.heroCliProCmd&&(0,k.jsxs)(`div`,{className:`flex flex-wrap items-center gap-3 text-xs text-slate-400`,children:[l.heroCliProLabel&&(0,k.jsx)(`span`,{children:l.heroCliProLabel}),(0,k.jsxs)(`div`,{className:`inline-flex items-center gap-2 px-2 py-1 rounded-md border border-slate-800 bg-slate-950 text-slate-200`,children:[(0,k.jsx)(`code`,{children:l.heroCliProCmd}),(0,k.jsx)(m,{value:l.heroCliProCmd,onCopied:()=>i(`tool_cta_click`,{tool:`tools_index`,cta:`copy_cli_pro_unlock_hero`}),className:`text-[11px] px-2 py-0.5 rounded-md border border-slate-700 bg-slate-900/60 text-slate-200 hover:bg-slate-900 transition`})]})]}),(0,k.jsxs)(`div`,{className:`pt-1 space-y-2`,children:[(0,k.jsx)(`div`,{className:`text-[10px] uppercase tracking-[0.2em] text-slate-500 font-semibold`,children:l.heroCliTemplatesLabel}),(0,k.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,k.jsx)(`a`,{href:`/downloads/shipscreens-agent-cli-config.yml`,download:!0,onClick:()=>i(`tool_download`,{tool:`tools_index`,asset:`config_template`}),className:`inline-flex items-center justify-center gap-2 px-2.5 py-1.5 rounded-md border border-slate-700 bg-slate-950 text-[11px] text-slate-200 hover:bg-slate-900 transition`,children:l.heroCliConfigLabel}),(0,k.jsx)(`a`,{href:`/downloads/shipscreens-agent-cli-copy.csv`,download:!0,onClick:()=>i(`tool_download`,{tool:`tools_index`,asset:`copy_template`}),className:`inline-flex items-center justify-center gap-2 px-2.5 py-1.5 rounded-md border border-slate-700 bg-slate-950 text-[11px] text-slate-200 hover:bg-slate-900 transition`,children:l.heroCliCsvLabel})]})]})]}),(0,k.jsxs)(`div`,{className:`max-w-xl mx-auto text-left bg-slate-900/60 border border-slate-800 rounded-2xl p-4 space-y-2`,children:[(0,k.jsxs)(`div`,{className:`flex items-center gap-2 text-[11px] uppercase tracking-[0.2em] text-slate-500 font-semibold`,children:[(0,k.jsx)(y,{size:14,className:`text-blue-300`}),l.demoTitle]}),(0,k.jsx)(`p`,{className:`text-xs text-slate-400`,children:l.demoBody}),(0,k.jsx)(`div`,{className:`rounded-xl border border-slate-800 bg-slate-950 p-3`,children:(0,k.jsx)(`pre`,{className:`text-xs text-slate-200 whitespace-pre-wrap`,children:l.demoCmd})}),(0,k.jsx)(`div`,{className:`flex flex-col sm:flex-row gap-2`,children:(0,k.jsx)(m,{value:l.demoCmd,onCopied:()=>i(`tool_cta_click`,{tool:`tools_index`,cta:`copy_demo_cmd`}),className:`inline-flex items-center justify-center gap-2 px-3 py-2 rounded-lg border border-slate-700 bg-slate-950 text-slate-200 hover:bg-slate-900 transition text-xs font-semibold`,children:({copyLabel:e,copyState:t})=>(0,k.jsxs)(k.Fragment,{children:[(0,k.jsx)(p,{size:14}),t===`idle`?I:e||I]})})}),l.demoBullets?.length>0&&(0,k.jsx)(`ul`,{className:`space-y-1 text-xs text-slate-300 pt-1`,children:l.demoBullets.map(e=>(0,k.jsxs)(`li`,{className:`flex items-start gap-2`,children:[(0,k.jsx)(d,{size:14,className:`mt-0.5 text-green-400 shrink-0`}),(0,k.jsx)(`span`,{children:e})]},e))}),l.demoNote&&(0,k.jsx)(`div`,{className:`text-[11px] text-slate-500`,children:l.demoNote})]}),(0,k.jsx)(w,{title:n===`ja`?`詳細: CLIガードレール + Pro解除`:`Advanced: CLI guardrails + Pro unlock`,copyButtonLabel:I,codeToggleLabel:t(`common.showCommands`,{defaultValue:`Show commands`}),preflightHref:`/tools/agent-cli/#preflight`,onPreflightClick:e=>a(e,`tool_cta_click`,{tool:`tools_index`,cta:`open_cli_preflight`}),proUnlockTitle:l.proUnlockTitle,proUnlockBody:l.proUnlockBody,proUnlockCmd:l.proUnlockCmd,proUnlockNote:l.proUnlockNote,onProUnlockCopied:()=>i(`tool_cta_click`,{tool:`tools_index`,cta:`copy_cli_pro_unlock`})}),(0,k.jsx)(b,{compact:!0,href:`/tools/agent-cli/#preflight`,onClick:e=>a(e,`tool_cta_click`,{tool:`tools_index`,cta:`open_cli_preflight_card`}),className:`max-w-xl mx-auto`})]})]})}),(0,k.jsxs)(`section`,{id:`design-partner`,className:`max-w-3xl mx-auto bg-slate-900/60 border border-slate-800 rounded-2xl p-6 space-y-4`,children:[(0,k.jsx)(`div`,{className:`text-lg font-bold text-white`,children:f.title||l.partnerTitle}),(0,k.jsx)(`div`,{className:`text-sm text-slate-300 leading-relaxed`,children:f.body||l.partnerBody}),h.length>0&&(0,k.jsx)(`ul`,{className:`space-y-2 text-sm text-slate-300 list-disc pl-5`,children:h.map(e=>(0,k.jsx)(`li`,{children:e},e))}),(0,k.jsxs)(`a`,{href:M,onClick:e=>a(e,`tool_cta_click`,{tool:`tools_index`,cta:`open_design_partner_offer`}),className:`inline-flex items-center gap-2 text-sm text-blue-200 hover:text-blue-100 underline underline-offset-4`,children:[N,` `,(0,k.jsx)(u,{size:14})]}),(0,k.jsxs)(`div`,{className:`flex flex-col sm:flex-row gap-3`,children:[(0,k.jsxs)(`a`,{href:E,onClick:()=>i(`tool_cta_click`,{tool:`tools_index`,cta:`email_design_partner`}),className:`flex-1 inline-flex items-center justify-center gap-2 px-4 py-3 rounded-xl bg-blue-500 text-white font-bold hover:bg-blue-600 transition`,children:[f.emailCta||l.partnerEmailCta,` `,(0,k.jsx)(u,{size:16})]}),(0,k.jsx)(`a`,{href:`https://x.com/shipscreenscom`,target:`_blank`,rel:`noopener noreferrer`,onClick:()=>i(`tool_cta_click`,{tool:`tools_index`,cta:`dm_design_partner`}),className:`flex-1 inline-flex items-center justify-center gap-2 px-4 py-3 rounded-xl border border-slate-700 bg-slate-950 text-slate-200 hover:bg-slate-900 transition`,children:f.dmCta||l.partnerDmCta}),(0,k.jsxs)(`a`,{href:`/pricing?offer=pay_first&entry_source=tools_index_pay_first_partner_block`,onClick:e=>a(e,`tool_cta_click`,{tool:`tools_index`,cta:`open_pay_first_from_partner_block`}),className:`flex-1 inline-flex items-center justify-center gap-2 px-4 py-3 rounded-xl border border-emerald-500/40 bg-emerald-500/10 text-emerald-100 font-semibold hover:bg-emerald-500/15 transition`,children:[f.payFirstCta||t(`landing.partner.payFirstCta`),` `,(0,k.jsx)(u,{size:16})]})]}),(0,k.jsxs)(`div`,{className:`text-xs text-slate-500`,children:[f.emailLabel||(n===`ja`?`メール: `:`Email: `),(0,k.jsx)(`a`,{href:`mailto:${_}`,className:`underline underline-offset-4 hover:text-white`,children:_})]})]})]}),(0,k.jsx)(x,{note:l.noLogin,primary:{label:l.primaryCta,href:P,onClick:e=>a(e,`tool_cta_click`,{tool:`tools_index`,cta:`sticky_agent_cli`})},secondary:{label:l.secondaryCta,href:F,onClick:e=>a(e,`tool_cta_click`,{tool:`tools_index`,cta:`sticky_first_export`})}})]})};export{M as default};
|
|
6
|
+
//# sourceMappingURL=ToolsIndex-d1szo5bn.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ToolsIndex-d1szo5bn.js","names":["__iconNode","__iconNode"],"sources":["../../node_modules/lucide-react/dist/esm/icons/clipboard-list.mjs","../../node_modules/lucide-react/dist/esm/icons/folder.mjs","../../node_modules/lucide-react/dist/esm/icons/wrench.mjs","../../src/pages/ToolsIndex.jsx"],"sourcesContent":["/**\n * @license lucide-react v1.18.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\"rect\", { width: \"8\", height: \"4\", x: \"8\", y: \"2\", rx: \"1\", ry: \"1\", key: \"tgr4d6\" }],\n [\n \"path\",\n {\n d: \"M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2\",\n key: \"116196\"\n }\n ],\n [\"path\", { d: \"M12 11h4\", key: \"1jrz19\" }],\n [\"path\", { d: \"M12 16h4\", key: \"n85exb\" }],\n [\"path\", { d: \"M8 11h.01\", key: \"1dfujw\" }],\n [\"path\", { d: \"M8 16h.01\", key: \"18s6g9\" }]\n];\nconst ClipboardList = createLucideIcon(\"clipboard-list\", __iconNode);\n\nexport { __iconNode, ClipboardList as default };\n//# sourceMappingURL=clipboard-list.mjs.map\n","/**\n * @license lucide-react v1.18.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __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];\nconst Folder = createLucideIcon(\"folder\", __iconNode);\n\nexport { __iconNode, Folder as default };\n//# sourceMappingURL=folder.mjs.map\n","/**\n * @license lucide-react v1.18.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z\",\n key: \"1ngwbx\"\n }\n ]\n];\nconst Wrench = createLucideIcon(\"wrench\", __iconNode);\n\nexport { __iconNode, Wrench as default };\n//# sourceMappingURL=wrench.mjs.map\n","import React, { useEffect } from 'react';\nimport { ArrowRight, Calculator, CheckCircle2, ClipboardCopy, ClipboardList, Folder, LayoutGrid, Rocket, ShieldCheck, Terminal, Wrench } from 'lucide-react';\nimport { useTranslation } from 'react-i18next';\nimport AgentHandoffPanel from '../components/AgentHandoffPanel';\nimport CliPreflightCard from '../components/CliPreflightCard';\nimport CopyButton from '../components/CopyButton';\nimport FitPanel from '../components/FitPanel';\nimport StagingBadge from '../components/StagingBadge';\nimport StickyMobileCta from '../components/StickyMobileCta';\nimport SiteHeader from '../components/SiteHeader';\nimport ToolGuardrailsPanel from '../components/ToolGuardrailsPanel';\nimport usePageTitle from '../hooks/usePageTitle';\nimport { trackEvent, trackEventAndFollowLink } from '../lib/analytics';\nimport { buildDesignPartnerHref } from '../lib/designPartnerPrefill';\n\nconst normalizeLang = (lang) => {\n const base = (lang || '').split('-')[0];\n return base === 'ja' ? 'ja' : 'en';\n};\n\nconst COPY = {\n en: {\n badge: 'Start here',\n title: 'Two doors into the same screenshot build step.',\n subtitle:\n 'For developers: let your coding agent use ShipScreens with MCP/CLI/CI. For ASO / marketers: keep the current creative workflow and validate release-safe outputs in the browser first. Same deterministic contract underneath.',\n useCases: [\n 'Panel #1 is unclear (what outcome / for whom)',\n 'Headline sounds generic (could fit many apps)',\n '01..05 naming / order keeps drifting',\n 'iPad compatibility or review surprises',\n 'Fastlane/CI upload-root churn',\n 'Want the agent to choose MCP or CLI automatically',\n 'Need a CLI/MCP lane for coding agents or CI',\n 'App Review / ASO constraints',\n ],\n quickPathTitle: 'Pick the door that matches your role',\n quickPathBullets: [\n 'Developers: open the coding-agent guide, keep the current Figma/Canva/AI/manual workflow, and let the agent choose workspace-local MCP or CLI.',\n 'ASO / marketers: start with browser first export when you want to validate the current creative, panel order, and CSV-driven copy without learning another design tool.',\n 'In both cases, review panel #1 clarity, 01..05 naming, and upload roots on the first export before scaling.',\n 'ShipScreens handles release-safe reruns. It does not replace your design stack.',\n ],\n quickPathPrimary: 'Open the coding-agent guide',\n quickPathSecondary: 'Open browser first export',\n agentPromptTitle: 'Paste the agent prompt',\n agentPromptBody: 'Use this when Claude/Cursor/Copilot/Gemini is already part of your mobile app workflow.',\n agentPrompt:\n 'Use ShipScreens as the build step for our mobile release screenshots. Keep our current design workflow, inspect this repo, choose workspace-local MCP if available otherwise CLI, capture current device/emulator screens if no screenshot folder exists, generate deterministic Fastlane-ready outputs, run verify/stage, and return a short report with output paths, warnings, and next steps. Only ask me if device or locale scope, panel #1 messaging, or store-upload approval is unclear.',\n agentPromptNote:\n 'ShipScreens is not a screenshot generator. It turns one instruction into a deterministic release step around the screenshots you already have.',\n demoTitle: 'Run a demo export (no assets required)',\n demoBody:\n 'If you want to sanity-check the output roots first, run the demo. It creates a throwaway project and stages a clean upload tree.',\n demoCmd: 'npx --yes shipscreens demo',\n demoBullets: ['Output tree: fastlane/ + reproducible ZIP', 'Stages a clean upload root (deliver/supply-safe)', 'Delete the demo folder anytime'],\n demoNote: 'First run may take longer while npx downloads the package.',\n heroCliTitle: 'CLI quickstart (2 steps)',\n heroCliNote: 'wizard -> agent-run --stage (raw mode, no Playwright).',\n heroCliSummary: 'Outputs: fastlane/ + reproducible ZIP + staged upload root + proof reports.',\n heroCliCopyLabel: 'Copy all commands',\n heroCliProLabel: 'Then unlock Pro:',\n heroCliProCmd: 'npx --yes shipscreens auth login',\n heroCliTemplatesLabel: 'Starter templates',\n heroCliConfigLabel: 'config.yml',\n heroCliCsvLabel: 'copy.csv',\n heroCliCmd: [\n 'npx --yes shipscreens wizard',\n 'npx --yes shipscreens agent-run --mode raw --zip --out out/agent --stage',\n ].join('\\n'),\n noLogin: 'No login required · Free tools',\n trustNote: 'Privacy-first: screenshots stay on your device; ShipScreens prepares Fastlane-ready outputs.',\n cards: [\n {\n key: 'agent_cli',\n icon: Terminal,\n title: 'For developers: coding agent + CLI',\n desc: 'Agent-first and non-interactive: let the agent wire workspace-local MCP or the CLI around your existing PNGs so Fastlane paths, naming, and upload roots stop drifting in local/CI.',\n href: '/tools/agent-cli/',\n cta: 'Open the coding-agent guide',\n },\n {\n key: 'first_export',\n icon: Rocket,\n title: 'For ASO / marketers: 5-minute First Export',\n desc: 'Browser-first fallback: keep your design style, validate an outcome-first panel flow, and export a watermarked upload-ready bundle without changing your current tool stack.',\n href: '/tools/first-export/',\n cta: 'Start the 5-minute export',\n },\n {\n key: 'calculator',\n icon: Calculator,\n title: 'Screenshot Workload Calculator',\n desc: 'See the real image count from devices x locales, and grab a CSV copy template.',\n href: '/tools/screenshot-workload-calculator/',\n cta: 'Calculate workload',\n },\n {\n key: 'fastlane_screenshots',\n icon: Folder,\n title: 'Fastlane Screenshot Folder Structure',\n desc: 'Copy/paste deliver + supply paths, then prevent ordering/path drift with reproducible exports in CI.',\n href: '/tools/fastlane-screenshots/',\n cta: 'Copy the Fastlane paths',\n },\n {\n key: 'framework',\n icon: LayoutGrid,\n title: '5-panel Screenshot Framework',\n desc: 'A narrative script that keeps panel #1 concrete (outcome first) while preserving your own visual style.',\n href: '/tools/5-panel-screenshot-framework/',\n cta: 'Download the framework',\n },\n {\n key: 'pipeline',\n icon: ClipboardList,\n title: 'Store Assets Pipeline Kit',\n desc: 'Safe-area guide, size buckets, and capture checklist for iPad 13-inch + App Review/ASO constraints before upload.',\n href: '/tools/store-assets-pipeline/',\n cta: 'Get the safe-area guide',\n },\n {\n key: 'app_review_aso',\n icon: ShieldCheck,\n title: 'App Review + ASO Quick Check',\n desc: 'A short pre-upload checklist for clarity, policy-safe claims, and store-safe screenshots.',\n href: '/tools/app-review-aso/',\n cta: 'Open the quick check',\n },\n ],\n primaryCta: 'Open the coding-agent guide',\n secondaryCta: 'Open browser first export',\n cliTitle: 'No browser? CLI quickstart',\n cliDesc: 'Run agent-run in raw mode so build, verify, stage, and report stay together for a non-interactive CI/agent lane.',\n cliCmd: [\n 'npx --yes shipscreens wizard',\n '# replace assets/en-US/01.png..05.png',\n 'npx --yes shipscreens agent-run --mode raw --zip --out out/agent --stage',\n ].join('\\n'),\n cliCta: 'Open tell-your-agent guide',\n proUnlockTitle: 'Unlock Pro (CLI)',\n proUnlockBody: 'Remove the watermark and unlock full matrix batch exports via CLI auth:',\n proUnlockCmd: 'npx --yes shipscreens auth login',\n proUnlockNote: 'Completes a one-time browser sign-in; then rerun agent-run with --require-pro.',\n partnerTitle: '15-min first export review',\n partnerBody:\n 'In 15 minutes, we map your current flow to an iPhone-first contract, stable naming/order, and upload-safe next steps for the next release.',\n partnerEmailCta: 'Get a 15-min review',\n partnerDmCta: 'DM for a 15-min review',\n partnerJump: 'Get a 15-min first-export review',\n advancedTitle: 'Advanced: CLI + guardrails',\n advancedBody: 'Use this when you need deterministic reruns in CI (not required for your first outcome-focused export).',\n },\n ja: {\n badge: 'まずここから',\n title: '2つの入口から、同じスクショのビルド工程へ。',\n subtitle:\n '開発者には MCP/CLI/CI、ASO / マーケにはブラウザ + CSV。どちらも既存クリエイティブを捨てずに、同じ release-safe contract へ載せるための入口です。',\n useCases: [\n '1枚目で何が得られるか伝わらない',\n '見出しが汎用的で、他の多くのアプリにも当てはまる',\n '01..05 の命名/順序が崩れる',\n 'iPad互換や審査で詰まる',\n 'Fastlane/CI の提出ルートが不安定',\n 'coding agent に MCP か CLI を自動で選ばせたい',\n 'coding agent やCI向けの CLI/MCP 導線が必要',\n 'App Review / ASO 制約',\n ],\n quickPathTitle: '役割に合わせて入口を選ぶ',\n quickPathBullets: [\n '開発者は coding agent ガイドから入り、既存のFigma/Canva/AI/手動フローを維持したまま、このワークスペースで使える MCP または CLI を選ばせる。',\n 'ASO / マーケは、新しいデザインツールを覚えずに現行クリエイティブと CSV copy を確認したいときだけ browser first export を使う。',\n 'どちらの入口でも、最初の出力で 1枚目訴求、01..05 命名、upload root を確認してから広げる。',\n 'ShipScreens は既存のデザインスタックを置き換えるのではなく、リリース工程を固定する。',\n ],\n quickPathPrimary: 'coding agent ガイドを見る',\n quickPathSecondary: 'ブラウザ first export を開く',\n agentPromptTitle: 'coding agent に渡すプロンプト',\n agentPromptBody: 'Claude/Cursor/Copilot/Gemini を既に使っているなら、まずこれを貼るのが最短です。',\n agentPrompt:\n 'このモバイルアプリのリリース用スクリーンショットは、ShipScreens をビルド工程として使って進めてください。今のデザイン運用は維持し、この repo を確認して、このプロジェクトで使える MCP または CLI を選び、Fastlane 向けの再現できる出力を生成し、verify と stage を実行し、出力パス・警告・次の作業を短く報告してください。端末/言語スコープか1枚目訴求が不明なときだけ確認してください。',\n agentPromptNote: '価値は「新しく作る」ことではなく、「1回指示するだけで ShipScreens がリリース工程を固める」ことです。',\n demoTitle: 'デモを書き出す(素材不要)',\n demoBody:\n 'まずフォルダ構成と再現性ZIPだけ確認したい場合はデモが最短です。捨てプロジェクトを生成し、クリーンな提出ルートまで stage します。',\n demoCmd: 'npx --yes shipscreens demo',\n demoBullets: ['出力: fastlane/ + 再現性ZIP', '提出用のクリーンなルートを stage', 'デモは削除してOK'],\n demoNote: '初回は npx がパッケージを取得するため時間がかかる場合があります。',\n heroCliTitle: 'CLIクイックスタート(2ステップ)',\n heroCliNote: 'wizard -> agent-run --stage(raw / Playwright不要)。',\n heroCliSummary: '出力: fastlane/ + 再現性ZIP + staged upload root + proof report。',\n heroCliCopyLabel: 'コマンドをすべてコピー',\n heroCliProLabel: '次にProを解除:',\n heroCliProCmd: 'npx --yes shipscreens auth login',\n heroCliTemplatesLabel: 'スターター雛形',\n heroCliConfigLabel: 'config.yml',\n heroCliCsvLabel: 'copy.csv',\n heroCliCmd: [\n 'npx --yes shipscreens wizard',\n 'npx --yes shipscreens agent-run --mode raw --zip --out out/agent --stage',\n ].join('\\n'),\n noLogin: 'ログイン不要 / 無料ツール',\n trustNote: 'プライバシー: スクショはローカル保持。ShipScreensはアップロード前の出力整形に集中。',\n cards: [\n {\n key: 'agent_cli',\n icon: Terminal,\n title: '開発者向け: coding agent + CLI',\n desc: 'coding agent 向けかつ non-interactive: このワークスペースで使う MCP か CLI を選ばせ、既存PNGの再現できる build と提出前チェックで Fastlaneパス・命名・提出ルートの揺れを止めます。',\n href: '/tools/agent-cli/',\n cta: 'coding agent ガイドを見る',\n },\n {\n key: 'first_export',\n icon: Rocket,\n title: 'ASO / マーケ向け: 5分で初回エクスポート',\n desc: 'browser-first の代替導線: 既存の見た目を維持したまま、成果訴求の5枚構成を確認してアップロード向け出力を作れます。',\n href: '/tools/first-export/',\n cta: '5分で出す',\n },\n {\n key: 'calculator',\n icon: Calculator,\n title: 'スクショ作業量 計算ツール',\n desc: '端末x言語から合計枚数と手作業工数を見積もり、CSVテンプレもDLできます。',\n href: '/tools/screenshot-workload-calculator/',\n cta: '作業量を計算する',\n },\n {\n key: 'fastlane_screenshots',\n icon: Folder,\n title: 'Fastlane スクショ フォルダ構成',\n desc: 'deliver/supply のパスを固定し、順序/命名ドリフトを抑えてCIで再現。',\n href: '/tools/fastlane-screenshots/',\n cta: 'パスをコピーする',\n },\n {\n key: 'framework',\n icon: LayoutGrid,\n title: '5枚構成 スクショフレームワーク',\n desc: '見た目は自由のまま、訴求順だけ固定する5枚構成(Hook→Problem→Proof→How→CTA)。',\n href: '/tools/5-panel-screenshot-framework/',\n cta: 'フレームワークをダウンロード',\n },\n {\n key: 'pipeline',\n icon: ClipboardList,\n title: 'ストア素材パイプラインキット',\n desc: 'iPad 13-inch 実スクショ、サイズバケット、Play安全域 + App Review/ASO 制約を提出前に確認。',\n href: '/tools/store-assets-pipeline/',\n cta: '安全域ガイドを見る',\n },\n {\n key: 'app_review_aso',\n icon: ShieldCheck,\n title: 'App Review / ASO クイックチェック',\n desc: '提出前のミニチェック(伝わり方/ポリシー/安全域)。',\n href: '/tools/app-review-aso/',\n cta: 'クイックチェックを見る',\n },\n ],\n primaryCta: 'coding agent ガイドを見る',\n secondaryCta: 'ブラウザ first export を開く',\n cliTitle: 'ブラウザ不要のCLI最短',\n cliDesc: 'raw モードでローカル出力し、提出前チェック(verify と stage)を足してアップロードルートを安定化。次に non-interactive な CI/agent 導線へ載せる。',\n cliCmd: [\n 'npx --yes shipscreens wizard',\n '# assets/en-US/01.png〜05.png を差し替え',\n 'npx --yes shipscreens agent-run --mode raw --zip --out out/agent --stage',\n ].join('\\n'),\n cliCta: 'coding agent ガイドを開く',\n proUnlockTitle: 'Proを解除(CLI)',\n proUnlockBody: '透かし解除&フル一括(端末×言語)のために、まずはCLI認証を実行:',\n proUnlockCmd: 'npx --yes shipscreens auth login',\n proUnlockNote: '初回のみブラウザでサインインします。以後は agent-run --require-pro で再実行。',\n partnerTitle: '初回エクスポート15分レビュー',\n partnerBody: '15分で現状フローを確認し、iPhone-first の最小構成、命名/順序、提出ルートを固める次アクションを返します。',\n partnerEmailCta: '15分レビューを依頼',\n partnerDmCta: 'Xで15分レビュー相談',\n partnerJump: '初回エクスポート15分レビューを依頼',\n advancedTitle: '詳細: CLI + ガードレール',\n advancedBody: 'CIで決定的に再実行したいときに使います(初回の成果訴求確認では必須ではありません)。',\n },\n};\n\nconst ToolsIndex = () => {\n const { i18n, t } = useTranslation();\n const lang = normalizeLang(i18n.resolvedLanguage || i18n.language);\n const copy = COPY[lang] || COPY.en;\n const partnerCopy = t('landing.partner', { returnObjects: true }) || {};\n const partnerScopeBullets = Array.isArray(partnerCopy.scopeBullets) ? partnerCopy.scopeBullets.filter(Boolean) : [];\n const supportEmail = 'support@shimaumaservices.co.jp';\n const mailSubject = t('landing.partner.emailSubject', { defaultValue: 'ShipScreens release setup review' });\n const mailBody = t('landing.partner.emailBody', { defaultValue: '' });\n const partnerMailto = `mailto:${supportEmail}?subject=${encodeURIComponent(mailSubject)}&body=${encodeURIComponent(\n mailBody\n )}`;\n const designPartnerOfferHref = buildDesignPartnerHref({\n entrySource: 'tools_index_design_partner_offer',\n preset: 'manual_figma',\n });\n const payFirstPartnerHref = '/pricing?offer=pay_first&entry_source=tools_index_pay_first_partner_block';\n const designPartnerOfferLabel = lang === 'ja' ? 'オファー詳細を見る' : 'See offer details';\n const openAppHref = '/app/?sample=5panel&entry_source=tools_index_open_app_header';\n const agentHandoffHref = '#agent-handoff';\n const agentCliGuideHref = '/tools/agent-cli/?entry_source=tools_index_agent_handoff#agent-bootstrap';\n const agentCliGuideCardHref = '/tools/agent-cli/?entry_source=tools_index_agent_cli';\n const firstExportHref = '/tools/first-export/?entry_source=tools_index_first_export';\n const configDownloadHref = '/downloads/shipscreens-agent-cli-config.yml';\n const csvDownloadHref = '/downloads/shipscreens-agent-cli-copy.csv';\n const copyButtonLabel = t('common.copy', { defaultValue: 'Copy' });\n const primaryCardKeys = new Set(['first_export', 'agent_cli']);\n const primaryCards = copy.cards\n .filter((card) => primaryCardKeys.has(card.key))\n .map((card) => (card.key === 'agent_cli' ? { ...card, href: agentCliGuideCardHref } : card));\n const secondaryCards = copy.cards.filter((card) => !primaryCardKeys.has(card.key));\n\n usePageTitle('titles.tools', { defaultValue: copy.title });\n\n useEffect(() => {\n trackEvent('tool_view', { tool: 'tools_index' });\n }, []);\n\n return (\n <div className=\"min-h-screen bg-linear-to-b from-slate-950 via-slate-900 to-slate-950 text-white\">\n <StagingBadge />\n <SiteHeader\n variant=\"dark\"\n active=\"tools\"\n openAppHref={openAppHref}\n onToolsClick={(event) => trackEventAndFollowLink(event, 'tool_cta_click', { tool: 'tools_index', cta: 'open_tools_header' })}\n onPricingClick={(event) =>\n trackEventAndFollowLink(event, 'tool_cta_click', { tool: 'tools_index', cta: 'pricing_header' })\n }\n onOpenAppClick={(event) => trackEventAndFollowLink(event, 'tool_cta_click', { tool: 'tools_index', cta: 'open_app_header' })}\n primaryCta={{\n href: agentHandoffHref,\n label: (\n <span className=\"inline-flex items-center gap-2\">\n {copy.primaryCta} <ArrowRight size={16} />\n </span>\n ),\n onClick: (event) =>\n trackEventAndFollowLink(event, 'tool_cta_click', { tool: 'tools_index', cta: 'open_agent_cli_header' }),\n }}\n />\n\n <main className=\"max-w-5xl mx-auto px-6 pb-24 space-y-10\">\n <section className=\"max-w-3xl mx-auto text-center space-y-4\">\n <div className=\"inline-flex items-center gap-2 px-3 py-1.5 rounded-full border border-slate-800 bg-slate-900/60 text-slate-200 text-xs font-semibold\">\n <Wrench size={14} />\n {copy.badge}\n </div>\n <h1 className=\"text-3xl md:text-5xl font-black leading-tight\">{copy.title}</h1>\n <p className=\"text-slate-300 text-lg leading-relaxed\">{copy.subtitle}</p>\n {copy.useCases?.length > 0 && (\n <div className=\"flex flex-wrap justify-center gap-2 text-xs text-slate-400\">\n {copy.useCases.map((item) => (\n <span key={item} className=\"px-3 py-1 rounded-full border border-slate-800 bg-slate-900/60\">\n {item}\n </span>\n ))}\n </div>\n )}\n <div className=\"max-w-xl mx-auto text-left bg-slate-900/60 border border-slate-800 rounded-2xl p-4 space-y-2\">\n <div className=\"text-[11px] uppercase tracking-[0.2em] text-slate-500 font-semibold\">{copy.quickPathTitle}</div>\n <ul className=\"space-y-1 text-xs text-slate-300\">\n {copy.quickPathBullets.map((item) => (\n <li key={item} className=\"flex items-start gap-2\">\n <CheckCircle2 size={14} className=\"mt-0.5 text-green-400 shrink-0\" />\n <span>{item}</span>\n </li>\n ))}\n </ul>\n <div className=\"flex flex-col sm:flex-row gap-2 pt-1\">\n <a\n href={agentHandoffHref}\n onClick={(event) =>\n trackEventAndFollowLink(event, 'tool_cta_click', { tool: 'tools_index', cta: 'open_agent_cli_quick_path' })\n }\n className=\"inline-flex items-center justify-center gap-2 px-3 py-2 rounded-lg bg-blue-500 text-white hover:bg-blue-600 transition text-xs font-semibold\"\n >\n {copy.quickPathPrimary} <ArrowRight size={14} />\n </a>\n <a\n href={firstExportHref}\n onClick={(event) =>\n trackEventAndFollowLink(event, 'tool_cta_click', { tool: 'tools_index', cta: 'open_first_export_quick_path' })\n }\n className=\"inline-flex items-center justify-center gap-2 px-3 py-2 rounded-lg border border-slate-700 bg-slate-950 text-slate-200 hover:bg-slate-900 transition text-xs font-semibold\"\n >\n {copy.quickPathSecondary} <ArrowRight size={14} />\n </a>\n </div>\n </div>\n {copy.agentPrompt && (\n <AgentHandoffPanel\n sectionId=\"agent-handoff\"\n lang={lang}\n prompt={copy.agentPrompt}\n promptTitle={copy.agentPromptTitle}\n promptBody={copy.agentPromptBody}\n promptNote={copy.agentPromptNote}\n guideHref={agentCliGuideHref}\n className=\"max-w-4xl mx-auto text-left\"\n onPromptCopied={(client) =>\n trackEvent('tool_cta_click', { tool: 'tools_index', cta: 'copy_agent_prompt', client: client.id })\n }\n onBundleCopied={(client) =>\n trackEvent('tool_cta_click', {\n tool: 'tools_index',\n cta: `copy_bootstrap_bundle_${client.id}`,\n client: client.id,\n })\n }\n onClientCommandCopied={(client) =>\n trackEvent('tool_cta_click', {\n tool: 'tools_index',\n cta: `copy_client_bootstrap_${client.id}`,\n client: client.id,\n })\n }\n onClientDownload={(client) =>\n trackEvent('tool_download', {\n tool: 'tools_index',\n asset: `client_bootstrap_${client.id}`,\n client: client.id,\n })\n }\n onGuideClick={(event, client) =>\n trackEventAndFollowLink(event, 'tool_cta_click', {\n tool: 'tools_index',\n cta: 'open_agent_handoff_guide',\n client: client.id,\n })\n }\n />\n )}\n </section>\n\n <section className=\"space-y-4\">\n <div className=\"text-xs uppercase tracking-[0.2em] text-slate-500 font-semibold text-center\">\n {lang === 'ja' ? 'まずここから' : 'Start here'}\n </div>\n <div className=\"grid md:grid-cols-2 gap-6\">\n {primaryCards.map((card) => {\n const Icon = card.icon;\n return (\n <div key={card.key} className=\"bg-slate-900/70 border border-slate-700 rounded-2xl p-6 space-y-4\">\n <div className=\"flex items-center gap-3\">\n <div className=\"w-10 h-10 rounded-xl border border-slate-700 bg-slate-950 flex items-center justify-center\">\n <Icon size={18} className=\"text-slate-200\" />\n </div>\n <div className=\"text-lg font-bold text-white\">{card.title}</div>\n </div>\n <p className=\"text-sm text-slate-300 leading-relaxed\">{card.desc}</p>\n <a\n href={card.href}\n onClick={(event) =>\n trackEventAndFollowLink(event, 'tool_cta_click', { tool: 'tools_index', cta: `open_${card.key}` })\n }\n className=\"inline-flex items-center justify-center gap-2 px-4 py-3 rounded-xl bg-blue-500 text-white font-bold hover:bg-blue-600 transition w-full\"\n >\n {card.cta} <ArrowRight size={16} />\n </a>\n </div>\n );\n })}\n </div>\n </section>\n\n <FitPanel className=\"max-w-4xl mx-auto w-full\" />\n\n <section className=\"grid md:grid-cols-2 lg:grid-cols-4 gap-4\">\n {secondaryCards.map((card) => {\n const Icon = card.icon;\n return (\n <div key={card.key} className=\"bg-slate-900/50 border border-slate-800 rounded-2xl p-5 space-y-3\">\n <div className=\"flex items-center gap-3\">\n <div className=\"w-9 h-9 rounded-xl border border-slate-800 bg-slate-950 flex items-center justify-center\">\n <Icon size={16} className=\"text-slate-200\" />\n </div>\n <div className=\"text-sm font-bold text-white\">{card.title}</div>\n </div>\n <p className=\"text-xs text-slate-300 leading-relaxed\">{card.desc}</p>\n <a\n href={card.href}\n onClick={(event) =>\n trackEventAndFollowLink(event, 'tool_cta_click', { tool: 'tools_index', cta: `open_${card.key}` })\n }\n className=\"inline-flex items-center justify-center gap-2 px-3 py-2 rounded-lg border border-slate-700 bg-slate-950 text-slate-200 font-semibold text-xs hover:bg-slate-900 transition w-full\"\n >\n {card.cta} <ArrowRight size={14} />\n </a>\n </div>\n );\n })}\n </section>\n\n <section className=\"max-w-3xl mx-auto\">\n <details className=\"bg-slate-900/60 border border-slate-800 rounded-2xl p-5 group\">\n <summary className=\"flex items-center justify-between text-sm font-bold text-white cursor-pointer list-none\">\n <span>{copy.advancedTitle}</span>\n <span className=\"text-[10px] font-semibold tracking-[0.2em] text-slate-400\">\n {lang === 'ja' ? '任意' : 'OPTIONAL'}\n </span>\n </summary>\n <div className=\"mt-3 space-y-4\">\n <p className=\"text-sm text-slate-300\">{copy.advancedBody}</p>\n <div className=\"max-w-xl mx-auto text-left bg-slate-900/60 border border-slate-800 rounded-2xl p-4 space-y-2\">\n <div className=\"text-[11px] uppercase tracking-[0.2em] text-slate-500 font-semibold\">{copy.heroCliTitle}</div>\n <p className=\"text-xs text-slate-400\">{copy.heroCliNote}</p>\n <p className=\"text-xs text-slate-500\">{copy.heroCliSummary}</p>\n <div className=\"rounded-xl border border-slate-800 bg-slate-950 p-3\">\n <pre className=\"text-xs text-slate-200 whitespace-pre-wrap\">{copy.heroCliCmd}</pre>\n </div>\n <div className=\"flex flex-col sm:flex-row gap-2\">\n <CopyButton\n value={copy.heroCliCmd}\n onCopied={() => trackEvent('tool_cta_click', { tool: 'tools_index', cta: 'copy_cli_hero' })}\n className=\"inline-flex items-center justify-center gap-2 px-3 py-2 rounded-lg border border-slate-700 bg-slate-950 text-slate-200 hover:bg-slate-900 transition text-xs font-semibold\"\n >\n {({ copyLabel, copyState }) => (\n <>\n <ClipboardCopy size={14} />\n {copyState === 'idle' ? copy.heroCliCopyLabel : copyLabel || copyButtonLabel}\n </>\n )}\n </CopyButton>\n </div>\n {copy.heroCliProCmd && (\n <div className=\"flex flex-wrap items-center gap-3 text-xs text-slate-400\">\n {copy.heroCliProLabel && <span>{copy.heroCliProLabel}</span>}\n <div className=\"inline-flex items-center gap-2 px-2 py-1 rounded-md border border-slate-800 bg-slate-950 text-slate-200\">\n <code>{copy.heroCliProCmd}</code>\n <CopyButton\n value={copy.heroCliProCmd}\n onCopied={() => trackEvent('tool_cta_click', { tool: 'tools_index', cta: 'copy_cli_pro_unlock_hero' })}\n className=\"text-[11px] px-2 py-0.5 rounded-md border border-slate-700 bg-slate-900/60 text-slate-200 hover:bg-slate-900 transition\"\n />\n </div>\n </div>\n )}\n <div className=\"pt-1 space-y-2\">\n <div className=\"text-[10px] uppercase tracking-[0.2em] text-slate-500 font-semibold\">\n {copy.heroCliTemplatesLabel}\n </div>\n <div className=\"flex flex-wrap gap-2\">\n <a\n href={configDownloadHref}\n download\n onClick={() => trackEvent('tool_download', { tool: 'tools_index', asset: 'config_template' })}\n className=\"inline-flex items-center justify-center gap-2 px-2.5 py-1.5 rounded-md border border-slate-700 bg-slate-950 text-[11px] text-slate-200 hover:bg-slate-900 transition\"\n >\n {copy.heroCliConfigLabel}\n </a>\n <a\n href={csvDownloadHref}\n download\n onClick={() => trackEvent('tool_download', { tool: 'tools_index', asset: 'copy_template' })}\n className=\"inline-flex items-center justify-center gap-2 px-2.5 py-1.5 rounded-md border border-slate-700 bg-slate-950 text-[11px] text-slate-200 hover:bg-slate-900 transition\"\n >\n {copy.heroCliCsvLabel}\n </a>\n </div>\n </div>\n </div>\n <div className=\"max-w-xl mx-auto text-left bg-slate-900/60 border border-slate-800 rounded-2xl p-4 space-y-2\">\n <div className=\"flex items-center gap-2 text-[11px] uppercase tracking-[0.2em] text-slate-500 font-semibold\">\n <Terminal size={14} className=\"text-blue-300\" />\n {copy.demoTitle}\n </div>\n <p className=\"text-xs text-slate-400\">{copy.demoBody}</p>\n <div className=\"rounded-xl border border-slate-800 bg-slate-950 p-3\">\n <pre className=\"text-xs text-slate-200 whitespace-pre-wrap\">{copy.demoCmd}</pre>\n </div>\n <div className=\"flex flex-col sm:flex-row gap-2\">\n <CopyButton\n value={copy.demoCmd}\n onCopied={() => trackEvent('tool_cta_click', { tool: 'tools_index', cta: 'copy_demo_cmd' })}\n className=\"inline-flex items-center justify-center gap-2 px-3 py-2 rounded-lg border border-slate-700 bg-slate-950 text-slate-200 hover:bg-slate-900 transition text-xs font-semibold\"\n >\n {({ copyLabel, copyState }) => (\n <>\n <ClipboardCopy size={14} />\n {copyState === 'idle' ? copyButtonLabel : copyLabel || copyButtonLabel}\n </>\n )}\n </CopyButton>\n </div>\n {copy.demoBullets?.length > 0 && (\n <ul className=\"space-y-1 text-xs text-slate-300 pt-1\">\n {copy.demoBullets.map((item) => (\n <li key={item} className=\"flex items-start gap-2\">\n <CheckCircle2 size={14} className=\"mt-0.5 text-green-400 shrink-0\" />\n <span>{item}</span>\n </li>\n ))}\n </ul>\n )}\n {copy.demoNote && <div className=\"text-[11px] text-slate-500\">{copy.demoNote}</div>}\n </div>\n <ToolGuardrailsPanel\n title={lang === 'ja' ? '詳細: CLIガードレール + Pro解除' : 'Advanced: CLI guardrails + Pro unlock'}\n copyButtonLabel={copyButtonLabel}\n codeToggleLabel={t('common.showCommands', { defaultValue: 'Show commands' })}\n preflightHref=\"/tools/agent-cli/#preflight\"\n onPreflightClick={(event) =>\n trackEventAndFollowLink(event, 'tool_cta_click', { tool: 'tools_index', cta: 'open_cli_preflight' })\n }\n proUnlockTitle={copy.proUnlockTitle}\n proUnlockBody={copy.proUnlockBody}\n proUnlockCmd={copy.proUnlockCmd}\n proUnlockNote={copy.proUnlockNote}\n onProUnlockCopied={() => trackEvent('tool_cta_click', { tool: 'tools_index', cta: 'copy_cli_pro_unlock' })}\n />\n <CliPreflightCard\n compact\n href=\"/tools/agent-cli/#preflight\"\n onClick={(event) =>\n trackEventAndFollowLink(event, 'tool_cta_click', { tool: 'tools_index', cta: 'open_cli_preflight_card' })\n }\n className=\"max-w-xl mx-auto\"\n />\n </div>\n </details>\n </section>\n <section id=\"design-partner\" className=\"max-w-3xl mx-auto bg-slate-900/60 border border-slate-800 rounded-2xl p-6 space-y-4\">\n <div className=\"text-lg font-bold text-white\">{partnerCopy.title || copy.partnerTitle}</div>\n <div className=\"text-sm text-slate-300 leading-relaxed\">{partnerCopy.body || copy.partnerBody}</div>\n {partnerScopeBullets.length > 0 && (\n <ul className=\"space-y-2 text-sm text-slate-300 list-disc pl-5\">\n {partnerScopeBullets.map((item) => (\n <li key={item}>{item}</li>\n ))}\n </ul>\n )}\n <a\n href={designPartnerOfferHref}\n onClick={(event) =>\n trackEventAndFollowLink(event, 'tool_cta_click', { tool: 'tools_index', cta: 'open_design_partner_offer' })\n }\n className=\"inline-flex items-center gap-2 text-sm text-blue-200 hover:text-blue-100 underline underline-offset-4\"\n >\n {designPartnerOfferLabel} <ArrowRight size={14} />\n </a>\n <div className=\"flex flex-col sm:flex-row gap-3\">\n <a\n href={partnerMailto}\n onClick={() => trackEvent('tool_cta_click', { tool: 'tools_index', cta: 'email_design_partner' })}\n className=\"flex-1 inline-flex items-center justify-center gap-2 px-4 py-3 rounded-xl bg-blue-500 text-white font-bold hover:bg-blue-600 transition\"\n >\n {partnerCopy.emailCta || copy.partnerEmailCta} <ArrowRight size={16} />\n </a>\n <a\n href=\"https://x.com/shipscreenscom\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n onClick={() => trackEvent('tool_cta_click', { tool: 'tools_index', cta: 'dm_design_partner' })}\n className=\"flex-1 inline-flex items-center justify-center gap-2 px-4 py-3 rounded-xl border border-slate-700 bg-slate-950 text-slate-200 hover:bg-slate-900 transition\"\n >\n {partnerCopy.dmCta || copy.partnerDmCta}\n </a>\n <a\n href={payFirstPartnerHref}\n onClick={(event) =>\n trackEventAndFollowLink(event, 'tool_cta_click', { tool: 'tools_index', cta: 'open_pay_first_from_partner_block' })\n }\n className=\"flex-1 inline-flex items-center justify-center gap-2 px-4 py-3 rounded-xl border border-emerald-500/40 bg-emerald-500/10 text-emerald-100 font-semibold hover:bg-emerald-500/15 transition\"\n >\n {partnerCopy.payFirstCta || t('landing.partner.payFirstCta')} <ArrowRight size={16} />\n </a>\n </div>\n <div className=\"text-xs text-slate-500\">\n {partnerCopy.emailLabel || (lang === 'ja' ? 'メール: ' : 'Email: ')}\n <a href={`mailto:${supportEmail}`} className=\"underline underline-offset-4 hover:text-white\">\n {supportEmail}\n </a>\n </div>\n </section>\n </main>\n <StickyMobileCta\n note={copy.noLogin}\n primary={{\n label: copy.primaryCta,\n href: agentHandoffHref,\n onClick: (event) =>\n trackEventAndFollowLink(event, 'tool_cta_click', { tool: 'tools_index', cta: 'sticky_agent_cli' }),\n }}\n secondary={{\n label: copy.secondaryCta,\n href: firstExportHref,\n onClick: (event) =>\n trackEventAndFollowLink(event, 'tool_cta_click', { tool: 'tools_index', cta: 'sticky_first_export' }),\n }}\n />\n </div>\n );\n};\n\nexport default ToolsIndex;\n"],"x_google_ignoreList":[0,1,2],"mappings":"uvBAuBA,IAAM,EAAgB,EAAiB,iBAAkBA,CAbvD,CAAC,OAAQ,CAAE,MAAO,IAAK,OAAQ,IAAK,EAAG,IAAK,EAAG,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,QAAS,CAAC,EACrF,CACE,OACA,CACE,EAAG,2EACH,IAAK,QACP,CACF,EACA,CAAC,OAAQ,CAAE,EAAG,WAAY,IAAK,QAAS,CAAC,EACzC,CAAC,OAAQ,CAAE,EAAG,WAAY,IAAK,QAAS,CAAC,EACzC,CAAC,OAAQ,CAAE,EAAG,YAAa,IAAK,QAAS,CAAC,EAC1C,CAAC,OAAQ,CAAE,EAAG,YAAa,IAAK,QAAS,CAAC,CAEaA,CAAU,ECL7D,EAAS,EAAiB,SAAUC,CARxC,CACE,OACA,CACE,EAAG,yHACH,IAAK,QACP,CACF,CAEwCA,CAAU,ECA9C,EAAS,EAAiB,SAAU,CARxC,CACE,OACA,CACE,EAAG,oMACH,IAAK,QACP,CACF,CAEwC,CAAU,mBCH9C,EAAiB,IACP,GAAQ,IAAI,MAAM,GAAG,EAAE,KACrB,KAAO,KAAO,KAG1B,EAAO,CACX,GAAI,CACF,MAAO,aACP,MAAO,iDACP,SACE,iOACF,SAAU,CACR,gDACA,gDACA,uCACA,yCACA,gCACA,oDACA,8CACA,8BACF,EACA,eAAgB,uCAChB,iBAAkB,CAChB,iJACA,0KACA,8GACA,iFACF,EACA,iBAAkB,8BAClB,mBAAoB,4BACpB,iBAAkB,yBAClB,gBAAiB,0FACjB,YACE,oeACF,gBACE,iJACF,UAAW,yCACX,SACE,mIACF,QAAS,6BACT,YAAa,CAAC,4CAA6C,mDAAoD,gCAAgC,EAC/I,SAAU,6DACV,aAAc,2BACd,YAAa,yDACb,eAAgB,8EAChB,iBAAkB,oBAClB,gBAAiB,mBACjB,cAAe,mCACf,sBAAuB,oBACvB,mBAAoB,aACpB,gBAAiB,WACjB,WAAY,CACV,+BACA,0EACF,EAAE,KAAK;CAAI,EACX,QAAS,iCACT,UAAW,+FACX,MAAO,CACL,CACE,IAAK,YACL,KAAM,EACN,MAAO,qCACP,KAAM,sLACN,KAAM,oBACN,IAAK,6BACP,EACA,CACE,IAAK,eACL,KAAM,EACN,MAAO,6CACP,KAAM,+KACN,KAAM,uBACN,IAAK,2BACP,EACA,CACE,IAAK,aACL,KAAM,EACN,MAAO,iCACP,KAAM,iFACN,KAAM,yCACN,IAAK,oBACP,EACA,CACE,IAAK,uBACL,KAAM,EACN,MAAO,uCACP,KAAM,uGACN,KAAM,+BACN,IAAK,yBACP,EACA,CACE,IAAK,YACL,KAAM,EACN,MAAO,+BACP,KAAM,0GACN,KAAM,uCACN,IAAK,wBACP,EACA,CACE,IAAK,WACL,KAAM,EACN,MAAO,4BACP,KAAM,oHACN,KAAM,gCACN,IAAK,yBACP,EACA,CACE,IAAK,iBACL,KAAM,EACN,MAAO,+BACP,KAAM,4FACN,KAAM,yBACN,IAAK,sBACP,CACF,EACA,WAAY,8BACZ,aAAc,4BACd,SAAU,6BACV,QAAS,mHACT,OAAQ,CACN,+BACA,wCACA,0EACF,EAAE,KAAK;CAAI,EACX,OAAQ,6BACR,eAAgB,mBAChB,cAAe,0EACf,aAAc,mCACd,cAAe,iFACf,aAAc,6BACd,YACE,6IACF,gBAAiB,sBACjB,aAAc,yBACd,YAAa,mCACb,cAAe,6BACf,aAAc,yGAChB,EACA,GAAI,CACF,MAAO,SACP,MAAO,yBACP,SACE,kGACF,SAAU,CACR,mBACA,2BACA,oBACA,gBACA,yBACA,qCACA,oCACA,qBACF,EACA,eAAgB,eAChB,iBAAkB,CAChB,4FACA,qFACA,0DACA,kDACF,EACA,iBAAkB,sBAClB,mBAAoB,wBACpB,iBAAkB,wBAClB,gBAAiB,yDACjB,YACE,yNACF,gBAAiB,4DACjB,UAAW,gBACX,SACE,wEACF,QAAS,6BACT,YAAa,CAAC,yBAA0B,sBAAuB,WAAW,EAC1E,SAAU,sCACV,aAAc,qBACd,YAAa,mDACb,eAAgB,8DAChB,iBAAkB,cAClB,gBAAiB,YACjB,cAAe,mCACf,sBAAuB,UACvB,mBAAoB,aACpB,gBAAiB,WACjB,WAAY,CACV,+BACA,0EACF,EAAE,KAAK;CAAI,EACX,QAAS,iBACT,UAAW,mDACX,MAAO,CACL,CACE,IAAK,YACL,KAAM,E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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import"./chunk-BHe-jwch.js";import{S as e,b as t}from"./index-D7D6ZRCW.js";import{n,t as r}from"./circle-check-X08qqy40.js";import{i}from"./designPartnerSalesEntry-BpRINg3I.js";e();var a=t(),o={en:{badge:`Warm lead route`,title:`Keep the same release thread attached while you review trust pages`,body:`This visit already came from an owner/contact thread. Review the proof or policy details here, then jump straight back into the same prefilled request or pay-first path without losing the release context.`,requestCta:`Send prefilled request`,payFirstCta:`Open founding sprint`,emailLabel:`Work email`,appLabel:`App / URL`},ja:{badge:`warm lead route`,title:`trust ページを見ても同じ release thread のまま戻れます`,body:`この訪問はすでに owner/contact とのやり取りから来ています。proof や規約を確認したあと、そのまま同じ文脈の事前入力済み依頼か pay-first 導線へ戻れます。`,requestCta:`事前入力のまま依頼する`,payFirstCta:`創業パイロットを開く`,emailLabel:`メールアドレス`,appLabel:`アプリ名 / URL`}},s={dark:{container:`border-cyan-400/30 bg-cyan-500/10`,badge:`border-cyan-300/30 bg-cyan-400/10 text-cyan-100`,title:`text-white`,body:`text-cyan-50/90`,metaLabel:`text-cyan-200/80`,metaValue:`text-cyan-50`,primaryButton:`bg-cyan-500 text-slate-950 hover:bg-cyan-400`,secondaryButton:`border-cyan-300/30 bg-slate-950/50 text-cyan-100 hover:bg-slate-900`},light:{container:`border-cyan-200 bg-cyan-50`,badge:`border-cyan-200 bg-white text-cyan-700`,title:`text-slate-900`,body:`text-slate-700`,metaLabel:`text-slate-500`,metaValue:`text-slate-900`,primaryButton:`bg-cyan-600 text-white hover:bg-cyan-700`,secondaryButton:`border-slate-200 bg-white text-slate-700 hover:bg-slate-50`}},c=({lang:e=`en`,variant:t=`light`,contactEmail:c=``,appName:l=``,appUrl:u=``,requestHref:d,payFirstHref:f,onRequestClick:p,onPayFirstClick:m})=>{let h=o[e]||o.en,g=s[t]||s.light,_=i(u,l);return(0,a.jsxs)(`section`,{className:`rounded-2xl border p-5 space-y-4 ${g.container}`,children:[(0,a.jsxs)(`div`,{className:`inline-flex items-center gap-2 rounded-full border px-3 py-1 text-[11px] font-semibold ${g.badge}`,children:[(0,a.jsx)(r,{size:14}),h.badge]}),(0,a.jsxs)(`div`,{className:`space-y-2`,children:[(0,a.jsx)(`h2`,{className:`text-lg font-bold ${g.title}`,children:h.title}),(0,a.jsx)(`p`,{className:`text-sm leading-relaxed ${g.body}`,children:h.body})]}),c||_?(0,a.jsxs)(`div`,{className:`grid gap-3 sm:grid-cols-2`,children:[c?(0,a.jsxs)(`div`,{className:`rounded-xl border border-black/5 bg-white/40 px-4 py-3`,children:[(0,a.jsx)(`div`,{className:`text-[11px] font-semibold uppercase tracking-[0.16em] ${g.metaLabel}`,children:h.emailLabel}),(0,a.jsx)(`div`,{className:`mt-1 break-all text-sm font-semibold ${g.metaValue}`,children:c})]}):null,_?(0,a.jsxs)(`div`,{className:`rounded-xl border border-black/5 bg-white/40 px-4 py-3`,children:[(0,a.jsx)(`div`,{className:`text-[11px] font-semibold uppercase tracking-[0.16em] ${g.metaLabel}`,children:h.appLabel}),(0,a.jsx)(`div`,{className:`mt-1 break-all text-sm font-semibold ${g.metaValue}`,children:_})]}):null]}):null,(0,a.jsxs)(`div`,{className:`flex flex-col gap-3 sm:flex-row`,children:[(0,a.jsxs)(`a`,{href:d,onClick:p,className:`inline-flex flex-1 items-center justify-center gap-2 rounded-xl px-4 py-3 text-sm font-bold transition ${g.primaryButton}`,children:[h.requestCta,(0,a.jsx)(n,{size:16})]}),(0,a.jsxs)(`a`,{href:f,onClick:m,className:`inline-flex flex-1 items-center justify-center gap-2 rounded-xl border px-4 py-3 text-sm font-semibold transition ${g.secondaryButton}`,children:[h.payFirstCta,(0,a.jsx)(n,{size:16})]})]})]})};export{c as t};
|
|
2
|
+
//# sourceMappingURL=TrustSalesEntryPanel-DuncpgMs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TrustSalesEntryPanel-DuncpgMs.js","names":[],"sources":["../../src/components/TrustSalesEntryPanel.jsx"],"sourcesContent":["import React from 'react';\nimport { ArrowRight, CheckCircle2 } from 'lucide-react';\nimport { describeSalesEntryAppLabel } from '../lib/designPartnerSalesEntry';\n\nconst COPY = {\n en: {\n badge: 'Warm lead route',\n title: 'Keep the same release thread attached while you review trust pages',\n body:\n 'This visit already came from an owner/contact thread. Review the proof or policy details here, then jump straight back into the same prefilled request or pay-first path without losing the release context.',\n requestCta: 'Send prefilled request',\n payFirstCta: 'Open founding sprint',\n emailLabel: 'Work email',\n appLabel: 'App / URL',\n },\n ja: {\n badge: 'warm lead route',\n title: 'trust ページを見ても同じ release thread のまま戻れます',\n body:\n 'この訪問はすでに owner/contact とのやり取りから来ています。proof や規約を確認したあと、そのまま同じ文脈の事前入力済み依頼か pay-first 導線へ戻れます。',\n requestCta: '事前入力のまま依頼する',\n payFirstCta: '創業パイロットを開く',\n emailLabel: 'メールアドレス',\n appLabel: 'アプリ名 / URL',\n },\n};\n\nconst THEMES = {\n dark: {\n container: 'border-cyan-400/30 bg-cyan-500/10',\n badge: 'border-cyan-300/30 bg-cyan-400/10 text-cyan-100',\n title: 'text-white',\n body: 'text-cyan-50/90',\n metaLabel: 'text-cyan-200/80',\n metaValue: 'text-cyan-50',\n primaryButton: 'bg-cyan-500 text-slate-950 hover:bg-cyan-400',\n secondaryButton: 'border-cyan-300/30 bg-slate-950/50 text-cyan-100 hover:bg-slate-900',\n },\n light: {\n container: 'border-cyan-200 bg-cyan-50',\n badge: 'border-cyan-200 bg-white text-cyan-700',\n title: 'text-slate-900',\n body: 'text-slate-700',\n metaLabel: 'text-slate-500',\n metaValue: 'text-slate-900',\n primaryButton: 'bg-cyan-600 text-white hover:bg-cyan-700',\n secondaryButton: 'border-slate-200 bg-white text-slate-700 hover:bg-slate-50',\n },\n};\n\nconst TrustSalesEntryPanel = ({\n lang = 'en',\n variant = 'light',\n contactEmail = '',\n appName = '',\n appUrl = '',\n requestHref,\n payFirstHref,\n onRequestClick,\n onPayFirstClick,\n}) => {\n const copy = COPY[lang] || COPY.en;\n const theme = THEMES[variant] || THEMES.light;\n const appLabel = describeSalesEntryAppLabel(appUrl, appName);\n\n return (\n <section className={`rounded-2xl border p-5 space-y-4 ${theme.container}`}>\n <div className={`inline-flex items-center gap-2 rounded-full border px-3 py-1 text-[11px] font-semibold ${theme.badge}`}>\n <CheckCircle2 size={14} />\n {copy.badge}\n </div>\n <div className=\"space-y-2\">\n <h2 className={`text-lg font-bold ${theme.title}`}>{copy.title}</h2>\n <p className={`text-sm leading-relaxed ${theme.body}`}>{copy.body}</p>\n </div>\n {contactEmail || appLabel ? (\n <div className=\"grid gap-3 sm:grid-cols-2\">\n {contactEmail ? (\n <div className=\"rounded-xl border border-black/5 bg-white/40 px-4 py-3\">\n <div className={`text-[11px] font-semibold uppercase tracking-[0.16em] ${theme.metaLabel}`}>{copy.emailLabel}</div>\n <div className={`mt-1 break-all text-sm font-semibold ${theme.metaValue}`}>{contactEmail}</div>\n </div>\n ) : null}\n {appLabel ? (\n <div className=\"rounded-xl border border-black/5 bg-white/40 px-4 py-3\">\n <div className={`text-[11px] font-semibold uppercase tracking-[0.16em] ${theme.metaLabel}`}>{copy.appLabel}</div>\n <div className={`mt-1 break-all text-sm font-semibold ${theme.metaValue}`}>{appLabel}</div>\n </div>\n ) : null}\n </div>\n ) : null}\n <div className=\"flex flex-col gap-3 sm:flex-row\">\n <a\n href={requestHref}\n onClick={onRequestClick}\n className={`inline-flex flex-1 items-center justify-center gap-2 rounded-xl px-4 py-3 text-sm font-bold transition ${theme.primaryButton}`}\n >\n {copy.requestCta}\n <ArrowRight size={16} />\n </a>\n <a\n href={payFirstHref}\n onClick={onPayFirstClick}\n className={`inline-flex flex-1 items-center justify-center gap-2 rounded-xl border px-4 py-3 text-sm font-semibold transition ${theme.secondaryButton}`}\n >\n {copy.payFirstCta}\n <ArrowRight size={16} />\n </a>\n </div>\n </section>\n );\n};\n\nexport default TrustSalesEntryPanel;\n"],"mappings":"+LAIM,EAAO,CACX,GAAI,CACF,MAAO,kBACP,MAAO,qEACP,KACE,+MACF,WAAY,yBACZ,YAAa,uBACb,WAAY,aACZ,SAAU,WACZ,EACA,GAAI,CACF,MAAO,kBACP,MAAO,yCACP,KACE,8FACF,WAAY,cACZ,YAAa,aACb,WAAY,UACZ,SAAU,YACZ,CACF,EAEM,EAAS,CACb,KAAM,CACJ,UAAW,oCACX,MAAO,kDACP,MAAO,aACP,KAAM,kBACN,UAAW,mBACX,UAAW,eACX,cAAe,+CACf,gBAAiB,qEACnB,EACA,MAAO,CACL,UAAW,6BACX,MAAO,yCACP,MAAO,iBACP,KAAM,iBACN,UAAW,iBACX,UAAW,iBACX,cAAe,2CACf,gBAAiB,4DACnB,CACF,EAEM,GAAwB,CAC5B,OAAO,KACP,UAAU,QACV,eAAe,GACf,UAAU,GACV,SAAS,GACT,cACA,eACA,iBACA,qBACI,CACJ,IAAM,EAAO,EAAK,IAAS,EAAK,GAC1B,EAAQ,EAAO,IAAY,EAAO,MAClC,EAAW,EAA2B,EAAQ,CAAO,EAE3D,OACE,EAAA,EAAA,MAAC,UAAD,CAAS,UAAW,oCAAoC,EAAM,qBAA9D,EACE,EAAA,EAAA,MAAC,MAAD,CAAK,UAAW,0FAA0F,EAAM,iBAAhH,EACE,EAAA,EAAA,KAAC,EAAD,CAAc,KAAM,EAAK,CAAA,EACxB,EAAK,KACH,KACL,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,qBAAf,EACE,EAAA,EAAA,KAAC,KAAD,CAAI,UAAW,qBAAqB,EAAM,iBAAU,EAAK,KAAU,CAAA,GACnE,EAAA,EAAA,KAAC,IAAD,CAAG,UAAW,2BAA2B,EAAM,gBAAS,EAAK,IAAQ,CAAA,CAClE,IACJ,GAAgB,GACf,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,qCAAf,CACG,GACC,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,kEAAf,EACE,EAAA,EAAA,KAAC,MAAD,CAAK,UAAW,yDAAyD,EAAM,qBAAc,EAAK,UAAgB,CAAA,GAClH,EAAA,EAAA,KAAC,MAAD,CAAK,UAAW,wCAAwC,EAAM,qBAAc,CAAkB,CAAA,CAC3F,IACH,KACH,GACC,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,kEAAf,EACE,EAAA,EAAA,KAAC,MAAD,CAAK,UAAW,yDAAyD,EAAM,qBAAc,EAAK,QAAc,CAAA,GAChH,EAAA,EAAA,KAAC,MAAD,CAAK,UAAW,wCAAwC,EAAM,qBAAc,CAAc,CAAA,CACvF,IACH,IACD,IACH,MACJ,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,2CAAf,EACE,EAAA,EAAA,MAAC,IAAD,CACE,KAAM,EACN,QAAS,EACT,UAAW,0GAA0G,EAAM,yBAH7H,CAKG,EAAK,YACN,EAAA,EAAA,KAAC,EAAD,CAAY,KAAM,EAAK,CAAA,CACtB,KACH,EAAA,EAAA,MAAC,IAAD,CACE,KAAM,EACN,QAAS,EACT,UAAW,qHAAqH,EAAM,2BAHxI,CAKG,EAAK,aACN,EAAA,EAAA,KAAC,EAAD,CAAY,KAAM,EAAK,CAAA,CACtB,GACA,GACE,GAEb"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import{r as e}from"./chunk-BHe-jwch.js";import{S as t,b as n,n as r,r as i,x as a}from"./index-D7D6ZRCW.js";import{n as o,r as s}from"./LanguageSwitcher-hFv9zl1u.js";import{n as c}from"./circle-check-X08qqy40.js";import{t as l}from"./calculator-CofuwQa8.js";import{t as u}from"./chevron-down-BIXHKpnf.js";import{r as ee,t as d}from"./CopyButton-BFCx6EPg.js";import{t as te}from"./download-BXzoc-Y3.js";import{t as f}from"./SiteHeader-CJqQ0pL3.js";import{n as p,t as m}from"./StickyMobileCta-REC3DROG.js";import{t as ne}from"./FitPanel-B1J0V1jK.js";import{t as h}from"./AgentHandoffPanel-Bf_AJepG.js";import{t as g}from"./ToolGuardrailsPanel-Cclxwdrb.js";var _=e(t(),1),v=n(),y=(e,{min:t,max:n,fallback:r})=>{let i=typeof e==`number`?e:Number(e);return Number.isFinite(i)?Math.max(t,Math.min(n,i)):r},b=e=>(e||``).split(`-`)[0]===`ja`?`ja`:`en`,x={en:{badge:`Screenshot workload & size buckets`,title:`Screenshot Workload Calculator`,subtitle:`Existing tools can draft screenshots, but release reruns still break on device x locale scale. Estimate workload first, then choose a minimum set that keeps panel #1 clear and rerunnable.`,heroCliTitle:`CLI quickstart (2 steps)`,heroCliNote:`wizard -> agent-run --stage (raw mode, no Playwright).`,heroCliSummary:`Outputs: fastlane/ + reproducible ZIP + staged upload root + proof reports.`,heroCliCopyLabel:`Copy all commands`,heroCliTemplatesLabel:`Starter templates`,heroCliConfigLabel:`config.yml`,heroCliCsvLabel:`copy.csv`,heroCliCmd:[`npx --yes shipscreens wizard`,`npx --yes shipscreens agent-run --mode raw --zip --out out/agent --stage`].join(`
|
|
2
|
+
`),tellAgentCta:`Use your agent to trim the matrix`,agentPromptTitle:`Recommended: let your coding agent trim the matrix first`,agentPromptBody:`Use this when device × locale growth is the real bottleneck, not screenshot drafting.`,agentPrompt:`Use ShipScreens as the build step for our screenshot release workload. Keep our current design workflow, inspect this repo, choose the best path for this workspace (workspace-local MCP if available, otherwise pure CLI), shrink the device x locale matrix to the smallest set we can rerun confidently, keep panel #1 concrete, generate deterministic Fastlane-ready outputs, run verify/stage, and return a short report with output paths, warnings, and next steps. Only ask me if device or locale scope or panel #1 messaging is unclear.`,agentPromptNote:`Best flow: hand off once, then approve the minimum matrix and the first export.`,proUnlockTitle:`Unlock Pro (CLI)`,proUnlockBody:`Remove the watermark and unlock full matrix batch exports via CLI auth:`,proUnlockCmd:`npx --yes shipscreens auth login`,proUnlockNote:`Completes a one-time browser sign-in; then rerun agent-run with --require-pro.`,navTools:`Tools`,presetsTitle:`Presets`,presetIosOnly:`iOS only`,presetIosAndroid:`iOS + Android`,inputsTitle:`Inputs`,resultsTitle:`Results`,screenshotsPerLocaleLabel:`Screenshots per locale`,screenshotsPerLocaleHelp:`Typical: 5–8`,localesLabel:`Locales`,localesHelp:`Typical: 1–12`,iosDeviceSizesLabel:`iOS device sizes`,iosDeviceSizesToggle:`Include iOS`,iosDeviceSizesHelp:`Example: 4 (iPhone + iPad variants)`,androidDeviceSizesLabel:`Android device sizes`,androidDeviceSizesToggle:`Include Android`,androidDeviceSizesHelp:`Example: 2 (phone + tablet)`,minutesPerImageLabel:`Manual minutes per image`,minutesPerImageHelp:`Estimate: export + rename + folder sorting`,totalImagesLabel:`Total images`,totalImagesFormula:({shots:e,locales:t,deviceSizes:n})=>`${e} shots × ${t} locales × ${n} device sizes`,multiplierLabel:`Multiplier`,multiplierSuffix:`×`,multiplierHelp:({multiplier:e})=>`1 base shot turns into ${e} variants`,manualTimeLabel:`Manual time estimate`,manualTimeFormula:({images:e,minutesPerImage:t})=>`${e} images × ${t} min/image`,withShipScreensLabel:`With ShipScreens`,withShipScreensNote:`Bring translations. Wizard scaffolds config + placeholders. ShipScreens locks panel order + layout, then agent-run builds, verifies, stages, and reports Fastlane-ready folders (deliver/supply). Screenshots stay local. Before scaling matrix size, check panel #1: if the same line could fit many apps, rewrite it with one concrete outcome.`,downloadCsv:`Download CSV copy template`,startSample:`Open sample project (free)`,example:`Example: 5 screenshots × 10 locales × 4 device sizes = 200 images.`,minSetTitle:`Suggested v1 minimum set`,minSetBody:`Use size buckets to avoid the full matrix on day one.`,minSetBullets:{iosBase:`iPhone-only: start with the largest iPhone bucket + 5 frames.`,iosIpad:`Add iPad 13-inch only if you ship iPad-first.`,androidPhone:`Android: start with 1 phone bucket.`,androidTablet:`Add tablet only if you need it.`,none:`Select at least one platform to see a suggested minimum set.`},minSetNote:`You can expand later; rerunnable exports make it safe.`,nextTitle:`Next: structure your screenshots`,nextBody:`Use the 5-panel framework (Hook → Problem → Proof → How → CTA) so screenshot #1 states outcome and audience quickly.`,nextCtaSample:`Open sample project`,nextCta:`Open 5-panel framework`,feedbackText:`Want feedback on your screenshot workflow? We are talking to early users and can help set up a reproducible export pipeline.`,feedbackCta:`Open 15-min review intake`},ja:{badge:`スクショ作業量 + サイズバケット`,title:`スクショ作業量 計算ツール`,subtitle:`既存ツールで初稿は作れても、運用では端末x言語で崩れやすい。作業量を先に見積もり、1枚目の訴求が伝わる最小セットと再実行パスを決める。`,heroCliTitle:`CLIクイックスタート(2ステップ)`,heroCliNote:`wizard -> agent-run --stage(raw / Playwright不要)。`,heroCliSummary:`出力: fastlane/ + 再現性ZIP + staged upload root + proof report。`,heroCliCopyLabel:`コマンドをすべてコピー`,heroCliTemplatesLabel:`スターター雛形`,heroCliConfigLabel:`config.yml`,heroCliCsvLabel:`copy.csv`,heroCliCmd:[`npx --yes shipscreens wizard`,`npx --yes shipscreens agent-run --mode raw --zip --out out/agent --stage`].join(`
|
|
3
|
+
`),tellAgentCta:`coding agent に最小構成を決めさせる`,agentPromptTitle:`既定導線: coding agent に最小構成を任せる`,agentPromptBody:`ボトルネックがスクショ作成そのものではなく、端末×言語の行列増加なら、まずこれを渡します。`,agentPrompt:`ShipScreens を使って、スクリーンショット運用の release workload を設計して固めてください。既存のデザイン運用は維持し、この repo を確認して、このワークスペースで使えるなら workspace-local MCP、無ければ CLI を選び、端末×言語の行列を最小の再実行しやすい構成に絞り、1枚目訴求を具体化し、verify と stage を実行し、出力パス・警告・次の作業を短く報告してください。端末/言語スコープか 1枚目訴求が不明なときだけ確認してください。`,agentPromptNote:`おすすめは、1回指示してサイズバケットと最初のエクスポートだけ確認することです。`,proUnlockTitle:`Proを解除(CLI)`,proUnlockBody:`透かし解除&フル一括(端末×言語)のために、まずはCLI認証を実行:`,proUnlockCmd:`npx --yes shipscreens auth login`,proUnlockNote:`初回のみブラウザでサインインします。以後は agent-run --require-pro で再実行。`,navTools:`ツール`,presetsTitle:`プリセット`,presetIosOnly:`iOS のみ`,presetIosAndroid:`iOS + Android`,inputsTitle:`入力`,resultsTitle:`結果`,screenshotsPerLocaleLabel:`言語あたりのスクショ枚数`,screenshotsPerLocaleHelp:`目安: 5〜8`,localesLabel:`言語数`,localesHelp:`目安: 1〜12`,iosDeviceSizesLabel:`iOS 端末サイズ数`,iosDeviceSizesToggle:`iOS を含める`,iosDeviceSizesHelp:`例: 4(iPhone + iPad など)`,androidDeviceSizesLabel:`Android 端末サイズ数`,androidDeviceSizesToggle:`Android を含める`,androidDeviceSizesHelp:`例: 2(スマホ + タブレット)`,minutesPerImageLabel:`1枚あたりの手作業(分)`,minutesPerImageHelp:`目安: エクスポート + リネーム + フォルダ整理`,totalImagesLabel:`合計画像数`,totalImagesFormula:({shots:e,locales:t,deviceSizes:n})=>`${e} 枚 × ${t} 言語 × ${n} サイズ`,multiplierLabel:`増加倍率`,multiplierSuffix:`倍`,multiplierHelp:({multiplier:e})=>`1枚が ${e} 枚に増える`,manualTimeLabel:`手作業の見積もり`,manualTimeFormula:({images:e,minutesPerImage:t})=>`${e} 枚 × ${t} 分/枚`,withShipScreensLabel:`ShipScreens なら`,withShipScreensNote:`翻訳は外部でOK。wizard で雛形を作り、訴求順 + レイアウト固定 -> Fastlane公式パスへ再現性出力。提出前チェック(verify と stage)で混在や制約をアップロード前に検知します。スクショはローカル。行列を増やす前に「1枚目見出しが他の多くのアプリにも当てはまるなら、成果を具体化して書き直す」を実施。`,downloadCsv:`CSVコピー雛形をダウンロード`,startSample:`サンプルを開く(無料)`,example:`例: 5枚 × 10言語 × 4サイズ = 200枚`,minSetTitle:`v1最小セットの目安`,minSetBody:`サイズバケットでまず出す。`,minSetBullets:{iosBase:`iPhone-only: 最大サイズ1バケット + 5枚`,iosIpad:`iPadは13-inchが必要な場合のみ`,androidPhone:`Androidはスマホ1バケットから`,androidTablet:`必要ならタブレットを追加`,none:`少なくとも1つのプラットフォームを選択してください。`},minSetNote:`後から増やせる。再実行できるから安心。`,nextTitle:`次: スクショの構成を固める`,nextBody:`5枚構成テンプレ(Hook→Problem→Proof→How→CTA)で、1枚目に成果と対象ユーザーを明確に置けます。`,nextCtaSample:`サンプルを開く`,nextCta:`5枚構成テンプレを開く`,feedbackText:`スクショ作業フローの相談があれば、15分だけ聞かせてください。改善案やテンプレをご案内します。`,feedbackCta:`15分レビューを開く`}},S=()=>{let{t:e,i18n:t}=a();s(`titles.workloadCalculator`);let n=b(t.resolvedLanguage||t.language),S=n===`ja`?`ja-JP`:`en-US`,C=x[n]||x.en,w=e(`landing.partner`,{returnObjects:!0})||{},T=Array.isArray(w.scopeBullets)?w.scopeBullets.filter(Boolean):[],E=`#agent-handoff`,D=`/app/?sample=5panel&entry_source=screenshot_workload_calculator_open_sample_project`,O=n===`ja`?`オファー詳細を見る`:`See offer details`,k=`support@shimaumaservices.co.jp`,A=e(`landing.partner.emailSubject`,{defaultValue:`ShipScreens release setup review`}),j=e(`landing.partner.emailBody`,{defaultValue:``}),M=`mailto:${k}?subject=${encodeURIComponent(A)}&body=${encodeURIComponent(j)}`,N=e(`common.copy`,{defaultValue:`Copy`}),P=e(`common.showCommands`,{defaultValue:`Show commands`}),F=typeof window>`u`?!0:window.matchMedia(`(min-width: 640px)`).matches,I=(0,_.useMemo)(()=>new Intl.NumberFormat(S),[S]),L=(0,_.useCallback)(e=>I.format(e),[I]),re=(0,_.useCallback)(e=>{if(!Number.isFinite(e)||e<=0)return n===`ja`?`0分`:`0m`;if(e<60)return`${Math.round(e)}${n===`ja`?`分`:`m`}`;let t=e/60;if(t<24)return`${t.toFixed(+(t<10))}${n===`ja`?`時間`:`h`}`;let r=t/24;return`${r.toFixed(+(r<10))}${n===`ja`?`日`:`d`}`},[n]);(0,_.useEffect)(()=>{r(`tool_view`,{tool:`screenshot_workload_calculator`})},[]);let R=(0,_.useRef)(!1),z=(0,_.useCallback)(()=>{R.current||(R.current=!0,r(`tool_interact`,{tool:`screenshot_workload_calculator`}))},[]),[B,V]=(0,_.useState)(5),[H,U]=(0,_.useState)(10),[W,G]=(0,_.useState)(!0),[K,q]=(0,_.useState)(!0),[J,Y]=(0,_.useState)(4),[X,Z]=(0,_.useState)(2),[Q,ie]=(0,_.useState)(2),ae=(0,_.useMemo)(()=>{let e=[];return W&&(C.minSetBullets?.iosBase&&e.push(C.minSetBullets.iosBase),C.minSetBullets?.iosIpad&&e.push(C.minSetBullets.iosIpad)),K&&(C.minSetBullets?.androidPhone&&e.push(C.minSetBullets.androidPhone),X>1&&C.minSetBullets?.androidTablet&&e.push(C.minSetBullets.androidTablet)),!e.length&&C.minSetBullets?.none&&e.push(C.minSetBullets.none),e},[C,W,K,X]),oe=(0,_.useMemo)(()=>[{key:`ios_only`,label:C.presetIosOnly,localeCount:6,screenshotsPerLocale:5,includeIOS:!0,iosDeviceSizes:2,includeAndroid:!1,androidDeviceSizes:0},{key:`ios_android`,label:C.presetIosAndroid,localeCount:6,screenshotsPerLocale:5,includeIOS:!0,iosDeviceSizes:2,includeAndroid:!0,androidDeviceSizes:1}],[C.presetIosAndroid,C.presetIosOnly]),se=(0,_.useCallback)(e=>{e&&(z(),U(e.localeCount),V(e.screenshotsPerLocale),G(e.includeIOS),Y(e.iosDeviceSizes),q(e.includeAndroid),Z(e.androidDeviceSizes))},[z]),$=(0,_.useMemo)(()=>{let e=y(B,{min:1,max:50,fallback:5}),t=y(H,{min:1,max:50,fallback:10}),n=W?y(J,{min:1,max:10,fallback:4}):0,r=K?y(X,{min:1,max:10,fallback:2}):0,i=n+r,a=e*t*i;return{shots:e,locales:t,iosSizes:n,androidSizes:r,deviceSizes:i,totalImages:a,multiplier:t*i,manualMinutes:a*y(Q,{min:.25,max:30,fallback:2})}},[X,K,W,J,H,Q,B]);return(0,v.jsxs)(`div`,{className:`min-h-screen bg-linear-to-b from-slate-950 via-slate-900 to-slate-950 text-white`,children:[(0,v.jsx)(o,{}),(0,v.jsx)(f,{variant:`dark`,active:`tools`,openAppHref:`/app/?sample=5panel&entry_source=screenshot_workload_calculator_open_app_header`,onToolsClick:e=>i(e,`tool_cta_click`,{tool:`screenshot_workload_calculator`,cta:`open_tools_header`}),onPricingClick:e=>i(e,`tool_cta_click`,{tool:`screenshot_workload_calculator`,cta:`pricing_header`}),onOpenAppClick:e=>i(e,`tool_cta_click`,{tool:`screenshot_workload_calculator`,cta:`open_app_header`}),primaryCta:{href:E,label:(0,v.jsxs)(`span`,{className:`inline-flex items-center gap-2`,children:[C.tellAgentCta,` `,(0,v.jsx)(c,{size:16})]}),onClick:e=>i(e,`tool_cta_click`,{tool:`screenshot_workload_calculator`,cta:`open_agent_handoff_header`})}}),(0,v.jsxs)(`main`,{className:`max-w-5xl mx-auto px-6 pb-24 space-y-10`,children:[(0,v.jsxs)(`section`,{className:`max-w-3xl mx-auto text-center space-y-4`,children:[(0,v.jsxs)(`div`,{className:`inline-flex items-center gap-2 px-3 py-1.5 rounded-full border border-slate-800 bg-slate-900/60 text-slate-200 text-xs font-semibold`,children:[(0,v.jsx)(l,{size:14}),C.badge]}),(0,v.jsx)(`h1`,{className:`text-3xl md:text-5xl font-black leading-tight`,children:C.title}),(0,v.jsx)(`p`,{className:`text-slate-300 text-lg leading-relaxed`,children:C.subtitle}),(0,v.jsxs)(`div`,{className:`flex flex-col sm:flex-row gap-3 justify-center pt-2`,children:[(0,v.jsxs)(`a`,{href:E,onClick:e=>i(e,`tool_cta_click`,{tool:`screenshot_workload_calculator`,cta:`open_agent_handoff_hero`}),className:`inline-flex items-center justify-center gap-2 px-5 py-3 rounded-xl bg-blue-500 text-white font-bold hover:bg-blue-600 transition`,children:[C.tellAgentCta,` `,(0,v.jsx)(c,{size:16})]}),(0,v.jsxs)(`a`,{href:D,onClick:e=>i(e,`tool_cta_click`,{tool:`screenshot_workload_calculator`,cta:`open_sample_project_hero`}),className:`inline-flex items-center justify-center gap-2 px-5 py-3 rounded-xl border border-slate-700 bg-slate-950 text-slate-200 font-bold hover:bg-slate-900 transition`,children:[C.startSample,` `,(0,v.jsx)(c,{size:16})]})]}),(0,v.jsx)(h,{sectionId:`agent-handoff`,lang:n,prompt:C.agentPrompt,promptTitle:C.agentPromptTitle,promptBody:C.agentPromptBody,promptNote:C.agentPromptNote,guideHref:`/tools/agent-cli/?entry_source=screenshot_workload_calculator_agent_handoff#agent-bootstrap`,className:`max-w-4xl mx-auto text-left`,onPromptCopied:e=>r(`tool_cta_click`,{tool:`screenshot_workload_calculator`,cta:`copy_agent_prompt`,client:e.id}),onBundleCopied:e=>r(`tool_cta_click`,{tool:`screenshot_workload_calculator`,cta:`copy_bootstrap_bundle_${e.id}`,client:e.id}),onClientCommandCopied:e=>r(`tool_cta_click`,{tool:`screenshot_workload_calculator`,cta:`copy_client_bootstrap_${e.id}`,client:e.id}),onClientDownload:e=>r(`tool_download`,{tool:`screenshot_workload_calculator`,asset:`client_bootstrap_${e.id}`,client:e.id}),onGuideClick:(e,t)=>i(e,`tool_cta_click`,{tool:`screenshot_workload_calculator`,cta:`open_agent_handoff_guide`,client:t.id})}),(0,v.jsxs)(`div`,{className:`max-w-xl mx-auto text-left bg-slate-900/60 border border-slate-800 rounded-2xl p-4 space-y-2`,children:[(0,v.jsx)(`div`,{className:`text-[11px] uppercase tracking-[0.2em] text-slate-500 font-semibold`,children:C.heroCliTitle}),(0,v.jsx)(`p`,{className:`text-xs text-slate-400`,children:C.heroCliNote}),(0,v.jsx)(`p`,{className:`text-xs text-slate-500`,children:C.heroCliSummary}),(0,v.jsx)(d,{value:C.heroCliCmd,onCopied:()=>r(`tool_cta_click`,{tool:`screenshot_workload_calculator`,cta:`copy_cli_hero`}),className:`inline-flex items-center justify-center gap-2 px-3 py-2 rounded-lg border border-slate-700 bg-slate-950 text-slate-200 hover:bg-slate-900 transition text-xs font-semibold`,children:({copyLabel:e,copyState:t})=>(0,v.jsxs)(v.Fragment,{children:[(0,v.jsx)(ee,{size:14}),t===`idle`?C.heroCliCopyLabel:e||N]})}),(0,v.jsxs)(`details`,{className:`group`,open:F,children:[(0,v.jsxs)(`summary`,{className:`flex items-center justify-between text-[11px] font-semibold text-slate-400 cursor-pointer list-none`,children:[(0,v.jsx)(`span`,{children:P}),(0,v.jsx)(u,{size:14,className:`text-slate-500 transition-transform duration-200 group-open:rotate-180`})]}),(0,v.jsx)(`div`,{className:`mt-2 rounded-xl border border-slate-800 bg-slate-950 p-3`,children:(0,v.jsx)(`pre`,{className:`text-xs text-slate-200 whitespace-pre-wrap`,children:C.heroCliCmd})})]}),(0,v.jsxs)(`div`,{className:`pt-1 space-y-2`,children:[(0,v.jsx)(`div`,{className:`text-[10px] uppercase tracking-[0.2em] text-slate-500 font-semibold`,children:C.heroCliTemplatesLabel}),(0,v.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,v.jsx)(`a`,{href:`/downloads/shipscreens-agent-cli-config.yml`,download:!0,onClick:()=>r(`tool_download`,{tool:`screenshot_workload_calculator`,asset:`config_template`}),className:`inline-flex items-center justify-center gap-2 px-2.5 py-1.5 rounded-md border border-slate-700 bg-slate-950 text-[11px] text-slate-200 hover:bg-slate-900 transition`,children:C.heroCliConfigLabel}),(0,v.jsx)(`a`,{href:`/downloads/shipscreens-agent-cli-copy.csv`,download:!0,onClick:()=>r(`tool_download`,{tool:`screenshot_workload_calculator`,asset:`copy_template`}),className:`inline-flex items-center justify-center gap-2 px-2.5 py-1.5 rounded-md border border-slate-700 bg-slate-950 text-[11px] text-slate-200 hover:bg-slate-900 transition`,children:C.heroCliCsvLabel})]})]})]}),(0,v.jsx)(g,{title:n===`ja`?`詳細: CLIガードレール + Pro解除`:`Advanced: CLI guardrails + Pro unlock`,codeToggleLabel:P,copyButtonLabel:N,preflightHref:`/tools/agent-cli/#preflight`,onPreflightClick:e=>i(e,`tool_cta_click`,{tool:`screenshot_workload_calculator`,cta:`open_cli_preflight`}),proUnlockTitle:C.proUnlockTitle,proUnlockBody:C.proUnlockBody,proUnlockCmd:C.proUnlockCmd,proUnlockNote:C.proUnlockNote,onProUnlockCopied:()=>r(`tool_cta_click`,{tool:`screenshot_workload_calculator`,cta:`copy_cli_pro_unlock`})}),(0,v.jsx)(p,{compact:!0,href:`/tools/agent-cli/#preflight`,onClick:e=>i(e,`tool_cta_click`,{tool:`screenshot_workload_calculator`,cta:`open_cli_preflight_card`}),className:`max-w-xl mx-auto`})]}),(0,v.jsx)(ne,{className:`max-w-4xl mx-auto w-full`}),(0,v.jsxs)(`section`,{className:`grid lg:grid-cols-2 gap-6`,children:[(0,v.jsxs)(`div`,{className:`bg-slate-900/60 border border-slate-800 rounded-2xl p-6 space-y-5`,children:[(0,v.jsx)(`h2`,{className:`text-lg font-bold text-white`,children:C.inputsTitle}),(0,v.jsxs)(`div`,{className:`space-y-2`,children:[(0,v.jsx)(`div`,{className:`text-[10px] font-bold text-slate-400 uppercase tracking-wider`,children:C.presetsTitle}),(0,v.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:oe.map(e=>(0,v.jsx)(`button`,{type:`button`,onClick:()=>se(e),className:`px-3 py-1.5 rounded-lg border border-slate-700 bg-slate-950 text-xs font-semibold text-slate-200 hover:bg-slate-900 transition-colors`,children:e.label},e.key))})]}),(0,v.jsxs)(`div`,{className:`grid grid-cols-1 sm:grid-cols-2 gap-4`,children:[(0,v.jsxs)(`label`,{className:`space-y-1`,children:[(0,v.jsx)(`div`,{className:`text-sm font-semibold text-slate-200`,children:C.screenshotsPerLocaleLabel}),(0,v.jsx)(`input`,{type:`number`,min:1,max:50,value:B,onChange:e=>{z(),V(y(e.target.value,{min:1,max:50,fallback:5}))},className:`w-full rounded-xl bg-slate-950 border border-slate-800 px-3 py-2 text-white focus:outline-hidden focus:ring-2 focus:ring-blue-500/60`}),(0,v.jsx)(`div`,{className:`text-xs text-slate-500`,children:C.screenshotsPerLocaleHelp})]}),(0,v.jsxs)(`label`,{className:`space-y-1`,children:[(0,v.jsx)(`div`,{className:`text-sm font-semibold text-slate-200`,children:C.localesLabel}),(0,v.jsx)(`input`,{type:`number`,min:1,max:50,value:H,onChange:e=>{z(),U(y(e.target.value,{min:1,max:50,fallback:10}))},className:`w-full rounded-xl bg-slate-950 border border-slate-800 px-3 py-2 text-white focus:outline-hidden focus:ring-2 focus:ring-blue-500/60`}),(0,v.jsx)(`div`,{className:`text-xs text-slate-500`,children:C.localesHelp})]})]}),(0,v.jsxs)(`div`,{className:`space-y-3`,children:[(0,v.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,v.jsx)(`div`,{className:`text-sm font-semibold text-slate-200`,children:C.iosDeviceSizesLabel}),(0,v.jsxs)(`label`,{className:`flex items-center gap-2 text-xs text-slate-400`,children:[(0,v.jsx)(`input`,{type:`checkbox`,checked:W,onChange:e=>{z(),G(e.target.checked)}}),C.iosDeviceSizesToggle]})]}),(0,v.jsx)(`input`,{type:`number`,min:1,max:10,disabled:!W,value:J,onChange:e=>{z(),Y(y(e.target.value,{min:1,max:10,fallback:4}))},className:`w-full rounded-xl bg-slate-950 border border-slate-800 px-3 py-2 text-white disabled:opacity-40 focus:outline-hidden focus:ring-2 focus:ring-blue-500/60`}),(0,v.jsx)(`div`,{className:`text-xs text-slate-500`,children:C.iosDeviceSizesHelp})]}),(0,v.jsxs)(`div`,{className:`space-y-3`,children:[(0,v.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,v.jsx)(`div`,{className:`text-sm font-semibold text-slate-200`,children:C.androidDeviceSizesLabel}),(0,v.jsxs)(`label`,{className:`flex items-center gap-2 text-xs text-slate-400`,children:[(0,v.jsx)(`input`,{type:`checkbox`,checked:K,onChange:e=>{z(),q(e.target.checked)}}),C.androidDeviceSizesToggle]})]}),(0,v.jsx)(`input`,{type:`number`,min:1,max:10,disabled:!K,value:X,onChange:e=>{z(),Z(y(e.target.value,{min:1,max:10,fallback:2}))},className:`w-full rounded-xl bg-slate-950 border border-slate-800 px-3 py-2 text-white disabled:opacity-40 focus:outline-hidden focus:ring-2 focus:ring-blue-500/60`}),(0,v.jsx)(`div`,{className:`text-xs text-slate-500`,children:C.androidDeviceSizesHelp})]}),(0,v.jsxs)(`label`,{className:`space-y-1`,children:[(0,v.jsx)(`div`,{className:`text-sm font-semibold text-slate-200`,children:C.minutesPerImageLabel}),(0,v.jsx)(`input`,{type:`number`,min:.25,max:30,step:.25,value:Q,onChange:e=>{z(),ie(y(e.target.value,{min:.25,max:30,fallback:2}))},className:`w-full rounded-xl bg-slate-950 border border-slate-800 px-3 py-2 text-white focus:outline-hidden focus:ring-2 focus:ring-blue-500/60`}),(0,v.jsx)(`div`,{className:`text-xs text-slate-500`,children:C.minutesPerImageHelp})]})]}),(0,v.jsxs)(`div`,{className:`bg-slate-900/60 border border-slate-800 rounded-2xl p-6 space-y-5`,children:[(0,v.jsx)(`h2`,{className:`text-lg font-bold text-white`,children:C.resultsTitle}),(0,v.jsxs)(`div`,{className:`grid sm:grid-cols-2 gap-4`,children:[(0,v.jsxs)(`div`,{className:`rounded-2xl border border-slate-800 bg-slate-950 p-4`,children:[(0,v.jsx)(`div`,{className:`text-xs text-slate-500`,children:C.totalImagesLabel}),(0,v.jsx)(`div`,{className:`text-3xl font-black text-white`,children:L($.totalImages)}),(0,v.jsx)(`div`,{className:`text-xs text-slate-500 mt-1`,children:C.totalImagesFormula({shots:L($.shots),locales:L($.locales),deviceSizes:L($.deviceSizes)})})]}),(0,v.jsxs)(`div`,{className:`rounded-2xl border border-slate-800 bg-slate-950 p-4`,children:[(0,v.jsx)(`div`,{className:`text-xs text-slate-500`,children:C.multiplierLabel}),(0,v.jsxs)(`div`,{className:`text-3xl font-black text-white`,children:[L($.multiplier),C.multiplierSuffix]}),(0,v.jsx)(`div`,{className:`text-xs text-slate-500 mt-1`,children:C.multiplierHelp({multiplier:L($.multiplier)})})]})]}),(0,v.jsxs)(`div`,{className:`rounded-2xl border border-slate-800 bg-slate-950 p-4 space-y-2`,children:[(0,v.jsx)(`div`,{className:`text-xs text-slate-500`,children:C.manualTimeLabel}),(0,v.jsx)(`div`,{className:`text-2xl font-black text-white`,children:re($.manualMinutes)}),(0,v.jsx)(`div`,{className:`text-xs text-slate-500`,children:C.manualTimeFormula({images:L($.totalImages),minutesPerImage:L(Q)})})]}),(0,v.jsxs)(`div`,{className:`rounded-2xl border border-blue-500/40 bg-blue-500/10 p-4 space-y-2`,children:[(0,v.jsx)(`div`,{className:`text-xs text-blue-200 font-semibold`,children:C.withShipScreensLabel}),(0,v.jsx)(`div`,{className:`text-sm text-slate-200`,children:n===`ja`?(0,v.jsxs)(v.Fragment,{children:[`元スクショ `,(0,v.jsx)(`span`,{className:`font-bold text-white`,children:L($.shots)}),` 枚と CSV`,` `,(0,v.jsx)(`span`,{className:`font-bold text-white`,children:L($.locales)}),` 行を用意して、一括で出力できます。`]}):(0,v.jsxs)(v.Fragment,{children:[`Prepare `,(0,v.jsx)(`span`,{className:`font-bold text-white`,children:L($.shots)}),` base screenshots, import`,` `,(0,v.jsx)(`span`,{className:`font-bold text-white`,children:L($.locales)}),` locales, then export the full set.`]})}),(0,v.jsx)(`div`,{className:`text-xs text-slate-300`,children:C.withShipScreensNote})]}),(0,v.jsxs)(`div`,{className:`rounded-2xl border border-slate-800 bg-slate-950 p-4 space-y-2`,children:[(0,v.jsx)(`div`,{className:`text-xs text-slate-500`,children:C.minSetTitle}),(0,v.jsx)(`div`,{className:`text-sm text-slate-200`,children:C.minSetBody}),(0,v.jsx)(`ul`,{className:`text-xs text-slate-400 space-y-1 list-disc list-inside`,children:ae.map(e=>(0,v.jsx)(`li`,{children:e},e))}),(0,v.jsx)(`div`,{className:`text-xs text-slate-500`,children:C.minSetNote})]}),(0,v.jsxs)(`div`,{className:`flex flex-col sm:flex-row gap-3`,children:[(0,v.jsxs)(`button`,{type:`button`,onClick:()=>{let e=Math.min(50,Math.max(1,Math.trunc($.shots))),t=[`Locale`];for(let n=1;n<=e;n+=1)t.push(`Header_${n}`,`Subtitle_${n}`);let n=[`en-US`],i=[`ja-JP`];for(let t=1;t<=e;t+=1)n.push(`Headline ${t}`,`Subtitle ${t}`),i.push(`ヘッドライン${t}`,`サブタイトル${t}`);let a=`\ufeff${[t.join(`,`),n.join(`,`),i.join(`,`)].join(`
|
|
4
|
+
`)}`,o=`data:text/csv;charset=utf-8,${encodeURIComponent(a)}`,s=document.createElement(`a`);s.href=o,s.download=`shipscreens-copy-template.csv`,document.body.appendChild(s),s.click(),document.body.removeChild(s),r(`tool_download`,{tool:`screenshot_workload_calculator`,asset:`csv_template`})},className:`flex-1 inline-flex items-center justify-center gap-2 px-4 py-3 rounded-xl border border-slate-700 bg-slate-950 text-slate-200 hover:bg-slate-900 transition`,children:[(0,v.jsx)(te,{size:16}),C.downloadCsv]}),(0,v.jsxs)(`a`,{href:E,onClick:e=>i(e,`tool_cta_click`,{tool:`screenshot_workload_calculator`,cta:`open_agent_handoff_results`}),className:`flex-1 inline-flex items-center justify-center gap-2 px-4 py-3 rounded-xl bg-blue-500 text-white font-bold hover:bg-blue-600 transition`,children:[C.tellAgentCta,` `,(0,v.jsx)(c,{size:16})]}),(0,v.jsxs)(`a`,{href:D,onClick:e=>i(e,`tool_cta_click`,{tool:`screenshot_workload_calculator`,cta:`open_sample_project_results`}),className:`flex-1 inline-flex items-center justify-center gap-2 px-4 py-3 rounded-xl border border-slate-700 bg-slate-950 text-slate-200 font-bold hover:bg-slate-900 transition`,children:[C.startSample,` `,(0,v.jsx)(c,{size:16})]})]}),(0,v.jsx)(`div`,{className:`text-xs text-slate-500`,children:n===`ja`?(0,v.jsxs)(v.Fragment,{children:[`例: 5枚 × 10言語 × 4サイズ = `,(0,v.jsx)(`span`,{className:`text-slate-200 font-semibold`,children:`200枚`}),`.`]}):(0,v.jsxs)(v.Fragment,{children:[`Example: 5 screenshots × 10 locales × 4 device sizes = `,(0,v.jsx)(`span`,{className:`text-slate-200 font-semibold`,children:`200 images`}),`.`]})})]})]}),(0,v.jsxs)(`section`,{className:`max-w-3xl mx-auto bg-slate-900/60 border border-slate-800 rounded-2xl p-6 space-y-4`,children:[(0,v.jsx)(`p`,{className:`text-sm text-slate-400`,children:C.feedbackText}),(0,v.jsx)(`div`,{className:`text-lg font-bold text-white`,children:w.title||C.feedbackCta}),(0,v.jsx)(`div`,{className:`text-sm text-slate-300 leading-relaxed`,children:w.body}),T.length>0&&(0,v.jsx)(`ul`,{className:`space-y-2 text-sm text-slate-300 list-disc pl-5`,children:T.map(e=>(0,v.jsx)(`li`,{children:e},e))}),(0,v.jsxs)(`a`,{href:`/design-partner/?entry_source=screenshot_workload_calculator_design_partner_offer&scope=matrix&workflow=figma&blocker=naming_order`,onClick:e=>i(e,`tool_cta_click`,{tool:`screenshot_workload_calculator`,cta:`open_design_partner_offer`}),className:`inline-flex items-center gap-2 text-sm text-blue-300 hover:text-blue-200 transition-colors underline underline-offset-4`,children:[O,` `,(0,v.jsx)(c,{size:14})]}),(0,v.jsxs)(`div`,{className:`flex flex-col sm:flex-row gap-3`,children:[(0,v.jsxs)(`a`,{href:M,onClick:e=>i(e,`tool_cta_click`,{tool:`screenshot_workload_calculator`,cta:`email_design_partner`}),className:`flex-1 inline-flex items-center justify-center gap-2 px-4 py-3 rounded-xl bg-blue-500 text-white font-bold hover:bg-blue-600 transition`,children:[w.emailCta||e(`landing.partner.emailCta`),` `,(0,v.jsx)(c,{size:16})]}),(0,v.jsx)(`a`,{href:`https://x.com/shipscreenscom`,target:`_blank`,rel:`noopener noreferrer`,onClick:()=>r(`tool_cta_click`,{tool:`screenshot_workload_calculator`,cta:`dm_design_partner`}),className:`flex-1 inline-flex items-center justify-center gap-2 px-4 py-3 rounded-xl border border-slate-700 bg-slate-950 text-slate-200 font-bold hover:bg-slate-900 transition`,children:w.dmCta||e(`landing.partner.dmCta`)}),(0,v.jsxs)(`a`,{href:`/pricing?offer=pay_first&entry_source=screenshot_workload_calculator_pay_first_partner_block`,onClick:e=>i(e,`tool_cta_click`,{tool:`screenshot_workload_calculator`,cta:`open_pay_first_from_partner_block`}),className:`flex-1 inline-flex items-center justify-center gap-2 px-4 py-3 rounded-xl border border-emerald-500/40 bg-emerald-500/10 text-emerald-100 font-bold hover:bg-emerald-500/15 transition`,children:[w.payFirstCta||e(`landing.partner.payFirstCta`),` `,(0,v.jsx)(c,{size:16})]})]}),(0,v.jsxs)(`div`,{className:`text-xs text-slate-500`,children:[w.emailLabel||e(`landing.partner.emailLabel`),` `,(0,v.jsx)(`a`,{href:`mailto:${k}`,className:`underline underline-offset-4 hover:text-white`,children:k})]})]}),(0,v.jsxs)(`section`,{className:`bg-slate-900/60 border border-slate-800 rounded-2xl p-6 flex flex-col md:flex-row items-start md:items-center justify-between gap-4`,children:[(0,v.jsxs)(`div`,{className:`space-y-1`,children:[(0,v.jsx)(`div`,{className:`text-sm font-bold text-white`,children:C.nextTitle}),(0,v.jsx)(`div`,{className:`text-sm text-slate-300`,children:C.nextBody})]}),(0,v.jsxs)(`div`,{className:`flex flex-col sm:flex-row gap-3 w-full md:w-auto`,children:[(0,v.jsxs)(`a`,{href:D,onClick:e=>i(e,`tool_cta_click`,{tool:`screenshot_workload_calculator`,cta:`open_sample_project`}),className:`inline-flex items-center justify-center gap-2 px-4 py-3 rounded-xl bg-blue-500 text-white font-bold hover:bg-blue-600 transition w-full md:w-auto`,children:[C.nextCtaSample,` `,(0,v.jsx)(c,{size:16})]}),(0,v.jsxs)(`a`,{href:`/tools/5-panel-screenshot-framework/`,onClick:()=>r(`tool_cta_click`,{tool:`screenshot_workload_calculator`,cta:`open_framework`}),className:`inline-flex items-center justify-center gap-2 px-4 py-3 rounded-xl border border-slate-700 bg-slate-950 text-slate-200 font-bold hover:bg-slate-900 transition w-full md:w-auto`,children:[C.nextCta,` `,(0,v.jsx)(c,{size:16})]})]})]})]}),(0,v.jsx)(m,{primary:{label:C.tellAgentCta,href:E,onClick:e=>i(e,`tool_cta_click`,{tool:`screenshot_workload_calculator`,cta:`sticky_primary_agent`})},secondary:{label:C.startSample,href:D,onClick:e=>i(e,`tool_cta_click`,{tool:`screenshot_workload_calculator`,cta:`sticky_secondary_sample`})}})]})};export{S as default};
|
|
5
|
+
//# sourceMappingURL=WorkloadCalculator-BbFWF2Ls.js.map
|