shipscreens 0.1.2 → 0.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +49 -0
- package/bin/shipscreens.js +15 -1
- package/cli/commands/build.js +19 -4
- package/cli/mcpServer.js +573 -0
- package/dist/.well-known/ai-agents.json +88 -0
- package/dist/.well-known/llms-full.txt +150 -0
- package/dist/.well-known/llms.txt +57 -0
- package/dist/.well-known/mcp-server.json +40 -0
- package/dist/ai-agents.json +88 -0
- package/dist/app/assets/AgentCli-DNTDYBbk.js +17 -0
- package/dist/app/assets/AgentCli-DNTDYBbk.js.map +1 -0
- package/dist/app/assets/App-BwQ1zI7a.css +1 -0
- package/dist/app/assets/App-DPi9LW-y.js +13 -0
- package/dist/app/assets/App-DPi9LW-y.js.map +1 -0
- package/dist/app/assets/AppReviewAso-BUTGLatx.js +4 -0
- package/dist/app/assets/AppReviewAso-BUTGLatx.js.map +1 -0
- package/dist/app/assets/{Cancelled-66ixTUrm.js → Cancelled-BeS-WlPj.js} +2 -2
- package/dist/app/assets/{Cancelled-66ixTUrm.js.map → Cancelled-BeS-WlPj.js.map} +1 -1
- package/dist/app/assets/CopyButton-BZQEBHBq.js +2 -0
- package/dist/app/assets/CopyButton-BZQEBHBq.js.map +1 -0
- package/dist/app/assets/FastlaneScreenshots-Dn7jfpuz.js +52 -0
- package/dist/app/assets/FastlaneScreenshots-Dn7jfpuz.js.map +1 -0
- package/dist/app/assets/FirstExport-CzioMqbJ.js +6 -0
- package/dist/app/assets/FirstExport-CzioMqbJ.js.map +1 -0
- package/dist/app/assets/FitPanel-DzYzTMEi.js +2 -0
- package/dist/app/assets/FitPanel-DzYzTMEi.js.map +1 -0
- package/dist/app/assets/FivePanelFramework-Bt5-NjCV.js +62 -0
- package/dist/app/assets/FivePanelFramework-Bt5-NjCV.js.map +1 -0
- package/dist/{assets/ForgotPassword-B9_si1tH.js → app/assets/ForgotPassword-DuHNHuUe.js} +2 -2
- package/dist/app/assets/{ForgotPassword-B9_si1tH.js.map → ForgotPassword-DuHNHuUe.js.map} +1 -1
- package/dist/app/assets/Landing-DB9pTPoT.js +2 -0
- package/dist/app/assets/Landing-DB9pTPoT.js.map +1 -0
- package/dist/app/assets/{LanguageSwitcher-BD9N-dla.js → LanguageSwitcher-CfUhVVuT.js} +2 -2
- package/dist/{assets/LanguageSwitcher-BD9N-dla.js.map → app/assets/LanguageSwitcher-CfUhVVuT.js.map} +1 -1
- package/dist/app/assets/{Legal-D3cAXQXw.js → Legal-p-YIX5Jv.js} +2 -2
- package/dist/app/assets/{Legal-D3cAXQXw.js.map → Legal-p-YIX5Jv.js.map} +1 -1
- package/dist/app/assets/{NotFound-ClV-6RmP.js → NotFound-XohZYy7w.js} +2 -2
- package/dist/app/assets/{NotFound-ClV-6RmP.js.map → NotFound-XohZYy7w.js.map} +1 -1
- package/dist/app/assets/Pricing-CxCutpT0.js +2 -0
- package/dist/app/assets/Pricing-CxCutpT0.js.map +1 -0
- package/dist/app/assets/{Privacy-DfxgWwC3.js → Privacy-D8m3h6P-.js} +2 -2
- package/dist/{assets/Privacy-DfxgWwC3.js.map → app/assets/Privacy-D8m3h6P-.js.map} +1 -1
- package/dist/app/assets/{SignIn-ghQCKcPe.js → SignIn-CINUig91.js} +2 -2
- package/dist/app/assets/{SignIn-ghQCKcPe.js.map → SignIn-CINUig91.js.map} +1 -1
- package/dist/{assets/SignUp-BKB87hd4.js → app/assets/SignUp-B1H6dQgE.js} +2 -2
- package/dist/{assets/SignUp-BKB87hd4.js.map → app/assets/SignUp-B1H6dQgE.js.map} +1 -1
- package/dist/app/assets/SiteHeader-BGQW06JF.js +2 -0
- package/dist/app/assets/SiteHeader-BGQW06JF.js.map +1 -0
- package/dist/app/assets/StickyMobileCta-C41cW-Ji.js +2 -0
- package/dist/app/assets/StickyMobileCta-C41cW-Ji.js.map +1 -0
- package/dist/app/assets/StoreAssetsPipeline-bUVDqZAU.js +6 -0
- package/dist/app/assets/StoreAssetsPipeline-bUVDqZAU.js.map +1 -0
- package/dist/app/assets/{Success-819qvzmp.js → Success-CMpdlLi2.js} +2 -2
- package/dist/app/assets/{Success-819qvzmp.js.map → Success-CMpdlLi2.js.map} +1 -1
- package/dist/app/assets/{Terms-7k3nA4SU.js → Terms-C8NcE4sw.js} +2 -2
- package/dist/app/assets/{Terms-7k3nA4SU.js.map → Terms-C8NcE4sw.js.map} +1 -1
- package/dist/app/assets/ToolGuardrailsPanel-DbjLhdX8.js +2 -0
- package/dist/app/assets/ToolGuardrailsPanel-DbjLhdX8.js.map +1 -0
- package/dist/app/assets/ToolsIndex-BuZSvoBC.js +6 -0
- package/dist/app/assets/ToolsIndex-BuZSvoBC.js.map +1 -0
- package/dist/app/assets/WorkloadCalculator-CjdG5TVq.js +5 -0
- package/dist/app/assets/WorkloadCalculator-CjdG5TVq.js.map +1 -0
- package/dist/app/assets/{calculator-CiqKFdRp.js → calculator-_D64kDDH.js} +2 -2
- package/dist/app/assets/{calculator-CiqKFdRp.js.map → calculator-_D64kDDH.js.map} +1 -1
- package/dist/app/assets/check-BaiZ7vYg.js +2 -0
- package/dist/app/assets/check-BaiZ7vYg.js.map +1 -0
- package/dist/app/assets/chevron-down-DVRa-y8D.js +2 -0
- package/dist/app/assets/{chevron-down-_xIkRLaA.js.map → chevron-down-DVRa-y8D.js.map} +1 -1
- package/dist/app/assets/circle-check-reAyVfkP.js +2 -0
- package/dist/app/assets/circle-check-reAyVfkP.js.map +1 -0
- package/dist/app/assets/{clipboard-copy-DCJioqIc.js → clipboard-copy-BfB1mutp.js} +2 -2
- package/dist/app/assets/{clipboard-copy-DCJioqIc.js.map → clipboard-copy-BfB1mutp.js.map} +1 -1
- package/dist/app/assets/{copy-AQdWJCcs.js → copy-B9y2mtjd.js} +2 -2
- package/dist/app/assets/{copy-AQdWJCcs.js.map → copy-B9y2mtjd.js.map} +1 -1
- package/dist/app/assets/{crop-DOMVp18h.js → crop-2_j5MtOq.js} +2 -2
- package/dist/app/assets/{crop-DOMVp18h.js.map → crop-2_j5MtOq.js.map} +1 -1
- package/dist/app/assets/{download-D5RbyXDm.js → download-CqEtEEpe.js} +2 -2
- package/dist/app/assets/{download-D5RbyXDm.js.map → download-CqEtEEpe.js.map} +1 -1
- package/dist/app/assets/{eye-CLcZi_uk.js → eye-B1LPDhW7.js} +2 -2
- package/dist/app/assets/{eye-CLcZi_uk.js.map → eye-B1LPDhW7.js.map} +1 -1
- package/dist/app/assets/folder-tree-CnF1eSpg.js +2 -0
- package/dist/app/assets/folder-tree-CnF1eSpg.js.map +1 -0
- package/dist/app/assets/{grid-3x3-AKmIrhzv.js → grid-3x3-BB0TBwXQ.js} +2 -2
- package/dist/{assets/grid-3x3-AKmIrhzv.js.map → app/assets/grid-3x3-BB0TBwXQ.js.map} +1 -1
- package/dist/app/assets/hero/cli-build-tree-15s.mp4 +0 -0
- package/dist/app/assets/hero/cli-build-tree-15s.webm +0 -0
- package/dist/app/assets/hero/cli-build-tree-25s.mp4 +0 -0
- package/dist/app/assets/hero/cli-build-tree-25s.webm +0 -0
- package/dist/app/assets/hero/cli-build-tree-poster.png +0 -0
- package/dist/app/assets/hero/demo-25s-poster.jpg +0 -0
- package/dist/app/assets/hero/demo-25s.mp4 +0 -0
- package/dist/app/assets/hero/demo-25s.webm +0 -0
- package/dist/app/assets/hero/demo-poster.jpg +0 -0
- package/dist/app/assets/hero/demo.mp4 +0 -0
- package/dist/app/assets/hero/demo.webm +0 -0
- package/dist/app/assets/index-Bffw9flM.js +180 -0
- package/dist/app/assets/index-Bffw9flM.js.map +1 -0
- package/dist/app/assets/index-CQecHUcy.css +1 -0
- package/dist/app/assets/{layout-grid-CpGXUPMR.js → layout-grid-DbSzm5KY.js} +2 -2
- package/dist/app/assets/{layout-grid-CpGXUPMR.js.map → layout-grid-DbSzm5KY.js.map} +1 -1
- package/dist/app/assets/noto-sans-arabic-arabic-400-normal-AAMxebZb.woff2 +0 -0
- package/dist/app/assets/noto-sans-arabic-arabic-400-normal-hsqIUL9Q.woff +0 -0
- package/dist/app/assets/noto-sans-arabic-arabic-500-normal-CoaTbVwZ.woff +0 -0
- package/dist/app/assets/noto-sans-arabic-arabic-500-normal-DPISWLls.woff2 +0 -0
- package/dist/app/assets/noto-sans-arabic-arabic-700-normal-3CqrwsiZ.woff2 +0 -0
- package/dist/app/assets/noto-sans-arabic-arabic-700-normal-DXnsSW3z.woff +0 -0
- package/dist/app/assets/noto-sans-thai-thai-400-normal-BEOmKAI1.woff2 +0 -0
- package/dist/app/assets/noto-sans-thai-thai-400-normal-Dxb_unuU.woff +0 -0
- package/dist/app/assets/noto-sans-thai-thai-500-normal-BOGXO2tw.woff +0 -0
- package/dist/app/assets/noto-sans-thai-thai-500-normal-CU_X86GQ.woff2 +0 -0
- package/dist/app/assets/noto-sans-thai-thai-700-normal-C9ISMlQq.woff +0 -0
- package/dist/app/assets/noto-sans-thai-thai-700-normal-Cm52XUnT.woff2 +0 -0
- package/dist/app/assets/{rocket-IzRFv1aW.js → rocket-d1Ntm8ge.js} +2 -2
- package/dist/app/assets/{rocket-IzRFv1aW.js.map → rocket-d1Ntm8ge.js.map} +1 -1
- package/dist/app/assets/{shield-check-CngdN3zn.js → shield-check-DXqKmrPT.js} +2 -2
- package/dist/app/assets/{shield-check-CngdN3zn.js.map → shield-check-DXqKmrPT.js.map} +1 -1
- package/dist/app/assets/{signIn-Cn6FaQYi.js → signIn-D-eCUhFT.js} +2 -2
- package/dist/{assets/signIn-Cn6FaQYi.js.map → app/assets/signIn-D-eCUhFT.js.map} +1 -1
- package/dist/app/assets/{smartphone-CpNG_Pfk.js → smartphone-Cjrk_YxV.js} +2 -2
- package/dist/app/assets/{smartphone-CpNG_Pfk.js.map → smartphone-Cjrk_YxV.js.map} +1 -1
- package/dist/app/assets/{terminal-BbBESfoU.js → terminal-CT_KE008.js} +2 -2
- package/dist/{assets/terminal-BbBESfoU.js.map → app/assets/terminal-CT_KE008.js.map} +1 -1
- package/dist/{assets/useAuth-3WWZ3GCD.js → app/assets/useAuth-ctmUbyCR.js} +2 -2
- package/dist/app/assets/{useAuth-3WWZ3GCD.js.map → useAuth-ctmUbyCR.js.map} +1 -1
- package/dist/app/index.html +6 -2
- package/dist/assets/AgentCli-DNTDYBbk.js +17 -0
- package/dist/assets/AgentCli-DNTDYBbk.js.map +1 -0
- package/dist/assets/App-BwQ1zI7a.css +1 -0
- package/dist/assets/App-DPi9LW-y.js +13 -0
- package/dist/assets/App-DPi9LW-y.js.map +1 -0
- package/dist/assets/AppReviewAso-BUTGLatx.js +4 -0
- package/dist/assets/AppReviewAso-BUTGLatx.js.map +1 -0
- package/dist/assets/{Cancelled-66ixTUrm.js → Cancelled-BeS-WlPj.js} +2 -2
- package/dist/assets/{Cancelled-66ixTUrm.js.map → Cancelled-BeS-WlPj.js.map} +1 -1
- package/dist/assets/CopyButton-BZQEBHBq.js +2 -0
- package/dist/assets/CopyButton-BZQEBHBq.js.map +1 -0
- package/dist/assets/FastlaneScreenshots-Dn7jfpuz.js +52 -0
- package/dist/assets/FastlaneScreenshots-Dn7jfpuz.js.map +1 -0
- package/dist/assets/FirstExport-CzioMqbJ.js +6 -0
- package/dist/assets/FirstExport-CzioMqbJ.js.map +1 -0
- package/dist/assets/FitPanel-DzYzTMEi.js +2 -0
- package/dist/assets/FitPanel-DzYzTMEi.js.map +1 -0
- package/dist/assets/FivePanelFramework-Bt5-NjCV.js +62 -0
- package/dist/assets/FivePanelFramework-Bt5-NjCV.js.map +1 -0
- package/dist/{app/assets/ForgotPassword-B9_si1tH.js → assets/ForgotPassword-DuHNHuUe.js} +2 -2
- package/dist/assets/{ForgotPassword-B9_si1tH.js.map → ForgotPassword-DuHNHuUe.js.map} +1 -1
- package/dist/assets/Landing-DB9pTPoT.js +2 -0
- package/dist/assets/Landing-DB9pTPoT.js.map +1 -0
- package/dist/assets/{LanguageSwitcher-BD9N-dla.js → LanguageSwitcher-CfUhVVuT.js} +2 -2
- package/dist/{app/assets/LanguageSwitcher-BD9N-dla.js.map → assets/LanguageSwitcher-CfUhVVuT.js.map} +1 -1
- package/dist/assets/{Legal-D3cAXQXw.js → Legal-p-YIX5Jv.js} +2 -2
- package/dist/assets/{Legal-D3cAXQXw.js.map → Legal-p-YIX5Jv.js.map} +1 -1
- package/dist/assets/{NotFound-ClV-6RmP.js → NotFound-XohZYy7w.js} +2 -2
- package/dist/assets/{NotFound-ClV-6RmP.js.map → NotFound-XohZYy7w.js.map} +1 -1
- package/dist/assets/Pricing-CxCutpT0.js +2 -0
- package/dist/assets/Pricing-CxCutpT0.js.map +1 -0
- package/dist/assets/{Privacy-DfxgWwC3.js → Privacy-D8m3h6P-.js} +2 -2
- package/dist/{app/assets/Privacy-DfxgWwC3.js.map → assets/Privacy-D8m3h6P-.js.map} +1 -1
- package/dist/assets/{SignIn-ghQCKcPe.js → SignIn-CINUig91.js} +2 -2
- package/dist/assets/{SignIn-ghQCKcPe.js.map → SignIn-CINUig91.js.map} +1 -1
- package/dist/{app/assets/SignUp-BKB87hd4.js → assets/SignUp-B1H6dQgE.js} +2 -2
- package/dist/{app/assets/SignUp-BKB87hd4.js.map → assets/SignUp-B1H6dQgE.js.map} +1 -1
- package/dist/assets/SiteHeader-BGQW06JF.js +2 -0
- package/dist/assets/SiteHeader-BGQW06JF.js.map +1 -0
- package/dist/assets/StickyMobileCta-C41cW-Ji.js +2 -0
- package/dist/assets/StickyMobileCta-C41cW-Ji.js.map +1 -0
- package/dist/assets/StoreAssetsPipeline-bUVDqZAU.js +6 -0
- package/dist/assets/StoreAssetsPipeline-bUVDqZAU.js.map +1 -0
- package/dist/assets/{Success-819qvzmp.js → Success-CMpdlLi2.js} +2 -2
- package/dist/assets/{Success-819qvzmp.js.map → Success-CMpdlLi2.js.map} +1 -1
- package/dist/assets/{Terms-7k3nA4SU.js → Terms-C8NcE4sw.js} +2 -2
- package/dist/assets/{Terms-7k3nA4SU.js.map → Terms-C8NcE4sw.js.map} +1 -1
- package/dist/assets/ToolGuardrailsPanel-DbjLhdX8.js +2 -0
- package/dist/assets/ToolGuardrailsPanel-DbjLhdX8.js.map +1 -0
- package/dist/assets/ToolsIndex-BuZSvoBC.js +6 -0
- package/dist/assets/ToolsIndex-BuZSvoBC.js.map +1 -0
- package/dist/assets/WorkloadCalculator-CjdG5TVq.js +5 -0
- package/dist/assets/WorkloadCalculator-CjdG5TVq.js.map +1 -0
- package/dist/assets/{calculator-CiqKFdRp.js → calculator-_D64kDDH.js} +2 -2
- package/dist/assets/{calculator-CiqKFdRp.js.map → calculator-_D64kDDH.js.map} +1 -1
- package/dist/assets/check-BaiZ7vYg.js +2 -0
- package/dist/assets/check-BaiZ7vYg.js.map +1 -0
- package/dist/assets/chevron-down-DVRa-y8D.js +2 -0
- package/dist/assets/{chevron-down-_xIkRLaA.js.map → chevron-down-DVRa-y8D.js.map} +1 -1
- package/dist/assets/circle-check-reAyVfkP.js +2 -0
- package/dist/assets/circle-check-reAyVfkP.js.map +1 -0
- package/dist/assets/{clipboard-copy-DCJioqIc.js → clipboard-copy-BfB1mutp.js} +2 -2
- package/dist/assets/{clipboard-copy-DCJioqIc.js.map → clipboard-copy-BfB1mutp.js.map} +1 -1
- package/dist/assets/{copy-AQdWJCcs.js → copy-B9y2mtjd.js} +2 -2
- package/dist/assets/{copy-AQdWJCcs.js.map → copy-B9y2mtjd.js.map} +1 -1
- package/dist/assets/{crop-DOMVp18h.js → crop-2_j5MtOq.js} +2 -2
- package/dist/assets/{crop-DOMVp18h.js.map → crop-2_j5MtOq.js.map} +1 -1
- package/dist/assets/{download-D5RbyXDm.js → download-CqEtEEpe.js} +2 -2
- package/dist/assets/{download-D5RbyXDm.js.map → download-CqEtEEpe.js.map} +1 -1
- package/dist/assets/{eye-CLcZi_uk.js → eye-B1LPDhW7.js} +2 -2
- package/dist/assets/{eye-CLcZi_uk.js.map → eye-B1LPDhW7.js.map} +1 -1
- package/dist/assets/folder-tree-CnF1eSpg.js +2 -0
- package/dist/assets/folder-tree-CnF1eSpg.js.map +1 -0
- package/dist/assets/{grid-3x3-AKmIrhzv.js → grid-3x3-BB0TBwXQ.js} +2 -2
- package/dist/{app/assets/grid-3x3-AKmIrhzv.js.map → assets/grid-3x3-BB0TBwXQ.js.map} +1 -1
- package/dist/assets/hero/cli-build-tree-15s.mp4 +0 -0
- package/dist/assets/hero/cli-build-tree-15s.webm +0 -0
- package/dist/assets/hero/cli-build-tree-25s.mp4 +0 -0
- package/dist/assets/hero/cli-build-tree-25s.webm +0 -0
- package/dist/assets/hero/cli-build-tree-poster.png +0 -0
- package/dist/assets/hero/demo-25s-poster.jpg +0 -0
- package/dist/assets/hero/demo-25s.mp4 +0 -0
- package/dist/assets/hero/demo-25s.webm +0 -0
- package/dist/assets/hero/demo-poster.jpg +0 -0
- package/dist/assets/hero/demo.mp4 +0 -0
- package/dist/assets/hero/demo.webm +0 -0
- package/dist/assets/index-Bffw9flM.js +180 -0
- package/dist/assets/index-Bffw9flM.js.map +1 -0
- package/dist/assets/index-CQecHUcy.css +1 -0
- package/dist/assets/{layout-grid-CpGXUPMR.js → layout-grid-DbSzm5KY.js} +2 -2
- package/dist/assets/{layout-grid-CpGXUPMR.js.map → layout-grid-DbSzm5KY.js.map} +1 -1
- package/dist/assets/noto-sans-arabic-arabic-400-normal-AAMxebZb.woff2 +0 -0
- package/dist/assets/noto-sans-arabic-arabic-400-normal-hsqIUL9Q.woff +0 -0
- package/dist/assets/noto-sans-arabic-arabic-500-normal-CoaTbVwZ.woff +0 -0
- package/dist/assets/noto-sans-arabic-arabic-500-normal-DPISWLls.woff2 +0 -0
- package/dist/assets/noto-sans-arabic-arabic-700-normal-3CqrwsiZ.woff2 +0 -0
- package/dist/assets/noto-sans-arabic-arabic-700-normal-DXnsSW3z.woff +0 -0
- package/dist/assets/noto-sans-thai-thai-400-normal-BEOmKAI1.woff2 +0 -0
- package/dist/assets/noto-sans-thai-thai-400-normal-Dxb_unuU.woff +0 -0
- package/dist/assets/noto-sans-thai-thai-500-normal-BOGXO2tw.woff +0 -0
- package/dist/assets/noto-sans-thai-thai-500-normal-CU_X86GQ.woff2 +0 -0
- package/dist/assets/noto-sans-thai-thai-700-normal-C9ISMlQq.woff +0 -0
- package/dist/assets/noto-sans-thai-thai-700-normal-Cm52XUnT.woff2 +0 -0
- package/dist/assets/{rocket-IzRFv1aW.js → rocket-d1Ntm8ge.js} +2 -2
- package/dist/assets/{rocket-IzRFv1aW.js.map → rocket-d1Ntm8ge.js.map} +1 -1
- package/dist/assets/{shield-check-CngdN3zn.js → shield-check-DXqKmrPT.js} +2 -2
- package/dist/assets/{shield-check-CngdN3zn.js.map → shield-check-DXqKmrPT.js.map} +1 -1
- package/dist/assets/{signIn-Cn6FaQYi.js → signIn-D-eCUhFT.js} +2 -2
- package/dist/{app/assets/signIn-Cn6FaQYi.js.map → assets/signIn-D-eCUhFT.js.map} +1 -1
- package/dist/assets/{smartphone-CpNG_Pfk.js → smartphone-Cjrk_YxV.js} +2 -2
- package/dist/assets/{smartphone-CpNG_Pfk.js.map → smartphone-Cjrk_YxV.js.map} +1 -1
- package/dist/assets/{terminal-BbBESfoU.js → terminal-CT_KE008.js} +2 -2
- package/dist/{app/assets/terminal-BbBESfoU.js.map → assets/terminal-CT_KE008.js.map} +1 -1
- package/dist/{app/assets/useAuth-3WWZ3GCD.js → assets/useAuth-ctmUbyCR.js} +2 -2
- package/dist/assets/{useAuth-3WWZ3GCD.js.map → useAuth-ctmUbyCR.js.map} +1 -1
- package/dist/cancelled/index.html +6 -2
- package/dist/forgot-password/index.html +6 -2
- package/dist/index.html +6 -2
- package/dist/legal/index.html +6 -2
- package/dist/llms-full.txt +150 -0
- package/dist/llms.txt +57 -0
- package/dist/mcp-server.json +40 -0
- package/dist/pricing/index.html +37 -0
- package/dist/privacy/index.html +6 -2
- package/dist/robots.txt +8 -0
- package/dist/signin/index.html +6 -2
- package/dist/signup/index.html +6 -2
- package/dist/sitemap.xml +40 -0
- package/dist/success/index.html +6 -2
- package/dist/terms/index.html +6 -2
- package/dist/tools/5-panel-screenshot-framework/index.html +6 -2
- package/dist/tools/agent-cli/index.html +14 -8
- package/dist/tools/app-review-aso/index.html +6 -2
- package/dist/tools/fastlane-screenshots/index.html +6 -2
- package/dist/tools/first-export/index.html +6 -2
- package/dist/tools/index.html +6 -2
- package/dist/tools/screenshot-workload-calculator/index.html +6 -2
- package/dist/tools/store-assets-pipeline/index.html +6 -2
- package/package.json +22 -2
- package/dist/app/assets/AgentCli-FWNCO1pb.js +0 -17
- package/dist/app/assets/AgentCli-FWNCO1pb.js.map +0 -1
- package/dist/app/assets/App-yU7CFXCv.js +0 -13
- package/dist/app/assets/App-yU7CFXCv.js.map +0 -1
- package/dist/app/assets/AppReviewAso-BYfaP1Lu.js +0 -4
- package/dist/app/assets/AppReviewAso-BYfaP1Lu.js.map +0 -1
- package/dist/app/assets/CliPreflightCard-D7utpFux.js +0 -2
- package/dist/app/assets/CliPreflightCard-D7utpFux.js.map +0 -1
- package/dist/app/assets/CopyButton-CmVmSaYn.js +0 -2
- package/dist/app/assets/CopyButton-CmVmSaYn.js.map +0 -1
- package/dist/app/assets/FastlaneScreenshots-CRMcetq-.js +0 -52
- package/dist/app/assets/FastlaneScreenshots-CRMcetq-.js.map +0 -1
- package/dist/app/assets/FirstExport-C0WgL4Hl.js +0 -6
- package/dist/app/assets/FirstExport-C0WgL4Hl.js.map +0 -1
- package/dist/app/assets/FivePanelFramework-BwCRmXIK.js +0 -60
- package/dist/app/assets/FivePanelFramework-BwCRmXIK.js.map +0 -1
- package/dist/app/assets/Landing-s1ni1n-7.js +0 -2
- package/dist/app/assets/Landing-s1ni1n-7.js.map +0 -1
- package/dist/app/assets/SiteHeader-DxsqNPnt.js +0 -2
- package/dist/app/assets/SiteHeader-DxsqNPnt.js.map +0 -1
- package/dist/app/assets/StickyMobileCta-C_x2pUIF.js +0 -2
- package/dist/app/assets/StickyMobileCta-C_x2pUIF.js.map +0 -1
- package/dist/app/assets/StoreAssetsPipeline-4hXRONUd.js +0 -4
- package/dist/app/assets/StoreAssetsPipeline-4hXRONUd.js.map +0 -1
- package/dist/app/assets/ToolsIndex-CzrxymnM.js +0 -6
- package/dist/app/assets/ToolsIndex-CzrxymnM.js.map +0 -1
- package/dist/app/assets/WorkloadCalculator-D2TuKS4B.js +0 -5
- package/dist/app/assets/WorkloadCalculator-D2TuKS4B.js.map +0 -1
- package/dist/app/assets/chevron-down-_xIkRLaA.js +0 -2
- package/dist/app/assets/index-Bqv2NztY.js +0 -180
- package/dist/app/assets/index-Bqv2NztY.js.map +0 -1
- package/dist/app/assets/index-DGVMa-P7.css +0 -1
- package/dist/assets/AgentCli-FWNCO1pb.js +0 -17
- package/dist/assets/AgentCli-FWNCO1pb.js.map +0 -1
- package/dist/assets/App-yU7CFXCv.js +0 -13
- package/dist/assets/App-yU7CFXCv.js.map +0 -1
- package/dist/assets/AppReviewAso-BYfaP1Lu.js +0 -4
- package/dist/assets/AppReviewAso-BYfaP1Lu.js.map +0 -1
- package/dist/assets/CliPreflightCard-D7utpFux.js +0 -2
- package/dist/assets/CliPreflightCard-D7utpFux.js.map +0 -1
- package/dist/assets/CopyButton-CmVmSaYn.js +0 -2
- package/dist/assets/CopyButton-CmVmSaYn.js.map +0 -1
- package/dist/assets/FastlaneScreenshots-CRMcetq-.js +0 -52
- package/dist/assets/FastlaneScreenshots-CRMcetq-.js.map +0 -1
- package/dist/assets/FirstExport-C0WgL4Hl.js +0 -6
- package/dist/assets/FirstExport-C0WgL4Hl.js.map +0 -1
- package/dist/assets/FivePanelFramework-BwCRmXIK.js +0 -60
- package/dist/assets/FivePanelFramework-BwCRmXIK.js.map +0 -1
- package/dist/assets/Landing-s1ni1n-7.js +0 -2
- package/dist/assets/Landing-s1ni1n-7.js.map +0 -1
- package/dist/assets/SiteHeader-DxsqNPnt.js +0 -2
- package/dist/assets/SiteHeader-DxsqNPnt.js.map +0 -1
- package/dist/assets/StickyMobileCta-C_x2pUIF.js +0 -2
- package/dist/assets/StickyMobileCta-C_x2pUIF.js.map +0 -1
- package/dist/assets/StoreAssetsPipeline-4hXRONUd.js +0 -4
- package/dist/assets/StoreAssetsPipeline-4hXRONUd.js.map +0 -1
- package/dist/assets/ToolsIndex-CzrxymnM.js +0 -6
- package/dist/assets/ToolsIndex-CzrxymnM.js.map +0 -1
- package/dist/assets/WorkloadCalculator-D2TuKS4B.js +0 -5
- package/dist/assets/WorkloadCalculator-D2TuKS4B.js.map +0 -1
- package/dist/assets/chevron-down-_xIkRLaA.js +0 -2
- package/dist/assets/index-Bqv2NztY.js +0 -180
- package/dist/assets/index-Bqv2NztY.js.map +0 -1
- package/dist/assets/index-DGVMa-P7.css +0 -1
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
import{u as T,a as P,r as m,t as a,j as e,b as s}from"./index-Bqv2NztY.js";import{A as x,a as h}from"./CopyButton-CmVmSaYn.js";import{C as L}from"./CliPreflightCard-D7utpFux.js";import{a as A,S as H}from"./LanguageSwitcher-BD9N-dla.js";import{S as F}from"./StickyMobileCta-C_x2pUIF.js";import{S as U}from"./SiteHeader-DxsqNPnt.js";import{L as E}from"./layout-grid-CpGXUPMR.js";import{C as f}from"./copy-AQdWJCcs.js";import{C as z}from"./chevron-down-_xIkRLaA.js";import{D as B}from"./download-D5RbyXDm.js";const I=l=>(l||"").split("-")[0]==="ja"?"ja":"en",M=l=>l==="ja"?`# 5枚構成 スクショフレームワーク
|
|
2
|
-
|
|
3
|
-
App Store / Google Play のスクショを「5枚で伝える」ための構成テンプレです。
|
|
4
|
-
|
|
5
|
-
## 1) Hook(結論)
|
|
6
|
-
- 何が変わるか(成果)を1行で
|
|
7
|
-
- 例: スクショをビルドステップに / 再実行で毎リリース
|
|
8
|
-
|
|
9
|
-
## 2) Problem(痛み)
|
|
10
|
-
- いま起きている苦痛を具体化(数字が強い)
|
|
11
|
-
- 例: 5枚×10言語×4サイズ = 200枚
|
|
12
|
-
|
|
13
|
-
## 3) Proof(根拠)
|
|
14
|
-
- 信用・再現性の材料(仕様・実績・数字)
|
|
15
|
-
- 例: Fastlane公式パス(dir/ZIP) / 再現性のある出力
|
|
16
|
-
|
|
17
|
-
## 4) How(やり方)
|
|
18
|
-
- どうやって実現するか(フローを短く)
|
|
19
|
-
- 例: master layout → CSV/JSON copy → Export
|
|
20
|
-
|
|
21
|
-
## 5) CTA(次の一手)
|
|
22
|
-
- 読んだ後に何をすればいいかを1つに絞る
|
|
23
|
-
- 例: 無料で試す / サンプルから開始
|
|
24
|
-
|
|
25
|
-
## メモ
|
|
26
|
-
- 翻訳は外部でOK(ShipScreensは翻訳しない)
|
|
27
|
-
- UIは大きく(~80%目安)
|
|
28
|
-
- キャプションは短く(6-8語目安)
|
|
29
|
-
`:`# 5-panel screenshot framework
|
|
30
|
-
|
|
31
|
-
A simple structure to explain your app in five store screenshots.
|
|
32
|
-
|
|
33
|
-
## 1) Hook (Outcome)
|
|
34
|
-
- Say the result in one line
|
|
35
|
-
- Example: Screenshots as a build step / Rerun exports every release
|
|
36
|
-
|
|
37
|
-
## 2) Problem (Pain)
|
|
38
|
-
- Make the pain concrete (numbers work)
|
|
39
|
-
- Example: 5 shots × 10 locales × 4 sizes = 200 images
|
|
40
|
-
|
|
41
|
-
## 3) Proof (Credibility)
|
|
42
|
-
- Give confidence (specs, numbers, workflow fit)
|
|
43
|
-
- Example: Fastlane-ready output (folders/ZIP) / Reproducible reruns
|
|
44
|
-
|
|
45
|
-
## 4) How (Workflow)
|
|
46
|
-
- Show the shortest path in steps
|
|
47
|
-
- Example: Master layout → CSV/JSON copy → export
|
|
48
|
-
|
|
49
|
-
## 5) CTA (Next step)
|
|
50
|
-
- One clear action
|
|
51
|
-
- Example: Try it free / Start from a sample project
|
|
52
|
-
|
|
53
|
-
## Notes
|
|
54
|
-
- Bring your translations; ShipScreens does not translate.
|
|
55
|
-
- Keep UI big (~80% of the frame).
|
|
56
|
-
- Keep captions short (<= 6-8 words).
|
|
57
|
-
`,_={en:{badge:"Screenshot structure template",title:"5-panel Screenshot Framework",subtitle:"A practical structure for consistent, reproducible App Store / Google Play screenshots when manual edits or AI drafts drift: Hook → Problem → Proof → How → CTA.",heroCliTitle:"CLI quickstart (2 steps)",heroCliNote:"wizard → build (raw mode, no Playwright).",heroCliSummary:"Outputs: fastlane/ + reproducible ZIP (local/CI).",heroCliCopyLabel:"Copy all commands",heroCliTemplatesLabel:"Starter templates",heroCliConfigLabel:"config.yml",heroCliCsvLabel:"copy.csv",heroCliCmd:["npx --yes shipscreens wizard","npx --yes shipscreens build --mode raw --zip --out out/agent"].join(`
|
|
58
|
-
`),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 build with --require-pro.",navTools:"Tools",introTitle:"Use this when…",introBullets:["Manual Figma/Canva edits (or AI drafts) keep drifting across sizes/locales","App Review/ASO feedback says the first screenshot is unclear","Localization makes copy decisions expensive","You want a rerunnable flow (sample → edit → export)"],panelsTitle:"The 5 panels",panelCards:[{name:"Hook",goal:"Say the outcome in one line.",header:"Header: the result",subtitle:"Subtitle: for who / how fast",example:"Example: Screenshots as a build step"},{name:"Problem",goal:"Make the pain concrete (numbers help).",header:"Header: what is painful",subtitle:"Subtitle: why it costs time",example:"Example: 5×10×4 = 200 images"},{name:"Proof",goal:"Add credibility and reduce doubt.",header:"Header: why trust this",subtitle:"Subtitle: spec / workflow fit",example:"Example: Fastlane-ready output"},{name:"How",goal:"Show the shortest reproducible workflow.",header:"Header: the steps",subtitle:"Subtitle: what you need",example:"Example: Master layout → CSV → Export"},{name:"CTA",goal:"One clear next action.",header:"Header: try / start",subtitle:"Subtitle: what happens next",example:"Example: Try it free"}],toolsTitle:"Assets",calculatorLink:"Screenshot Workload Calculator",calculatorCaption:"Quantify the device × locale explosion and pick size buckets.",sampleTitle:"Sample project",sampleCaption:"Open a pre-filled 5-panel project in ShipScreens and replace the screenshots.",openSample:"Open sample project",downloadTitle:"Download",downloadCaption:"Save the framework as Markdown (easy to share with teammates).",copyButton:"Copy Markdown",downloadButton:"Download Markdown",toastCopied:"Copied to clipboard",toastCopyFailed:"Copy failed. Please use Download.",ctaPrimary:"Start for Free",footerText:"Want feedback on your store assets pipeline? We are talking to early users.",footerCta:"DM @shipscreenscom on X"},ja:{badge:"構成テンプレ(5枚)",title:"5枚構成 スクショフレームワーク",subtitle:"手作業/AI下書きが崩れがちなスクショを再現性のある構成へ: Hook → Problem → Proof → How → CTA。",heroCliTitle:"CLIクイックスタート(2ステップ)",heroCliNote:"wizard → build(raw / Playwright不要)。",heroCliSummary:"出力: fastlane/ + 再現性ZIP(ローカル/CI)。",heroCliCopyLabel:"コマンドをすべてコピー",heroCliTemplatesLabel:"スターター雛形",heroCliConfigLabel:"config.yml",heroCliCsvLabel:"copy.csv",heroCliCmd:["npx --yes shipscreens wizard","npx --yes shipscreens build --mode raw --zip --out out/agent"].join(`
|
|
59
|
-
`),proUnlockTitle:"Proを解除(CLI)",proUnlockBody:"透かし解除&フル一括(端末×言語)のために、まずはCLI認証を実行:",proUnlockCmd:"npx --yes shipscreens auth login",proUnlockNote:"初回のみブラウザでサインインします。以後は --require-pro で再実行。",navTools:"ツール",introTitle:"こんな時に使う",introBullets:["手作業/AI下書きがサイズ/言語でズレる","App Review/ASO で「最初のスクショが伝わらない」と言われたとき","多言語対応でコピーが長くなりがち","再実行できる流れ(サンプル→編集→Export)が欲しい"],panelsTitle:"5枚の役割",panelCards:[{name:"Hook",goal:"結論(成果)を1行で。",header:"ヘッダー: 変化",subtitle:"サブ: 誰に/どれくらい",example:"例: スクショをビルドステップに"},{name:"Problem",goal:"痛みを具体化(数字が強い)。",header:"ヘッダー: 何がつらい",subtitle:"サブ: なぜ時間が溶ける",example:"例: 5×10×4 = 200枚"},{name:"Proof",goal:"不安を減らす材料。",header:"ヘッダー: 根拠",subtitle:"サブ: 仕様/ワークフロー適合",example:"例: Fastlane対応出力"},{name:"How",goal:"短いフローで再現性を。",header:"ヘッダー: 手順",subtitle:"サブ: 必要なもの",example:"例: master→CSV→Export"},{name:"CTA",goal:"次の一手を1つに。",header:"ヘッダー: 試す/開始",subtitle:"サブ: 次に起きること",example:"例: 無料で試す"}],toolsTitle:"資産",calculatorLink:"スクショ作業量 計算ツール",calculatorCaption:"端末×言語の爆発とサイズバケットを先に把握。",sampleTitle:"サンプルプロジェクト",sampleCaption:"5枚構成の雛形を開いて、画像だけ差し替えてください。",openSample:"サンプルを開く",downloadTitle:"ダウンロード",downloadCaption:"Markdownとして保存(チーム共有しやすい)。",copyButton:"Markdownをコピー",downloadButton:"MarkdownをDL",toastCopied:"コピーしました",toastCopyFailed:"コピーできませんでした。ダウンロードをご利用ください。",ctaPrimary:"無料で試す",footerText:"ストア素材パイプラインの相談があれば、15分だけ聞かせてください。改善案やテンプレをご案内します。",footerCta:"XでDM: @shipscreenscom"}},X=()=>{const{i18n:l,t:n}=T(),{addToast:d}=P(),r=I(l.resolvedLanguage||l.language),t=_[r]||_.en;A("titles.fivePanelFramework",{defaultValue:r==="ja"?"5枚構成テンプレ - ShipScreens":"5-panel Screenshot Framework - ShipScreens"}),m.useEffect(()=>{a("tool_view",{tool:"five_panel_screenshot_framework"})},[]);const p=m.useMemo(()=>M(r),[r]),g="/app/?sample=5panel&entry_source=five_panel_screenshot_framework_open_app_header",C="/tools/agent-cli/",u="/tools/first-export/?entry_source=five_panel_screenshot_framework_primary_cta",b="/app/?sample=5panel&entry_source=five_panel_screenshot_framework_open_sample_project",k="/downloads/shipscreens-agent-cli-config.yml",j="/downloads/shipscreens-agent-cli-copy.csv",w=n("common.copy",{defaultValue:"Copy"}),v=n("common.showCommands",{defaultValue:"Show commands"}),N=typeof window>"u"?!0:window.matchMedia("(min-width: 640px)").matches,S=m.useCallback(()=>{try{const o=`\uFEFF${p}`,i=new Blob([o],{type:"text/markdown;charset=utf-8"}),y=URL.createObjectURL(i),c=document.createElement("a");c.href=y,c.download=r==="ja"?"shipscreens-5panel-framework-ja.md":"shipscreens-5panel-framework.md",document.body.appendChild(c),c.click(),document.body.removeChild(c),URL.revokeObjectURL(y),a("tool_download",{tool:"five_panel_screenshot_framework",asset:"markdown"})}catch{}},[r,p]);return e.jsxs("div",{className:"min-h-screen bg-gradient-to-b from-slate-950 via-slate-900 to-slate-950 text-white",children:[e.jsx(H,{}),e.jsx(U,{variant:"dark",active:"tools",openAppHref:g,onToolsClick:o=>s(o,"tool_cta_click",{tool:"five_panel_screenshot_framework",cta:"open_tools_header"}),onPricingClick:o=>s(o,"tool_cta_click",{tool:"five_panel_screenshot_framework",cta:"pricing_header"}),onOpenAppClick:o=>s(o,"tool_cta_click",{tool:"five_panel_screenshot_framework",cta:"open_app_header"}),primaryCta:{href:u,label:e.jsxs("span",{className:"inline-flex items-center gap-2",children:[n("landing.nav.primaryCta")," ",e.jsx(x,{size:16})]}),onClick:o=>s(o,"tool_cta_click",{tool:"five_panel_screenshot_framework",cta:"open_first_export_header"})}}),e.jsxs("main",{className:"max-w-5xl mx-auto px-6 pb-24 space-y-12",children:[e.jsxs("section",{className:"max-w-3xl mx-auto text-center space-y-4",children:[e.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:[e.jsx(E,{size:14}),t.badge]}),e.jsx("h1",{className:"text-3xl md:text-5xl font-black leading-tight",children:t.title}),e.jsx("p",{className:"text-slate-300 text-lg leading-relaxed",children:t.subtitle}),e.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:[e.jsx("div",{className:"text-[11px] uppercase tracking-[0.2em] text-slate-500 font-semibold",children:t.heroCliTitle}),e.jsx("p",{className:"text-xs text-slate-400",children:t.heroCliNote}),e.jsx("p",{className:"text-xs text-slate-500",children:t.heroCliSummary}),e.jsx(h,{value:t.heroCliCmd,onCopied:()=>{d({type:"success",message:t.toastCopied}),a("tool_cta_click",{tool:"five_panel_screenshot_framework",cta:"copy_cli_hero"})},onCopyFailed:()=>d({type:"error",message:t.toastCopyFailed}),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:o,copyState:i})=>e.jsxs(e.Fragment,{children:[e.jsx(f,{size:14}),i==="idle"?t.heroCliCopyLabel:o||w]})}),e.jsxs("details",{className:"group",open:N,children:[e.jsxs("summary",{className:"flex items-center justify-between text-[11px] font-semibold text-slate-400 cursor-pointer list-none",children:[e.jsx("span",{children:v}),e.jsx(z,{size:14,className:"text-slate-500 transition-transform duration-200 group-open:rotate-180"})]}),e.jsx("div",{className:"mt-2 rounded-xl border border-slate-800 bg-slate-950 p-3",children:e.jsx("pre",{className:"text-xs text-slate-200 whitespace-pre-wrap",children:t.heroCliCmd})})]}),e.jsxs("div",{className:"pt-1 space-y-2",children:[e.jsx("div",{className:"text-[10px] uppercase tracking-[0.2em] text-slate-500 font-semibold",children:t.heroCliTemplatesLabel}),e.jsxs("div",{className:"flex flex-wrap gap-2",children:[e.jsx("a",{href:k,download:!0,onClick:()=>a("tool_download",{tool:"five_panel_screenshot_framework",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:t.heroCliConfigLabel}),e.jsx("a",{href:j,download:!0,onClick:()=>a("tool_download",{tool:"five_panel_screenshot_framework",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:t.heroCliCsvLabel})]})]})]}),e.jsx(L,{compact:!0,href:"/tools/agent-cli/#preflight",onClick:o=>s(o,"tool_cta_click",{tool:"five_panel_screenshot_framework",cta:"open_cli_preflight"}),className:"max-w-xl mx-auto"}),e.jsx("section",{className:"max-w-xl mx-auto",children:e.jsxs("div",{className:"bg-slate-900/60 border border-slate-800 rounded-2xl p-5 space-y-3",children:[e.jsxs("div",{className:"flex items-center justify-between gap-3",children:[e.jsx("div",{className:"text-sm font-bold text-white",children:t.proUnlockTitle}),e.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"})]}),t.proUnlockBody&&e.jsx("p",{className:"text-sm text-slate-300",children:t.proUnlockBody}),e.jsx("div",{className:"rounded-xl border border-slate-800 bg-slate-950/80 p-4",children:e.jsx("pre",{className:"text-xs text-slate-200 whitespace-pre-wrap",children:t.proUnlockCmd})}),e.jsx(h,{value:t.proUnlockCmd,onCopied:()=>a("tool_cta_click",{tool:"five_panel_screenshot_framework",cta:"copy_cli_pro_unlock"}),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:o})=>e.jsxs(e.Fragment,{children:[e.jsx(f,{size:14}),o||w]})}),t.proUnlockNote&&e.jsx("div",{className:"text-xs text-slate-500",children:t.proUnlockNote})]})})]}),e.jsxs("section",{className:"bg-slate-900/60 border border-slate-800 rounded-2xl p-6 space-y-3",children:[e.jsx("h2",{className:"text-lg font-bold text-white",children:t.introTitle}),e.jsx("ul",{className:"text-sm text-slate-300 list-disc pl-5 space-y-1",children:t.introBullets.map(o=>e.jsx("li",{children:o},o))})]}),e.jsxs("section",{className:"space-y-4",children:[e.jsx("h2",{className:"text-xl font-bold text-white",children:t.panelsTitle}),e.jsx("div",{className:"grid md:grid-cols-2 gap-4",children:t.panelCards.map((o,i)=>e.jsxs("div",{className:"rounded-2xl border border-slate-800 bg-slate-950 p-5 space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"text-sm font-bold text-slate-100",children:[i+1,". ",o.name]}),e.jsx("div",{className:"text-xs text-slate-500",children:"Panel"})]}),e.jsx("div",{className:"text-sm text-slate-300",children:o.goal}),e.jsxs("div",{className:"pt-2 space-y-1 text-xs text-slate-400",children:[e.jsx("div",{children:o.header}),e.jsx("div",{children:o.subtitle}),e.jsx("div",{className:"text-slate-200 font-semibold",children:o.example})]})]},o.name))})]}),e.jsx("section",{className:"space-y-4",children:e.jsxs("div",{className:"bg-slate-900/60 border border-slate-800 rounded-2xl p-6 space-y-4",children:[e.jsx("h2",{className:"text-lg font-bold text-white",children:t.toolsTitle}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("a",{href:"/tools/screenshot-workload-calculator/",onClick:()=>a("tool_cta_click",{tool:"five_panel_screenshot_framework",cta:"open_calculator"}),className:"text-blue-300 hover:text-blue-200 transition-colors underline underline-offset-4 font-semibold",children:t.calculatorLink}),e.jsx("div",{className:"text-sm text-slate-300",children:t.calculatorCaption})]})]})}),e.jsxs("section",{className:"bg-slate-900/60 border border-slate-800 rounded-2xl p-6 space-y-4",children:[e.jsx("h2",{className:"text-lg font-bold text-white",children:t.downloadTitle}),e.jsx("p",{className:"text-sm text-slate-300",children:t.downloadCaption}),e.jsxs("div",{className:"flex flex-col sm:flex-row gap-3",children:[e.jsxs(h,{value:p,onCopied:()=>{d({type:"success",message:t.toastCopied}),a("tool_download",{tool:"five_panel_screenshot_framework",asset:"markdown_clipboard"})},onCopyFailed:()=>d({type:"error",message:t.toastCopyFailed}),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","aria-label":t.copyButton,children:[e.jsx(f,{size:16}),t.copyButton]}),e.jsxs("button",{type:"button",onClick:S,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:[e.jsx(B,{size:16}),t.downloadButton]})]})]}),e.jsxs("section",{className:"bg-slate-900/60 border border-slate-800 rounded-2xl p-6 space-y-4",children:[e.jsx("h2",{className:"text-lg font-bold text-white",children:t.sampleTitle}),e.jsx("p",{className:"text-sm text-slate-300",children:t.sampleCaption}),e.jsxs("div",{className:"flex flex-col sm:flex-row gap-3",children:[e.jsxs("a",{href:u,onClick:o=>s(o,"tool_cta_click",{tool:"five_panel_screenshot_framework",cta:"open_first_export_footer"}),className:"inline-flex items-center justify-center gap-2 px-4 py-3 rounded-xl bg-white text-slate-900 font-bold hover:scale-[1.02] transition w-full",children:[n("landing.nav.primaryCta")," ",e.jsx(x,{size:16})]}),e.jsxs("a",{href:b,onClick:o=>s(o,"tool_cta_click",{tool:"five_panel_screenshot_framework",cta:"open_sample_project_footer"}),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",children:[t.openSample," ",e.jsx(x,{size:16})]})]})]}),e.jsxs("section",{className:"max-w-3xl mx-auto text-center space-y-3 pt-2",children:[e.jsx("p",{className:"text-sm text-slate-400",children:t.footerText}),e.jsx("a",{href:"https://x.com/shipscreenscom",target:"_blank",rel:"noopener noreferrer",onClick:()=>a("tool_cta_click",{tool:"five_panel_screenshot_framework",cta:"dm_x"}),className:"text-sm text-blue-300 hover:text-blue-200 transition-colors underline underline-offset-4",children:t.footerCta})]})]}),e.jsx(F,{primary:{label:t.ctaPrimary,href:C,onClick:o=>s(o,"tool_cta_click",{tool:"five_panel_screenshot_framework",cta:"sticky_primary"})},secondary:{label:t.openSample,href:b,onClick:o=>s(o,"tool_cta_click",{tool:"five_panel_screenshot_framework",cta:"sticky_secondary"})}})]})};export{X as default};
|
|
60
|
-
//# sourceMappingURL=FivePanelFramework-BwCRmXIK.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"FivePanelFramework-BwCRmXIK.js","sources":["../../src/pages/FivePanelFramework.jsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo } from 'react';\nimport { ArrowRight, ChevronDown, Copy, Download, LayoutGrid } from 'lucide-react';\nimport { useTranslation } from 'react-i18next';\nimport CopyButton from '../components/CopyButton';\nimport CliPreflightCard from '../components/CliPreflightCard';\nimport StagingBadge from '../components/StagingBadge';\nimport StickyMobileCta from '../components/StickyMobileCta';\nimport SiteHeader from '../components/SiteHeader';\nimport { useToast } from '../context/ToastContext';\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 buildMarkdown = (lang) => {\n if (lang === 'ja') {\n return `# 5枚構成 スクショフレームワーク\n\nApp Store / Google Play のスクショを「5枚で伝える」ための構成テンプレです。\n\n## 1) Hook(結論)\n- 何が変わるか(成果)を1行で\n- 例: スクショをビルドステップに / 再実行で毎リリース\n\n## 2) Problem(痛み)\n- いま起きている苦痛を具体化(数字が強い)\n- 例: 5枚×10言語×4サイズ = 200枚\n\n## 3) Proof(根拠)\n- 信用・再現性の材料(仕様・実績・数字)\n- 例: Fastlane公式パス(dir/ZIP) / 再現性のある出力\n\n## 4) How(やり方)\n- どうやって実現するか(フローを短く)\n- 例: master layout → CSV/JSON copy → Export\n\n## 5) CTA(次の一手)\n- 読んだ後に何をすればいいかを1つに絞る\n- 例: 無料で試す / サンプルから開始\n\n## メモ\n- 翻訳は外部でOK(ShipScreensは翻訳しない)\n- UIは大きく(~80%目安)\n- キャプションは短く(6-8語目安)\n`;\n }\n\n return `# 5-panel screenshot framework\n\nA simple structure to explain your app in five store screenshots.\n\n## 1) Hook (Outcome)\n- Say the result in one line\n- Example: Screenshots as a build step / Rerun exports every release\n\n## 2) Problem (Pain)\n- Make the pain concrete (numbers work)\n- Example: 5 shots × 10 locales × 4 sizes = 200 images\n\n## 3) Proof (Credibility)\n- Give confidence (specs, numbers, workflow fit)\n- Example: Fastlane-ready output (folders/ZIP) / Reproducible reruns\n\n## 4) How (Workflow)\n- Show the shortest path in steps\n- Example: Master layout → CSV/JSON copy → export\n\n## 5) CTA (Next step)\n- One clear action\n- Example: Try it free / Start from a sample project\n\n## Notes\n- Bring your translations; ShipScreens does not translate.\n- Keep UI big (~80% of the frame).\n- Keep captions short (<= 6-8 words).\n`;\n};\n\nconst COPY = {\n en: {\n badge: 'Screenshot structure template',\n title: '5-panel Screenshot Framework',\n subtitle:\n 'A practical structure for consistent, reproducible App Store / Google Play screenshots when manual edits or AI drafts drift: Hook → Problem → Proof → How → CTA.',\n heroCliTitle: 'CLI quickstart (2 steps)',\n heroCliNote: 'wizard → build (raw mode, no Playwright).',\n heroCliSummary: 'Outputs: fastlane/ + reproducible ZIP (local/CI).',\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 build --mode raw --zip --out out/agent',\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 build with --require-pro.',\n navTools: 'Tools',\n introTitle: 'Use this when…',\n introBullets: [\n 'Manual Figma/Canva edits (or AI drafts) keep drifting across sizes/locales',\n 'App Review/ASO feedback says the first screenshot is unclear',\n 'Localization makes copy decisions expensive',\n 'You want a rerunnable flow (sample → edit → export)',\n ],\n panelsTitle: 'The 5 panels',\n panelCards: [\n {\n name: 'Hook',\n goal: 'Say the outcome in one line.',\n header: 'Header: the result',\n subtitle: 'Subtitle: for who / how fast',\n example: 'Example: Screenshots as a build step',\n },\n {\n name: 'Problem',\n goal: 'Make the pain concrete (numbers help).',\n header: 'Header: what is painful',\n subtitle: 'Subtitle: why it costs time',\n example: 'Example: 5×10×4 = 200 images',\n },\n {\n name: 'Proof',\n goal: 'Add credibility and reduce doubt.',\n header: 'Header: why trust this',\n subtitle: 'Subtitle: spec / workflow fit',\n example: 'Example: Fastlane-ready output',\n },\n {\n name: 'How',\n goal: 'Show the shortest reproducible workflow.',\n header: 'Header: the steps',\n subtitle: 'Subtitle: what you need',\n example: 'Example: Master layout → CSV → Export',\n },\n {\n name: 'CTA',\n goal: 'One clear next action.',\n header: 'Header: try / start',\n subtitle: 'Subtitle: what happens next',\n example: 'Example: Try it free',\n },\n ],\n toolsTitle: 'Assets',\n calculatorLink: 'Screenshot Workload Calculator',\n calculatorCaption: 'Quantify the device × locale explosion and pick size buckets.',\n sampleTitle: 'Sample project',\n sampleCaption: 'Open a pre-filled 5-panel project in ShipScreens and replace the screenshots.',\n openSample: 'Open sample project',\n downloadTitle: 'Download',\n downloadCaption: 'Save the framework as Markdown (easy to share with teammates).',\n copyButton: 'Copy Markdown',\n downloadButton: 'Download Markdown',\n toastCopied: 'Copied to clipboard',\n toastCopyFailed: 'Copy failed. Please use Download.',\n ctaPrimary: 'Start for Free',\n footerText: 'Want feedback on your store assets pipeline? We are talking to early users.',\n footerCta: 'DM @shipscreenscom on X',\n },\n ja: {\n badge: '構成テンプレ(5枚)',\n title: '5枚構成 スクショフレームワーク',\n subtitle: '手作業/AI下書きが崩れがちなスクショを再現性のある構成へ: Hook → Problem → Proof → How → CTA。',\n heroCliTitle: 'CLIクイックスタート(2ステップ)',\n heroCliNote: 'wizard → build(raw / Playwright不要)。',\n heroCliSummary: '出力: fastlane/ + 再現性ZIP(ローカル/CI)。',\n heroCliCopyLabel: 'コマンドをすべてコピー',\n heroCliTemplatesLabel: 'スターター雛形',\n heroCliConfigLabel: 'config.yml',\n heroCliCsvLabel: 'copy.csv',\n heroCliCmd: [\n 'npx --yes shipscreens wizard',\n 'npx --yes shipscreens build --mode raw --zip --out out/agent',\n ].join('\\n'),\n proUnlockTitle: 'Proを解除(CLI)',\n proUnlockBody: '透かし解除&フル一括(端末×言語)のために、まずはCLI認証を実行:',\n proUnlockCmd: 'npx --yes shipscreens auth login',\n proUnlockNote: '初回のみブラウザでサインインします。以後は --require-pro で再実行。',\n navTools: 'ツール',\n introTitle: 'こんな時に使う',\n introBullets: [\n '手作業/AI下書きがサイズ/言語でズレる',\n 'App Review/ASO で「最初のスクショが伝わらない」と言われたとき',\n '多言語対応でコピーが長くなりがち',\n '再実行できる流れ(サンプル→編集→Export)が欲しい',\n ],\n panelsTitle: '5枚の役割',\n panelCards: [\n { name: 'Hook', goal: '結論(成果)を1行で。', header: 'ヘッダー: 変化', subtitle: 'サブ: 誰に/どれくらい', example: '例: スクショをビルドステップに' },\n { name: 'Problem', goal: '痛みを具体化(数字が強い)。', header: 'ヘッダー: 何がつらい', subtitle: 'サブ: なぜ時間が溶ける', example: '例: 5×10×4 = 200枚' },\n { name: 'Proof', goal: '不安を減らす材料。', header: 'ヘッダー: 根拠', subtitle: 'サブ: 仕様/ワークフロー適合', example: '例: Fastlane対応出力' },\n { name: 'How', goal: '短いフローで再現性を。', header: 'ヘッダー: 手順', subtitle: 'サブ: 必要なもの', example: '例: master→CSV→Export' },\n { name: 'CTA', goal: '次の一手を1つに。', header: 'ヘッダー: 試す/開始', subtitle: 'サブ: 次に起きること', example: '例: 無料で試す' },\n ],\n toolsTitle: '資産',\n calculatorLink: 'スクショ作業量 計算ツール',\n calculatorCaption: '端末×言語の爆発とサイズバケットを先に把握。',\n sampleTitle: 'サンプルプロジェクト',\n sampleCaption: '5枚構成の雛形を開いて、画像だけ差し替えてください。',\n openSample: 'サンプルを開く',\n downloadTitle: 'ダウンロード',\n downloadCaption: 'Markdownとして保存(チーム共有しやすい)。',\n copyButton: 'Markdownをコピー',\n downloadButton: 'MarkdownをDL',\n toastCopied: 'コピーしました',\n toastCopyFailed: 'コピーできませんでした。ダウンロードをご利用ください。',\n ctaPrimary: '無料で試す',\n footerText: 'ストア素材パイプラインの相談があれば、15分だけ聞かせてください。改善案やテンプレをご案内します。',\n footerCta: 'XでDM: @shipscreenscom',\n },\n};\n\nconst FivePanelFramework = () => {\n const { i18n, t } = useTranslation();\n const { addToast } = useToast();\n\n const lang = normalizeLang(i18n.resolvedLanguage || i18n.language);\n const copy = COPY[lang] || COPY.en;\n\n usePageTitle('titles.fivePanelFramework', {\n defaultValue: lang === 'ja' ? '5枚構成テンプレ - ShipScreens' : '5-panel Screenshot Framework - ShipScreens',\n });\n\n useEffect(() => {\n trackEvent('tool_view', { tool: 'five_panel_screenshot_framework' });\n }, []);\n\n const markdown = useMemo(() => buildMarkdown(lang), [lang]);\n const openAppHref = '/app/?sample=5panel&entry_source=five_panel_screenshot_framework_open_app_header';\n const agentCliHref = '/tools/agent-cli/';\n const firstExportHref = '/tools/first-export/?entry_source=five_panel_screenshot_framework_primary_cta';\n const sampleProjectHref = '/app/?sample=5panel&entry_source=five_panel_screenshot_framework_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 const downloadMarkdown = useCallback(() => {\n try {\n const content = `\\ufeff${markdown}`;\n const blob = new Blob([content], { type: 'text/markdown;charset=utf-8' });\n const url = URL.createObjectURL(blob);\n const link = document.createElement('a');\n link.href = url;\n link.download = lang === 'ja' ? 'shipscreens-5panel-framework-ja.md' : 'shipscreens-5panel-framework.md';\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n URL.revokeObjectURL(url);\n trackEvent('tool_download', { tool: 'five_panel_screenshot_framework', asset: 'markdown' });\n } catch {\n // noop\n }\n }, [lang, markdown]);\n\n return (\n <div className=\"min-h-screen bg-gradient-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: 'five_panel_screenshot_framework', cta: 'open_tools_header' })\n }\n onPricingClick={(event) =>\n trackEventAndFollowLink(event, 'tool_cta_click', { tool: 'five_panel_screenshot_framework', cta: 'pricing_header' })\n }\n onOpenAppClick={(event) =>\n trackEventAndFollowLink(event, 'tool_cta_click', { tool: 'five_panel_screenshot_framework', cta: 'open_app_header' })\n }\n primaryCta={{\n href: firstExportHref,\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', {\n tool: 'five_panel_screenshot_framework',\n cta: 'open_first_export_header',\n }),\n }}\n />\n\n <main className=\"max-w-5xl mx-auto px-6 pb-24 space-y-12\">\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 <LayoutGrid 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 <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={() => {\n addToast({ type: 'success', message: copy.toastCopied });\n trackEvent('tool_cta_click', { tool: 'five_panel_screenshot_framework', cta: 'copy_cli_hero' });\n }}\n onCopyFailed={() => addToast({ type: 'error', message: copy.toastCopyFailed })}\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: 'five_panel_screenshot_framework', 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: 'five_panel_screenshot_framework', 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 <CliPreflightCard\n compact\n href=\"/tools/agent-cli/#preflight\"\n onClick={(event) =>\n trackEventAndFollowLink(event, 'tool_cta_click', {\n tool: 'five_panel_screenshot_framework',\n cta: 'open_cli_preflight',\n })\n }\n className=\"max-w-xl mx-auto\"\n />\n <section className=\"max-w-xl mx-auto\">\n <div className=\"bg-slate-900/60 border border-slate-800 rounded-2xl p-5 space-y-3\">\n <div className=\"flex items-center justify-between gap-3\">\n <div className=\"text-sm font-bold text-white\">{copy.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 {copy.proUnlockBody && <p className=\"text-sm text-slate-300\">{copy.proUnlockBody}</p>}\n <div className=\"rounded-xl border border-slate-800 bg-slate-950/80 p-4\">\n <pre className=\"text-xs text-slate-200 whitespace-pre-wrap\">{copy.proUnlockCmd}</pre>\n </div>\n <CopyButton\n value={copy.proUnlockCmd}\n onCopied={() => trackEvent('tool_cta_click', { tool: 'five_panel_screenshot_framework', cta: 'copy_cli_pro_unlock' })}\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 {copy.proUnlockNote && <div className=\"text-xs text-slate-500\">{copy.proUnlockNote}</div>}\n </div>\n </section>\n </section>\n\n <section className=\"bg-slate-900/60 border border-slate-800 rounded-2xl p-6 space-y-3\">\n <h2 className=\"text-lg font-bold text-white\">{copy.introTitle}</h2>\n <ul className=\"text-sm text-slate-300 list-disc pl-5 space-y-1\">\n {copy.introBullets.map((item) => (\n <li key={item}>{item}</li>\n ))}\n </ul>\n </section>\n\n <section className=\"space-y-4\">\n <h2 className=\"text-xl font-bold text-white\">{copy.panelsTitle}</h2>\n <div className=\"grid md:grid-cols-2 gap-4\">\n {copy.panelCards.map((panel, idx) => (\n <div key={panel.name} className=\"rounded-2xl border border-slate-800 bg-slate-950 p-5 space-y-2\">\n <div className=\"flex items-center justify-between\">\n <div className=\"text-sm font-bold text-slate-100\">\n {idx + 1}. {panel.name}\n </div>\n <div className=\"text-xs text-slate-500\">Panel</div>\n </div>\n <div className=\"text-sm text-slate-300\">{panel.goal}</div>\n <div className=\"pt-2 space-y-1 text-xs text-slate-400\">\n <div>{panel.header}</div>\n <div>{panel.subtitle}</div>\n <div className=\"text-slate-200 font-semibold\">{panel.example}</div>\n </div>\n </div>\n ))}\n </div>\n </section>\n\n <section className=\"space-y-4\">\n <div className=\"bg-slate-900/60 border border-slate-800 rounded-2xl p-6 space-y-4\">\n <h2 className=\"text-lg font-bold text-white\">{copy.toolsTitle}</h2>\n <div className=\"space-y-2\">\n <a\n href=\"/tools/screenshot-workload-calculator/\"\n onClick={() => trackEvent('tool_cta_click', { tool: 'five_panel_screenshot_framework', cta: 'open_calculator' })}\n className=\"text-blue-300 hover:text-blue-200 transition-colors underline underline-offset-4 font-semibold\"\n >\n {copy.calculatorLink}\n </a>\n <div className=\"text-sm text-slate-300\">{copy.calculatorCaption}</div>\n </div>\n </div>\n </section>\n\n <section className=\"bg-slate-900/60 border border-slate-800 rounded-2xl p-6 space-y-4\">\n <h2 className=\"text-lg font-bold text-white\">{copy.downloadTitle}</h2>\n <p className=\"text-sm text-slate-300\">{copy.downloadCaption}</p>\n <div className=\"flex flex-col sm:flex-row gap-3\">\n <CopyButton\n value={markdown}\n onCopied={() => {\n addToast({ type: 'success', message: copy.toastCopied });\n trackEvent('tool_download', { tool: 'five_panel_screenshot_framework', asset: 'markdown_clipboard' });\n }}\n onCopyFailed={() => addToast({ type: 'error', message: copy.toastCopyFailed })}\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 aria-label={copy.copyButton}\n >\n <Copy size={16} />\n {copy.copyButton}\n </CopyButton>\n <button\n type=\"button\"\n onClick={downloadMarkdown}\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 <Download size={16} />\n {copy.downloadButton}\n </button>\n </div>\n </section>\n\n <section className=\"bg-slate-900/60 border border-slate-800 rounded-2xl p-6 space-y-4\">\n <h2 className=\"text-lg font-bold text-white\">{copy.sampleTitle}</h2>\n <p className=\"text-sm text-slate-300\">{copy.sampleCaption}</p>\n <div className=\"flex flex-col sm:flex-row gap-3\">\n <a\n href={firstExportHref}\n onClick={(event) =>\n trackEventAndFollowLink(event, 'tool_cta_click', {\n tool: 'five_panel_screenshot_framework',\n cta: 'open_first_export_footer',\n })\n }\n className=\"inline-flex items-center justify-center gap-2 px-4 py-3 rounded-xl bg-white text-slate-900 font-bold hover:scale-[1.02] transition w-full\"\n >\n {t('landing.nav.primaryCta')} <ArrowRight size={16} />\n </a>\n <a\n href={sampleProjectHref}\n onClick={(event) =>\n trackEventAndFollowLink(event, 'tool_cta_click', {\n tool: 'five_panel_screenshot_framework',\n cta: 'open_sample_project_footer',\n })\n }\n 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\"\n >\n {copy.openSample} <ArrowRight size={16} />\n </a>\n </div>\n </section>\n\n <section className=\"max-w-3xl mx-auto text-center space-y-3 pt-2\">\n <p className=\"text-sm text-slate-400\">{copy.footerText}</p>\n <a\n href=\"https://x.com/shipscreenscom\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n onClick={() => trackEvent('tool_cta_click', { tool: 'five_panel_screenshot_framework', cta: 'dm_x' })}\n className=\"text-sm text-blue-300 hover:text-blue-200 transition-colors underline underline-offset-4\"\n >\n {copy.footerCta}\n </a>\n </section>\n </main>\n <StickyMobileCta\n primary={{\n label: copy.ctaPrimary,\n href: agentCliHref,\n onClick: (event) =>\n trackEventAndFollowLink(event, 'tool_cta_click', {\n tool: 'five_panel_screenshot_framework',\n cta: 'sticky_primary',\n }),\n }}\n secondary={{\n label: copy.openSample,\n href: sampleProjectHref,\n onClick: (event) =>\n trackEventAndFollowLink(event, 'tool_cta_click', {\n tool: 'five_panel_screenshot_framework',\n cta: 'sticky_secondary',\n }),\n }}\n />\n </div>\n );\n};\n\nexport default FivePanelFramework;\n"],"names":["normalizeLang","lang","buildMarkdown","COPY","FivePanelFramework","i18n","t","useTranslation","addToast","useToast","copy","usePageTitle","useEffect","trackEvent","markdown","useMemo","openAppHref","agentCliHref","firstExportHref","sampleProjectHref","configDownloadHref","csvDownloadHref","copyButtonLabel","codeToggleLabel","defaultCodeOpen","downloadMarkdown","useCallback","content","blob","url","link","jsxs","jsx","StagingBadge","SiteHeader","event","trackEventAndFollowLink","ArrowRight","LayoutGrid","CopyButton","copyLabel","copyState","Fragment","Copy","ChevronDown","CliPreflightCard","item","panel","idx","Download","StickyMobileCta"],"mappings":"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"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{u as F,r as T,t as j,j as e,b as m}from"./index-Bqv2NztY.js";import{A as f,a as U}from"./CopyButton-CmVmSaYn.js";import{C as re}from"./CliPreflightCard-D7utpFux.js";import{c as S,a as ne,S as ce}from"./LanguageSwitcher-BD9N-dla.js";import{S as ie}from"./SiteHeader-DxsqNPnt.js";import{S as D}from"./shield-check-CngdN3zn.js";import{T as oe}from"./terminal-BbBESfoU.js";import{S as de}from"./smartphone-CpNG_Pfk.js";import{C as xe}from"./chevron-down-_xIkRLaA.js";const pe=[["path",{d:"M21.54 15H17a2 2 0 0 0-2 2v4.54",key:"1djwo0"}],["path",{d:"M7 3.34V5a3 3 0 0 0 3 3a2 2 0 0 1 2 2c0 1.1.9 2 2 2a2 2 0 0 0 2-2c0-1.1.9-2 2-2h3.17",key:"1tzkfa"}],["path",{d:"M11 21.95V18a2 2 0 0 0-2-2a2 2 0 0 1-2-2v-1a2 2 0 0 0-2-2H2.05",key:"14pb5j"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]],Q=S("earth",pe);const me=[["path",{d:"M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83z",key:"zw3jo"}],["path",{d:"M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 12",key:"1wduqc"}],["path",{d:"M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 17",key:"kqbvx6"}]],B=S("layers",me);const he=[["path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",key:"1xq2db"}]],ue=S("zap",he),$=[ue,B,D],H=["text-yellow-400","text-green-400","text-cyan-400"],M=[B,Q,D],V=[oe,de,Q],Ce=()=>{const{t}=F();ne("titles.landing");const o=t("landing.badges",{returnObjects:!0})||[],p=t("landing.features",{returnObjects:!0})||[],c=t("landing.pipeline",{returnObjects:!0})||{},l=t("landing.ciQuickstart",{returnObjects:!0})||{},d=c.inputs||{},r=c.outputs||{},N=d.files||[],h=r.files||[],_=t("landing.entryPoints",{returnObjects:!0})||{},O=_.items||[],k=t("landing.pricing",{returnObjects:!0})||{},i=t("landing.socialProof",{returnObjects:!0})||{},v=t("landing.faq.items",{returnObjects:!0})||[],P=t("landing.footer.links",{returnObjects:!0})||[],I=t("landing.hero.alt",{defaultValue:"ShipScreens preview"}),q=t("landing.hero.outputs",{returnObjects:!0})||[],u=t("landing.hero.cliQuickstart",{returnObjects:!0})||{},n=t("landing.hero.outputExample",{returnObjects:!0})||{},R=t("landing.hero.noLogin",{defaultValue:"No login required · Free forever"}),z=t("landing.hero.proUnlockNote",{defaultValue:""}),A=t("landing.hero.proPriceNote",{defaultValue:""}),J=t("landing.footer.copyright",{year:new Date().getFullYear()}),y=k.free||{},g=k.pro||{},x=k.cliProUnlock||{},W="/app/?sample=5panel&entry_source=landing_open_app_header",Y="/tools/first-export/?entry_source=landing_preview_output_header",Z="/tools/first-export/?entry_source=landing_preview_output_hero",G="/tools/agent-cli/?entry_source=landing_cli_quickstart_hero",K="/app/?sample=5panel&entry_source=landing_open_app_pricing_free",X="/app/?sample=5panel&upgrade=1&entry_source=landing_go_pro_pricing",C="support@shimaumaservices.co.jp",ee=t("landing.partner.emailSubject",{defaultValue:"ShipScreens Founding / Design Partner"}),se=t("landing.partner.emailBody",{defaultValue:""}),te=`mailto:${C}?subject=${encodeURIComponent(ee)}&body=${encodeURIComponent(se)}`,ae={"@context":"https://schema.org","@type":"SoftwareApplication",name:"ShipScreens",applicationCategory:"Multimedia",operatingSystem:"iOS, Android, Web",url:"https://shipscreens.com/",offers:{"@type":"Offer",priceCurrency:"USD",price:"19.00",availability:"https://schema.org/InStock"},description:t("landing.subheading"),provider:{"@type":"Organization",name:"ShipScreens",url:"https://shipscreens.com/"}},L=v.length>0?{"@context":"https://schema.org","@type":"FAQPage",mainEntity:v.map(s=>({"@type":"Question",name:s.q,acceptedAnswer:{"@type":"Answer",text:s.a}}))}:null;return T.useEffect(()=>{j("landing_view",{path:typeof window<"u"?window.location.pathname:"/"})},[]),e.jsxs("div",{className:"min-h-screen bg-gradient-to-b from-slate-950 via-slate-900 to-slate-950 text-white",children:[e.jsx(ce,{}),e.jsx(ie,{variant:"dark",active:"home",openAppHref:W,onToolsClick:s=>m(s,"landing_nav_click",{cta:"tools_header"}),onOpenAppClick:s=>m(s,"landing_nav_click",{cta:"open_app_header"}),primaryCta:{href:Y,label:t("landing.nav.primaryCta",{defaultValue:t("landing.nav.goPro")}),onClick:s=>m(s,"landing_nav_click",{cta:"preview_output_header"})}}),e.jsxs("main",{className:"max-w-7xl mx-auto px-6 space-y-24 pb-24",children:[e.jsxs("section",{className:"grid md:grid-cols-[1fr_1.4fr] gap-8 items-start",children:[e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-blue-300 text-sm font-semibold tracking-[0.2em] uppercase",children:t("landing.tagline")}),e.jsx("h1",{className:"text-4xl md:text-5xl font-black leading-tight",children:t("landing.headline")}),e.jsx("p",{className:"text-slate-300 text-lg leading-relaxed",children:t("landing.subheading")}),t("landing.whoFor",{defaultValue:""})&&e.jsx("p",{className:"text-slate-400 text-sm",children:t("landing.whoFor")}),q.length>0&&e.jsx("ul",{className:"space-y-2 text-sm text-slate-200",children:q.map(s=>e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"mt-2 w-2 h-2 rounded-full bg-blue-400 inline-block"}),e.jsx("span",{children:s})]},s))}),u.code&&e.jsxs("div",{className:"max-w-lg space-y-2",children:[e.jsx(w,{label:u.label,code:u.code}),u.note&&e.jsx("p",{className:"text-xs text-slate-500",children:u.note})]}),e.jsx(re,{compact:!0,href:"/tools/agent-cli/#preflight",onClick:s=>m(s,"landing_cta_click",{cta:"open_cli_preflight"}),className:"max-w-lg"}),e.jsxs("div",{className:"flex flex-col gap-2",children:[e.jsxs("div",{className:"flex flex-wrap gap-3",children:[e.jsxs("a",{href:Z,onClick:s=>m(s,"landing_cta_click",{cta:"preview_output_hero"}),className:"px-5 py-3 rounded-xl bg-blue-500 hover:bg-blue-600 font-bold flex items-center gap-2 transition",children:[t("landing.ctas.primary")," ",e.jsx(f,{size:16})]}),e.jsxs("a",{href:G,onClick:s=>m(s,"landing_cta_click",{cta:"cli_quickstart_hero"}),className:"px-5 py-3 rounded-xl border border-slate-700 bg-slate-950 text-slate-200 font-bold flex items-center gap-2 hover:bg-slate-900 transition",children:[t("landing.ctas.secondarySample")," ",e.jsx(f,{size:16})]})]}),e.jsx("p",{className:"text-xs text-slate-500 font-medium ml-1",children:R}),z&&e.jsx("p",{className:"text-xs text-slate-500 ml-1",children:z}),A&&e.jsx("p",{className:"text-xs text-slate-500 ml-1",children:A}),e.jsxs("a",{href:"#design-partner",onClick:()=>j("landing_cta_click",{cta:"jump_design_partner"}),className:"inline-flex items-center gap-1 text-xs text-blue-200 hover:text-blue-100 underline underline-offset-4 ml-1 w-fit",children:[t("landing.partner.jumpCta",{defaultValue:t("landing.partner.emailCta")})," ",e.jsx(f,{size:12})]})]}),e.jsx("div",{className:"flex gap-6 text-sm text-slate-400",children:o.map((s,a)=>{const b=$[a%$.length],le=H[a%H.length];return e.jsxs("span",{className:"flex items-center gap-2",children:[e.jsx(b,{size:16,className:le}),s]},`${s}-${a}`)})})]}),e.jsxs("div",{className:"rounded-2xl bg-slate-900/60 border border-slate-800 p-3 shadow-2xl",children:[e.jsx("div",{className:"relative aspect-video overflow-hidden rounded-xl border border-slate-800 bg-slate-900",children:e.jsxs("video",{autoPlay:!0,loop:!0,muted:!0,playsInline:!0,poster:"/app/assets/hero/demo-poster.jpg",className:"w-full h-full object-cover",children:[e.jsx("source",{src:"/app/assets/hero/demo.webm",type:"video/webm"}),e.jsx("source",{src:"/app/assets/hero/demo.mp4",type:"video/mp4"}),e.jsx("img",{src:"/app/assets/hero/demo-poster.jpg",alt:I,className:"w-full h-full object-cover"})]})}),e.jsxs("div",{className:"mt-4 space-y-2",children:[e.jsx("div",{className:"inline-flex text-xs uppercase tracking-[0.3em] text-blue-200 bg-slate-900/60 px-3 py-1 rounded-full border border-blue-500/40",children:t("landing.hero.livePreview")}),e.jsx("div",{className:"text-lg font-bold",children:t("landing.hero.devices")}),e.jsx("div",{className:"text-sm text-slate-300",children:t("landing.hero.caption")}),e.jsx("div",{className:"flex flex-wrap gap-2",children:(i.badges||[]).slice(0,3).map(s=>e.jsx("span",{className:"text-[11px] px-3 py-1 rounded-full border border-slate-700 bg-slate-900/80 text-slate-200",children:s},s))})]})]})]}),n?.title&&e.jsxs("section",{id:"output-example",className:"space-y-6",children:[e.jsxs("div",{className:"text-center space-y-2 max-w-3xl mx-auto",children:[e.jsx("h2",{className:"text-3xl font-bold",children:n.title}),n.desc&&e.jsx("p",{className:"text-slate-300",children:n.desc})]}),e.jsxs("div",{className:"grid md:grid-cols-2 gap-6 items-start",children:[e.jsxs("div",{className:"rounded-2xl border border-slate-800 bg-slate-950/60 p-5 space-y-3",children:[n.treeLabel&&e.jsx("div",{className:"text-[11px] uppercase tracking-[0.2em] text-slate-500",children:n.treeLabel}),n.tree&&e.jsx("pre",{className:"text-xs text-slate-200 whitespace-pre-wrap",children:n.tree})]}),e.jsx("div",{className:"grid grid-cols-2 gap-2",children:["01","02","03","04"].map(s=>e.jsx("div",{className:"rounded-xl border border-slate-800 bg-slate-950 overflow-hidden",children:e.jsx("img",{src:`/app/assets/proof/output-${s}.png`,alt:n.thumbAlt||I,loading:"lazy",className:"w-full h-auto object-cover"})},s))})]}),n.note&&e.jsx("p",{className:"text-xs text-slate-500 text-center max-w-3xl mx-auto",children:n.note})]}),c&&c.title&&e.jsxs("section",{id:"pipeline",className:"space-y-6",children:[e.jsxs("div",{className:"text-center space-y-2",children:[e.jsx("p",{className:"text-xs font-semibold tracking-[0.2em] text-blue-200 uppercase",children:c.title}),e.jsx("p",{className:"text-slate-300",children:c.subtitle})]}),e.jsxs("div",{className:"grid gap-6 md:grid-cols-2",children:[e.jsxs("div",{className:"p-6 rounded-2xl bg-slate-900/60 border border-slate-800 space-y-4",children:[e.jsx("div",{className:"text-xs font-semibold tracking-[0.2em] text-blue-200 uppercase",children:d.label}),e.jsx("h2",{className:"text-2xl font-bold",children:d.title}),e.jsx("p",{className:"text-sm text-slate-300 leading-relaxed",children:d.desc}),e.jsx("div",{className:"space-y-3",children:N.map((s,a)=>e.jsx(w,{label:s.label,code:s.code},s.label||a))})]}),e.jsxs("div",{className:"p-6 rounded-2xl bg-slate-900/60 border border-slate-800 space-y-4",children:[e.jsx("div",{className:"text-xs font-semibold tracking-[0.2em] text-blue-200 uppercase",children:r.label}),e.jsx("h2",{className:"text-2xl font-bold",children:r.title}),e.jsx("p",{className:"text-sm text-slate-300 leading-relaxed",children:r.desc}),e.jsx("div",{className:"space-y-3",children:h.map((s,a)=>e.jsx(w,{label:s.label,code:s.code},s.label||a))}),r.note&&e.jsx("p",{className:"text-xs text-slate-500",children:r.note})]})]})]}),l&&l.title&&e.jsxs("section",{id:"ci-quickstart",className:"max-w-3xl mx-auto space-y-4",children:[e.jsxs("div",{className:"text-center space-y-2",children:[e.jsx("p",{className:"text-xs font-semibold tracking-[0.2em] text-blue-200 uppercase",children:l.title}),l.desc&&e.jsx("p",{className:"text-slate-300",children:l.desc})]}),l.code&&e.jsx(w,{label:l.codeLabel,code:l.code}),l.note&&e.jsx("p",{className:"text-xs text-slate-500 text-center",children:l.note})]}),O.length>0&&e.jsxs("section",{id:"entry-points",className:"space-y-6",children:[e.jsxs("div",{className:"text-center space-y-2",children:[e.jsx("p",{className:"text-xs font-semibold tracking-[0.2em] text-blue-200 uppercase",children:_.title}),e.jsx("p",{className:"text-slate-300",children:_.subtitle})]}),e.jsx("div",{className:"grid md:grid-cols-3 gap-6",children:O.map((s,a)=>{const b=V[a%V.length];return e.jsxs("div",{className:"p-6 rounded-2xl bg-slate-900/60 border border-slate-800 space-y-4",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"w-10 h-10 rounded-lg bg-slate-800 text-blue-300 flex items-center justify-center",children:e.jsx(b,{size:18})}),e.jsx("h3",{className:"text-lg font-bold text-white",children:s.title})]}),e.jsx("p",{className:"text-sm text-slate-300 leading-relaxed",children:s.desc}),s.cta&&s.href&&e.jsxs("a",{href:s.href,className:"inline-flex items-center gap-2 text-sm text-blue-200 hover:text-blue-100 transition-colors",children:[s.cta," ",e.jsx(f,{size:14})]})]},s.title||a)})})]}),e.jsx("section",{id:"problem",className:"grid md:grid-cols-3 gap-6",children:p.map((s,a)=>{const b=M[a%M.length];return e.jsx(ge,{Icon:b,title:s.title,desc:s.desc},s.title||a)})}),i&&((i.items||[]).length>0||(i.badges||[]).length>0)&&e.jsxs("section",{id:"social-proof",className:"space-y-6",children:[e.jsxs("div",{className:"text-center space-y-2",children:[e.jsx("p",{className:"text-xs font-semibold tracking-[0.2em] text-blue-200 uppercase",children:i.title}),e.jsx("p",{className:"text-slate-300",children:i.caption})]}),(i.items||[]).length>0&&e.jsx("div",{className:"grid md:grid-cols-3 gap-4",children:i.items.map((s,a)=>e.jsxs("div",{className:"p-5 rounded-xl bg-slate-900/60 border border-slate-800 shadow-sm shadow-slate-900/40",children:[e.jsxs("p",{className:"text-slate-100 text-sm leading-relaxed mb-3",children:['"',s.quote,'"']}),e.jsxs("div",{className:"text-xs text-slate-400",children:[e.jsx("span",{className:"font-semibold text-slate-200",children:s.name})," · ",s.role]})]},`${s.name}-${a}`))}),(i.badges||[]).length>0&&e.jsx("div",{className:"flex flex-wrap justify-center gap-3 text-[11px] text-slate-300",children:i.badges.map(s=>e.jsx("span",{className:"px-3 py-1 rounded-full border border-slate-800 bg-slate-900/70",children:s},s))})]}),e.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:[e.jsx("div",{className:"text-lg font-bold text-white",children:t("landing.partner.title")}),e.jsx("div",{className:"text-sm text-slate-300 leading-relaxed",children:t("landing.partner.body")}),e.jsxs("div",{className:"flex flex-col sm:flex-row gap-3",children:[e.jsxs("a",{href:te,onClick:()=>j("landing_cta_click",{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:[t("landing.partner.emailCta")," ",e.jsx(f,{size:16})]}),e.jsx("a",{href:"https://x.com/shipscreenscom",target:"_blank",rel:"noopener noreferrer",onClick:()=>j("landing_cta_click",{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:t("landing.partner.dmCta")})]}),e.jsxs("div",{className:"text-xs text-slate-500",children:[t("landing.partner.emailLabel")," ",e.jsx("a",{href:`mailto:${C}`,className:"underline underline-offset-4 hover:text-white",children:C})]})]}),e.jsxs("section",{id:"pricing",className:"grid md:grid-cols-2 gap-6",children:[e.jsx(E,{title:y.title,price:y.price,bullets:y.bullets||[],cta:y.cta,href:K,trackingCta:"open_app_pricing_free",highlight:!1}),e.jsx(E,{title:g.title,price:g.price,bullets:g.bullets||[],cta:g.cta,href:X,trackingCta:"go_pro_pricing",highlight:!0,badge:g.badge})]}),x?.cmd&&e.jsx("section",{className:"max-w-3xl mx-auto w-full",children:e.jsxs("div",{className:"bg-slate-900/60 border border-slate-800 rounded-2xl p-6 space-y-3",children:[e.jsxs("div",{className:"flex items-center justify-between gap-3",children:[e.jsx("div",{className:"text-sm font-bold text-white",children:x.title}),e.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"})]}),x.body&&e.jsx("p",{className:"text-sm text-slate-300",children:x.body}),e.jsx("div",{className:"rounded-xl border border-slate-800 bg-slate-950/80 p-4",children:e.jsx("pre",{className:"text-xs text-slate-200 whitespace-pre-wrap",children:x.cmd})}),e.jsx("div",{className:"flex flex-col sm:flex-row gap-3",children:e.jsx(U,{value:x.cmd,onCopied:()=>j("landing_cta_click",{cta:"copy_cli_pro_unlock"}),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"})}),x.note&&e.jsx("div",{className:"text-xs text-slate-500",children:x.note})]})}),v.length>0&&e.jsxs("section",{id:"faq",className:"max-w-3xl mx-auto w-full space-y-6",children:[e.jsx("h2",{className:"text-3xl font-bold text-center",children:t("landing.faq.title")}),e.jsx("div",{className:"space-y-4",children:v.map((s,a)=>e.jsxs("div",{className:"bg-slate-900/60 border border-slate-800 rounded-xl p-6",children:[e.jsx("h3",{className:"font-semibold text-lg mb-2",children:s.q}),e.jsx("p",{className:"text-slate-300 text-sm leading-relaxed",children:s.a})]},`${s.q}-${a}`))})]})]}),e.jsxs("footer",{className:"border-t border-slate-800 bg-slate-950 py-12 mt-24",children:[e.jsxs("div",{className:"max-w-6xl mx-auto px-6 flex flex-col md:flex-row justify-between items-start gap-6",children:[e.jsxs("div",{className:"flex items-center gap-2 text-slate-500 text-sm",children:[e.jsx("div",{className:"w-7 h-7 rounded-lg border border-slate-800 bg-slate-950 p-1 flex items-center justify-center overflow-hidden",children:e.jsx("img",{src:"/app/assets/icons/favicon-32x32.png?v=3",alt:"ShipScreens",className:"w-full h-full object-contain",loading:"lazy"})}),e.jsx("span",{children:J})]}),e.jsxs("div",{className:"flex flex-wrap justify-center gap-8 text-sm text-slate-400",children:[e.jsx("a",{href:"/terms",className:"hover:text-white transition-colors",children:t("landing.footer.terms")}),e.jsx("a",{href:"/privacy",className:"hover:text-white transition-colors",children:t("landing.footer.privacy")}),e.jsx("a",{href:"/legal",className:"hover:text-white transition-colors",children:t("landing.footer.legal")})]})]}),P.length>0&&e.jsx("div",{className:"max-w-6xl mx-auto px-6 mt-6 flex flex-wrap gap-4 text-xs text-slate-500",children:P.map(s=>e.jsx("a",{href:s.href,className:"hover:text-white transition-colors",children:s.label},s.label))})]}),e.jsx("script",{type:"application/ld+json",dangerouslySetInnerHTML:{__html:JSON.stringify(ae)}}),L&&e.jsx("script",{type:"application/ld+json",dangerouslySetInnerHTML:{__html:JSON.stringify(L)}})]})},ge=({Icon:t,title:o,desc:p})=>e.jsxs("div",{className:"p-5 rounded-xl bg-slate-900/60 border border-slate-800 hover:border-slate-700 transition",children:[e.jsx("div",{className:"w-10 h-10 rounded-lg bg-slate-800 text-blue-300 flex items-center justify-center mb-3",children:e.jsx(t,{})}),e.jsx("h3",{className:"text-lg font-bold mb-1",children:o}),e.jsx("p",{className:"text-slate-300 text-sm leading-relaxed",children:p})]}),E=({title:t,price:o,bullets:p,cta:c,href:l,trackingCta:d,highlight:r,badge:N})=>e.jsxs("div",{className:`p-6 rounded-2xl border ${r?"border-blue-500 bg-blue-500/10 shadow-lg shadow-blue-500/20":"border-slate-800 bg-slate-900/60"} flex flex-col gap-4`,children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("h3",{className:"text-xl font-bold",children:t}),r&&N&&e.jsx("span",{className:"text-xs px-2 py-1 rounded bg-blue-500 text-white font-semibold",children:N})]}),e.jsx("div",{className:"text-3xl font-black",children:o}),e.jsx("ul",{className:"text-slate-200 space-y-2 text-sm",children:p.map(h=>e.jsxs("li",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"w-2 h-2 rounded-full bg-blue-400 inline-block"}),h]},h))}),e.jsx("a",{href:l,onClick:h=>d?m(h,"landing_cta_click",{cta:d}):void 0,className:`mt-auto inline-flex justify-center items-center px-4 py-3 rounded-xl font-bold transition ${r?"bg-blue-500 text-white hover:bg-blue-600":"bg-white text-slate-900 hover:scale-[1.02]"}`,children:c})]}),w=({label:t,code:o})=>{const{t:p}=F(),[c,l]=T.useState(()=>typeof window>"u"?!0:window.matchMedia("(min-width: 640px)").matches);if(!o)return null;const d=p("common.showCommands",{defaultValue:"Show commands"});return e.jsxs("div",{className:"rounded-xl border border-slate-800 bg-slate-950/80 p-4",children:[e.jsxs("div",{className:"flex items-center justify-between gap-3 mb-2",children:[e.jsx("div",{className:"min-w-0",children:t&&e.jsx("div",{className:"text-[11px] uppercase tracking-[0.2em] text-slate-500",children:t})}),e.jsx(U,{value:o,className:"shrink-0 text-[11px] px-2 py-1 rounded-md border border-slate-700 bg-slate-900/60 text-slate-200 hover:bg-slate-900 transition disabled:opacity-50 disabled:cursor-not-allowed"})]}),e.jsxs("details",{className:"group",open:c,onToggle:r=>l(r.currentTarget.open),children:[e.jsxs("summary",{className:"flex items-center justify-between text-[11px] font-semibold text-slate-400 cursor-pointer list-none",children:[e.jsx("span",{children:d}),e.jsx(xe,{size:14,className:"text-slate-500 transition-transform duration-200 group-open:rotate-180"})]}),e.jsx("pre",{className:"mt-2 text-xs text-slate-200 font-mono whitespace-pre leading-relaxed overflow-auto",children:o})]})]})};export{Ce as default};
|
|
2
|
-
//# sourceMappingURL=Landing-s1ni1n-7.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Landing-s1ni1n-7.js","sources":["../../node_modules/lucide-react/dist/esm/icons/earth.js","../../node_modules/lucide-react/dist/esm/icons/layers.js","../../node_modules/lucide-react/dist/esm/icons/zap.js","../../src/pages/Landing.jsx"],"sourcesContent":["/**\n * @license lucide-react v0.563.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.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M21.54 15H17a2 2 0 0 0-2 2v4.54\", key: \"1djwo0\" }],\n [\n \"path\",\n {\n d: \"M7 3.34V5a3 3 0 0 0 3 3a2 2 0 0 1 2 2c0 1.1.9 2 2 2a2 2 0 0 0 2-2c0-1.1.9-2 2-2h3.17\",\n key: \"1tzkfa\"\n }\n ],\n [\"path\", { d: \"M11 21.95V18a2 2 0 0 0-2-2a2 2 0 0 1-2-2v-1a2 2 0 0 0-2-2H2.05\", key: \"14pb5j\" }],\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"10\", key: \"1mglay\" }]\n];\nconst Earth = createLucideIcon(\"earth\", __iconNode);\n\nexport { __iconNode, Earth as default };\n//# sourceMappingURL=earth.js.map\n","/**\n * @license lucide-react v0.563.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.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83z\",\n key: \"zw3jo\"\n }\n ],\n [\n \"path\",\n {\n d: \"M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 12\",\n key: \"1wduqc\"\n }\n ],\n [\n \"path\",\n {\n d: \"M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 17\",\n key: \"kqbvx6\"\n }\n ]\n];\nconst Layers = createLucideIcon(\"layers\", __iconNode);\n\nexport { __iconNode, Layers as default };\n//# sourceMappingURL=layers.js.map\n","/**\n * @license lucide-react v0.563.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.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z\",\n key: \"1xq2db\"\n }\n ]\n];\nconst Zap = createLucideIcon(\"zap\", __iconNode);\n\nexport { __iconNode, Zap as default };\n//# sourceMappingURL=zap.js.map\n","import React, { useEffect, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { ArrowRight, ChevronDown, Zap, Globe2, Layers, ShieldCheck, Smartphone, Terminal } from 'lucide-react';\nimport CopyButton from '../components/CopyButton';\nimport CliPreflightCard from '../components/CliPreflightCard';\nimport StagingBadge from '../components/StagingBadge';\nimport usePageTitle from '../hooks/usePageTitle';\nimport SiteHeader from '../components/SiteHeader';\nimport { trackEvent, trackEventAndFollowLink } from '../lib/analytics';\n\nconst badgeIcons = [Zap, Layers, ShieldCheck];\nconst badgeIconClasses = ['text-yellow-400', 'text-green-400', 'text-cyan-400'];\nconst featureIcons = [Layers, Globe2, ShieldCheck];\nconst entryIcons = [Terminal, Smartphone, Globe2];\n\nconst Landing = () => {\n const { t } = useTranslation();\n usePageTitle('titles.landing');\n const badges = t('landing.badges', { returnObjects: true }) || [];\n const features = t('landing.features', { returnObjects: true }) || [];\n const pipeline = t('landing.pipeline', { returnObjects: true }) || {};\n const ciQuickstart = t('landing.ciQuickstart', { returnObjects: true }) || {};\n const pipelineInputs = pipeline.inputs || {};\n const pipelineOutputs = pipeline.outputs || {};\n const pipelineInputFiles = pipelineInputs.files || [];\n const pipelineOutputFiles = pipelineOutputs.files || [];\n const entryPoints = t('landing.entryPoints', { returnObjects: true }) || {};\n const entryItems = entryPoints.items || [];\n const pricing = t('landing.pricing', { returnObjects: true }) || {};\n const socialProof = t('landing.socialProof', { returnObjects: true }) || {};\n const faqItems = t('landing.faq.items', { returnObjects: true }) || [];\n const footerLinks = t('landing.footer.links', { returnObjects: true }) || [];\n const heroAlt = t('landing.hero.alt', { defaultValue: 'ShipScreens preview' });\n const heroOutputs = t('landing.hero.outputs', { returnObjects: true }) || [];\n const heroCli = t('landing.hero.cliQuickstart', { returnObjects: true }) || {};\n const heroOutputExample = t('landing.hero.outputExample', { returnObjects: true }) || {};\n const noLoginCopy = t('landing.hero.noLogin', { defaultValue: 'No login required · Free forever' });\n const proUnlockNote = t('landing.hero.proUnlockNote', { defaultValue: '' });\n const proPriceNote = t('landing.hero.proPriceNote', { defaultValue: '' });\n const footerCopy = t('landing.footer.copyright', { year: new Date().getFullYear() });\n const freePlan = pricing.free || {};\n const proPlan = pricing.pro || {};\n const cliProUnlock = pricing.cliProUnlock || {};\n const openAppHref = '/app/?sample=5panel&entry_source=landing_open_app_header';\n const previewOutputHeaderHref = '/tools/first-export/?entry_source=landing_preview_output_header';\n const previewOutputHref = '/tools/first-export/?entry_source=landing_preview_output_hero';\n const cliQuickstartHref = '/tools/agent-cli/?entry_source=landing_cli_quickstart_hero';\n const freePlanHref = '/app/?sample=5panel&entry_source=landing_open_app_pricing_free';\n const proPlanHref = '/app/?sample=5panel&upgrade=1&entry_source=landing_go_pro_pricing';\n const supportEmail = 'support@shimaumaservices.co.jp';\n const partnerSubject = t('landing.partner.emailSubject', { defaultValue: 'ShipScreens Founding / Design Partner' });\n const partnerBody = t('landing.partner.emailBody', { defaultValue: '' });\n const partnerMailto = `mailto:${supportEmail}?subject=${encodeURIComponent(partnerSubject)}&body=${encodeURIComponent(\n partnerBody\n )}`;\n const structuredData = {\n '@context': 'https://schema.org',\r\n '@type': 'SoftwareApplication',\r\n name: 'ShipScreens',\r\n applicationCategory: 'Multimedia',\r\n operatingSystem: 'iOS, Android, Web',\r\n url: 'https://shipscreens.com/',\r\n offers: {\r\n '@type': 'Offer',\r\n priceCurrency: 'USD',\r\n price: '19.00',\r\n availability: 'https://schema.org/InStock',\r\n },\r\n description: t('landing.subheading'),\r\n provider: {\r\n '@type': 'Organization',\r\n name: 'ShipScreens',\n url: 'https://shipscreens.com/',\n },\n };\n const faqStructuredData =\n faqItems.length > 0\n ? {\n '@context': 'https://schema.org',\n '@type': 'FAQPage',\n mainEntity: faqItems.map((item) => ({\n '@type': 'Question',\n name: item.q,\n acceptedAnswer: {\n '@type': 'Answer',\n text: item.a,\n },\n })),\n }\n : null;\n\n useEffect(() => {\n trackEvent('landing_view', { path: typeof window !== 'undefined' ? window.location.pathname : '/' });\n }, []);\n\n return (\n <div className=\"min-h-screen bg-gradient-to-b from-slate-950 via-slate-900 to-slate-950 text-white\">\n <StagingBadge />\n <SiteHeader\n variant=\"dark\"\n active=\"home\"\n openAppHref={openAppHref}\n onToolsClick={(event) => trackEventAndFollowLink(event, 'landing_nav_click', { cta: 'tools_header' })}\n onOpenAppClick={(event) => trackEventAndFollowLink(event, 'landing_nav_click', { cta: 'open_app_header' })}\n primaryCta={{\n href: previewOutputHeaderHref,\n label: t('landing.nav.primaryCta', { defaultValue: t('landing.nav.goPro') }),\n onClick: (event) => trackEventAndFollowLink(event, 'landing_nav_click', { cta: 'preview_output_header' }),\n }}\n />\n\n <main className=\"max-w-7xl mx-auto px-6 space-y-24 pb-24\">\n <section className=\"grid md:grid-cols-[1fr_1.4fr] gap-8 items-start\">\n <div className=\"space-y-6\">\n <p className=\"text-blue-300 text-sm font-semibold tracking-[0.2em] uppercase\">{t('landing.tagline')}</p>\n <h1 className=\"text-4xl md:text-5xl font-black leading-tight\">{t('landing.headline')}</h1>\n <p className=\"text-slate-300 text-lg leading-relaxed\">{t('landing.subheading')}</p>\n {t('landing.whoFor', { defaultValue: '' }) && (\n <p className=\"text-slate-400 text-sm\">{t('landing.whoFor')}</p>\n )}\n {heroOutputs.length > 0 && (\n <ul className=\"space-y-2 text-sm text-slate-200\">\n {heroOutputs.map((item) => (\n <li key={item} className=\"flex items-start gap-2\">\n <span className=\"mt-2 w-2 h-2 rounded-full bg-blue-400 inline-block\" />\n <span>{item}</span>\n </li>\n ))}\n </ul>\n )}\n {heroCli.code && (\n <div className=\"max-w-lg space-y-2\">\n <CodeBlock label={heroCli.label} code={heroCli.code} />\n {heroCli.note && <p className=\"text-xs text-slate-500\">{heroCli.note}</p>}\n </div>\n )}\n <CliPreflightCard\n compact\n href=\"/tools/agent-cli/#preflight\"\n onClick={(event) =>\n trackEventAndFollowLink(event, 'landing_cta_click', { cta: 'open_cli_preflight' })\n }\n className=\"max-w-lg\"\n />\n <div className=\"flex flex-col gap-2\">\n <div className=\"flex flex-wrap gap-3\">\n <a\n href={previewOutputHref}\n onClick={(event) => trackEventAndFollowLink(event, 'landing_cta_click', { cta: 'preview_output_hero' })}\n className=\"px-5 py-3 rounded-xl bg-blue-500 hover:bg-blue-600 font-bold flex items-center gap-2 transition\"\n >\n {t('landing.ctas.primary')} <ArrowRight size={16} />\n </a>\n <a\n href={cliQuickstartHref}\n onClick={(event) =>\n trackEventAndFollowLink(event, 'landing_cta_click', { cta: 'cli_quickstart_hero' })\n }\n className=\"px-5 py-3 rounded-xl border border-slate-700 bg-slate-950 text-slate-200 font-bold flex items-center gap-2 hover:bg-slate-900 transition\"\n >\n {t('landing.ctas.secondarySample')} <ArrowRight size={16} />\n </a>\n </div>\n <p className=\"text-xs text-slate-500 font-medium ml-1\">{noLoginCopy}</p>\n {proUnlockNote && <p className=\"text-xs text-slate-500 ml-1\">{proUnlockNote}</p>}\n {proPriceNote && <p className=\"text-xs text-slate-500 ml-1\">{proPriceNote}</p>}\n <a\n href=\"#design-partner\"\n onClick={() => trackEvent('landing_cta_click', { cta: 'jump_design_partner' })}\n className=\"inline-flex items-center gap-1 text-xs text-blue-200 hover:text-blue-100 underline underline-offset-4 ml-1 w-fit\"\n >\n {t('landing.partner.jumpCta', { defaultValue: t('landing.partner.emailCta') })} <ArrowRight size={12} />\n </a>\n </div>\n <div className=\"flex gap-6 text-sm text-slate-400\">\n {badges.map((text, index) => {\n const Icon = badgeIcons[index % badgeIcons.length];\n const iconClass = badgeIconClasses[index % badgeIconClasses.length];\n return (\n <span key={`${text}-${index}`} className=\"flex items-center gap-2\">\r\n <Icon size={16} className={iconClass} />\r\n {text}\r\n </span>\r\n );\r\n })}\r\n </div>\n </div>\n <div className=\"rounded-2xl bg-slate-900/60 border border-slate-800 p-3 shadow-2xl\">\n <div className=\"relative aspect-video overflow-hidden rounded-xl border border-slate-800 bg-slate-900\">\n <video\n autoPlay\n loop\n muted\n playsInline\n poster=\"/app/assets/hero/demo-poster.jpg\"\n className=\"w-full h-full object-cover\"\n >\n <source src=\"/app/assets/hero/demo.webm\" type=\"video/webm\" />\n <source src=\"/app/assets/hero/demo.mp4\" type=\"video/mp4\" />\n <img\n src=\"/app/assets/hero/demo-poster.jpg\"\n alt={heroAlt}\n className=\"w-full h-full object-cover\"\n />\n </video>\n </div>\n <div className=\"mt-4 space-y-2\">\n <div className=\"inline-flex text-xs uppercase tracking-[0.3em] text-blue-200 bg-slate-900/60 px-3 py-1 rounded-full border border-blue-500/40\">\n {t('landing.hero.livePreview')}\n </div>\n <div className=\"text-lg font-bold\">{t('landing.hero.devices')}</div>\n <div className=\"text-sm text-slate-300\">{t('landing.hero.caption')}</div>\n <div className=\"flex flex-wrap gap-2\">\n {(socialProof.badges || []).slice(0, 3).map((badge) => (\n <span key={badge} className=\"text-[11px] px-3 py-1 rounded-full border border-slate-700 bg-slate-900/80 text-slate-200\">\n {badge}\n </span>\n ))}\n </div>\n </div>\n </div>\n </section>\n\n {heroOutputExample?.title && (\n <section id=\"output-example\" className=\"space-y-6\">\n <div className=\"text-center space-y-2 max-w-3xl mx-auto\">\n <h2 className=\"text-3xl font-bold\">{heroOutputExample.title}</h2>\n {heroOutputExample.desc && <p className=\"text-slate-300\">{heroOutputExample.desc}</p>}\n </div>\n <div className=\"grid md:grid-cols-2 gap-6 items-start\">\n <div className=\"rounded-2xl border border-slate-800 bg-slate-950/60 p-5 space-y-3\">\n {heroOutputExample.treeLabel && (\n <div className=\"text-[11px] uppercase tracking-[0.2em] text-slate-500\">{heroOutputExample.treeLabel}</div>\n )}\n {heroOutputExample.tree && (\n <pre className=\"text-xs text-slate-200 whitespace-pre-wrap\">{heroOutputExample.tree}</pre>\n )}\n </div>\n <div className=\"grid grid-cols-2 gap-2\">\n {['01', '02', '03', '04'].map((n) => (\n <div key={n} className=\"rounded-xl border border-slate-800 bg-slate-950 overflow-hidden\">\n <img\n src={`/app/assets/proof/output-${n}.png`}\n alt={heroOutputExample.thumbAlt || heroAlt}\n loading=\"lazy\"\n className=\"w-full h-auto object-cover\"\n />\n </div>\n ))}\n </div>\n </div>\n {heroOutputExample.note && (\n <p className=\"text-xs text-slate-500 text-center max-w-3xl mx-auto\">{heroOutputExample.note}</p>\n )}\n </section>\n )}\n\n {pipeline && pipeline.title && (\n <section id=\"pipeline\" className=\"space-y-6\">\n <div className=\"text-center space-y-2\">\n <p className=\"text-xs font-semibold tracking-[0.2em] text-blue-200 uppercase\">{pipeline.title}</p>\n <p className=\"text-slate-300\">{pipeline.subtitle}</p>\n </div>\n <div className=\"grid gap-6 md:grid-cols-2\">\n <div className=\"p-6 rounded-2xl bg-slate-900/60 border border-slate-800 space-y-4\">\n <div className=\"text-xs font-semibold tracking-[0.2em] text-blue-200 uppercase\">{pipelineInputs.label}</div>\n <h2 className=\"text-2xl font-bold\">{pipelineInputs.title}</h2>\n <p className=\"text-sm text-slate-300 leading-relaxed\">{pipelineInputs.desc}</p>\n <div className=\"space-y-3\">\n {pipelineInputFiles.map((file, index) => (\n <CodeBlock key={file.label || index} label={file.label} code={file.code} />\n ))}\n </div>\n </div>\n <div className=\"p-6 rounded-2xl bg-slate-900/60 border border-slate-800 space-y-4\">\n <div className=\"text-xs font-semibold tracking-[0.2em] text-blue-200 uppercase\">{pipelineOutputs.label}</div>\n <h2 className=\"text-2xl font-bold\">{pipelineOutputs.title}</h2>\n <p className=\"text-sm text-slate-300 leading-relaxed\">{pipelineOutputs.desc}</p>\n <div className=\"space-y-3\">\n {pipelineOutputFiles.map((file, index) => (\n <CodeBlock key={file.label || index} label={file.label} code={file.code} />\n ))}\n </div>\n {pipelineOutputs.note && <p className=\"text-xs text-slate-500\">{pipelineOutputs.note}</p>}\n </div>\n </div>\n </section>\n )}\n\n {ciQuickstart && ciQuickstart.title && (\n <section id=\"ci-quickstart\" className=\"max-w-3xl mx-auto space-y-4\">\n <div className=\"text-center space-y-2\">\n <p className=\"text-xs font-semibold tracking-[0.2em] text-blue-200 uppercase\">{ciQuickstart.title}</p>\n {ciQuickstart.desc && <p className=\"text-slate-300\">{ciQuickstart.desc}</p>}\n </div>\n {ciQuickstart.code && (\n <CodeBlock label={ciQuickstart.codeLabel} code={ciQuickstart.code} />\n )}\n {ciQuickstart.note && <p className=\"text-xs text-slate-500 text-center\">{ciQuickstart.note}</p>}\n </section>\n )}\n\n {entryItems.length > 0 && (\n <section id=\"entry-points\" className=\"space-y-6\">\n <div className=\"text-center space-y-2\">\n <p className=\"text-xs font-semibold tracking-[0.2em] text-blue-200 uppercase\">{entryPoints.title}</p>\n <p className=\"text-slate-300\">{entryPoints.subtitle}</p>\n </div>\n <div className=\"grid md:grid-cols-3 gap-6\">\n {entryItems.map((item, index) => {\n const Icon = entryIcons[index % entryIcons.length];\n return (\n <div key={item.title || index} className=\"p-6 rounded-2xl bg-slate-900/60 border border-slate-800 space-y-4\">\n <div className=\"flex items-center gap-3\">\n <div className=\"w-10 h-10 rounded-lg bg-slate-800 text-blue-300 flex items-center justify-center\">\n <Icon size={18} />\n </div>\n <h3 className=\"text-lg font-bold text-white\">{item.title}</h3>\n </div>\n <p className=\"text-sm text-slate-300 leading-relaxed\">{item.desc}</p>\n {item.cta && item.href && (\n <a\n href={item.href}\n className=\"inline-flex items-center gap-2 text-sm text-blue-200 hover:text-blue-100 transition-colors\"\n >\n {item.cta} <ArrowRight size={14} />\n </a>\n )}\n </div>\n );\n })}\n </div>\n </section>\n )}\n\n <section id=\"problem\" className=\"grid md:grid-cols-3 gap-6\">\n {features.map((f, index) => {\n const Icon = featureIcons[index % featureIcons.length];\n return <FeatureCard key={f.title || index} Icon={Icon} title={f.title} desc={f.desc} />;\n })}\n </section>\n\n {socialProof &&\n ((socialProof.items || []).length > 0 || (socialProof.badges || []).length > 0) && (\n <section id=\"social-proof\" className=\"space-y-6\">\n <div className=\"text-center space-y-2\">\n <p className=\"text-xs font-semibold tracking-[0.2em] text-blue-200 uppercase\">{socialProof.title}</p>\n <p className=\"text-slate-300\">{socialProof.caption}</p>\n </div>\n {(socialProof.items || []).length > 0 && (\n <div className=\"grid md:grid-cols-3 gap-4\">\n {socialProof.items.map((item, i) => (\n <div key={`${item.name}-${i}`} className=\"p-5 rounded-xl bg-slate-900/60 border border-slate-800 shadow-sm shadow-slate-900/40\">\n <p className=\"text-slate-100 text-sm leading-relaxed mb-3\">\"{item.quote}\"</p>\n <div className=\"text-xs text-slate-400\">\n <span className=\"font-semibold text-slate-200\">{item.name}</span> · {item.role}\n </div>\n </div>\n ))}\n </div>\n )}\n {(socialProof.badges || []).length > 0 && (\n <div className=\"flex flex-wrap justify-center gap-3 text-[11px] text-slate-300\">\n {socialProof.badges.map((badge) => (\n <span key={badge} className=\"px-3 py-1 rounded-full border border-slate-800 bg-slate-900/70\">\n {badge}\r\n </span>\r\n ))}\r\n </div>\r\n )}\r\n </section>\n )}\n\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\">{t('landing.partner.title')}</div>\n <div className=\"text-sm text-slate-300 leading-relaxed\">{t('landing.partner.body')}</div>\n <div className=\"flex flex-col sm:flex-row gap-3\">\n <a\n href={partnerMailto}\n onClick={() => trackEvent('landing_cta_click', { 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 {t('landing.partner.emailCta')} <ArrowRight size={16} />\n </a>\n <a\n href=\"https://x.com/shipscreenscom\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n onClick={() => trackEvent('landing_cta_click', { 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 {t('landing.partner.dmCta')}\n </a>\n </div>\n <div className=\"text-xs text-slate-500\">\n {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 id=\"pricing\" className=\"grid md:grid-cols-2 gap-6\">\n <PricingCard\n title={freePlan.title}\n price={freePlan.price}\n bullets={freePlan.bullets || []}\n cta={freePlan.cta}\n href={freePlanHref}\n trackingCta=\"open_app_pricing_free\"\n highlight={false}\n />\n <PricingCard\n title={proPlan.title}\n price={proPlan.price}\n bullets={proPlan.bullets || []}\n cta={proPlan.cta}\n href={proPlanHref}\n trackingCta=\"go_pro_pricing\"\n highlight\n badge={proPlan.badge}\n />\n </section>\n\n {cliProUnlock?.cmd && (\n <section className=\"max-w-3xl mx-auto w-full\">\n <div className=\"bg-slate-900/60 border border-slate-800 rounded-2xl p-6 space-y-3\">\n <div className=\"flex items-center justify-between gap-3\">\n <div className=\"text-sm font-bold text-white\">{cliProUnlock.title}</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 {cliProUnlock.body && <p className=\"text-sm text-slate-300\">{cliProUnlock.body}</p>}\n <div className=\"rounded-xl border border-slate-800 bg-slate-950/80 p-4\">\n <pre className=\"text-xs text-slate-200 whitespace-pre-wrap\">{cliProUnlock.cmd}</pre>\n </div>\n <div className=\"flex flex-col sm:flex-row gap-3\">\n <CopyButton\n value={cliProUnlock.cmd}\n onCopied={() => trackEvent('landing_cta_click', { cta: 'copy_cli_pro_unlock' })}\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 </div>\n {cliProUnlock.note && <div className=\"text-xs text-slate-500\">{cliProUnlock.note}</div>}\n </div>\n </section>\n )}\n\n {faqItems.length > 0 && (\n <section id=\"faq\" className=\"max-w-3xl mx-auto w-full space-y-6\">\n <h2 className=\"text-3xl font-bold text-center\">{t('landing.faq.title')}</h2>\n <div className=\"space-y-4\">\n {faqItems.map((item, i) => (\r\n <div key={`${item.q}-${i}`} className=\"bg-slate-900/60 border border-slate-800 rounded-xl p-6\">\r\n <h3 className=\"font-semibold text-lg mb-2\">{item.q}</h3>\r\n <p className=\"text-slate-300 text-sm leading-relaxed\">{item.a}</p>\r\n </div>\r\n ))}\r\n </div>\r\n </section>\r\n )}\r\n </main>\r\n\n <footer className=\"border-t border-slate-800 bg-slate-950 py-12 mt-24\">\n <div className=\"max-w-6xl mx-auto px-6 flex flex-col md:flex-row justify-between items-start gap-6\">\n <div className=\"flex items-center gap-2 text-slate-500 text-sm\">\n <div className=\"w-7 h-7 rounded-lg border border-slate-800 bg-slate-950 p-1 flex items-center justify-center overflow-hidden\">\n <img\n src=\"/app/assets/icons/favicon-32x32.png?v=3\"\n alt=\"ShipScreens\"\n className=\"w-full h-full object-contain\"\n loading=\"lazy\"\n />\n </div>\n <span>{footerCopy}</span>\n </div>\n <div className=\"flex flex-wrap justify-center gap-8 text-sm text-slate-400\">\r\n <a href=\"/terms\" className=\"hover:text-white transition-colors\">{t('landing.footer.terms')}</a>\r\n <a href=\"/privacy\" className=\"hover:text-white transition-colors\">{t('landing.footer.privacy')}</a>\r\n <a href=\"/legal\" className=\"hover:text-white transition-colors\">{t('landing.footer.legal')}</a>\r\n </div>\r\n </div>\r\n {footerLinks.length > 0 && (\n <div className=\"max-w-6xl mx-auto px-6 mt-6 flex flex-wrap gap-4 text-xs text-slate-500\">\n {footerLinks.map((item) => (\n <a key={item.label} href={item.href} className=\"hover:text-white transition-colors\">\n {item.label}\n </a>\n ))}\n </div>\n )}\n </footer>\r\n\r\n <script type=\"application/ld+json\" dangerouslySetInnerHTML={{ __html: JSON.stringify(structuredData) }} />\n {faqStructuredData && (\n <script type=\"application/ld+json\" dangerouslySetInnerHTML={{ __html: JSON.stringify(faqStructuredData) }} />\n )}\n </div>\n );\n};\n\r\nconst FeatureCard = ({ Icon, title, desc }) => (\r\n <div className=\"p-5 rounded-xl bg-slate-900/60 border border-slate-800 hover:border-slate-700 transition\">\r\n <div className=\"w-10 h-10 rounded-lg bg-slate-800 text-blue-300 flex items-center justify-center mb-3\">\r\n <Icon />\r\n </div>\r\n <h3 className=\"text-lg font-bold mb-1\">{title}</h3>\r\n <p className=\"text-slate-300 text-sm leading-relaxed\">{desc}</p>\r\n </div>\r\n);\r\n\r\nconst PricingCard = ({ title, price, bullets, cta, href, trackingCta, highlight, badge }) => (\n <div className={`p-6 rounded-2xl border ${highlight ? 'border-blue-500 bg-blue-500/10 shadow-lg shadow-blue-500/20' : 'border-slate-800 bg-slate-900/60'} flex flex-col gap-4`}>\n <div className=\"flex items-center justify-between\">\r\n <h3 className=\"text-xl font-bold\">{title}</h3>\r\n {highlight && badge && <span className=\"text-xs px-2 py-1 rounded bg-blue-500 text-white font-semibold\">{badge}</span>}\r\n </div>\r\n <div className=\"text-3xl font-black\">{price}</div>\r\n <ul className=\"text-slate-200 space-y-2 text-sm\">\r\n {bullets.map((item) => (\r\n <li key={item} className=\"flex items-center gap-2\">\r\n <span className=\"w-2 h-2 rounded-full bg-blue-400 inline-block\" />\r\n {item}\r\n </li>\r\n ))}\r\n </ul>\r\n <a\n href={href}\n onClick={(event) =>\n trackingCta ? trackEventAndFollowLink(event, 'landing_cta_click', { cta: trackingCta }) : undefined\n }\n className={`mt-auto inline-flex justify-center items-center px-4 py-3 rounded-xl font-bold transition ${highlight ? 'bg-blue-500 text-white hover:bg-blue-600' : 'bg-white text-slate-900 hover:scale-[1.02]'}`}\n >\n {cta}\n </a>\n </div>\n);\n\nconst CodeBlock = ({ label, code }) => {\n const { t } = useTranslation();\n const [isOpen, setIsOpen] = useState(() => {\n if (typeof window === 'undefined') return true;\n return window.matchMedia('(min-width: 640px)').matches;\n });\n if (!code) return null;\n\n const toggleLabel = t('common.showCommands', { defaultValue: 'Show commands' });\n\n return (\n <div className=\"rounded-xl border border-slate-800 bg-slate-950/80 p-4\">\n <div className=\"flex items-center justify-between gap-3 mb-2\">\n <div className=\"min-w-0\">\n {label && <div className=\"text-[11px] uppercase tracking-[0.2em] text-slate-500\">{label}</div>}\n </div>\n <CopyButton\n value={code}\n className=\"shrink-0 text-[11px] px-2 py-1 rounded-md border border-slate-700 bg-slate-900/60 text-slate-200 hover:bg-slate-900 transition disabled:opacity-50 disabled:cursor-not-allowed\"\n />\n </div>\n <details className=\"group\" open={isOpen} onToggle={(event) => setIsOpen(event.currentTarget.open)}>\n <summary className=\"flex items-center justify-between text-[11px] font-semibold text-slate-400 cursor-pointer list-none\">\n <span>{toggleLabel}</span>\n <ChevronDown size={14} className=\"text-slate-500 transition-transform duration-200 group-open:rotate-180\" />\n </summary>\n <pre className=\"mt-2 text-xs text-slate-200 font-mono whitespace-pre leading-relaxed overflow-auto\">{code}</pre>\n </details>\n </div>\n );\n};\n\nexport default Landing;\n"],"names":["__iconNode","Earth","createLucideIcon","Layers","Zap","badgeIcons","ShieldCheck","badgeIconClasses","featureIcons","Globe2","entryIcons","Terminal","Smartphone","Landing","useTranslation","usePageTitle","badges","features","pipeline","ciQuickstart","pipelineInputs","pipelineOutputs","pipelineInputFiles","pipelineOutputFiles","entryPoints","entryItems","pricing","socialProof","faqItems","footerLinks","heroAlt","heroOutputs","heroCli","heroOutputExample","noLoginCopy","proUnlockNote","proPriceNote","footerCopy","freePlan","proPlan","cliProUnlock","openAppHref","previewOutputHeaderHref","previewOutputHref","cliQuickstartHref","freePlanHref","proPlanHref","supportEmail","partnerSubject","partnerBody","partnerMailto","structuredData","faqStructuredData","item","useEffect","trackEvent","jsxs","jsx","StagingBadge","SiteHeader","event","trackEventAndFollowLink","CodeBlock","CliPreflightCard","ArrowRight","text","index","Icon","iconClass","badge","n","file","f","FeatureCard","i","PricingCard","CopyButton","title","desc","price","bullets","cta","href","trackingCta","highlight","label","code","t","isOpen","setIsOpen","useState","toggleLabel","ChevronDown"],"mappings":"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","x_google_ignoreList":[0,1,2]}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{u as A,r as u,j as e}from"./index-Bqv2NztY.js";import{c as G,u as J,L as k,X as K}from"./LanguageSwitcher-BD9N-dla.js";const Q=[["path",{d:"M4 5h16",key:"1tepv9"}],["path",{d:"M4 12h16",key:"1lakjw"}],["path",{d:"M4 19h16",key:"1djgab"}]],C=G("menu",Q),V=({className:h})=>e.jsx("a",{href:"https://x.com/shipscreenscom",target:"_blank",rel:"noopener noreferrer",className:`focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-500 rounded-md ${h}`,"aria-label":"ShipScreens on X (opens in new tab)",children:e.jsx("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true",children:e.jsx("path",{d:"M20.5 3h-2.4L12 9.6 6.9 3H3l7.2 9.1L3.2 21h2.4L12 14l6.6 7h3.1l-7.7-9.5L20.5 3Z"})})}),Y=({variant:h="dark",active:a=null,logoHref:$="/",toolsHref:x="/tools/",openAppHref:b="/app/",showTools:m=!0,showOpenApp:f=!0,showX:p=!0,showLanguageSwitcher:g=!0,languageSwitcherClassName:y="hidden sm:flex",onToolsClick:j,onOpenAppClick:v,primaryCta:s=null})=>{const{t:n}=A(),t=h==="dark",M=!!(s?.href&&s?.label),[o,N]=u.useState(!1),S=u.useRef(null),L=u.useRef(null),r=u.useCallback(()=>N(!1),[]);J({isOpen:o,onClose:r,panelRef:S,initialFocusRef:L});const l=t?"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-400 focus-visible:ring-offset-2 focus-visible:ring-offset-slate-950 rounded-md":"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-600 focus-visible:ring-offset-2 focus-visible:ring-offset-white rounded-md",_=t?`text-sm text-slate-300 hover:text-white transition-colors ${l}`:`text-sm text-slate-600 hover:text-slate-900 transition-colors ${l}`,D=t?"text-white font-semibold":"text-slate-900 font-semibold",c=i=>`${_}${a===i?` ${D}`:""}`,B=t?`flex items-center justify-between px-3 py-2 rounded-lg border border-slate-800 bg-slate-950 text-sm text-slate-200 hover:bg-slate-900 transition ${l}`:`flex items-center justify-between px-3 py-2 rounded-lg border border-slate-200 bg-white text-sm text-slate-800 hover:bg-slate-50 transition ${l}`,E=t?"border-blue-500 text-white":"border-blue-600 text-slate-900",R=i=>`${B}${a===i?` ${E}`:""}`,F=()=>{if(!o)return null;const i=t?"bg-slate-900/70":"bg-slate-900/40",X=t?"bg-slate-950 border-slate-800 text-white":"bg-white border-slate-200 text-slate-800",I=t?"border-slate-800":"border-slate-200",Z=t?`border-slate-800 text-slate-200 hover:bg-slate-900 ${l}`:`border-slate-200 text-slate-600 hover:bg-slate-50 ${l}`,w=d=>q=>{d?.(q),r()},z=n("common.menu",{defaultValue:"Menu"});return e.jsx("div",{className:`fixed inset-0 z-[2200] ${i} backdrop-blur-sm p-4 sm:hidden`,role:"dialog","aria-modal":"true","aria-label":z,onMouseDown:d=>{d.target===d.currentTarget&&r()},children:e.jsxs("div",{ref:S,id:"shipscreens-mobile-menu",className:`w-full max-w-sm ml-auto rounded-2xl shadow-2xl border overflow-hidden ${X}`,children:[e.jsxs("div",{className:`flex items-center justify-between px-4 py-3 border-b ${I}`,children:[e.jsx("div",{className:"text-sm font-bold",children:z}),e.jsx("button",{ref:L,type:"button",onClick:r,className:`p-2 rounded-lg border transition ${Z}`,"aria-label":n("common.close",{defaultValue:"Close"}),title:n("common.close",{defaultValue:"Close"}),children:e.jsx(K,{size:16})})]}),e.jsxs("div",{className:"p-4 space-y-3",children:[g&&e.jsx(k,{className:"w-full justify-center"}),e.jsxs("div",{className:"space-y-2",children:[m&&e.jsx("a",{href:x,onClick:w(j),className:R("tools"),"aria-current":a==="tools"?"page":void 0,children:e.jsx("span",{children:n("landing.nav.tools")})}),f&&e.jsx("a",{href:b,onClick:w(v),className:R("app"),"aria-current":a==="app"?"page":void 0,children:e.jsx("span",{children:n("landing.nav.openApp")})}),p&&e.jsx("a",{href:"https://x.com/shipscreenscom",target:"_blank",rel:"noopener noreferrer",className:B,children:e.jsx("span",{children:"X"})})]}),s?.href&&s?.label&&e.jsx("a",{href:s.href,onClick:w(s.onClick),className:`w-full inline-flex items-center justify-center px-4 py-2 rounded-lg font-semibold transition ${t?"bg-white text-slate-900 hover:scale-[1.02]":"bg-slate-900 text-white hover:bg-slate-800"} ${l}`,children:s.label})]})]})})},P=t?e.jsxs("header",{className:"max-w-6xl mx-auto px-4 py-4 sm:px-6 sm:py-6 flex items-center justify-between gap-4",children:[e.jsxs("a",{href:$,className:`flex items-center gap-3 hover:opacity-90 transition-opacity ${l}`,children:[e.jsx("div",{className:"w-10 h-10 rounded-xl border border-slate-800 bg-slate-950 p-1 flex items-center justify-center overflow-hidden shadow-sm",children:e.jsx("img",{src:"/app/assets/icons/favicon-32x32.png",alt:"ShipScreens",className:"w-full h-full object-contain",loading:"lazy"})}),e.jsx("span",{className:"text-lg font-bold",children:"ShipScreens"})]}),e.jsxs("div",{className:"flex items-center gap-2 sm:gap-3",children:[g&&e.jsx(k,{className:y}),p&&e.jsx(V,{className:"hidden sm:inline text-slate-300 hover:text-white transition-colors"}),m&&e.jsx("a",{href:x,onClick:j,className:`hidden sm:inline ${c("tools")}`,"aria-current":a==="tools"?"page":void 0,children:n("landing.nav.tools")}),f&&e.jsx("a",{href:b,onClick:v,className:`${M?"hidden sm:inline ":""}${c("app")}`,"aria-current":a==="app"?"page":void 0,children:n("landing.nav.openApp")}),M&&e.jsx("a",{href:s.href,onClick:s.onClick,className:`px-3 py-1.5 sm:px-4 sm:py-2 text-sm whitespace-nowrap rounded-lg bg-white text-slate-900 font-semibold hover:scale-[1.02] transition ${l}`,children:s.label}),e.jsx("button",{type:"button",onClick:()=>N(!0),className:`sm:hidden p-2 rounded-lg border border-slate-800 bg-slate-950 text-slate-200 hover:bg-slate-900 transition ${l}`,"aria-label":n("common.menu",{defaultValue:"Menu"}),"aria-controls":"shipscreens-mobile-menu","aria-expanded":o,children:e.jsx(C,{size:18})})]})]}):e.jsx("header",{className:"border-b border-slate-200 bg-white",children:e.jsxs("div",{className:"max-w-4xl mx-auto px-4 py-4 flex items-center justify-between gap-4",children:[e.jsxs("a",{href:$,className:`flex items-center gap-3 hover:opacity-90 transition-opacity ${l}`,children:[e.jsx("div",{className:"w-9 h-9 rounded-xl border border-slate-200 bg-white p-1 flex items-center justify-center overflow-hidden shadow-sm",children:e.jsx("img",{src:"/app/assets/icons/favicon-32x32.png",alt:"ShipScreens",className:"w-full h-full object-contain",loading:"lazy"})}),e.jsx("span",{className:"font-bold text-slate-900",children:"ShipScreens"})]}),e.jsxs("div",{className:"flex items-center gap-3",children:[g&&e.jsx(k,{className:y}),p&&e.jsx(V,{className:"hidden sm:inline text-slate-500 hover:text-slate-900 transition-colors"}),m&&e.jsx("a",{href:x,onClick:j,className:`hidden sm:inline ${c("tools")}`,"aria-current":a==="tools"?"page":void 0,children:n("landing.nav.tools")}),f&&e.jsx("a",{href:b,onClick:v,className:c("app"),"aria-current":a==="app"?"page":void 0,children:n("landing.nav.openApp")}),s?.href&&s?.label&&e.jsx("a",{href:s.href,onClick:s.onClick,className:`px-4 py-2 rounded-lg bg-slate-900 text-white font-semibold hover:bg-slate-800 transition ${l}`,children:s.label}),e.jsx("button",{type:"button",onClick:()=>N(!0),className:`sm:hidden p-2 rounded-lg border border-slate-200 bg-white text-slate-700 hover:bg-slate-50 transition ${l}`,"aria-label":n("common.menu",{defaultValue:"Menu"}),"aria-controls":"shipscreens-mobile-menu","aria-expanded":o,children:e.jsx(C,{size:18})})]})]})});return e.jsxs(e.Fragment,{children:[P,F()]})};export{Y as S};
|
|
2
|
-
//# sourceMappingURL=SiteHeader-DxsqNPnt.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SiteHeader-DxsqNPnt.js","sources":["../../node_modules/lucide-react/dist/esm/icons/menu.js","../../src/components/SiteHeader.jsx"],"sourcesContent":["/**\n * @license lucide-react v0.563.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.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M4 5h16\", key: \"1tepv9\" }],\n [\"path\", { d: \"M4 12h16\", key: \"1lakjw\" }],\n [\"path\", { d: \"M4 19h16\", key: \"1djgab\" }]\n];\nconst Menu = createLucideIcon(\"menu\", __iconNode);\n\nexport { __iconNode, Menu as default };\n//# sourceMappingURL=menu.js.map\n","import React, { useCallback, useRef, useState } from 'react';\nimport { Menu, X } from 'lucide-react';\nimport { useTranslation } from 'react-i18next';\nimport LanguageSwitcher from './LanguageSwitcher';\nimport useModalA11y from '../hooks/useModalA11y';\n\nconst XLink = ({ className }) => (\n <a\n href=\"https://x.com/shipscreenscom\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className={`focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-500 rounded-md ${className}`}\n aria-label=\"ShipScreens on X (opens in new tab)\"\n >\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"currentColor\" aria-hidden=\"true\">\n <path d=\"M20.5 3h-2.4L12 9.6 6.9 3H3l7.2 9.1L3.2 21h2.4L12 14l6.6 7h3.1l-7.7-9.5L20.5 3Z\" />\n </svg>\n </a>\n);\n\nconst SiteHeader = ({\n variant = 'dark',\n active = null, // 'tools' | 'app' | null\n logoHref = '/',\n toolsHref = '/tools/',\n openAppHref = '/app/',\n showTools = true,\n showOpenApp = true,\n showX = true,\n showLanguageSwitcher = true,\n languageSwitcherClassName = 'hidden sm:flex',\n onToolsClick,\n onOpenAppClick,\n primaryCta = null, // { href, label, onClick }\n}) => {\n const { t } = useTranslation();\n const isDark = variant === 'dark';\n const hasPrimaryCta = Boolean(primaryCta?.href && primaryCta?.label);\n const [mobileMenuOpen, setMobileMenuOpen] = useState(false);\n const mobileMenuPanelRef = useRef(null);\n const mobileMenuCloseRef = useRef(null);\n\n const closeMobileMenu = useCallback(() => setMobileMenuOpen(false), []);\n\n useModalA11y({\n isOpen: mobileMenuOpen,\n onClose: closeMobileMenu,\n panelRef: mobileMenuPanelRef,\n initialFocusRef: mobileMenuCloseRef,\n });\n\n const focusRing = isDark\n ? 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-400 focus-visible:ring-offset-2 focus-visible:ring-offset-slate-950 rounded-md'\n : 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-600 focus-visible:ring-offset-2 focus-visible:ring-offset-white rounded-md';\n const linkBase = isDark\n ? `text-sm text-slate-300 hover:text-white transition-colors ${focusRing}`\n : `text-sm text-slate-600 hover:text-slate-900 transition-colors ${focusRing}`;\n const linkActive = isDark ? 'text-white font-semibold' : 'text-slate-900 font-semibold';\n const linkClass = (id) => `${linkBase}${active === id ? ` ${linkActive}` : ''}`;\n\n const mobileMenuLinkBase = isDark\n ? `flex items-center justify-between px-3 py-2 rounded-lg border border-slate-800 bg-slate-950 text-sm text-slate-200 hover:bg-slate-900 transition ${focusRing}`\n : `flex items-center justify-between px-3 py-2 rounded-lg border border-slate-200 bg-white text-sm text-slate-800 hover:bg-slate-50 transition ${focusRing}`;\n const mobileMenuLinkActive = isDark ? 'border-blue-500 text-white' : 'border-blue-600 text-slate-900';\n const mobileMenuLinkClass = (id) => `${mobileMenuLinkBase}${active === id ? ` ${mobileMenuLinkActive}` : ''}`;\n\n const renderMobileMenu = () => {\n if (!mobileMenuOpen) return null;\n\n const menuBg = isDark ? 'bg-slate-900/70' : 'bg-slate-900/40';\n const panelBase = isDark ? 'bg-slate-950 border-slate-800 text-white' : 'bg-white border-slate-200 text-slate-800';\n const panelHeaderBorder = isDark ? 'border-slate-800' : 'border-slate-200';\n const closeButtonStyle = isDark\n ? `border-slate-800 text-slate-200 hover:bg-slate-900 ${focusRing}`\n : `border-slate-200 text-slate-600 hover:bg-slate-50 ${focusRing}`;\n\n const handleNav = (callback) => (event) => {\n callback?.(event);\n closeMobileMenu();\n };\n\n const menuLabel = t('common.menu', { defaultValue: 'Menu' });\n\n return (\n <div\n className={`fixed inset-0 z-[2200] ${menuBg} backdrop-blur-sm p-4 sm:hidden`}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={menuLabel}\n onMouseDown={(event) => {\n if (event.target === event.currentTarget) closeMobileMenu();\n }}\n >\n <div\n ref={mobileMenuPanelRef}\n id=\"shipscreens-mobile-menu\"\n className={`w-full max-w-sm ml-auto rounded-2xl shadow-2xl border overflow-hidden ${panelBase}`}\n >\n <div className={`flex items-center justify-between px-4 py-3 border-b ${panelHeaderBorder}`}>\n <div className=\"text-sm font-bold\">{menuLabel}</div>\n <button\n ref={mobileMenuCloseRef}\n type=\"button\"\n onClick={closeMobileMenu}\n className={`p-2 rounded-lg border transition ${closeButtonStyle}`}\n aria-label={t('common.close', { defaultValue: 'Close' })}\n title={t('common.close', { defaultValue: 'Close' })}\n >\n <X size={16} />\n </button>\n </div>\n\n <div className=\"p-4 space-y-3\">\n {showLanguageSwitcher && <LanguageSwitcher className=\"w-full justify-center\" />}\n\n <div className=\"space-y-2\">\n {showTools && (\n <a\n href={toolsHref}\n onClick={handleNav(onToolsClick)}\n className={mobileMenuLinkClass('tools')}\n aria-current={active === 'tools' ? 'page' : undefined}\n >\n <span>{t('landing.nav.tools')}</span>\n </a>\n )}\n\n {showOpenApp && (\n <a\n href={openAppHref}\n onClick={handleNav(onOpenAppClick)}\n className={mobileMenuLinkClass('app')}\n aria-current={active === 'app' ? 'page' : undefined}\n >\n <span>{t('landing.nav.openApp')}</span>\n </a>\n )}\n\n {showX && (\n <a\n href=\"https://x.com/shipscreenscom\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className={mobileMenuLinkBase}\n >\n <span>X</span>\n </a>\n )}\n </div>\n\n {primaryCta?.href && primaryCta?.label && (\n <a\n href={primaryCta.href}\n onClick={handleNav(primaryCta.onClick)}\n className={`w-full inline-flex items-center justify-center px-4 py-2 rounded-lg font-semibold transition ${\n isDark ? 'bg-white text-slate-900 hover:scale-[1.02]' : 'bg-slate-900 text-white hover:bg-slate-800'\n } ${focusRing}`}\n >\n {primaryCta.label}\n </a>\n )}\n </div>\n </div>\n </div>\n );\n };\n\n const headerContent = isDark ? (\n <header className=\"max-w-6xl mx-auto px-4 py-4 sm:px-6 sm:py-6 flex items-center justify-between gap-4\">\n <a href={logoHref} className={`flex items-center gap-3 hover:opacity-90 transition-opacity ${focusRing}`}>\n <div className=\"w-10 h-10 rounded-xl border border-slate-800 bg-slate-950 p-1 flex items-center justify-center overflow-hidden shadow-sm\">\n <img\n src=\"/app/assets/icons/favicon-32x32.png\"\n alt=\"ShipScreens\"\n className=\"w-full h-full object-contain\"\n loading=\"lazy\"\n />\n </div>\n <span className=\"text-lg font-bold\">ShipScreens</span>\n </a>\n\n <div className=\"flex items-center gap-2 sm:gap-3\">\n {showLanguageSwitcher && <LanguageSwitcher className={languageSwitcherClassName} />}\n {showX && <XLink className=\"hidden sm:inline text-slate-300 hover:text-white transition-colors\" />}\n\n {showTools && (\n <a\n href={toolsHref}\n onClick={onToolsClick}\n className={`hidden sm:inline ${linkClass('tools')}`}\n aria-current={active === 'tools' ? 'page' : undefined}\n >\n {t('landing.nav.tools')}\n </a>\n )}\n\n {showOpenApp && (\n <a\n href={openAppHref}\n onClick={onOpenAppClick}\n className={`${hasPrimaryCta ? 'hidden sm:inline ' : ''}${linkClass('app')}`}\n aria-current={active === 'app' ? 'page' : undefined}\n >\n {t('landing.nav.openApp')}\n </a>\n )}\n\n {hasPrimaryCta && (\n <a\n href={primaryCta.href}\n onClick={primaryCta.onClick}\n className={`px-3 py-1.5 sm:px-4 sm:py-2 text-sm whitespace-nowrap rounded-lg bg-white text-slate-900 font-semibold hover:scale-[1.02] transition ${focusRing}`}\n >\n {primaryCta.label}\n </a>\n )}\n\n <button\n type=\"button\"\n onClick={() => setMobileMenuOpen(true)}\n className={`sm:hidden p-2 rounded-lg border border-slate-800 bg-slate-950 text-slate-200 hover:bg-slate-900 transition ${focusRing}`}\n aria-label={t('common.menu', { defaultValue: 'Menu' })}\n aria-controls=\"shipscreens-mobile-menu\"\n aria-expanded={mobileMenuOpen}\n >\n <Menu size={18} />\n </button>\n </div>\n </header>\n ) : (\n <header className=\"border-b border-slate-200 bg-white\">\n <div className=\"max-w-4xl mx-auto px-4 py-4 flex items-center justify-between gap-4\">\n <a href={logoHref} className={`flex items-center gap-3 hover:opacity-90 transition-opacity ${focusRing}`}>\n <div className=\"w-9 h-9 rounded-xl border border-slate-200 bg-white p-1 flex items-center justify-center overflow-hidden shadow-sm\">\n <img\n src=\"/app/assets/icons/favicon-32x32.png\"\n alt=\"ShipScreens\"\n className=\"w-full h-full object-contain\"\n loading=\"lazy\"\n />\n </div>\n <span className=\"font-bold text-slate-900\">ShipScreens</span>\n </a>\n\n <div className=\"flex items-center gap-3\">\n {showLanguageSwitcher && <LanguageSwitcher className={languageSwitcherClassName} />}\n {showX && <XLink className=\"hidden sm:inline text-slate-500 hover:text-slate-900 transition-colors\" />}\n\n {showTools && (\n <a\n href={toolsHref}\n onClick={onToolsClick}\n className={`hidden sm:inline ${linkClass('tools')}`}\n aria-current={active === 'tools' ? 'page' : undefined}\n >\n {t('landing.nav.tools')}\n </a>\n )}\n\n {showOpenApp && (\n <a\n href={openAppHref}\n onClick={onOpenAppClick}\n className={linkClass('app')}\n aria-current={active === 'app' ? 'page' : undefined}\n >\n {t('landing.nav.openApp')}\n </a>\n )}\n\n {primaryCta?.href && primaryCta?.label && (\n <a\n href={primaryCta.href}\n onClick={primaryCta.onClick}\n className={`px-4 py-2 rounded-lg bg-slate-900 text-white font-semibold hover:bg-slate-800 transition ${focusRing}`}\n >\n {primaryCta.label}\n </a>\n )}\n\n <button\n type=\"button\"\n onClick={() => setMobileMenuOpen(true)}\n className={`sm:hidden p-2 rounded-lg border border-slate-200 bg-white text-slate-700 hover:bg-slate-50 transition ${focusRing}`}\n aria-label={t('common.menu', { defaultValue: 'Menu' })}\n aria-controls=\"shipscreens-mobile-menu\"\n aria-expanded={mobileMenuOpen}\n >\n <Menu size={18} />\n </button>\n </div>\n </div>\n </header>\n );\n\n return (\n <>\n {headerContent}\n {renderMobileMenu()}\n </>\n );\n};\n\nexport default SiteHeader;\n"],"names":["__iconNode","Menu","createLucideIcon","XLink","className","jsx","SiteHeader","variant","active","logoHref","toolsHref","openAppHref","showTools","showOpenApp","showX","showLanguageSwitcher","languageSwitcherClassName","onToolsClick","onOpenAppClick","primaryCta","t","useTranslation","isDark","hasPrimaryCta","mobileMenuOpen","setMobileMenuOpen","useState","mobileMenuPanelRef","useRef","mobileMenuCloseRef","closeMobileMenu","useCallback","useModalA11y","focusRing","linkBase","linkActive","linkClass","id","mobileMenuLinkBase","mobileMenuLinkActive","mobileMenuLinkClass","renderMobileMenu","menuBg","panelBase","panelHeaderBorder","closeButtonStyle","handleNav","callback","event","menuLabel","jsxs","X","LanguageSwitcher","headerContent","Fragment"],"mappings":"8HASA,MAAMA,EAAa,CACjB,CAAC,OAAQ,CAAE,EAAG,UAAW,IAAK,QAAQ,CAAE,EACxC,CAAC,OAAQ,CAAE,EAAG,WAAY,IAAK,QAAQ,CAAE,EACzC,CAAC,OAAQ,CAAE,EAAG,WAAY,IAAK,QAAQ,CAAE,CAC3C,EACMC,EAAOC,EAAiB,OAAQF,CAAU,ECR1CG,EAAQ,CAAC,CAAE,UAAAC,CAAA,IACfC,EAAAA,IAAC,IAAA,CACC,KAAK,+BACL,OAAO,SACP,IAAI,sBACJ,UAAW,0FAA0FD,CAAS,GAC9G,aAAW,sCAEX,eAAC,MAAA,CAAI,MAAM,KAAK,OAAO,KAAK,QAAQ,YAAY,KAAK,eAAe,cAAY,OAC9E,SAAAC,EAAAA,IAAC,OAAA,CAAK,EAAE,kFAAkF,CAAA,CAC5F,CAAA,CACF,EAGIC,EAAa,CAAC,CAClB,QAAAC,EAAU,OACV,OAAAC,EAAS,KACT,SAAAC,EAAW,IACX,UAAAC,EAAY,UACZ,YAAAC,EAAc,QACd,UAAAC,EAAY,GACZ,YAAAC,EAAc,GACd,MAAAC,EAAQ,GACR,qBAAAC,EAAuB,GACvB,0BAAAC,EAA4B,iBAC5B,aAAAC,EACA,eAAAC,EACA,WAAAC,EAAa,IACf,IAAM,CACJ,KAAM,CAAE,EAAAC,CAAA,EAAMC,EAAA,EACRC,EAASf,IAAY,OACrBgB,EAAgB,GAAQJ,GAAY,MAAQA,GAAY,OACxD,CAACK,EAAgBC,CAAiB,EAAIC,EAAAA,SAAS,EAAK,EACpDC,EAAqBC,EAAAA,OAAO,IAAI,EAChCC,EAAqBD,EAAAA,OAAO,IAAI,EAEhCE,EAAkBC,EAAAA,YAAY,IAAMN,EAAkB,EAAK,EAAG,CAAA,CAAE,EAEtEO,EAAa,CACX,OAAQR,EACR,QAASM,EACT,SAAUH,EACV,gBAAiBE,CAAA,CAClB,EAED,MAAMI,EAAYX,EACd,yJACA,qJACEY,EAAWZ,EACb,6DAA6DW,CAAS,GACtE,iEAAiEA,CAAS,GACxEE,EAAab,EAAS,2BAA6B,+BACnDc,EAAaC,GAAO,GAAGH,CAAQ,GAAG1B,IAAW6B,EAAK,IAAIF,CAAU,GAAK,EAAE,GAEvEG,EAAqBhB,EACvB,oJAAoJW,CAAS,GAC7J,+IAA+IA,CAAS,GACtJM,EAAuBjB,EAAS,6BAA+B,iCAC/DkB,EAAuBH,GAAO,GAAGC,CAAkB,GAAG9B,IAAW6B,EAAK,IAAIE,CAAoB,GAAK,EAAE,GAErGE,EAAmB,IAAM,CAC7B,GAAI,CAACjB,EAAgB,OAAO,KAE5B,MAAMkB,EAASpB,EAAS,kBAAoB,kBACtCqB,EAAYrB,EAAS,2CAA6C,2CAClEsB,EAAoBtB,EAAS,mBAAqB,mBAClDuB,EAAmBvB,EACrB,sDAAsDW,CAAS,GAC/D,qDAAqDA,CAAS,GAE5Da,EAAaC,GAAcC,GAAU,CACzCD,IAAWC,CAAK,EAChBlB,EAAA,CACF,EAEMmB,EAAY7B,EAAE,cAAe,CAAE,aAAc,OAAQ,EAE3D,OACEf,EAAAA,IAAC,MAAA,CACC,UAAW,0BAA0BqC,CAAM,kCAC3C,KAAK,SACL,aAAW,OACX,aAAYO,EACZ,YAAcD,GAAU,CAClBA,EAAM,SAAWA,EAAM,eAAelB,EAAA,CAC5C,EAEA,SAAAoB,EAAAA,KAAC,MAAA,CACC,IAAKvB,EACL,GAAG,0BACH,UAAW,yEAAyEgB,CAAS,GAE7F,SAAA,CAAAO,EAAAA,KAAC,MAAA,CAAI,UAAW,wDAAwDN,CAAiB,GACvF,SAAA,CAAAvC,EAAAA,IAAC,MAAA,CAAI,UAAU,oBAAqB,SAAA4C,EAAU,EAC9C5C,EAAAA,IAAC,SAAA,CACC,IAAKwB,EACL,KAAK,SACL,QAASC,EACT,UAAW,oCAAoCe,CAAgB,GAC/D,aAAYzB,EAAE,eAAgB,CAAE,aAAc,QAAS,EACvD,MAAOA,EAAE,eAAgB,CAAE,aAAc,QAAS,EAElD,SAAAf,EAAAA,IAAC8C,EAAA,CAAE,KAAM,EAAA,CAAI,CAAA,CAAA,CACf,EACF,EAEAD,EAAAA,KAAC,MAAA,CAAI,UAAU,gBACZ,SAAA,CAAAnC,GAAwBV,EAAAA,IAAC+C,EAAA,CAAiB,UAAU,uBAAA,CAAwB,EAE7EF,EAAAA,KAAC,MAAA,CAAI,UAAU,YACZ,SAAA,CAAAtC,GACCP,EAAAA,IAAC,IAAA,CACC,KAAMK,EACN,QAASoC,EAAU7B,CAAY,EAC/B,UAAWuB,EAAoB,OAAO,EACtC,eAAchC,IAAW,QAAU,OAAS,OAE5C,SAAAH,EAAAA,IAAC,OAAA,CAAM,SAAAe,EAAE,mBAAmB,CAAA,CAAE,CAAA,CAAA,EAIjCP,GACCR,EAAAA,IAAC,IAAA,CACC,KAAMM,EACN,QAASmC,EAAU5B,CAAc,EACjC,UAAWsB,EAAoB,KAAK,EACpC,eAAchC,IAAW,MAAQ,OAAS,OAE1C,SAAAH,EAAAA,IAAC,OAAA,CAAM,SAAAe,EAAE,qBAAqB,CAAA,CAAE,CAAA,CAAA,EAInCN,GACCT,EAAAA,IAAC,IAAA,CACC,KAAK,+BACL,OAAO,SACP,IAAI,sBACJ,UAAWiC,EAEX,SAAAjC,EAAAA,IAAC,QAAK,SAAA,GAAA,CAAC,CAAA,CAAA,CACT,EAEJ,EAECc,GAAY,MAAQA,GAAY,OAC/Bd,EAAAA,IAAC,IAAA,CACC,KAAMc,EAAW,KACjB,QAAS2B,EAAU3B,EAAW,OAAO,EACrC,UAAW,gGACTG,EAAS,6CAA+C,4CAC1D,IAAIW,CAAS,GAEZ,SAAAd,EAAW,KAAA,CAAA,CACd,CAAA,CAEJ,CAAA,CAAA,CAAA,CACF,CAAA,CAGN,EAEMkC,EAAgB/B,EACpB4B,EAAAA,KAAC,SAAA,CAAO,UAAU,sFAChB,SAAA,CAAAA,OAAC,KAAE,KAAMzC,EAAU,UAAW,+DAA+DwB,CAAS,GACpG,SAAA,CAAA5B,EAAAA,IAAC,MAAA,CAAI,UAAU,2HACb,SAAAA,EAAAA,IAAC,MAAA,CACC,IAAI,sCACJ,IAAI,cACJ,UAAU,+BACV,QAAQ,MAAA,CAAA,EAEZ,EACAA,EAAAA,IAAC,OAAA,CAAK,UAAU,oBAAoB,SAAA,aAAA,CAAW,CAAA,EACjD,EAEA6C,EAAAA,KAAC,MAAA,CAAI,UAAU,mCACZ,SAAA,CAAAnC,GAAwBV,EAAAA,IAAC+C,EAAA,CAAiB,UAAWpC,CAAA,CAA2B,EAChFF,GAAST,EAAAA,IAACF,EAAA,CAAM,UAAU,oEAAA,CAAqE,EAE/FS,GACCP,EAAAA,IAAC,IAAA,CACC,KAAMK,EACN,QAASO,EACT,UAAW,oBAAoBmB,EAAU,OAAO,CAAC,GACjD,eAAc5B,IAAW,QAAU,OAAS,OAE3C,WAAE,mBAAmB,CAAA,CAAA,EAIzBK,GACCR,EAAAA,IAAC,IAAA,CACC,KAAMM,EACN,QAASO,EACT,UAAW,GAAGK,EAAgB,oBAAsB,EAAE,GAAGa,EAAU,KAAK,CAAC,GACzE,eAAc5B,IAAW,MAAQ,OAAS,OAEzC,WAAE,qBAAqB,CAAA,CAAA,EAI3Be,GACClB,EAAAA,IAAC,IAAA,CACC,KAAMc,EAAW,KACjB,QAASA,EAAW,QACpB,UAAW,wIAAwIc,CAAS,GAE3J,SAAAd,EAAW,KAAA,CAAA,EAIhBd,EAAAA,IAAC,SAAA,CACC,KAAK,SACL,QAAS,IAAMoB,EAAkB,EAAI,EACrC,UAAW,8GAA8GQ,CAAS,GAClI,aAAYb,EAAE,cAAe,CAAE,aAAc,OAAQ,EACrD,gBAAc,0BACd,gBAAeI,EAEf,SAAAnB,EAAAA,IAACJ,EAAA,CAAK,KAAM,EAAA,CAAI,CAAA,CAAA,CAClB,CAAA,CACF,CAAA,CAAA,CACF,QAEC,SAAA,CAAO,UAAU,qCAChB,SAAAiD,EAAAA,KAAC,MAAA,CAAI,UAAU,sEACb,SAAA,CAAAA,OAAC,KAAE,KAAMzC,EAAU,UAAW,+DAA+DwB,CAAS,GACpG,SAAA,CAAA5B,EAAAA,IAAC,MAAA,CAAI,UAAU,qHACb,SAAAA,EAAAA,IAAC,MAAA,CACC,IAAI,sCACJ,IAAI,cACJ,UAAU,+BACV,QAAQ,MAAA,CAAA,EAEZ,EACAA,EAAAA,IAAC,OAAA,CAAK,UAAU,2BAA2B,SAAA,aAAA,CAAW,CAAA,EACxD,EAEA6C,EAAAA,KAAC,MAAA,CAAI,UAAU,0BACZ,SAAA,CAAAnC,GAAwBV,EAAAA,IAAC+C,EAAA,CAAiB,UAAWpC,CAAA,CAA2B,EAChFF,GAAST,EAAAA,IAACF,EAAA,CAAM,UAAU,wEAAA,CAAyE,EAEnGS,GACCP,EAAAA,IAAC,IAAA,CACC,KAAMK,EACN,QAASO,EACT,UAAW,oBAAoBmB,EAAU,OAAO,CAAC,GACjD,eAAc5B,IAAW,QAAU,OAAS,OAE3C,WAAE,mBAAmB,CAAA,CAAA,EAIzBK,GACCR,EAAAA,IAAC,IAAA,CACC,KAAMM,EACN,QAASO,EACT,UAAWkB,EAAU,KAAK,EAC1B,eAAc5B,IAAW,MAAQ,OAAS,OAEzC,WAAE,qBAAqB,CAAA,CAAA,EAI7BW,GAAY,MAAQA,GAAY,OAC/Bd,EAAAA,IAAC,IAAA,CACC,KAAMc,EAAW,KACjB,QAASA,EAAW,QACpB,UAAW,4FAA4Fc,CAAS,GAE/G,SAAAd,EAAW,KAAA,CAAA,EAIdd,EAAAA,IAAC,SAAA,CACC,KAAK,SACL,QAAS,IAAMoB,EAAkB,EAAI,EACrC,UAAW,yGAAyGQ,CAAS,GAC7H,aAAYb,EAAE,cAAe,CAAE,aAAc,OAAQ,EACrD,gBAAc,0BACd,gBAAeI,EAEf,SAAAnB,EAAAA,IAACJ,EAAA,CAAK,KAAM,EAAA,CAAI,CAAA,CAAA,CACpB,CAAA,CACF,CAAA,CAAA,CACF,CAAA,CACF,EAGA,OACEiD,EAAAA,KAAAI,WAAA,CACG,SAAA,CAAAD,EACAZ,EAAA,CAAiB,EACpB,CAEJ","x_google_ignoreList":[0]}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{j as e}from"./index-Bqv2NztY.js";const a=({primary:l,secondary:t,note:s})=>!l?.label||!l?.href?null:e.jsx("div",{className:"fixed inset-x-4 bottom-4 z-[1200] sm:hidden",style:{paddingBottom:"env(safe-area-inset-bottom)"},children:e.jsxs("div",{className:"rounded-2xl border border-slate-700 bg-slate-950/95 backdrop-blur p-3 shadow-xl shadow-slate-900/40",children:[s&&e.jsx("div",{className:"text-[10px] text-slate-400 mb-2",children:s}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx("a",{href:l.href,onClick:l.onClick,className:"flex-1 inline-flex items-center justify-center gap-2 px-4 py-2 rounded-xl bg-blue-500 text-white text-sm font-semibold hover:bg-blue-600 transition",children:l.label}),t?.label&&t?.href&&e.jsx("a",{href:t.href,onClick:t.onClick,className:"flex-1 inline-flex items-center justify-center gap-2 px-4 py-2 rounded-xl border border-slate-700 bg-slate-950 text-slate-200 text-sm font-semibold hover:bg-slate-900 transition",children:t.label})]})]})});export{a as S};
|
|
2
|
-
//# sourceMappingURL=StickyMobileCta-C_x2pUIF.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"StickyMobileCta-C_x2pUIF.js","sources":["../../src/components/StickyMobileCta.jsx"],"sourcesContent":["import React from 'react';\n\nconst StickyMobileCta = ({ primary, secondary, note }) => {\n if (!primary?.label || !primary?.href) return null;\n\n return (\n <div\n className=\"fixed inset-x-4 bottom-4 z-[1200] sm:hidden\"\n style={{ paddingBottom: 'env(safe-area-inset-bottom)' }}\n >\n <div className=\"rounded-2xl border border-slate-700 bg-slate-950/95 backdrop-blur p-3 shadow-xl shadow-slate-900/40\">\n {note && <div className=\"text-[10px] text-slate-400 mb-2\">{note}</div>}\n <div className=\"flex gap-2\">\n <a\n href={primary.href}\n onClick={primary.onClick}\n className=\"flex-1 inline-flex items-center justify-center gap-2 px-4 py-2 rounded-xl bg-blue-500 text-white text-sm font-semibold hover:bg-blue-600 transition\"\n >\n {primary.label}\n </a>\n {secondary?.label && secondary?.href && (\n <a\n href={secondary.href}\n onClick={secondary.onClick}\n className=\"flex-1 inline-flex items-center justify-center gap-2 px-4 py-2 rounded-xl border border-slate-700 bg-slate-950 text-slate-200 text-sm font-semibold hover:bg-slate-900 transition\"\n >\n {secondary.label}\n </a>\n )}\n </div>\n </div>\n </div>\n );\n};\n\nexport default StickyMobileCta;\n"],"names":["StickyMobileCta","primary","secondary","note","jsx","jsxs"],"mappings":"wCAEA,MAAMA,EAAkB,CAAC,CAAE,QAAAC,EAAS,UAAAC,EAAW,KAAAC,KACzC,CAACF,GAAS,OAAS,CAACA,GAAS,KAAa,KAG5CG,EAAAA,IAAC,MAAA,CACC,UAAU,8CACV,MAAO,CAAE,cAAe,6BAAA,EAExB,SAAAC,EAAAA,KAAC,MAAA,CAAI,UAAU,sGACZ,SAAA,CAAAF,GAAQC,EAAAA,IAAC,MAAA,CAAI,UAAU,kCAAmC,SAAAD,EAAK,EAChEE,EAAAA,KAAC,MAAA,CAAI,UAAU,aACb,SAAA,CAAAD,EAAAA,IAAC,IAAA,CACC,KAAMH,EAAQ,KACd,QAASA,EAAQ,QACjB,UAAU,sJAET,SAAAA,EAAQ,KAAA,CAAA,EAEVC,GAAW,OAASA,GAAW,MAC9BE,EAAAA,IAAC,IAAA,CACC,KAAMF,EAAU,KAChB,QAASA,EAAU,QACnB,UAAU,oLAET,SAAAA,EAAU,KAAA,CAAA,CACb,CAAA,CAEJ,CAAA,CAAA,CACF,CAAA,CAAA"}
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import{u as L,r as A,t as o,j as e,b as a}from"./index-Bqv2NztY.js";import{A as r,a as h}from"./CopyButton-CmVmSaYn.js";import{C as I}from"./CliPreflightCard-D7utpFux.js";import{c as U,a as z,S as B}from"./LanguageSwitcher-BD9N-dla.js";import{S as H}from"./StickyMobileCta-C_x2pUIF.js";import{S as O}from"./SiteHeader-DxsqNPnt.js";import{G as u}from"./grid-3x3-AKmIrhzv.js";import{C as f}from"./crop-DOMVp18h.js";import{C as b}from"./copy-AQdWJCcs.js";import{C as E}from"./chevron-down-_xIkRLaA.js";const R=[["rect",{width:"16",height:"20",x:"4",y:"2",rx:"2",ry:"2",key:"76otgf"}],["line",{x1:"12",x2:"12.01",y1:"18",y2:"18",key:"1dp563"}]],y=U("tablet",R),V=i=>(i||"").split("-")[0]==="ja"?"ja":"en",g={en:{badge:"Store assets pipeline kit",title:"Store Assets Pipeline Kit",subtitle:"Capture → copy → layout → export. Replace manual Figma/Canva edits and brittle AI drafts before App Store / Google Play uploads, and sanity-check App Review / ASO constraints.",heroCliTitle:"CLI quickstart (2 steps)",heroCliNote:"wizard → build (raw mode, no Playwright).",heroCliSummary:"Outputs: fastlane/ + reproducible ZIP (local/CI).",heroCliCopyLabel:"Copy all commands",heroCliTemplatesLabel:"Starter templates",heroCliConfigLabel:"config.yml",heroCliCsvLabel:"copy.csv",heroCliCmd:["npx --yes shipscreens wizard","npx --yes shipscreens build --mode raw --zip --out out/agent"].join(`
|
|
2
|
-
`),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 build with --require-pro.",navTools:"Tools",overviewTitle:"Pipeline overview",overviewSteps:["Capture","Copy","Layout","Export","Upload (ASC/Play)"],checklistTitle:"Checklists",checklists:[{key:"ipad13",icon:y,title:"iPad 13-inch capture",body:"Get the right source before you generate.",bullets:["Use a real device shot when possible (13-inch / 2064x2752).","If you use Simulator, export at native size (no scaling).","Keep UI clean; avoid overlays that won’t match store previews."]},{key:"buckets",icon:u,title:"Size bucket shortcuts",body:"Start minimal, expand later.",bullets:["iPhone-only: pick the largest iPhone bucket first.","Add iPad 13-inch only if you ship iPad-first.","Android: one phone bucket; add tablet only if needed."]},{key:"play-safe",icon:f,title:"Play feature graphic safe area",body:"Avoid hidden crops in Play previews.",bullets:["Keep text/logos inside the central 80-86% area.","Avoid edge-aligned UI; Play crops in some previews.","Preview in Play Console before you finalize."]}],note:"Translation happens outside ShipScreens; we focus on reproducible exports, Fastlane-ready outputs, and CI guardrails (verify + stage).",scopeNote:"Upload is handled in App Store Connect / Play Console.",assetsTitle:"Templates & tools",assetsCta:"Open tool",assets:[{key:"csv",title:"Screenshot copy CSV template",desc:"Download a copy template and estimate workload.",href:"/tools/screenshot-workload-calculator/"},{key:"framework",title:"5-panel screenshot script",desc:"Hook -> Problem -> Proof -> How -> CTA.",href:"/tools/5-panel-screenshot-framework/"}],nextTitle:"Next: start from a sample project",nextBody:"Open a sample project, swap screenshots + copy, then export the first set.",nextCtaSample:"Open sample project",ctaPrimary:"Run CLI first export",ctaSecondary:"Back to tools"},ja:{badge:"ストア素材パイプラインキット",title:"ストア素材パイプラインキット",subtitle:"Capture → Copy → Layout → Export。Figma/Canvaの手作業やAI下書きの不安定さをアップロード前に整え、App Review/ASO の制約もチェック。",heroCliTitle:"CLIクイックスタート(2ステップ)",heroCliNote:"wizard → build(raw / Playwright不要)。",heroCliSummary:"出力: fastlane/ + 再現性ZIP(ローカル/CI)。",heroCliCopyLabel:"コマンドをすべてコピー",heroCliTemplatesLabel:"スターター雛形",heroCliConfigLabel:"config.yml",heroCliCsvLabel:"copy.csv",heroCliCmd:["npx --yes shipscreens wizard","npx --yes shipscreens build --mode raw --zip --out out/agent"].join(`
|
|
3
|
-
`),proUnlockTitle:"Proを解除(CLI)",proUnlockBody:"透かし解除&フル一括(端末×言語)のために、まずはCLI認証を実行:",proUnlockCmd:"npx --yes shipscreens auth login",proUnlockNote:"初回のみブラウザでサインインします。以後は --require-pro で再実行。",navTools:"ツール一覧",overviewTitle:"パイプライン概要",overviewSteps:["素材取り","コピー","レイアウト","出力","アップロード (ASC/Play)"],checklistTitle:"チェックリスト",checklists:[{key:"ipad13",icon:y,title:"iPad 13-inch 実スクショ",body:"生成前の素材を揃える。",bullets:["実機があれば 13-inch / 2064x2752 の実スクショを用意。","Simulator を使う場合は native サイズで書き出す。","ストア表示とズレるUIオーバーレイは避ける。"]},{key:"buckets",icon:u,title:"サイズバケット削減",body:"最小セットでまず出す。",bullets:["iPhone-only は最大サイズ1バケットから。","iPad は13-inchが必要な場合のみ追加。","Android はスマホ1バケット、必要ならタブレット。"]},{key:"play-safe",icon:f,title:"Play feature graphic 安全域",body:"隠れクロップを避ける。",bullets:["文字/ロゴは中央 80-86% に収める。","端に寄せすぎない(プレビューで切れる)。","Play Console のプレビューで最終確認。"]}],note:"翻訳は外部でOK。ShipScreensはレイアウトの安定・再現性のある出力・Fastlane公式パスへの生成(CI)と、verify+stage の事故防止を担います。",scopeNote:"アップロードは App Store Connect / Play Console 側で行います。",assetsTitle:"テンプレ/ツール",assetsCta:"ツールを開く",assets:[{key:"csv",title:"コピーCSVテンプレ + 作業量見積もり",desc:"CSV雛形と端末x言語の計算。",href:"/tools/screenshot-workload-calculator/"},{key:"framework",title:"5枚構成スクリプト",desc:"Hook -> Problem -> Proof -> How -> CTA。",href:"/tools/5-panel-screenshot-framework/"}],nextTitle:"次: サンプルから開始",nextBody:"サンプルを開いて、スクショ差し替え → CSV copy → Export まで最短で。",nextCtaSample:"サンプルを開く",ctaPrimary:"CLIで初回エクスポート",ctaSecondary:"ツール一覧へ"}},Q=()=>{const{i18n:i,t:l}=L(),C=V(i.resolvedLanguage||i.language),s=g[C]||g.en,n="support@shimaumaservices.co.jp",_=l("landing.partner.emailSubject",{defaultValue:"ShipScreens first export review"}),j=l("landing.partner.emailBody",{defaultValue:""}),k=`mailto:${n}?subject=${encodeURIComponent(_)}&body=${encodeURIComponent(j)}`,v="/app/?sample=5panel&entry_source=store_assets_pipeline_open_app_header",d="/tools/agent-cli/",w="/tools/first-export/?entry_source=store_assets_pipeline_primary_cta",p="/app/?sample=5panel&entry_source=store_assets_pipeline_open_sample_project",N="/downloads/shipscreens-agent-cli-config.yml",S="/downloads/shipscreens-agent-cli-copy.csv",x=l("common.copy",{defaultValue:"Copy"}),P=l("common.showCommands",{defaultValue:"Show commands"}),T=typeof window>"u"?!0:window.matchMedia("(min-width: 640px)").matches;return z("titles.storeAssetsPipeline",{defaultValue:s.title}),A.useEffect(()=>{o("tool_view",{tool:"store_assets_pipeline"})},[]),e.jsxs("div",{className:"min-h-screen bg-gradient-to-b from-slate-950 via-slate-900 to-slate-950 text-white",children:[e.jsx(B,{}),e.jsx(O,{variant:"dark",active:"tools",openAppHref:v,onToolsClick:t=>a(t,"tool_cta_click",{tool:"store_assets_pipeline",cta:"open_tools_header"}),onPricingClick:t=>a(t,"tool_cta_click",{tool:"store_assets_pipeline",cta:"pricing_header"}),onOpenAppClick:t=>a(t,"tool_cta_click",{tool:"store_assets_pipeline",cta:"open_app_header"}),primaryCta:{href:w,label:e.jsxs("span",{className:"inline-flex items-center gap-2",children:[l("landing.nav.primaryCta")," ",e.jsx(r,{size:16})]}),onClick:t=>a(t,"tool_cta_click",{tool:"store_assets_pipeline",cta:"open_first_export_header"})}}),e.jsxs("main",{className:"max-w-5xl mx-auto px-6 pb-24 space-y-10",children:[e.jsxs("section",{className:"max-w-3xl mx-auto text-center space-y-4",children:[e.jsx("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:s.badge}),e.jsx("h1",{className:"text-3xl md:text-5xl font-black leading-tight",children:s.title}),e.jsx("p",{className:"text-slate-300 text-lg leading-relaxed",children:s.subtitle}),e.jsxs("a",{href:"#design-partner",onClick:()=>o("tool_cta_click",{tool:"store_assets_pipeline",cta:"jump_design_partner"}),className:"inline-flex items-center gap-1 text-sm text-blue-200 hover:text-blue-100 underline underline-offset-4",children:[l("landing.partner.jumpCta",{defaultValue:l("landing.partner.emailCta")})," ",e.jsx(r,{size:14})]}),e.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:[e.jsx("div",{className:"text-[11px] uppercase tracking-[0.2em] text-slate-500 font-semibold",children:s.heroCliTitle}),e.jsx("p",{className:"text-xs text-slate-400",children:s.heroCliNote}),e.jsx("p",{className:"text-xs text-slate-500",children:s.heroCliSummary}),e.jsx(h,{value:s.heroCliCmd,onCopied:()=>o("tool_cta_click",{tool:"store_assets_pipeline",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:t,copyState:c})=>e.jsxs(e.Fragment,{children:[e.jsx(b,{size:14}),c==="idle"?s.heroCliCopyLabel:t||x]})}),e.jsxs("details",{className:"group",open:T,children:[e.jsxs("summary",{className:"flex items-center justify-between text-[11px] font-semibold text-slate-400 cursor-pointer list-none",children:[e.jsx("span",{children:P}),e.jsx(E,{size:14,className:"text-slate-500 transition-transform duration-200 group-open:rotate-180"})]}),e.jsx("div",{className:"mt-2 rounded-xl border border-slate-800 bg-slate-950 p-3",children:e.jsx("pre",{className:"text-xs text-slate-200 whitespace-pre-wrap",children:s.heroCliCmd})})]}),e.jsxs("div",{className:"pt-1 space-y-2",children:[e.jsx("div",{className:"text-[10px] uppercase tracking-[0.2em] text-slate-500 font-semibold",children:s.heroCliTemplatesLabel}),e.jsxs("div",{className:"flex flex-wrap gap-2",children:[e.jsx("a",{href:N,download:!0,onClick:()=>o("tool_download",{tool:"store_assets_pipeline",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:s.heroCliConfigLabel}),e.jsx("a",{href:S,download:!0,onClick:()=>o("tool_download",{tool:"store_assets_pipeline",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:s.heroCliCsvLabel})]})]})]}),e.jsx(I,{compact:!0,href:"/tools/agent-cli/#preflight",onClick:t=>a(t,"tool_cta_click",{tool:"store_assets_pipeline",cta:"open_cli_preflight"}),className:"max-w-xl mx-auto"}),e.jsx("section",{className:"max-w-xl mx-auto",children:e.jsxs("div",{className:"bg-slate-900/60 border border-slate-800 rounded-2xl p-5 space-y-3",children:[e.jsxs("div",{className:"flex items-center justify-between gap-3",children:[e.jsx("div",{className:"text-sm font-bold text-white",children:s.proUnlockTitle}),e.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"})]}),s.proUnlockBody&&e.jsx("p",{className:"text-sm text-slate-300",children:s.proUnlockBody}),e.jsx("div",{className:"rounded-xl border border-slate-800 bg-slate-950/80 p-4",children:e.jsx("pre",{className:"text-xs text-slate-200 whitespace-pre-wrap",children:s.proUnlockCmd})}),e.jsx(h,{value:s.proUnlockCmd,onCopied:()=>o("tool_cta_click",{tool:"store_assets_pipeline",cta:"copy_cli_pro_unlock"}),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:t})=>e.jsxs(e.Fragment,{children:[e.jsx(b,{size:14}),t||x]})}),s.proUnlockNote&&e.jsx("div",{className:"text-xs text-slate-500",children:s.proUnlockNote})]})})]}),e.jsxs("section",{className:"space-y-4",children:[e.jsx("h2",{className:"text-lg font-bold text-white text-center",children:s.overviewTitle}),e.jsx("div",{className:"flex flex-wrap justify-center gap-2 text-sm text-slate-300",children:s.overviewSteps.map(t=>e.jsx("span",{className:"px-3 py-1 rounded-full border border-slate-800 bg-slate-900/70",children:t},t))})]}),e.jsxs("section",{className:"space-y-4",children:[e.jsx("h2",{className:"text-lg font-bold text-white text-center",children:s.checklistTitle}),e.jsx("div",{className:"grid md:grid-cols-3 gap-6",children:s.checklists.map(t=>{const c=t.icon;return e.jsxs("div",{className:"bg-slate-900/60 border border-slate-800 rounded-2xl p-6 space-y-4",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"w-10 h-10 rounded-xl border border-slate-800 bg-slate-950 flex items-center justify-center",children:e.jsx(c,{size:18,className:"text-slate-200"})}),e.jsx("div",{className:"text-lg font-bold text-white",children:t.title})]}),e.jsx("p",{className:"text-sm text-slate-300 leading-relaxed",children:t.body}),e.jsx("ul",{className:"text-xs text-slate-400 list-disc pl-4 space-y-1",children:t.bullets.map(m=>e.jsx("li",{children:m},m))})]},t.key)})}),e.jsxs("div",{className:"text-xs text-slate-500 text-center space-y-1",children:[e.jsx("p",{children:s.note}),e.jsx("p",{children:s.scopeNote})]})]}),e.jsxs("section",{className:"space-y-4",children:[e.jsx("h2",{className:"text-lg font-bold text-white text-center",children:s.assetsTitle}),e.jsx("div",{className:"grid md:grid-cols-2 gap-6",children:s.assets.map(t=>e.jsxs("a",{href:t.href,onClick:()=>o("tool_cta_click",{tool:"store_assets_pipeline",cta:`open_${t.key}`}),className:"bg-slate-900/60 border border-slate-800 rounded-2xl p-6 space-y-3 hover:border-slate-700 transition",children:[e.jsx("div",{className:"text-lg font-bold text-white",children:t.title}),e.jsx("div",{className:"text-sm text-slate-300",children:t.desc}),e.jsxs("div",{className:"text-xs text-blue-200 flex items-center gap-2",children:[s.assetsCta," ",e.jsx(r,{size:14})]})]},t.key))})]}),e.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:[e.jsxs("div",{className:"space-y-1",children:[e.jsx("div",{className:"text-sm font-bold text-white",children:s.nextTitle}),e.jsx("div",{className:"text-sm text-slate-300",children:s.nextBody})]}),e.jsxs("div",{className:"flex flex-col sm:flex-row gap-3 w-full md:w-auto",children:[e.jsxs("a",{href:d,onClick:t=>a(t,"tool_cta_click",{tool:"store_assets_pipeline",cta:"open_agent_cli_body"}),className:"inline-flex items-center justify-center gap-2 px-5 py-3 rounded-xl bg-white text-slate-900 font-bold hover:scale-[1.02] transition w-full md:w-auto",children:[s.ctaPrimary," ",e.jsx(r,{size:16})]}),e.jsxs("a",{href:p,onClick:t=>a(t,"tool_cta_click",{tool:"store_assets_pipeline",cta:"open_sample_project_footer"}),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",children:[s.nextCtaSample," ",e.jsx(r,{size:16})]})]})]}),e.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:[e.jsx("div",{className:"text-lg font-bold text-white",children:l("landing.partner.title")}),e.jsx("div",{className:"text-sm text-slate-300 leading-relaxed",children:l("landing.partner.body")}),e.jsxs("div",{className:"flex flex-col sm:flex-row gap-3",children:[e.jsxs("a",{href:k,onClick:t=>a(t,"tool_cta_click",{tool:"store_assets_pipeline",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:[l("landing.partner.emailCta")," ",e.jsx(r,{size:16})]}),e.jsx("a",{href:"https://x.com/shipscreenscom",target:"_blank",rel:"noopener noreferrer",onClick:()=>o("tool_cta_click",{tool:"store_assets_pipeline",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:l("landing.partner.dmCta")})]}),e.jsxs("div",{className:"text-xs text-slate-500",children:[l("landing.partner.emailLabel")," ",e.jsx("a",{href:`mailto:${n}`,className:"underline underline-offset-4 hover:text-white",children:n})]})]}),e.jsx("section",{className:"max-w-3xl mx-auto text-center space-y-4 pt-2",children:e.jsx("a",{href:"/tools/",onClick:()=>o("tool_cta_click",{tool:"store_assets_pipeline",cta:"back_to_tools"}),className:"text-xs text-slate-500 hover:text-slate-300 transition-colors underline underline-offset-4",children:s.ctaSecondary})})]}),e.jsx(H,{primary:{label:s.ctaPrimary,href:d,onClick:t=>a(t,"tool_cta_click",{tool:"store_assets_pipeline",cta:"sticky_primary"})},secondary:{label:s.nextCtaSample,href:p,onClick:t=>a(t,"tool_cta_click",{tool:"store_assets_pipeline",cta:"sticky_secondary"})}})]})};export{Q as default};
|
|
4
|
-
//# sourceMappingURL=StoreAssetsPipeline-4hXRONUd.js.map
|