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.
Files changed (328) hide show
  1. package/README.md +49 -0
  2. package/bin/shipscreens.js +15 -1
  3. package/cli/commands/build.js +19 -4
  4. package/cli/mcpServer.js +573 -0
  5. package/dist/.well-known/ai-agents.json +88 -0
  6. package/dist/.well-known/llms-full.txt +150 -0
  7. package/dist/.well-known/llms.txt +57 -0
  8. package/dist/.well-known/mcp-server.json +40 -0
  9. package/dist/ai-agents.json +88 -0
  10. package/dist/app/assets/AgentCli-DNTDYBbk.js +17 -0
  11. package/dist/app/assets/AgentCli-DNTDYBbk.js.map +1 -0
  12. package/dist/app/assets/App-BwQ1zI7a.css +1 -0
  13. package/dist/app/assets/App-DPi9LW-y.js +13 -0
  14. package/dist/app/assets/App-DPi9LW-y.js.map +1 -0
  15. package/dist/app/assets/AppReviewAso-BUTGLatx.js +4 -0
  16. package/dist/app/assets/AppReviewAso-BUTGLatx.js.map +1 -0
  17. package/dist/app/assets/{Cancelled-66ixTUrm.js → Cancelled-BeS-WlPj.js} +2 -2
  18. package/dist/app/assets/{Cancelled-66ixTUrm.js.map → Cancelled-BeS-WlPj.js.map} +1 -1
  19. package/dist/app/assets/CopyButton-BZQEBHBq.js +2 -0
  20. package/dist/app/assets/CopyButton-BZQEBHBq.js.map +1 -0
  21. package/dist/app/assets/FastlaneScreenshots-Dn7jfpuz.js +52 -0
  22. package/dist/app/assets/FastlaneScreenshots-Dn7jfpuz.js.map +1 -0
  23. package/dist/app/assets/FirstExport-CzioMqbJ.js +6 -0
  24. package/dist/app/assets/FirstExport-CzioMqbJ.js.map +1 -0
  25. package/dist/app/assets/FitPanel-DzYzTMEi.js +2 -0
  26. package/dist/app/assets/FitPanel-DzYzTMEi.js.map +1 -0
  27. package/dist/app/assets/FivePanelFramework-Bt5-NjCV.js +62 -0
  28. package/dist/app/assets/FivePanelFramework-Bt5-NjCV.js.map +1 -0
  29. package/dist/{assets/ForgotPassword-B9_si1tH.js → app/assets/ForgotPassword-DuHNHuUe.js} +2 -2
  30. package/dist/app/assets/{ForgotPassword-B9_si1tH.js.map → ForgotPassword-DuHNHuUe.js.map} +1 -1
  31. package/dist/app/assets/Landing-DB9pTPoT.js +2 -0
  32. package/dist/app/assets/Landing-DB9pTPoT.js.map +1 -0
  33. package/dist/app/assets/{LanguageSwitcher-BD9N-dla.js → LanguageSwitcher-CfUhVVuT.js} +2 -2
  34. package/dist/{assets/LanguageSwitcher-BD9N-dla.js.map → app/assets/LanguageSwitcher-CfUhVVuT.js.map} +1 -1
  35. package/dist/app/assets/{Legal-D3cAXQXw.js → Legal-p-YIX5Jv.js} +2 -2
  36. package/dist/app/assets/{Legal-D3cAXQXw.js.map → Legal-p-YIX5Jv.js.map} +1 -1
  37. package/dist/app/assets/{NotFound-ClV-6RmP.js → NotFound-XohZYy7w.js} +2 -2
  38. package/dist/app/assets/{NotFound-ClV-6RmP.js.map → NotFound-XohZYy7w.js.map} +1 -1
  39. package/dist/app/assets/Pricing-CxCutpT0.js +2 -0
  40. package/dist/app/assets/Pricing-CxCutpT0.js.map +1 -0
  41. package/dist/app/assets/{Privacy-DfxgWwC3.js → Privacy-D8m3h6P-.js} +2 -2
  42. package/dist/{assets/Privacy-DfxgWwC3.js.map → app/assets/Privacy-D8m3h6P-.js.map} +1 -1
  43. package/dist/app/assets/{SignIn-ghQCKcPe.js → SignIn-CINUig91.js} +2 -2
  44. package/dist/app/assets/{SignIn-ghQCKcPe.js.map → SignIn-CINUig91.js.map} +1 -1
  45. package/dist/{assets/SignUp-BKB87hd4.js → app/assets/SignUp-B1H6dQgE.js} +2 -2
  46. package/dist/{assets/SignUp-BKB87hd4.js.map → app/assets/SignUp-B1H6dQgE.js.map} +1 -1
  47. package/dist/app/assets/SiteHeader-BGQW06JF.js +2 -0
  48. package/dist/app/assets/SiteHeader-BGQW06JF.js.map +1 -0
  49. package/dist/app/assets/StickyMobileCta-C41cW-Ji.js +2 -0
  50. package/dist/app/assets/StickyMobileCta-C41cW-Ji.js.map +1 -0
  51. package/dist/app/assets/StoreAssetsPipeline-bUVDqZAU.js +6 -0
  52. package/dist/app/assets/StoreAssetsPipeline-bUVDqZAU.js.map +1 -0
  53. package/dist/app/assets/{Success-819qvzmp.js → Success-CMpdlLi2.js} +2 -2
  54. package/dist/app/assets/{Success-819qvzmp.js.map → Success-CMpdlLi2.js.map} +1 -1
  55. package/dist/app/assets/{Terms-7k3nA4SU.js → Terms-C8NcE4sw.js} +2 -2
  56. package/dist/app/assets/{Terms-7k3nA4SU.js.map → Terms-C8NcE4sw.js.map} +1 -1
  57. package/dist/app/assets/ToolGuardrailsPanel-DbjLhdX8.js +2 -0
  58. package/dist/app/assets/ToolGuardrailsPanel-DbjLhdX8.js.map +1 -0
  59. package/dist/app/assets/ToolsIndex-BuZSvoBC.js +6 -0
  60. package/dist/app/assets/ToolsIndex-BuZSvoBC.js.map +1 -0
  61. package/dist/app/assets/WorkloadCalculator-CjdG5TVq.js +5 -0
  62. package/dist/app/assets/WorkloadCalculator-CjdG5TVq.js.map +1 -0
  63. package/dist/app/assets/{calculator-CiqKFdRp.js → calculator-_D64kDDH.js} +2 -2
  64. package/dist/app/assets/{calculator-CiqKFdRp.js.map → calculator-_D64kDDH.js.map} +1 -1
  65. package/dist/app/assets/check-BaiZ7vYg.js +2 -0
  66. package/dist/app/assets/check-BaiZ7vYg.js.map +1 -0
  67. package/dist/app/assets/chevron-down-DVRa-y8D.js +2 -0
  68. package/dist/app/assets/{chevron-down-_xIkRLaA.js.map → chevron-down-DVRa-y8D.js.map} +1 -1
  69. package/dist/app/assets/circle-check-reAyVfkP.js +2 -0
  70. package/dist/app/assets/circle-check-reAyVfkP.js.map +1 -0
  71. package/dist/app/assets/{clipboard-copy-DCJioqIc.js → clipboard-copy-BfB1mutp.js} +2 -2
  72. package/dist/app/assets/{clipboard-copy-DCJioqIc.js.map → clipboard-copy-BfB1mutp.js.map} +1 -1
  73. package/dist/app/assets/{copy-AQdWJCcs.js → copy-B9y2mtjd.js} +2 -2
  74. package/dist/app/assets/{copy-AQdWJCcs.js.map → copy-B9y2mtjd.js.map} +1 -1
  75. package/dist/app/assets/{crop-DOMVp18h.js → crop-2_j5MtOq.js} +2 -2
  76. package/dist/app/assets/{crop-DOMVp18h.js.map → crop-2_j5MtOq.js.map} +1 -1
  77. package/dist/app/assets/{download-D5RbyXDm.js → download-CqEtEEpe.js} +2 -2
  78. package/dist/app/assets/{download-D5RbyXDm.js.map → download-CqEtEEpe.js.map} +1 -1
  79. package/dist/app/assets/{eye-CLcZi_uk.js → eye-B1LPDhW7.js} +2 -2
  80. package/dist/app/assets/{eye-CLcZi_uk.js.map → eye-B1LPDhW7.js.map} +1 -1
  81. package/dist/app/assets/folder-tree-CnF1eSpg.js +2 -0
  82. package/dist/app/assets/folder-tree-CnF1eSpg.js.map +1 -0
  83. package/dist/app/assets/{grid-3x3-AKmIrhzv.js → grid-3x3-BB0TBwXQ.js} +2 -2
  84. package/dist/{assets/grid-3x3-AKmIrhzv.js.map → app/assets/grid-3x3-BB0TBwXQ.js.map} +1 -1
  85. package/dist/app/assets/hero/cli-build-tree-15s.mp4 +0 -0
  86. package/dist/app/assets/hero/cli-build-tree-15s.webm +0 -0
  87. package/dist/app/assets/hero/cli-build-tree-25s.mp4 +0 -0
  88. package/dist/app/assets/hero/cli-build-tree-25s.webm +0 -0
  89. package/dist/app/assets/hero/cli-build-tree-poster.png +0 -0
  90. package/dist/app/assets/hero/demo-25s-poster.jpg +0 -0
  91. package/dist/app/assets/hero/demo-25s.mp4 +0 -0
  92. package/dist/app/assets/hero/demo-25s.webm +0 -0
  93. package/dist/app/assets/hero/demo-poster.jpg +0 -0
  94. package/dist/app/assets/hero/demo.mp4 +0 -0
  95. package/dist/app/assets/hero/demo.webm +0 -0
  96. package/dist/app/assets/index-Bffw9flM.js +180 -0
  97. package/dist/app/assets/index-Bffw9flM.js.map +1 -0
  98. package/dist/app/assets/index-CQecHUcy.css +1 -0
  99. package/dist/app/assets/{layout-grid-CpGXUPMR.js → layout-grid-DbSzm5KY.js} +2 -2
  100. package/dist/app/assets/{layout-grid-CpGXUPMR.js.map → layout-grid-DbSzm5KY.js.map} +1 -1
  101. package/dist/app/assets/noto-sans-arabic-arabic-400-normal-AAMxebZb.woff2 +0 -0
  102. package/dist/app/assets/noto-sans-arabic-arabic-400-normal-hsqIUL9Q.woff +0 -0
  103. package/dist/app/assets/noto-sans-arabic-arabic-500-normal-CoaTbVwZ.woff +0 -0
  104. package/dist/app/assets/noto-sans-arabic-arabic-500-normal-DPISWLls.woff2 +0 -0
  105. package/dist/app/assets/noto-sans-arabic-arabic-700-normal-3CqrwsiZ.woff2 +0 -0
  106. package/dist/app/assets/noto-sans-arabic-arabic-700-normal-DXnsSW3z.woff +0 -0
  107. package/dist/app/assets/noto-sans-thai-thai-400-normal-BEOmKAI1.woff2 +0 -0
  108. package/dist/app/assets/noto-sans-thai-thai-400-normal-Dxb_unuU.woff +0 -0
  109. package/dist/app/assets/noto-sans-thai-thai-500-normal-BOGXO2tw.woff +0 -0
  110. package/dist/app/assets/noto-sans-thai-thai-500-normal-CU_X86GQ.woff2 +0 -0
  111. package/dist/app/assets/noto-sans-thai-thai-700-normal-C9ISMlQq.woff +0 -0
  112. package/dist/app/assets/noto-sans-thai-thai-700-normal-Cm52XUnT.woff2 +0 -0
  113. package/dist/app/assets/{rocket-IzRFv1aW.js → rocket-d1Ntm8ge.js} +2 -2
  114. package/dist/app/assets/{rocket-IzRFv1aW.js.map → rocket-d1Ntm8ge.js.map} +1 -1
  115. package/dist/app/assets/{shield-check-CngdN3zn.js → shield-check-DXqKmrPT.js} +2 -2
  116. package/dist/app/assets/{shield-check-CngdN3zn.js.map → shield-check-DXqKmrPT.js.map} +1 -1
  117. package/dist/app/assets/{signIn-Cn6FaQYi.js → signIn-D-eCUhFT.js} +2 -2
  118. package/dist/{assets/signIn-Cn6FaQYi.js.map → app/assets/signIn-D-eCUhFT.js.map} +1 -1
  119. package/dist/app/assets/{smartphone-CpNG_Pfk.js → smartphone-Cjrk_YxV.js} +2 -2
  120. package/dist/app/assets/{smartphone-CpNG_Pfk.js.map → smartphone-Cjrk_YxV.js.map} +1 -1
  121. package/dist/app/assets/{terminal-BbBESfoU.js → terminal-CT_KE008.js} +2 -2
  122. package/dist/{assets/terminal-BbBESfoU.js.map → app/assets/terminal-CT_KE008.js.map} +1 -1
  123. package/dist/{assets/useAuth-3WWZ3GCD.js → app/assets/useAuth-ctmUbyCR.js} +2 -2
  124. package/dist/app/assets/{useAuth-3WWZ3GCD.js.map → useAuth-ctmUbyCR.js.map} +1 -1
  125. package/dist/app/index.html +6 -2
  126. package/dist/assets/AgentCli-DNTDYBbk.js +17 -0
  127. package/dist/assets/AgentCli-DNTDYBbk.js.map +1 -0
  128. package/dist/assets/App-BwQ1zI7a.css +1 -0
  129. package/dist/assets/App-DPi9LW-y.js +13 -0
  130. package/dist/assets/App-DPi9LW-y.js.map +1 -0
  131. package/dist/assets/AppReviewAso-BUTGLatx.js +4 -0
  132. package/dist/assets/AppReviewAso-BUTGLatx.js.map +1 -0
  133. package/dist/assets/{Cancelled-66ixTUrm.js → Cancelled-BeS-WlPj.js} +2 -2
  134. package/dist/assets/{Cancelled-66ixTUrm.js.map → Cancelled-BeS-WlPj.js.map} +1 -1
  135. package/dist/assets/CopyButton-BZQEBHBq.js +2 -0
  136. package/dist/assets/CopyButton-BZQEBHBq.js.map +1 -0
  137. package/dist/assets/FastlaneScreenshots-Dn7jfpuz.js +52 -0
  138. package/dist/assets/FastlaneScreenshots-Dn7jfpuz.js.map +1 -0
  139. package/dist/assets/FirstExport-CzioMqbJ.js +6 -0
  140. package/dist/assets/FirstExport-CzioMqbJ.js.map +1 -0
  141. package/dist/assets/FitPanel-DzYzTMEi.js +2 -0
  142. package/dist/assets/FitPanel-DzYzTMEi.js.map +1 -0
  143. package/dist/assets/FivePanelFramework-Bt5-NjCV.js +62 -0
  144. package/dist/assets/FivePanelFramework-Bt5-NjCV.js.map +1 -0
  145. package/dist/{app/assets/ForgotPassword-B9_si1tH.js → assets/ForgotPassword-DuHNHuUe.js} +2 -2
  146. package/dist/assets/{ForgotPassword-B9_si1tH.js.map → ForgotPassword-DuHNHuUe.js.map} +1 -1
  147. package/dist/assets/Landing-DB9pTPoT.js +2 -0
  148. package/dist/assets/Landing-DB9pTPoT.js.map +1 -0
  149. package/dist/assets/{LanguageSwitcher-BD9N-dla.js → LanguageSwitcher-CfUhVVuT.js} +2 -2
  150. package/dist/{app/assets/LanguageSwitcher-BD9N-dla.js.map → assets/LanguageSwitcher-CfUhVVuT.js.map} +1 -1
  151. package/dist/assets/{Legal-D3cAXQXw.js → Legal-p-YIX5Jv.js} +2 -2
  152. package/dist/assets/{Legal-D3cAXQXw.js.map → Legal-p-YIX5Jv.js.map} +1 -1
  153. package/dist/assets/{NotFound-ClV-6RmP.js → NotFound-XohZYy7w.js} +2 -2
  154. package/dist/assets/{NotFound-ClV-6RmP.js.map → NotFound-XohZYy7w.js.map} +1 -1
  155. package/dist/assets/Pricing-CxCutpT0.js +2 -0
  156. package/dist/assets/Pricing-CxCutpT0.js.map +1 -0
  157. package/dist/assets/{Privacy-DfxgWwC3.js → Privacy-D8m3h6P-.js} +2 -2
  158. package/dist/{app/assets/Privacy-DfxgWwC3.js.map → assets/Privacy-D8m3h6P-.js.map} +1 -1
  159. package/dist/assets/{SignIn-ghQCKcPe.js → SignIn-CINUig91.js} +2 -2
  160. package/dist/assets/{SignIn-ghQCKcPe.js.map → SignIn-CINUig91.js.map} +1 -1
  161. package/dist/{app/assets/SignUp-BKB87hd4.js → assets/SignUp-B1H6dQgE.js} +2 -2
  162. package/dist/{app/assets/SignUp-BKB87hd4.js.map → assets/SignUp-B1H6dQgE.js.map} +1 -1
  163. package/dist/assets/SiteHeader-BGQW06JF.js +2 -0
  164. package/dist/assets/SiteHeader-BGQW06JF.js.map +1 -0
  165. package/dist/assets/StickyMobileCta-C41cW-Ji.js +2 -0
  166. package/dist/assets/StickyMobileCta-C41cW-Ji.js.map +1 -0
  167. package/dist/assets/StoreAssetsPipeline-bUVDqZAU.js +6 -0
  168. package/dist/assets/StoreAssetsPipeline-bUVDqZAU.js.map +1 -0
  169. package/dist/assets/{Success-819qvzmp.js → Success-CMpdlLi2.js} +2 -2
  170. package/dist/assets/{Success-819qvzmp.js.map → Success-CMpdlLi2.js.map} +1 -1
  171. package/dist/assets/{Terms-7k3nA4SU.js → Terms-C8NcE4sw.js} +2 -2
  172. package/dist/assets/{Terms-7k3nA4SU.js.map → Terms-C8NcE4sw.js.map} +1 -1
  173. package/dist/assets/ToolGuardrailsPanel-DbjLhdX8.js +2 -0
  174. package/dist/assets/ToolGuardrailsPanel-DbjLhdX8.js.map +1 -0
  175. package/dist/assets/ToolsIndex-BuZSvoBC.js +6 -0
  176. package/dist/assets/ToolsIndex-BuZSvoBC.js.map +1 -0
  177. package/dist/assets/WorkloadCalculator-CjdG5TVq.js +5 -0
  178. package/dist/assets/WorkloadCalculator-CjdG5TVq.js.map +1 -0
  179. package/dist/assets/{calculator-CiqKFdRp.js → calculator-_D64kDDH.js} +2 -2
  180. package/dist/assets/{calculator-CiqKFdRp.js.map → calculator-_D64kDDH.js.map} +1 -1
  181. package/dist/assets/check-BaiZ7vYg.js +2 -0
  182. package/dist/assets/check-BaiZ7vYg.js.map +1 -0
  183. package/dist/assets/chevron-down-DVRa-y8D.js +2 -0
  184. package/dist/assets/{chevron-down-_xIkRLaA.js.map → chevron-down-DVRa-y8D.js.map} +1 -1
  185. package/dist/assets/circle-check-reAyVfkP.js +2 -0
  186. package/dist/assets/circle-check-reAyVfkP.js.map +1 -0
  187. package/dist/assets/{clipboard-copy-DCJioqIc.js → clipboard-copy-BfB1mutp.js} +2 -2
  188. package/dist/assets/{clipboard-copy-DCJioqIc.js.map → clipboard-copy-BfB1mutp.js.map} +1 -1
  189. package/dist/assets/{copy-AQdWJCcs.js → copy-B9y2mtjd.js} +2 -2
  190. package/dist/assets/{copy-AQdWJCcs.js.map → copy-B9y2mtjd.js.map} +1 -1
  191. package/dist/assets/{crop-DOMVp18h.js → crop-2_j5MtOq.js} +2 -2
  192. package/dist/assets/{crop-DOMVp18h.js.map → crop-2_j5MtOq.js.map} +1 -1
  193. package/dist/assets/{download-D5RbyXDm.js → download-CqEtEEpe.js} +2 -2
  194. package/dist/assets/{download-D5RbyXDm.js.map → download-CqEtEEpe.js.map} +1 -1
  195. package/dist/assets/{eye-CLcZi_uk.js → eye-B1LPDhW7.js} +2 -2
  196. package/dist/assets/{eye-CLcZi_uk.js.map → eye-B1LPDhW7.js.map} +1 -1
  197. package/dist/assets/folder-tree-CnF1eSpg.js +2 -0
  198. package/dist/assets/folder-tree-CnF1eSpg.js.map +1 -0
  199. package/dist/assets/{grid-3x3-AKmIrhzv.js → grid-3x3-BB0TBwXQ.js} +2 -2
  200. package/dist/{app/assets/grid-3x3-AKmIrhzv.js.map → assets/grid-3x3-BB0TBwXQ.js.map} +1 -1
  201. package/dist/assets/hero/cli-build-tree-15s.mp4 +0 -0
  202. package/dist/assets/hero/cli-build-tree-15s.webm +0 -0
  203. package/dist/assets/hero/cli-build-tree-25s.mp4 +0 -0
  204. package/dist/assets/hero/cli-build-tree-25s.webm +0 -0
  205. package/dist/assets/hero/cli-build-tree-poster.png +0 -0
  206. package/dist/assets/hero/demo-25s-poster.jpg +0 -0
  207. package/dist/assets/hero/demo-25s.mp4 +0 -0
  208. package/dist/assets/hero/demo-25s.webm +0 -0
  209. package/dist/assets/hero/demo-poster.jpg +0 -0
  210. package/dist/assets/hero/demo.mp4 +0 -0
  211. package/dist/assets/hero/demo.webm +0 -0
  212. package/dist/assets/index-Bffw9flM.js +180 -0
  213. package/dist/assets/index-Bffw9flM.js.map +1 -0
  214. package/dist/assets/index-CQecHUcy.css +1 -0
  215. package/dist/assets/{layout-grid-CpGXUPMR.js → layout-grid-DbSzm5KY.js} +2 -2
  216. package/dist/assets/{layout-grid-CpGXUPMR.js.map → layout-grid-DbSzm5KY.js.map} +1 -1
  217. package/dist/assets/noto-sans-arabic-arabic-400-normal-AAMxebZb.woff2 +0 -0
  218. package/dist/assets/noto-sans-arabic-arabic-400-normal-hsqIUL9Q.woff +0 -0
  219. package/dist/assets/noto-sans-arabic-arabic-500-normal-CoaTbVwZ.woff +0 -0
  220. package/dist/assets/noto-sans-arabic-arabic-500-normal-DPISWLls.woff2 +0 -0
  221. package/dist/assets/noto-sans-arabic-arabic-700-normal-3CqrwsiZ.woff2 +0 -0
  222. package/dist/assets/noto-sans-arabic-arabic-700-normal-DXnsSW3z.woff +0 -0
  223. package/dist/assets/noto-sans-thai-thai-400-normal-BEOmKAI1.woff2 +0 -0
  224. package/dist/assets/noto-sans-thai-thai-400-normal-Dxb_unuU.woff +0 -0
  225. package/dist/assets/noto-sans-thai-thai-500-normal-BOGXO2tw.woff +0 -0
  226. package/dist/assets/noto-sans-thai-thai-500-normal-CU_X86GQ.woff2 +0 -0
  227. package/dist/assets/noto-sans-thai-thai-700-normal-C9ISMlQq.woff +0 -0
  228. package/dist/assets/noto-sans-thai-thai-700-normal-Cm52XUnT.woff2 +0 -0
  229. package/dist/assets/{rocket-IzRFv1aW.js → rocket-d1Ntm8ge.js} +2 -2
  230. package/dist/assets/{rocket-IzRFv1aW.js.map → rocket-d1Ntm8ge.js.map} +1 -1
  231. package/dist/assets/{shield-check-CngdN3zn.js → shield-check-DXqKmrPT.js} +2 -2
  232. package/dist/assets/{shield-check-CngdN3zn.js.map → shield-check-DXqKmrPT.js.map} +1 -1
  233. package/dist/assets/{signIn-Cn6FaQYi.js → signIn-D-eCUhFT.js} +2 -2
  234. package/dist/{app/assets/signIn-Cn6FaQYi.js.map → assets/signIn-D-eCUhFT.js.map} +1 -1
  235. package/dist/assets/{smartphone-CpNG_Pfk.js → smartphone-Cjrk_YxV.js} +2 -2
  236. package/dist/assets/{smartphone-CpNG_Pfk.js.map → smartphone-Cjrk_YxV.js.map} +1 -1
  237. package/dist/assets/{terminal-BbBESfoU.js → terminal-CT_KE008.js} +2 -2
  238. package/dist/{app/assets/terminal-BbBESfoU.js.map → assets/terminal-CT_KE008.js.map} +1 -1
  239. package/dist/{app/assets/useAuth-3WWZ3GCD.js → assets/useAuth-ctmUbyCR.js} +2 -2
  240. package/dist/assets/{useAuth-3WWZ3GCD.js.map → useAuth-ctmUbyCR.js.map} +1 -1
  241. package/dist/cancelled/index.html +6 -2
  242. package/dist/forgot-password/index.html +6 -2
  243. package/dist/index.html +6 -2
  244. package/dist/legal/index.html +6 -2
  245. package/dist/llms-full.txt +150 -0
  246. package/dist/llms.txt +57 -0
  247. package/dist/mcp-server.json +40 -0
  248. package/dist/pricing/index.html +37 -0
  249. package/dist/privacy/index.html +6 -2
  250. package/dist/robots.txt +8 -0
  251. package/dist/signin/index.html +6 -2
  252. package/dist/signup/index.html +6 -2
  253. package/dist/sitemap.xml +40 -0
  254. package/dist/success/index.html +6 -2
  255. package/dist/terms/index.html +6 -2
  256. package/dist/tools/5-panel-screenshot-framework/index.html +6 -2
  257. package/dist/tools/agent-cli/index.html +14 -8
  258. package/dist/tools/app-review-aso/index.html +6 -2
  259. package/dist/tools/fastlane-screenshots/index.html +6 -2
  260. package/dist/tools/first-export/index.html +6 -2
  261. package/dist/tools/index.html +6 -2
  262. package/dist/tools/screenshot-workload-calculator/index.html +6 -2
  263. package/dist/tools/store-assets-pipeline/index.html +6 -2
  264. package/package.json +22 -2
  265. package/dist/app/assets/AgentCli-FWNCO1pb.js +0 -17
  266. package/dist/app/assets/AgentCli-FWNCO1pb.js.map +0 -1
  267. package/dist/app/assets/App-yU7CFXCv.js +0 -13
  268. package/dist/app/assets/App-yU7CFXCv.js.map +0 -1
  269. package/dist/app/assets/AppReviewAso-BYfaP1Lu.js +0 -4
  270. package/dist/app/assets/AppReviewAso-BYfaP1Lu.js.map +0 -1
  271. package/dist/app/assets/CliPreflightCard-D7utpFux.js +0 -2
  272. package/dist/app/assets/CliPreflightCard-D7utpFux.js.map +0 -1
  273. package/dist/app/assets/CopyButton-CmVmSaYn.js +0 -2
  274. package/dist/app/assets/CopyButton-CmVmSaYn.js.map +0 -1
  275. package/dist/app/assets/FastlaneScreenshots-CRMcetq-.js +0 -52
  276. package/dist/app/assets/FastlaneScreenshots-CRMcetq-.js.map +0 -1
  277. package/dist/app/assets/FirstExport-C0WgL4Hl.js +0 -6
  278. package/dist/app/assets/FirstExport-C0WgL4Hl.js.map +0 -1
  279. package/dist/app/assets/FivePanelFramework-BwCRmXIK.js +0 -60
  280. package/dist/app/assets/FivePanelFramework-BwCRmXIK.js.map +0 -1
  281. package/dist/app/assets/Landing-s1ni1n-7.js +0 -2
  282. package/dist/app/assets/Landing-s1ni1n-7.js.map +0 -1
  283. package/dist/app/assets/SiteHeader-DxsqNPnt.js +0 -2
  284. package/dist/app/assets/SiteHeader-DxsqNPnt.js.map +0 -1
  285. package/dist/app/assets/StickyMobileCta-C_x2pUIF.js +0 -2
  286. package/dist/app/assets/StickyMobileCta-C_x2pUIF.js.map +0 -1
  287. package/dist/app/assets/StoreAssetsPipeline-4hXRONUd.js +0 -4
  288. package/dist/app/assets/StoreAssetsPipeline-4hXRONUd.js.map +0 -1
  289. package/dist/app/assets/ToolsIndex-CzrxymnM.js +0 -6
  290. package/dist/app/assets/ToolsIndex-CzrxymnM.js.map +0 -1
  291. package/dist/app/assets/WorkloadCalculator-D2TuKS4B.js +0 -5
  292. package/dist/app/assets/WorkloadCalculator-D2TuKS4B.js.map +0 -1
  293. package/dist/app/assets/chevron-down-_xIkRLaA.js +0 -2
  294. package/dist/app/assets/index-Bqv2NztY.js +0 -180
  295. package/dist/app/assets/index-Bqv2NztY.js.map +0 -1
  296. package/dist/app/assets/index-DGVMa-P7.css +0 -1
  297. package/dist/assets/AgentCli-FWNCO1pb.js +0 -17
  298. package/dist/assets/AgentCli-FWNCO1pb.js.map +0 -1
  299. package/dist/assets/App-yU7CFXCv.js +0 -13
  300. package/dist/assets/App-yU7CFXCv.js.map +0 -1
  301. package/dist/assets/AppReviewAso-BYfaP1Lu.js +0 -4
  302. package/dist/assets/AppReviewAso-BYfaP1Lu.js.map +0 -1
  303. package/dist/assets/CliPreflightCard-D7utpFux.js +0 -2
  304. package/dist/assets/CliPreflightCard-D7utpFux.js.map +0 -1
  305. package/dist/assets/CopyButton-CmVmSaYn.js +0 -2
  306. package/dist/assets/CopyButton-CmVmSaYn.js.map +0 -1
  307. package/dist/assets/FastlaneScreenshots-CRMcetq-.js +0 -52
  308. package/dist/assets/FastlaneScreenshots-CRMcetq-.js.map +0 -1
  309. package/dist/assets/FirstExport-C0WgL4Hl.js +0 -6
  310. package/dist/assets/FirstExport-C0WgL4Hl.js.map +0 -1
  311. package/dist/assets/FivePanelFramework-BwCRmXIK.js +0 -60
  312. package/dist/assets/FivePanelFramework-BwCRmXIK.js.map +0 -1
  313. package/dist/assets/Landing-s1ni1n-7.js +0 -2
  314. package/dist/assets/Landing-s1ni1n-7.js.map +0 -1
  315. package/dist/assets/SiteHeader-DxsqNPnt.js +0 -2
  316. package/dist/assets/SiteHeader-DxsqNPnt.js.map +0 -1
  317. package/dist/assets/StickyMobileCta-C_x2pUIF.js +0 -2
  318. package/dist/assets/StickyMobileCta-C_x2pUIF.js.map +0 -1
  319. package/dist/assets/StoreAssetsPipeline-4hXRONUd.js +0 -4
  320. package/dist/assets/StoreAssetsPipeline-4hXRONUd.js.map +0 -1
  321. package/dist/assets/ToolsIndex-CzrxymnM.js +0 -6
  322. package/dist/assets/ToolsIndex-CzrxymnM.js.map +0 -1
  323. package/dist/assets/WorkloadCalculator-D2TuKS4B.js +0 -5
  324. package/dist/assets/WorkloadCalculator-D2TuKS4B.js.map +0 -1
  325. package/dist/assets/chevron-down-_xIkRLaA.js +0 -2
  326. package/dist/assets/index-Bqv2NztY.js +0 -180
  327. package/dist/assets/index-Bqv2NztY.js.map +0 -1
  328. package/dist/assets/index-DGVMa-P7.css +0 -1
@@ -1,2 +1,2 @@
1
- import{u as i,r as n,t as o,j as e,b as l}from"./index-Bqv2NztY.js";import{c as r,a as p,S as d}from"./LanguageSwitcher-BD9N-dla.js";import{S as x}from"./SiteHeader-DxsqNPnt.js";const u=[["path",{d:"M21.801 10A10 10 0 1 1 17 3.335",key:"yps3ct"}],["path",{d:"m9 11 3 3L22 4",key:"1pflzl"}]],m=r("circle-check-big",u),k=()=>{const{t}=i();p("titles.checkoutSuccess");const s=new URLSearchParams(typeof window<"u"?window.location.search:"").get("session_id"),c=s?`/app/?session_id=${s}`:"/app/";return n.useEffect(()=>{o("checkout_success_view",{has_session_id:!!s})},[s]),e.jsxs("div",{className:"min-h-screen bg-slate-50 text-slate-800 flex flex-col",children:[e.jsx(d,{}),e.jsx(x,{variant:"light",showX:!1,openAppHref:c}),e.jsx("main",{className:"flex-1 flex items-center justify-center px-6 py-10",children:e.jsxs("div",{className:"max-w-lg w-full bg-white border border-slate-200 rounded-2xl shadow-sm p-8 text-center space-y-4",children:[e.jsx(m,{size:48,className:"text-green-500 mx-auto"}),e.jsx("h1",{className:"text-2xl font-bold",children:t("pages.success.title")}),e.jsx("p",{className:"text-slate-600",children:t("pages.success.description")}),e.jsx("a",{href:c,onClick:a=>l(a,"checkout_success_cta_click",{cta:"open_app"}),className:"inline-flex justify-center items-center px-4 py-2 rounded-lg bg-blue-600 text-white font-semibold hover:bg-blue-700",children:t("pages.success.action")})]})})]})};export{k as default};
2
- //# sourceMappingURL=Success-819qvzmp.js.map
1
+ import{u as i,r as n,t as o,j as e,b as l}from"./index-Bffw9flM.js";import{c as r,a as p,S as d}from"./LanguageSwitcher-CfUhVVuT.js";import{S as x}from"./SiteHeader-BGQW06JF.js";const u=[["path",{d:"M21.801 10A10 10 0 1 1 17 3.335",key:"yps3ct"}],["path",{d:"m9 11 3 3L22 4",key:"1pflzl"}]],m=r("circle-check-big",u),k=()=>{const{t}=i();p("titles.checkoutSuccess");const s=new URLSearchParams(typeof window<"u"?window.location.search:"").get("session_id"),c=s?`/app/?session_id=${s}`:"/app/";return n.useEffect(()=>{o("checkout_success_view",{has_session_id:!!s})},[s]),e.jsxs("div",{className:"min-h-screen bg-slate-50 text-slate-800 flex flex-col",children:[e.jsx(d,{}),e.jsx(x,{variant:"light",showX:!1,openAppHref:c}),e.jsx("main",{className:"flex-1 flex items-center justify-center px-6 py-10",children:e.jsxs("div",{className:"max-w-lg w-full bg-white border border-slate-200 rounded-2xl shadow-sm p-8 text-center space-y-4",children:[e.jsx(m,{size:48,className:"text-green-500 mx-auto"}),e.jsx("h1",{className:"text-2xl font-bold",children:t("pages.success.title")}),e.jsx("p",{className:"text-slate-600",children:t("pages.success.description")}),e.jsx("a",{href:c,onClick:a=>l(a,"checkout_success_cta_click",{cta:"open_app"}),className:"inline-flex justify-center items-center px-4 py-2 rounded-lg bg-blue-600 text-white font-semibold hover:bg-blue-700",children:t("pages.success.action")})]})})]})};export{k as default};
2
+ //# sourceMappingURL=Success-CMpdlLi2.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Success-819qvzmp.js","sources":["../../node_modules/lucide-react/dist/esm/icons/circle-check-big.js","../../src/pages/Success.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.801 10A10 10 0 1 1 17 3.335\", key: \"yps3ct\" }],\n [\"path\", { d: \"m9 11 3 3L22 4\", key: \"1pflzl\" }]\n];\nconst CircleCheckBig = createLucideIcon(\"circle-check-big\", __iconNode);\n\nexport { __iconNode, CircleCheckBig as default };\n//# sourceMappingURL=circle-check-big.js.map\n","import React, { useEffect } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { CheckCircle } from 'lucide-react';\nimport StagingBadge from '../components/StagingBadge';\nimport SiteHeader from '../components/SiteHeader';\nimport usePageTitle from '../hooks/usePageTitle';\nimport { trackEvent, trackEventAndFollowLink } from '../lib/analytics';\n\nconst Success = () => {\n const { t } = useTranslation();\n usePageTitle('titles.checkoutSuccess');\n const params = new URLSearchParams(typeof window !== 'undefined' ? window.location.search : '');\n const sessionId = params.get('session_id');\n const appLink = sessionId ? `/app/?session_id=${sessionId}` : '/app/';\n\n useEffect(() => {\n trackEvent('checkout_success_view', { has_session_id: Boolean(sessionId) });\n }, [sessionId]);\n\n return (\n <div className=\"min-h-screen bg-slate-50 text-slate-800 flex flex-col\">\n <StagingBadge />\n <SiteHeader variant=\"light\" showX={false} openAppHref={appLink} />\n <main className=\"flex-1 flex items-center justify-center px-6 py-10\">\n <div className=\"max-w-lg w-full bg-white border border-slate-200 rounded-2xl shadow-sm p-8 text-center space-y-4\">\n <CheckCircle size={48} className=\"text-green-500 mx-auto\" />\n <h1 className=\"text-2xl font-bold\">{t('pages.success.title')}</h1>\n <p className=\"text-slate-600\">{t('pages.success.description')}</p>\n <a\n href={appLink}\n onClick={(event) =>\n trackEventAndFollowLink(event, 'checkout_success_cta_click', { cta: 'open_app' })\n }\n className=\"inline-flex justify-center items-center px-4 py-2 rounded-lg bg-blue-600 text-white font-semibold hover:bg-blue-700\"\n >\n {t('pages.success.action')}\n </a>\n </div>\n </main>\n </div>\n );\n};\n\nexport default Success;\n"],"names":["__iconNode","CircleCheckBig","createLucideIcon","Success","useTranslation","usePageTitle","sessionId","appLink","useEffect","trackEvent","jsxs","jsx","StagingBadge","SiteHeader","CheckCircle","event","trackEventAndFollowLink"],"mappings":"kLASA,MAAMA,EAAa,CACjB,CAAC,OAAQ,CAAE,EAAG,kCAAmC,IAAK,QAAQ,CAAE,EAChE,CAAC,OAAQ,CAAE,EAAG,iBAAkB,IAAK,QAAQ,CAAE,CACjD,EACMC,EAAiBC,EAAiB,mBAAoBF,CAAU,ECLhEG,EAAU,IAAM,CACpB,KAAM,CAAE,CAAA,EAAMC,EAAA,EACdC,EAAa,wBAAwB,EAErC,MAAMC,EADS,IAAI,gBAAgB,OAAO,OAAW,IAAc,OAAO,SAAS,OAAS,EAAE,EACrE,IAAI,YAAY,EACnCC,EAAUD,EAAY,oBAAoBA,CAAS,GAAK,QAE9DE,OAAAA,EAAAA,UAAU,IAAM,CACdC,EAAW,wBAAyB,CAAE,eAAgB,EAAQH,EAAY,CAC5E,EAAG,CAACA,CAAS,CAAC,EAGZI,EAAAA,KAAC,MAAA,CAAI,UAAU,wDACb,SAAA,CAAAC,EAAAA,IAACC,EAAA,EAAa,QACbC,EAAA,CAAW,QAAQ,QAAQ,MAAO,GAAO,YAAaN,EAAS,QAC/D,OAAA,CAAK,UAAU,qDACd,SAAAG,EAAAA,KAAC,MAAA,CAAI,UAAU,mGACb,SAAA,CAAAC,EAAAA,IAACG,EAAA,CAAY,KAAM,GAAI,UAAU,yBAAyB,QACzD,KAAA,CAAG,UAAU,qBAAsB,SAAA,EAAE,qBAAqB,EAAE,QAC5D,IAAA,CAAE,UAAU,iBAAkB,SAAA,EAAE,2BAA2B,EAAE,EAC9DH,EAAAA,IAAC,IAAA,CACC,KAAMJ,EACN,QAAUQ,GACRC,EAAwBD,EAAO,6BAA8B,CAAE,IAAK,WAAY,EAElF,UAAU,sHAET,WAAE,sBAAsB,CAAA,CAAA,CAC3B,CAAA,CACF,CAAA,CACF,CAAA,EACF,CAEJ","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"Success-CMpdlLi2.js","sources":["../../node_modules/lucide-react/dist/esm/icons/circle-check-big.js","../../src/pages/Success.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.801 10A10 10 0 1 1 17 3.335\", key: \"yps3ct\" }],\n [\"path\", { d: \"m9 11 3 3L22 4\", key: \"1pflzl\" }]\n];\nconst CircleCheckBig = createLucideIcon(\"circle-check-big\", __iconNode);\n\nexport { __iconNode, CircleCheckBig as default };\n//# sourceMappingURL=circle-check-big.js.map\n","import React, { useEffect } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { CheckCircle } from 'lucide-react';\nimport StagingBadge from '../components/StagingBadge';\nimport SiteHeader from '../components/SiteHeader';\nimport usePageTitle from '../hooks/usePageTitle';\nimport { trackEvent, trackEventAndFollowLink } from '../lib/analytics';\n\nconst Success = () => {\n const { t } = useTranslation();\n usePageTitle('titles.checkoutSuccess');\n const params = new URLSearchParams(typeof window !== 'undefined' ? window.location.search : '');\n const sessionId = params.get('session_id');\n const appLink = sessionId ? `/app/?session_id=${sessionId}` : '/app/';\n\n useEffect(() => {\n trackEvent('checkout_success_view', { has_session_id: Boolean(sessionId) });\n }, [sessionId]);\n\n return (\n <div className=\"min-h-screen bg-slate-50 text-slate-800 flex flex-col\">\n <StagingBadge />\n <SiteHeader variant=\"light\" showX={false} openAppHref={appLink} />\n <main className=\"flex-1 flex items-center justify-center px-6 py-10\">\n <div className=\"max-w-lg w-full bg-white border border-slate-200 rounded-2xl shadow-sm p-8 text-center space-y-4\">\n <CheckCircle size={48} className=\"text-green-500 mx-auto\" />\n <h1 className=\"text-2xl font-bold\">{t('pages.success.title')}</h1>\n <p className=\"text-slate-600\">{t('pages.success.description')}</p>\n <a\n href={appLink}\n onClick={(event) =>\n trackEventAndFollowLink(event, 'checkout_success_cta_click', { cta: 'open_app' })\n }\n className=\"inline-flex justify-center items-center px-4 py-2 rounded-lg bg-blue-600 text-white font-semibold hover:bg-blue-700\"\n >\n {t('pages.success.action')}\n </a>\n </div>\n </main>\n </div>\n );\n};\n\nexport default Success;\n"],"names":["__iconNode","CircleCheckBig","createLucideIcon","Success","useTranslation","usePageTitle","sessionId","appLink","useEffect","trackEvent","jsxs","jsx","StagingBadge","SiteHeader","CheckCircle","event","trackEventAndFollowLink"],"mappings":"kLASA,MAAMA,EAAa,CACjB,CAAC,OAAQ,CAAE,EAAG,kCAAmC,IAAK,QAAQ,CAAE,EAChE,CAAC,OAAQ,CAAE,EAAG,iBAAkB,IAAK,QAAQ,CAAE,CACjD,EACMC,EAAiBC,EAAiB,mBAAoBF,CAAU,ECLhEG,EAAU,IAAM,CACpB,KAAM,CAAE,CAAA,EAAMC,EAAA,EACdC,EAAa,wBAAwB,EAErC,MAAMC,EADS,IAAI,gBAAgB,OAAO,OAAW,IAAc,OAAO,SAAS,OAAS,EAAE,EACrE,IAAI,YAAY,EACnCC,EAAUD,EAAY,oBAAoBA,CAAS,GAAK,QAE9DE,OAAAA,EAAAA,UAAU,IAAM,CACdC,EAAW,wBAAyB,CAAE,eAAgB,EAAQH,EAAY,CAC5E,EAAG,CAACA,CAAS,CAAC,EAGZI,EAAAA,KAAC,MAAA,CAAI,UAAU,wDACb,SAAA,CAAAC,EAAAA,IAACC,EAAA,EAAa,QACbC,EAAA,CAAW,QAAQ,QAAQ,MAAO,GAAO,YAAaN,EAAS,QAC/D,OAAA,CAAK,UAAU,qDACd,SAAAG,EAAAA,KAAC,MAAA,CAAI,UAAU,mGACb,SAAA,CAAAC,EAAAA,IAACG,EAAA,CAAY,KAAM,GAAI,UAAU,yBAAyB,QACzD,KAAA,CAAG,UAAU,qBAAsB,SAAA,EAAE,qBAAqB,EAAE,QAC5D,IAAA,CAAE,UAAU,iBAAkB,SAAA,EAAE,2BAA2B,EAAE,EAC9DH,EAAAA,IAAC,IAAA,CACC,KAAMJ,EACN,QAAUQ,GACRC,EAAwBD,EAAO,6BAA8B,CAAE,IAAK,WAAY,EAElF,UAAU,sHAET,WAAE,sBAAsB,CAAA,CAAA,CAC3B,CAAA,CACF,CAAA,CACF,CAAA,EACF,CAEJ","x_google_ignoreList":[0]}
@@ -1,2 +1,2 @@
1
- import{u as m,j as s}from"./index-Bqv2NztY.js";import{a as r,S as l}from"./LanguageSwitcher-BD9N-dla.js";import{S as i}from"./SiteHeader-DxsqNPnt.js";const d=()=>{const{t}=m();r("titles.terms");const e=t("terms.sections",{returnObjects:!0})||[];return s.jsxs("div",{className:"min-h-screen bg-slate-50 text-slate-800",children:[s.jsx(l,{}),s.jsx(i,{variant:"light",showX:!1}),s.jsxs("main",{className:"max-w-4xl mx-auto px-4 py-12",children:[s.jsx("h1",{className:"text-3xl font-bold mb-6",children:t("terms.title")}),s.jsx("p",{className:"mb-4",children:t("terms.intro")}),e.map(a=>s.jsx(n,{title:a.title,body:a.body},a.title)),s.jsx("p",{className:"mt-6 text-sm text-slate-600",children:t("terms.contact",{email:"support@shimaumaservices.co.jp"})})]})]})},n=({title:t,body:e})=>s.jsxs(s.Fragment,{children:[s.jsx("h2",{className:"text-xl font-semibold mt-6 mb-2",children:t}),s.jsx("p",{className:"mb-3",children:e})]});export{d as default};
2
- //# sourceMappingURL=Terms-7k3nA4SU.js.map
1
+ import{u as m,j as s}from"./index-Bffw9flM.js";import{a as r,S as l}from"./LanguageSwitcher-CfUhVVuT.js";import{S as i}from"./SiteHeader-BGQW06JF.js";const d=()=>{const{t}=m();r("titles.terms");const e=t("terms.sections",{returnObjects:!0})||[];return s.jsxs("div",{className:"min-h-screen bg-slate-50 text-slate-800",children:[s.jsx(l,{}),s.jsx(i,{variant:"light",showX:!1}),s.jsxs("main",{className:"max-w-4xl mx-auto px-4 py-12",children:[s.jsx("h1",{className:"text-3xl font-bold mb-6",children:t("terms.title")}),s.jsx("p",{className:"mb-4",children:t("terms.intro")}),e.map(a=>s.jsx(n,{title:a.title,body:a.body},a.title)),s.jsx("p",{className:"mt-6 text-sm text-slate-600",children:t("terms.contact",{email:"support@shimaumaservices.co.jp"})})]})]})},n=({title:t,body:e})=>s.jsxs(s.Fragment,{children:[s.jsx("h2",{className:"text-xl font-semibold mt-6 mb-2",children:t}),s.jsx("p",{className:"mb-3",children:e})]});export{d as default};
2
+ //# sourceMappingURL=Terms-C8NcE4sw.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Terms-7k3nA4SU.js","sources":["../../src/pages/Terms.jsx"],"sourcesContent":["import React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport StagingBadge from '../components/StagingBadge';\nimport SiteHeader from '../components/SiteHeader';\nimport usePageTitle from '../hooks/usePageTitle';\n\nconst Terms = () => {\n const { t } = useTranslation();\n usePageTitle('titles.terms');\n const sections = t('terms.sections', { returnObjects: true }) || [];\n\n return (\n <div className=\"min-h-screen bg-slate-50 text-slate-800\">\n <StagingBadge />\n <SiteHeader variant=\"light\" showX={false} />\n\n <main className=\"max-w-4xl mx-auto px-4 py-12\">\n <h1 className=\"text-3xl font-bold mb-6\">{t('terms.title')}</h1>\n <p className=\"mb-4\">{t('terms.intro')}</p>\n {sections.map((section) => (\n <Section key={section.title} title={section.title} body={section.body} />\n ))}\n <p className=\"mt-6 text-sm text-slate-600\">{t('terms.contact', { email: 'support@shimaumaservices.co.jp' })}</p>\n </main>\n </div>\n );\n};\n\r\nconst Section = ({ title, body }) => (\r\n <>\r\n <h2 className=\"text-xl font-semibold mt-6 mb-2\">{title}</h2>\r\n <p className=\"mb-3\">{body}</p>\r\n </>\r\n);\r\n\r\nexport default Terms;\r\n"],"names":["Terms","useTranslation","usePageTitle","sections","jsxs","jsx","StagingBadge","SiteHeader","section","Section","title","body","Fragment"],"mappings":"sJAMA,MAAMA,EAAQ,IAAM,CAClB,KAAM,CAAE,CAAA,EAAMC,EAAA,EACdC,EAAa,cAAc,EAC3B,MAAMC,EAAW,EAAE,iBAAkB,CAAE,cAAe,EAAA,CAAM,GAAK,CAAA,EAEjE,OACEC,EAAAA,KAAC,MAAA,CAAI,UAAU,0CACb,SAAA,CAAAC,EAAAA,IAACC,EAAA,EAAa,EACdD,EAAAA,IAACE,EAAA,CAAW,QAAQ,QAAQ,MAAO,GAAO,EAE1CH,EAAAA,KAAC,OAAA,CAAK,UAAU,+BACd,SAAA,CAAAC,MAAC,KAAA,CAAG,UAAU,0BAA2B,SAAA,EAAE,aAAa,EAAE,QACzD,IAAA,CAAE,UAAU,OAAQ,SAAA,EAAE,aAAa,EAAE,EACrCF,EAAS,IAAKK,SACZC,EAAA,CAA4B,MAAOD,EAAQ,MAAO,KAAMA,EAAQ,IAAA,EAAnDA,EAAQ,KAAiD,CACxE,EACDH,EAAAA,IAAC,IAAA,CAAE,UAAU,8BAA+B,SAAA,EAAE,gBAAiB,CAAE,MAAO,gCAAA,CAAkC,CAAA,CAAE,CAAA,CAAA,CAC9G,CAAA,EACF,CAEJ,EAEMI,EAAU,CAAC,CAAE,MAAAC,EAAO,KAAAC,CAAA,IACxBP,OAAAQ,EAAAA,SAAA,CACE,SAAA,CAAAP,EAAAA,IAAC,KAAA,CAAG,UAAU,kCAAmC,SAAAK,EAAM,EACvDL,EAAAA,IAAC,IAAA,CAAE,UAAU,OAAQ,SAAAM,CAAA,CAAK,CAAA,EAC5B"}
1
+ {"version":3,"file":"Terms-C8NcE4sw.js","sources":["../../src/pages/Terms.jsx"],"sourcesContent":["import React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport StagingBadge from '../components/StagingBadge';\nimport SiteHeader from '../components/SiteHeader';\nimport usePageTitle from '../hooks/usePageTitle';\n\nconst Terms = () => {\n const { t } = useTranslation();\n usePageTitle('titles.terms');\n const sections = t('terms.sections', { returnObjects: true }) || [];\n\n return (\n <div className=\"min-h-screen bg-slate-50 text-slate-800\">\n <StagingBadge />\n <SiteHeader variant=\"light\" showX={false} />\n\n <main className=\"max-w-4xl mx-auto px-4 py-12\">\n <h1 className=\"text-3xl font-bold mb-6\">{t('terms.title')}</h1>\n <p className=\"mb-4\">{t('terms.intro')}</p>\n {sections.map((section) => (\n <Section key={section.title} title={section.title} body={section.body} />\n ))}\n <p className=\"mt-6 text-sm text-slate-600\">{t('terms.contact', { email: 'support@shimaumaservices.co.jp' })}</p>\n </main>\n </div>\n );\n};\n\r\nconst Section = ({ title, body }) => (\r\n <>\r\n <h2 className=\"text-xl font-semibold mt-6 mb-2\">{title}</h2>\r\n <p className=\"mb-3\">{body}</p>\r\n </>\r\n);\r\n\r\nexport default Terms;\r\n"],"names":["Terms","useTranslation","usePageTitle","sections","jsxs","jsx","StagingBadge","SiteHeader","section","Section","title","body","Fragment"],"mappings":"sJAMA,MAAMA,EAAQ,IAAM,CAClB,KAAM,CAAE,CAAA,EAAMC,EAAA,EACdC,EAAa,cAAc,EAC3B,MAAMC,EAAW,EAAE,iBAAkB,CAAE,cAAe,EAAA,CAAM,GAAK,CAAA,EAEjE,OACEC,EAAAA,KAAC,MAAA,CAAI,UAAU,0CACb,SAAA,CAAAC,EAAAA,IAACC,EAAA,EAAa,EACdD,EAAAA,IAACE,EAAA,CAAW,QAAQ,QAAQ,MAAO,GAAO,EAE1CH,EAAAA,KAAC,OAAA,CAAK,UAAU,+BACd,SAAA,CAAAC,MAAC,KAAA,CAAG,UAAU,0BAA2B,SAAA,EAAE,aAAa,EAAE,QACzD,IAAA,CAAE,UAAU,OAAQ,SAAA,EAAE,aAAa,EAAE,EACrCF,EAAS,IAAKK,SACZC,EAAA,CAA4B,MAAOD,EAAQ,MAAO,KAAMA,EAAQ,IAAA,EAAnDA,EAAQ,KAAiD,CACxE,EACDH,EAAAA,IAAC,IAAA,CAAE,UAAU,8BAA+B,SAAA,EAAE,gBAAiB,CAAE,MAAO,gCAAA,CAAkC,CAAA,CAAE,CAAA,CAAA,CAC9G,CAAA,EACF,CAEJ,EAEMI,EAAU,CAAC,CAAE,MAAAC,EAAO,KAAAC,CAAA,IACxBP,OAAAQ,EAAAA,SAAA,CACE,SAAA,CAAAP,EAAAA,IAAC,KAAA,CAAG,UAAU,kCAAmC,SAAAK,EAAM,EACvDL,EAAAA,IAAC,IAAA,CAAE,UAAU,OAAQ,SAAAM,CAAA,CAAK,CAAA,EAC5B"}
@@ -0,0 +1,2 @@
1
+ import{j as e}from"./index-Bffw9flM.js";import{C as p}from"./CopyButton-BZQEBHBq.js";import{C as b}from"./StickyMobileCta-C41cW-Ji.js";import{C as r}from"./chevron-down-DVRa-y8D.js";import{C as j}from"./copy-B9y2mtjd.js";const y=({title:l,preflightHref:i="/tools/agent-cli/#preflight",onPreflightClick:n,proUnlockTitle:x,proUnlockBody:t,proUnlockCmd:s,proUnlockNote:a,onProUnlockCopied:o,copyButtonLabel:m,codeToggleLabel:d="Show commands"})=>s?e.jsxs("details",{className:"max-w-xl mx-auto text-left bg-slate-900/50 border border-slate-800 rounded-2xl p-4 space-y-4",children:[e.jsxs("summary",{className:"flex items-center justify-between gap-3 cursor-pointer list-none",children:[e.jsx("span",{className:"text-xs font-semibold tracking-[0.12em] uppercase text-slate-300",children:l}),e.jsx(r,{size:14,className:"text-slate-500"})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsx(b,{compact:!0,href:i,onClick:n}),e.jsxs("div",{className:"rounded-2xl border border-slate-800 bg-slate-950/70 p-4 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}),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&&e.jsx("p",{className:"text-sm text-slate-300",children:t}),e.jsxs("details",{className:"group",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(r,{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/80 p-4",children:e.jsx("pre",{className:"text-xs text-slate-200 whitespace-pre-wrap",children:s})})]}),e.jsx(p,{value:s,onCopied:o,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:c})=>e.jsxs(e.Fragment,{children:[e.jsx(j,{size:14}),c||m]})}),a&&e.jsx("div",{className:"text-xs text-slate-500",children:a})]})]})]}):null;export{y as T};
2
+ //# sourceMappingURL=ToolGuardrailsPanel-DbjLhdX8.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToolGuardrailsPanel-DbjLhdX8.js","sources":["../../src/components/ToolGuardrailsPanel.jsx"],"sourcesContent":["import React from 'react';\nimport { ChevronDown, Copy } from 'lucide-react';\nimport CopyButton from './CopyButton';\nimport CliPreflightCard from './CliPreflightCard';\n\nconst ToolGuardrailsPanel = ({\n title,\n preflightHref = '/tools/agent-cli/#preflight',\n onPreflightClick,\n proUnlockTitle,\n proUnlockBody,\n proUnlockCmd,\n proUnlockNote,\n onProUnlockCopied,\n copyButtonLabel,\n codeToggleLabel = 'Show commands',\n}) => {\n if (!proUnlockCmd) return null;\n\n return (\n <details className=\"max-w-xl mx-auto text-left bg-slate-900/50 border border-slate-800 rounded-2xl p-4 space-y-4\">\n <summary className=\"flex items-center justify-between gap-3 cursor-pointer list-none\">\n <span className=\"text-xs font-semibold tracking-[0.12em] uppercase text-slate-300\">{title}</span>\n <ChevronDown size={14} className=\"text-slate-500\" />\n </summary>\n <div className=\"space-y-4\">\n <CliPreflightCard compact href={preflightHref} onClick={onPreflightClick} />\n <div className=\"rounded-2xl border border-slate-800 bg-slate-950/70 p-4 space-y-3\">\n <div className=\"flex items-center justify-between gap-3\">\n <div className=\"text-sm font-bold text-white\">{proUnlockTitle}</div>\n <span className=\"text-[10px] font-semibold tracking-[0.2em] text-amber-200 bg-amber-500/10 border border-amber-400/30 px-2 py-1 rounded-full\">\n PRO\n </span>\n </div>\n {proUnlockBody && <p className=\"text-sm text-slate-300\">{proUnlockBody}</p>}\n <details className=\"group\">\n <summary className=\"flex items-center justify-between text-[11px] font-semibold text-slate-400 cursor-pointer list-none\">\n <span>{codeToggleLabel}</span>\n <ChevronDown size={14} className=\"text-slate-500 transition-transform duration-200 group-open:rotate-180\" />\n </summary>\n <div className=\"mt-2 rounded-xl border border-slate-800 bg-slate-950/80 p-4\">\n <pre className=\"text-xs text-slate-200 whitespace-pre-wrap\">{proUnlockCmd}</pre>\n </div>\n </details>\n <CopyButton\n value={proUnlockCmd}\n onCopied={onProUnlockCopied}\n className=\"inline-flex items-center justify-center gap-2 px-4 py-2 rounded-lg border border-slate-700 bg-slate-950 text-slate-200 hover:bg-slate-900 transition text-sm font-semibold\"\n >\n {({ copyLabel }) => (\n <>\n <Copy size={14} />\n {copyLabel || copyButtonLabel}\n </>\n )}\n </CopyButton>\n {proUnlockNote && <div className=\"text-xs text-slate-500\">{proUnlockNote}</div>}\n </div>\n </div>\n </details>\n );\n};\n\nexport default ToolGuardrailsPanel;\n"],"names":["ToolGuardrailsPanel","title","preflightHref","onPreflightClick","proUnlockTitle","proUnlockBody","proUnlockCmd","proUnlockNote","onProUnlockCopied","copyButtonLabel","codeToggleLabel","jsxs","jsx","ChevronDown","CliPreflightCard","CopyButton","copyLabel","Fragment","Copy"],"mappings":"6NAKA,MAAMA,EAAsB,CAAC,CAC3B,MAAAC,EACA,cAAAC,EAAgB,8BAChB,iBAAAC,EACA,eAAAC,EACA,cAAAC,EACA,aAAAC,EACA,cAAAC,EACA,kBAAAC,EACA,gBAAAC,EACA,gBAAAC,EAAkB,eACpB,IACOJ,EAGHK,EAAAA,KAAC,UAAA,CAAQ,UAAU,+FACjB,SAAA,CAAAA,EAAAA,KAAC,UAAA,CAAQ,UAAU,mEACjB,SAAA,CAAAC,EAAAA,IAAC,OAAA,CAAK,UAAU,mEAAoE,SAAAX,EAAM,EAC1FW,EAAAA,IAACC,EAAA,CAAY,KAAM,GAAI,UAAU,gBAAA,CAAiB,CAAA,EACpD,EACAF,EAAAA,KAAC,MAAA,CAAI,UAAU,YACb,SAAA,CAAAC,MAACE,GAAiB,QAAO,GAAC,KAAMZ,EAAe,QAASC,EAAkB,EAC1EQ,EAAAA,KAAC,MAAA,CAAI,UAAU,oEACb,SAAA,CAAAA,EAAAA,KAAC,MAAA,CAAI,UAAU,0CACb,SAAA,CAAAC,EAAAA,IAAC,MAAA,CAAI,UAAU,+BAAgC,SAAAR,EAAe,EAC9DQ,EAAAA,IAAC,OAAA,CAAK,UAAU,8HAA8H,SAAA,KAAA,CAE9I,CAAA,EACF,EACCP,GAAiBO,EAAAA,IAAC,IAAA,CAAE,UAAU,yBAA0B,SAAAP,EAAc,EACvEM,EAAAA,KAAC,UAAA,CAAQ,UAAU,QACjB,SAAA,CAAAA,EAAAA,KAAC,UAAA,CAAQ,UAAU,sGACjB,SAAA,CAAAC,EAAAA,IAAC,QAAM,SAAAF,CAAA,CAAgB,EACvBE,EAAAA,IAACC,EAAA,CAAY,KAAM,GAAI,UAAU,wEAAA,CAAyE,CAAA,EAC5G,EACAD,EAAAA,IAAC,OAAI,UAAU,8DACb,eAAC,MAAA,CAAI,UAAU,6CAA8C,SAAAN,CAAA,CAAa,CAAA,CAC5E,CAAA,EACF,EACAM,EAAAA,IAACG,EAAA,CACC,MAAOT,EACP,SAAUE,EACV,UAAU,6KAET,SAAA,CAAC,CAAE,UAAAQ,CAAA,IACFL,EAAAA,KAAAM,EAAAA,SAAA,CACE,SAAA,CAAAL,EAAAA,IAACM,EAAA,CAAK,KAAM,EAAA,CAAI,EACfF,GAAaP,CAAA,CAAA,CAChB,CAAA,CAAA,EAGHF,GAAiBK,EAAAA,IAAC,MAAA,CAAI,UAAU,yBAA0B,SAAAL,CAAA,CAAc,CAAA,CAAA,CAC3E,CAAA,CAAA,CACF,CAAA,EACF,EA1CwB"}
@@ -0,0 +1,6 @@
1
+ import{u as F,r as U,t as o,j as e,b as a}from"./index-Bffw9flM.js";import{C as O,S as R}from"./StickyMobileCta-C41cW-Ji.js";import{A as i,C as h}from"./CopyButton-BZQEBHBq.js";import{F as H}from"./FitPanel-DzYzTMEi.js";import{c as f,a as D,S as E}from"./LanguageSwitcher-CfUhVVuT.js";import{S as M}from"./SiteHeader-BGQW06JF.js";import{T as G}from"./ToolGuardrailsPanel-DbjLhdX8.js";import{T as u}from"./terminal-CT_KE008.js";import{R as y}from"./rocket-d1Ntm8ge.js";import{C}from"./calculator-_D64kDDH.js";import{L as b}from"./layout-grid-DbSzm5KY.js";import{S as k}from"./shield-check-DXqKmrPT.js";import{C as j}from"./circle-check-reAyVfkP.js";import{C as _}from"./clipboard-copy-BfB1mutp.js";import"./chevron-down-DVRa-y8D.js";import"./copy-B9y2mtjd.js";const $=[["rect",{width:"8",height:"4",x:"8",y:"2",rx:"1",ry:"1",key:"tgr4d6"}],["path",{d:"M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2",key:"116196"}],["path",{d:"M12 11h4",key:"1jrz19"}],["path",{d:"M12 16h4",key:"n85exb"}],["path",{d:"M8 11h.01",key:"1dfujw"}],["path",{d:"M8 16h.01",key:"18s6g9"}]],w=f("clipboard-list",$);const V=[["path",{d:"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z",key:"1kt360"}]],v=f("folder",V);const Z=[["path",{d:"M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z",key:"1ngwbx"}]],K=f("wrench",Z),J=n=>(n||"").split("-")[0]==="ja"?"ja":"en",N={en:{badge:"Start here",title:"Clarify screenshot messaging first, then scale reruns",subtitle:"Keep your existing design workflow and visual style. Start with an outcome-first first export, then add templates, checklists, and CI guardrails so each release is a rerun, not a rebuild.",useCases:["First screenshot is unclear (what outcome / for whom)","Headline sounds generic (could fit many apps)","Manual Figma/Canva rework","Release-time path/order drift","Fastlane/CI reliability","App Review / ASO constraints"],quickPathTitle:"Fastest low-friction path (no tool switch)",quickPathBullets:["Keep your current Figma/Canva template.","Lock panel #1 to one concrete outcome.","Start iPhone-first with 5 panels and 01..05 filenames."],quickPathPrimary:"Start 5-minute first export",quickPathSecondary:"Open 5-panel framework",demoTitle:"Run a demo export (no assets required)",demoBody:"If you want to sanity-check the output roots first, run the demo. It creates a throwaway project and stages a clean upload tree.",demoCmd:"npx --yes shipscreens demo",demoBullets:["Output tree: fastlane/ + reproducible ZIP","Stages a clean upload root (deliver/supply-safe)","Delete the demo folder anytime"],demoNote:"First run may take longer while npx downloads the package.",heroCliTitle:"CLI quickstart (2 steps)",heroCliNote:"wizard → build (raw mode, no Playwright).",heroCliSummary:"Outputs: fastlane/ + reproducible ZIP (local/CI) with verify/stage guardrails.",heroCliCopyLabel:"Copy all commands",heroCliProLabel:"Then unlock Pro:",heroCliProCmd:"npx --yes shipscreens auth login",heroCliTemplatesLabel:"Starter templates",heroCliConfigLabel:"config.yml",heroCliCsvLabel:"copy.csv",heroCliCmd:["npx --yes shipscreens wizard","npx --yes shipscreens build --mode raw --zip --out out/agent"].join(`
2
+ `),noLogin:"No login required · Free tools",trustNote:"Privacy-first: screenshots stay on your device; ShipScreens prepares upload-ready outputs.",cards:[{key:"agent_cli",icon:u,title:"Agent + CLI Quickstart",desc:"CLI-first: scaffold config + placeholders, replace PNGs, then run build/verify/stage for deterministic reruns in local/CI.",href:"/tools/agent-cli/",cta:"Open the Agent + CLI guide"},{key:"first_export",icon:y,title:"5-minute First Export",desc:"Preview-before-pay: keep your design style, validate an outcome-first panel flow, and export a watermarked Fastlane-ready bundle.",href:"/tools/first-export/",cta:"Start the 5-minute export"},{key:"calculator",icon:C,title:"Screenshot Workload Calculator",desc:"See the real image count from devices x locales, and grab a CSV copy template.",href:"/tools/screenshot-workload-calculator/",cta:"Calculate workload"},{key:"fastlane_screenshots",icon:v,title:"Fastlane Screenshot Folder Structure",desc:"Copy/paste deliver + supply paths, then prevent ordering/path drift with reproducible exports in CI.",href:"/tools/fastlane-screenshots/",cta:"Copy the Fastlane paths"},{key:"framework",icon:b,title:"5-panel Screenshot Framework",desc:"A narrative script that keeps panel #1 concrete (outcome first) while preserving your own visual style.",href:"/tools/5-panel-screenshot-framework/",cta:"Download the framework"},{key:"pipeline",icon:w,title:"Store Assets Pipeline Kit",desc:"Safe-area guide, size buckets, and capture checklist for iPad 13-inch + App Review/ASO constraints before upload.",href:"/tools/store-assets-pipeline/",cta:"Get the safe-area guide"},{key:"app_review_aso",icon:k,title:"App Review + ASO Quick Check",desc:"A short pre-upload checklist for clarity, policy-safe claims, and store-safe screenshots.",href:"/tools/app-review-aso/",cta:"Open the quick check"}],primaryCta:"Get outcome-first export (5 min)",secondaryCta:"Open Agent + CLI quickstart",cliTitle:"No browser? CLI quickstart",cliDesc:"Run a local export in raw mode, then add verify/stage to keep upload roots clean.",cliCmd:["npx --yes shipscreens wizard","# replace assets/en-US/01.png..05.png","npx --yes shipscreens build --mode raw --zip --out out/agent"].join(`
3
+ `),cliCta:"Open Agent + CLI quickstart",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.",partnerTitle:"15-min first export review",partnerBody:"In 15 minutes, we map your current flow to a repeatable pipeline and return concrete next steps.",partnerEmailCta:"Get a 15-min review",partnerDmCta:"DM for a 15-min review",partnerJump:"Get a 15-min first-export review",advancedTitle:"Advanced: CLI + guardrails",advancedBody:"Use this when you need deterministic reruns in CI (not required for your first outcome-focused export)."},ja:{badge:"まずここから",title:"まず訴求を明確化して初回出力、その後に運用を拡張",subtitle:"既存のデザイン運用と見た目はそのままに、まず「1枚目で成果が伝わる」初回出力を通す。次にテンプレ/チェックリスト/CIガードレールを足して、毎リリースを「作り直し」ではなく「再実行」にする。",useCases:["1枚目で何が得られるか伝わらない","見出しが汎用的で、他の多くのアプリにも当てはまってしまう","Figma/Canvaの手戻り","リリース時の順序/パス崩れ","Fastlane/CIの安定運用","App Review / ASO 制約"],quickPathTitle:"最短の軽量導線(ツール切替なし)",quickPathBullets:["既存のFigma/Canvaテンプレをそのまま使う。","1枚目は成果訴求を1つに固定する。","まずはiPhone-first + 5枚 + 01..05命名で回す。"],quickPathPrimary:"5分で初回エクスポート",quickPathSecondary:"5枚構成を見る",demoTitle:"デモを書き出す(素材不要)",demoBody:"まずフォルダ構成と再現性ZIPだけ確認したい場合はデモが最短です。捨てプロジェクトを生成し、クリーンな提出ルートまで stage します。",demoCmd:"npx --yes shipscreens demo",demoBullets:["出力: fastlane/ + 再現性ZIP","提出用のクリーンなルートを stage","デモは削除してOK"],demoNote:"初回は npx がパッケージを取得するため時間がかかる場合があります。",heroCliTitle:"CLIクイックスタート(2ステップ)",heroCliNote:"wizard → build(raw / Playwright不要)。",heroCliSummary:"出力: fastlane/ + 再現性ZIP(ローカル/CI)+ verify/stage ガードレール。",heroCliCopyLabel:"コマンドをすべてコピー",heroCliProLabel:"次にProを解除:",heroCliProCmd:"npx --yes shipscreens auth login",heroCliTemplatesLabel:"スターター雛形",heroCliConfigLabel:"config.yml",heroCliCsvLabel:"copy.csv",heroCliCmd:["npx --yes shipscreens wizard","npx --yes shipscreens build --mode raw --zip --out out/agent"].join(`
4
+ `),noLogin:"ログイン不要 / 無料ツール",trustNote:"プライバシー: スクショはローカル保持。ShipScreensはアップロード前の出力整形に集中。",cards:[{key:"agent_cli",icon:u,title:"Agent + CLI クイックスタート",desc:"CLI-first: wizardで雛形作成 → PNG差し替え → build/verify/stage でローカル/CIを決定的に再実行。",href:"/tools/agent-cli/",cta:"Agent + CLI を見る"},{key:"first_export",icon:y,title:"5分で初回エクスポート",desc:"preview-before-pay: 既存の見た目を維持したまま、成果訴求の5枚構成を確認してFastlane-readyを出力。",href:"/tools/first-export/",cta:"5分で出す"},{key:"calculator",icon:C,title:"スクショ作業量 計算ツール",desc:"端末x言語から合計枚数と手作業工数を見積もり、CSVテンプレもDLできます。",href:"/tools/screenshot-workload-calculator/",cta:"作業量を計算する"},{key:"fastlane_screenshots",icon:v,title:"Fastlane スクショ フォルダ構成",desc:"deliver/supply のパスを固定し、順序/命名ドリフトを抑えてCIで再現。",href:"/tools/fastlane-screenshots/",cta:"パスをコピーする"},{key:"framework",icon:b,title:"5枚構成 スクショフレームワーク",desc:"見た目は自由のまま、訴求順だけ固定する5枚構成(Hook→Problem→Proof→How→CTA)。",href:"/tools/5-panel-screenshot-framework/",cta:"フレームワークをDL"},{key:"pipeline",icon:w,title:"ストア素材パイプラインキット",desc:"iPad 13-inch 実スクショ、サイズバケット、Play安全域 + App Review/ASO 制約を提出前に確認。",href:"/tools/store-assets-pipeline/",cta:"安全域ガイドを見る"},{key:"app_review_aso",icon:k,title:"App Review / ASO クイックチェック",desc:"提出前のミニチェック(伝わり方/ポリシー/安全域)。",href:"/tools/app-review-aso/",cta:"クイックチェックを見る"}],primaryCta:"成果訴求を固めて出力(5分)",secondaryCta:"Agent + CLI を開く",cliTitle:"ブラウザ不要のCLI最短",cliDesc:"raw モードでローカル出力し、verify/stage を足してアップロードルートを安定化。",cliCmd:["npx --yes shipscreens wizard","# assets/en-US/01.png〜05.png を差し替え","npx --yes shipscreens build --mode raw --zip --out out/agent"].join(`
5
+ `),cliCta:"Agent + CLI を開く",proUnlockTitle:"Proを解除(CLI)",proUnlockBody:"透かし解除&フル一括(端末×言語)のために、まずはCLI認証を実行:",proUnlockCmd:"npx --yes shipscreens auth login",proUnlockNote:"初回のみブラウザでサインインします。以後は --require-pro で再実行。",partnerTitle:"初回エクスポート15分レビュー",partnerBody:"15分で現状フローを確認し、再実行できる運用へ進める具体的な次アクションを返します。",partnerEmailCta:"15分レビューを依頼",partnerDmCta:"Xで15分レビュー相談",partnerJump:"初回エクスポート15分レビューを依頼",advancedTitle:"詳細: CLI + ガードレール",advancedBody:"CIで決定的に再実行したいときに使います(初回の成果訴求確認では必須ではありません)。"}},xe=()=>{const{i18n:n,t:d}=F(),l=J(n.resolvedLanguage||n.language),s=N[l]||N.en,p="support@shimaumaservices.co.jp",P=l==="ja"?"ShipScreens 初回エクスポートレビュー希望":"ShipScreens first export review",L=l==="ja"?["ShipScreens チーム様","","初回エクスポートの15分レビューを希望します。","","- アプリ名 / URL:","- 現在のスクショ作業フロー:","- 端末数 / 言語数:","","よろしくお願いします。"].join("\\n"):["Hi ShipScreens team,","","I'd like a 15-min first-export review.","","- App name / link:","- Current screenshot workflow:","- #devices / #locales:","","Thanks!"].join("\\n"),S=`mailto:${p}?subject=${encodeURIComponent(P)}&body=${encodeURIComponent(L)}`,I="/app/?sample=5panel&entry_source=tools_index_open_app_header",T="/tools/agent-cli/",x="/tools/first-export/?entry_source=tools_index_first_export",A="/downloads/shipscreens-agent-cli-config.yml",z="/downloads/shipscreens-agent-cli-copy.csv",c=d("common.copy",{defaultValue:"Copy"}),g=new Set(["first_export","agent_cli"]),q=s.cards.filter(t=>g.has(t.key)),B=s.cards.filter(t=>!g.has(t.key));return D("titles.tools",{defaultValue:s.title}),U.useEffect(()=>{o("tool_view",{tool:"tools_index"})},[]),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(E,{}),e.jsx(M,{variant:"dark",active:"tools",openAppHref:I,onToolsClick:t=>a(t,"tool_cta_click",{tool:"tools_index",cta:"open_tools_header"}),onPricingClick:t=>a(t,"tool_cta_click",{tool:"tools_index",cta:"pricing_header"}),onOpenAppClick:t=>a(t,"tool_cta_click",{tool:"tools_index",cta:"open_app_header"}),primaryCta:{href:x,label:e.jsxs("span",{className:"inline-flex items-center gap-2",children:[s.primaryCta," ",e.jsx(i,{size:16})]}),onClick:t=>a(t,"tool_cta_click",{tool:"tools_index",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.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(K,{size:14}),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}),s.useCases?.length>0&&e.jsx("div",{className:"flex flex-wrap justify-center gap-2 text-xs text-slate-400",children:s.useCases.map(t=>e.jsx("span",{className:"px-3 py-1 rounded-full border border-slate-800 bg-slate-900/60",children:t},t))}),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.quickPathTitle}),e.jsx("ul",{className:"space-y-1 text-xs text-slate-300",children:s.quickPathBullets.map(t=>e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx(j,{size:14,className:"mt-0.5 text-green-400 shrink-0"}),e.jsx("span",{children:t})]},t))}),e.jsxs("div",{className:"flex flex-col sm:flex-row gap-2 pt-1",children:[e.jsxs("a",{href:x,onClick:t=>a(t,"tool_cta_click",{tool:"tools_index",cta:"open_first_export_quick_path"}),className:"inline-flex items-center justify-center gap-2 px-3 py-2 rounded-lg bg-blue-500 text-white hover:bg-blue-600 transition text-xs font-semibold",children:[s.quickPathPrimary," ",e.jsx(i,{size:14})]}),e.jsxs("a",{href:"/tools/5-panel-screenshot-framework/",onClick:t=>a(t,"tool_cta_click",{tool:"tools_index",cta:"open_five_panel_quick_path"}),className:"inline-flex items-center justify-center gap-2 px-3 py-2 rounded-lg border border-slate-700 bg-slate-950 text-slate-200 hover:bg-slate-900 transition text-xs font-semibold",children:[s.quickPathSecondary," ",e.jsx(i,{size:14})]})]})]})]}),e.jsxs("section",{className:"space-y-4",children:[e.jsx("div",{className:"text-xs uppercase tracking-[0.2em] text-slate-500 font-semibold text-center",children:l==="ja"?"まずここから":"Start here"}),e.jsx("div",{className:"grid md:grid-cols-2 gap-6",children:q.map(t=>{const r=t.icon;return e.jsxs("div",{className:"bg-slate-900/70 border border-slate-700 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-700 bg-slate-950 flex items-center justify-center",children:e.jsx(r,{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.desc}),e.jsxs("a",{href:t.href,onClick:m=>a(m,"tool_cta_click",{tool:"tools_index",cta:`open_${t.key}`}),className:"inline-flex items-center justify-center gap-2 px-4 py-3 rounded-xl bg-blue-500 text-white font-bold hover:bg-blue-600 transition w-full",children:[t.cta," ",e.jsx(i,{size:16})]})]},t.key)})})]}),e.jsx(H,{className:"max-w-4xl mx-auto w-full"}),e.jsx("section",{className:"grid md:grid-cols-2 lg:grid-cols-4 gap-4",children:B.map(t=>{const r=t.icon;return e.jsxs("div",{className:"bg-slate-900/50 border border-slate-800 rounded-2xl p-5 space-y-3",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"w-9 h-9 rounded-xl border border-slate-800 bg-slate-950 flex items-center justify-center",children:e.jsx(r,{size:16,className:"text-slate-200"})}),e.jsx("div",{className:"text-sm font-bold text-white",children:t.title})]}),e.jsx("p",{className:"text-xs text-slate-300 leading-relaxed",children:t.desc}),e.jsxs("a",{href:t.href,onClick:m=>a(m,"tool_cta_click",{tool:"tools_index",cta:`open_${t.key}`}),className:"inline-flex items-center justify-center gap-2 px-3 py-2 rounded-lg border border-slate-700 bg-slate-950 text-slate-200 font-semibold text-xs hover:bg-slate-900 transition w-full",children:[t.cta," ",e.jsx(i,{size:14})]})]},t.key)})}),e.jsx("section",{className:"max-w-3xl mx-auto",children:e.jsxs("details",{className:"bg-slate-900/60 border border-slate-800 rounded-2xl p-5 group",children:[e.jsxs("summary",{className:"flex items-center justify-between text-sm font-bold text-white cursor-pointer list-none",children:[e.jsx("span",{children:s.advancedTitle}),e.jsx("span",{className:"text-[10px] font-semibold tracking-[0.2em] text-slate-400",children:l==="ja"?"任意":"OPTIONAL"})]}),e.jsxs("div",{className:"mt-3 space-y-4",children:[e.jsx("p",{className:"text-sm text-slate-300",children:s.advancedBody}),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("div",{className:"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.jsx("div",{className:"flex flex-col sm:flex-row gap-2",children:e.jsx(h,{value:s.heroCliCmd,onCopied:()=>o("tool_cta_click",{tool:"tools_index",cta:"copy_cli_hero"}),className:"inline-flex items-center justify-center gap-2 px-3 py-2 rounded-lg border border-slate-700 bg-slate-950 text-slate-200 hover:bg-slate-900 transition text-xs font-semibold",children:({copyLabel:t,copyState:r})=>e.jsxs(e.Fragment,{children:[e.jsx(_,{size:14}),r==="idle"?s.heroCliCopyLabel:t||c]})})}),s.heroCliProCmd&&e.jsxs("div",{className:"flex flex-wrap items-center gap-3 text-xs text-slate-400",children:[s.heroCliProLabel&&e.jsx("span",{children:s.heroCliProLabel}),e.jsxs("div",{className:"inline-flex items-center gap-2 px-2 py-1 rounded-md border border-slate-800 bg-slate-950 text-slate-200",children:[e.jsx("code",{children:s.heroCliProCmd}),e.jsx(h,{value:s.heroCliProCmd,onCopied:()=>o("tool_cta_click",{tool:"tools_index",cta:"copy_cli_pro_unlock_hero"}),className:"text-[11px] px-2 py-0.5 rounded-md border border-slate-700 bg-slate-900/60 text-slate-200 hover:bg-slate-900 transition"})]})]}),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:A,download:!0,onClick:()=>o("tool_download",{tool:"tools_index",asset:"config_template"}),className:"inline-flex items-center justify-center gap-2 px-2.5 py-1.5 rounded-md border border-slate-700 bg-slate-950 text-[11px] text-slate-200 hover:bg-slate-900 transition",children:s.heroCliConfigLabel}),e.jsx("a",{href:z,download:!0,onClick:()=>o("tool_download",{tool:"tools_index",asset:"copy_template"}),className:"inline-flex items-center justify-center gap-2 px-2.5 py-1.5 rounded-md border border-slate-700 bg-slate-950 text-[11px] text-slate-200 hover:bg-slate-900 transition",children:s.heroCliCsvLabel})]})]})]}),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.jsxs("div",{className:"flex items-center gap-2 text-[11px] uppercase tracking-[0.2em] text-slate-500 font-semibold",children:[e.jsx(u,{size:14,className:"text-blue-300"}),s.demoTitle]}),e.jsx("p",{className:"text-xs text-slate-400",children:s.demoBody}),e.jsx("div",{className:"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.demoCmd})}),e.jsx("div",{className:"flex flex-col sm:flex-row gap-2",children:e.jsx(h,{value:s.demoCmd,onCopied:()=>o("tool_cta_click",{tool:"tools_index",cta:"copy_demo_cmd"}),className:"inline-flex items-center justify-center gap-2 px-3 py-2 rounded-lg border border-slate-700 bg-slate-950 text-slate-200 hover:bg-slate-900 transition text-xs font-semibold",children:({copyLabel:t,copyState:r})=>e.jsxs(e.Fragment,{children:[e.jsx(_,{size:14}),r==="idle"?c:t||c]})})}),s.demoBullets?.length>0&&e.jsx("ul",{className:"space-y-1 text-xs text-slate-300 pt-1",children:s.demoBullets.map(t=>e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx(j,{size:14,className:"mt-0.5 text-green-400 shrink-0"}),e.jsx("span",{children:t})]},t))}),s.demoNote&&e.jsx("div",{className:"text-[11px] text-slate-500",children:s.demoNote})]}),e.jsx(G,{title:l==="ja"?"詳細: CLIガードレール + Pro解除":"Advanced: CLI guardrails + Pro unlock",copyButtonLabel:c,codeToggleLabel:d("common.showCommands",{defaultValue:"Show commands"}),preflightHref:"/tools/agent-cli/#preflight",onPreflightClick:t=>a(t,"tool_cta_click",{tool:"tools_index",cta:"open_cli_preflight"}),proUnlockTitle:s.proUnlockTitle,proUnlockBody:s.proUnlockBody,proUnlockCmd:s.proUnlockCmd,proUnlockNote:s.proUnlockNote,onProUnlockCopied:()=>o("tool_cta_click",{tool:"tools_index",cta:"copy_cli_pro_unlock"})}),e.jsx(O,{compact:!0,href:"/tools/agent-cli/#preflight",onClick:t=>a(t,"tool_cta_click",{tool:"tools_index",cta:"open_cli_preflight_card"}),className:"max-w-xl mx-auto"})]})]})}),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:s.partnerTitle}),e.jsx("div",{className:"text-sm text-slate-300 leading-relaxed",children:s.partnerBody}),e.jsxs("div",{className:"flex flex-col sm:flex-row gap-3",children:[e.jsxs("a",{href:S,onClick:()=>o("tool_cta_click",{tool:"tools_index",cta:"email_design_partner"}),className:"flex-1 inline-flex items-center justify-center gap-2 px-4 py-3 rounded-xl bg-blue-500 text-white font-bold hover:bg-blue-600 transition",children:[s.partnerEmailCta," ",e.jsx(i,{size:16})]}),e.jsx("a",{href:"https://x.com/shipscreenscom",target:"_blank",rel:"noopener noreferrer",onClick:()=>o("tool_cta_click",{tool:"tools_index",cta:"dm_design_partner"}),className:"flex-1 inline-flex items-center justify-center gap-2 px-4 py-3 rounded-xl border border-slate-700 bg-slate-950 text-slate-200 hover:bg-slate-900 transition",children:s.partnerDmCta})]}),e.jsxs("div",{className:"text-xs text-slate-500",children:[l==="ja"?"メール: ":"Email: ",e.jsx("a",{href:`mailto:${p}`,className:"underline underline-offset-4 hover:text-white",children:p})]})]})]}),e.jsx(R,{note:s.noLogin,primary:{label:s.primaryCta,href:x,onClick:t=>a(t,"tool_cta_click",{tool:"tools_index",cta:"sticky_first_export"})},secondary:{label:s.secondaryCta,href:T,onClick:t=>a(t,"tool_cta_click",{tool:"tools_index",cta:"sticky_agent_cli"})}})]})};export{xe as default};
6
+ //# sourceMappingURL=ToolsIndex-BuZSvoBC.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToolsIndex-BuZSvoBC.js","sources":["../../node_modules/lucide-react/dist/esm/icons/clipboard-list.js","../../node_modules/lucide-react/dist/esm/icons/folder.js","../../node_modules/lucide-react/dist/esm/icons/wrench.js","../../src/pages/ToolsIndex.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 [\"rect\", { width: \"8\", height: \"4\", x: \"8\", y: \"2\", rx: \"1\", ry: \"1\", key: \"tgr4d6\" }],\n [\n \"path\",\n {\n d: \"M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2\",\n key: \"116196\"\n }\n ],\n [\"path\", { d: \"M12 11h4\", key: \"1jrz19\" }],\n [\"path\", { d: \"M12 16h4\", key: \"n85exb\" }],\n [\"path\", { d: \"M8 11h.01\", key: \"1dfujw\" }],\n [\"path\", { d: \"M8 16h.01\", key: \"18s6g9\" }]\n];\nconst ClipboardList = createLucideIcon(\"clipboard-list\", __iconNode);\n\nexport { __iconNode, ClipboardList as default };\n//# sourceMappingURL=clipboard-list.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: \"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z\",\n key: \"1kt360\"\n }\n ]\n];\nconst Folder = createLucideIcon(\"folder\", __iconNode);\n\nexport { __iconNode, Folder as default };\n//# sourceMappingURL=folder.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: \"M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z\",\n key: \"1ngwbx\"\n }\n ]\n];\nconst Wrench = createLucideIcon(\"wrench\", __iconNode);\n\nexport { __iconNode, Wrench as default };\n//# sourceMappingURL=wrench.js.map\n","import React, { useEffect } from 'react';\nimport { ArrowRight, Calculator, CheckCircle2, ClipboardCopy, ClipboardList, Folder, LayoutGrid, Rocket, ShieldCheck, Terminal, Wrench } from 'lucide-react';\nimport { useTranslation } from 'react-i18next';\nimport CliPreflightCard from '../components/CliPreflightCard';\nimport CopyButton from '../components/CopyButton';\nimport FitPanel from '../components/FitPanel';\nimport StagingBadge from '../components/StagingBadge';\nimport StickyMobileCta from '../components/StickyMobileCta';\nimport SiteHeader from '../components/SiteHeader';\nimport ToolGuardrailsPanel from '../components/ToolGuardrailsPanel';\nimport usePageTitle from '../hooks/usePageTitle';\nimport { trackEvent, trackEventAndFollowLink } from '../lib/analytics';\n\nconst normalizeLang = (lang) => {\n const base = (lang || '').split('-')[0];\n return base === 'ja' ? 'ja' : 'en';\n};\n\nconst COPY = {\n en: {\n badge: 'Start here',\n title: 'Clarify screenshot messaging first, then scale reruns',\n subtitle:\n 'Keep your existing design workflow and visual style. Start with an outcome-first first export, then add templates, checklists, and CI guardrails so each release is a rerun, not a rebuild.',\n useCases: [\n 'First screenshot is unclear (what outcome / for whom)',\n 'Headline sounds generic (could fit many apps)',\n 'Manual Figma/Canva rework',\n 'Release-time path/order drift',\n 'Fastlane/CI reliability',\n 'App Review / ASO constraints',\n ],\n quickPathTitle: 'Fastest low-friction path (no tool switch)',\n quickPathBullets: [\n 'Keep your current Figma/Canva template.',\n 'Lock panel #1 to one concrete outcome.',\n 'Start iPhone-first with 5 panels and 01..05 filenames.',\n ],\n quickPathPrimary: 'Start 5-minute first export',\n quickPathSecondary: 'Open 5-panel framework',\n demoTitle: 'Run a demo export (no assets required)',\n demoBody:\n 'If you want to sanity-check the output roots first, run the demo. It creates a throwaway project and stages a clean upload tree.',\n demoCmd: 'npx --yes shipscreens demo',\n demoBullets: ['Output tree: fastlane/ + reproducible ZIP', 'Stages a clean upload root (deliver/supply-safe)', 'Delete the demo folder anytime'],\n demoNote: 'First run may take longer while npx downloads the package.',\n heroCliTitle: 'CLI quickstart (2 steps)',\n heroCliNote: 'wizard → build (raw mode, no Playwright).',\n heroCliSummary: 'Outputs: fastlane/ + reproducible ZIP (local/CI) with verify/stage guardrails.',\n heroCliCopyLabel: 'Copy all commands',\n heroCliProLabel: 'Then unlock Pro:',\n heroCliProCmd: 'npx --yes shipscreens auth login',\n heroCliTemplatesLabel: 'Starter templates',\n heroCliConfigLabel: 'config.yml',\n heroCliCsvLabel: 'copy.csv',\n heroCliCmd: [\n 'npx --yes shipscreens wizard',\n 'npx --yes shipscreens build --mode raw --zip --out out/agent',\n ].join('\\n'),\n noLogin: 'No login required · Free tools',\n trustNote: 'Privacy-first: screenshots stay on your device; ShipScreens prepares upload-ready outputs.',\n cards: [\n {\n key: 'agent_cli',\n icon: Terminal,\n title: 'Agent + CLI Quickstart',\n desc: 'CLI-first: scaffold config + placeholders, replace PNGs, then run build/verify/stage for deterministic reruns in local/CI.',\n href: '/tools/agent-cli/',\n cta: 'Open the Agent + CLI guide',\n },\n {\n key: 'first_export',\n icon: Rocket,\n title: '5-minute First Export',\n desc: 'Preview-before-pay: keep your design style, validate an outcome-first panel flow, and export a watermarked Fastlane-ready bundle.',\n href: '/tools/first-export/',\n cta: 'Start the 5-minute export',\n },\n {\n key: 'calculator',\n icon: Calculator,\n title: 'Screenshot Workload Calculator',\n desc: 'See the real image count from devices x locales, and grab a CSV copy template.',\n href: '/tools/screenshot-workload-calculator/',\n cta: 'Calculate workload',\n },\n {\n key: 'fastlane_screenshots',\n icon: Folder,\n title: 'Fastlane Screenshot Folder Structure',\n desc: 'Copy/paste deliver + supply paths, then prevent ordering/path drift with reproducible exports in CI.',\n href: '/tools/fastlane-screenshots/',\n cta: 'Copy the Fastlane paths',\n },\n {\n key: 'framework',\n icon: LayoutGrid,\n title: '5-panel Screenshot Framework',\n desc: 'A narrative script that keeps panel #1 concrete (outcome first) while preserving your own visual style.',\n href: '/tools/5-panel-screenshot-framework/',\n cta: 'Download the framework',\n },\n {\n key: 'pipeline',\n icon: ClipboardList,\n title: 'Store Assets Pipeline Kit',\n desc: 'Safe-area guide, size buckets, and capture checklist for iPad 13-inch + App Review/ASO constraints before upload.',\n href: '/tools/store-assets-pipeline/',\n cta: 'Get the safe-area guide',\n },\n {\n key: 'app_review_aso',\n icon: ShieldCheck,\n title: 'App Review + ASO Quick Check',\n desc: 'A short pre-upload checklist for clarity, policy-safe claims, and store-safe screenshots.',\n href: '/tools/app-review-aso/',\n cta: 'Open the quick check',\n },\n ],\n primaryCta: 'Get outcome-first export (5 min)',\n secondaryCta: 'Open Agent + CLI quickstart',\n cliTitle: 'No browser? CLI quickstart',\n cliDesc: 'Run a local export in raw mode, then add verify/stage to keep upload roots clean.',\n cliCmd: [\n 'npx --yes shipscreens wizard',\n '# replace assets/en-US/01.png..05.png',\n 'npx --yes shipscreens build --mode raw --zip --out out/agent',\n ].join('\\n'),\n cliCta: 'Open Agent + CLI quickstart',\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 partnerTitle: '15-min first export review',\n partnerBody:\n 'In 15 minutes, we map your current flow to a repeatable pipeline and return concrete next steps.',\n partnerEmailCta: 'Get a 15-min review',\n partnerDmCta: 'DM for a 15-min review',\n partnerJump: 'Get a 15-min first-export review',\n advancedTitle: 'Advanced: CLI + guardrails',\n advancedBody: 'Use this when you need deterministic reruns in CI (not required for your first outcome-focused export).',\n },\n ja: {\n badge: 'まずここから',\n title: 'まず訴求を明確化して初回出力、その後に運用を拡張',\n subtitle:\n '既存のデザイン運用と見た目はそのままに、まず「1枚目で成果が伝わる」初回出力を通す。次にテンプレ/チェックリスト/CIガードレールを足して、毎リリースを「作り直し」ではなく「再実行」にする。',\n useCases: [\n '1枚目で何が得られるか伝わらない',\n '見出しが汎用的で、他の多くのアプリにも当てはまってしまう',\n 'Figma/Canvaの手戻り',\n 'リリース時の順序/パス崩れ',\n 'Fastlane/CIの安定運用',\n 'App Review / ASO 制約',\n ],\n quickPathTitle: '最短の軽量導線(ツール切替なし)',\n quickPathBullets: [\n '既存のFigma/Canvaテンプレをそのまま使う。',\n '1枚目は成果訴求を1つに固定する。',\n 'まずはiPhone-first + 5枚 + 01..05命名で回す。',\n ],\n quickPathPrimary: '5分で初回エクスポート',\n quickPathSecondary: '5枚構成を見る',\n demoTitle: 'デモを書き出す(素材不要)',\n demoBody:\n 'まずフォルダ構成と再現性ZIPだけ確認したい場合はデモが最短です。捨てプロジェクトを生成し、クリーンな提出ルートまで stage します。',\n demoCmd: 'npx --yes shipscreens demo',\n demoBullets: ['出力: fastlane/ + 再現性ZIP', '提出用のクリーンなルートを stage', 'デモは削除してOK'],\n demoNote: '初回は npx がパッケージを取得するため時間がかかる場合があります。',\n heroCliTitle: 'CLIクイックスタート(2ステップ)',\n heroCliNote: 'wizard → build(raw / Playwright不要)。',\n heroCliSummary: '出力: fastlane/ + 再現性ZIP(ローカル/CI)+ verify/stage ガードレール。',\n heroCliCopyLabel: 'コマンドをすべてコピー',\n heroCliProLabel: '次にProを解除:',\n heroCliProCmd: 'npx --yes shipscreens auth login',\n heroCliTemplatesLabel: 'スターター雛形',\n heroCliConfigLabel: 'config.yml',\n heroCliCsvLabel: 'copy.csv',\n heroCliCmd: [\n 'npx --yes shipscreens wizard',\n 'npx --yes shipscreens build --mode raw --zip --out out/agent',\n ].join('\\n'),\n noLogin: 'ログイン不要 / 無料ツール',\n trustNote: 'プライバシー: スクショはローカル保持。ShipScreensはアップロード前の出力整形に集中。',\n cards: [\n {\n key: 'agent_cli',\n icon: Terminal,\n title: 'Agent + CLI クイックスタート',\n desc: 'CLI-first: wizardで雛形作成 → PNG差し替え → build/verify/stage でローカル/CIを決定的に再実行。',\n href: '/tools/agent-cli/',\n cta: 'Agent + CLI を見る',\n },\n {\n key: 'first_export',\n icon: Rocket,\n title: '5分で初回エクスポート',\n desc: 'preview-before-pay: 既存の見た目を維持したまま、成果訴求の5枚構成を確認してFastlane-readyを出力。',\n href: '/tools/first-export/',\n cta: '5分で出す',\n },\n {\n key: 'calculator',\n icon: Calculator,\n title: 'スクショ作業量 計算ツール',\n desc: '端末x言語から合計枚数と手作業工数を見積もり、CSVテンプレもDLできます。',\n href: '/tools/screenshot-workload-calculator/',\n cta: '作業量を計算する',\n },\n {\n key: 'fastlane_screenshots',\n icon: Folder,\n title: 'Fastlane スクショ フォルダ構成',\n desc: 'deliver/supply のパスを固定し、順序/命名ドリフトを抑えてCIで再現。',\n href: '/tools/fastlane-screenshots/',\n cta: 'パスをコピーする',\n },\n {\n key: 'framework',\n icon: LayoutGrid,\n title: '5枚構成 スクショフレームワーク',\n desc: '見た目は自由のまま、訴求順だけ固定する5枚構成(Hook→Problem→Proof→How→CTA)。',\n href: '/tools/5-panel-screenshot-framework/',\n cta: 'フレームワークをDL',\n },\n {\n key: 'pipeline',\n icon: ClipboardList,\n title: 'ストア素材パイプラインキット',\n desc: 'iPad 13-inch 実スクショ、サイズバケット、Play安全域 + App Review/ASO 制約を提出前に確認。',\n href: '/tools/store-assets-pipeline/',\n cta: '安全域ガイドを見る',\n },\n {\n key: 'app_review_aso',\n icon: ShieldCheck,\n title: 'App Review / ASO クイックチェック',\n desc: '提出前のミニチェック(伝わり方/ポリシー/安全域)。',\n href: '/tools/app-review-aso/',\n cta: 'クイックチェックを見る',\n },\n ],\n primaryCta: '成果訴求を固めて出力(5分)',\n secondaryCta: 'Agent + CLI を開く',\n cliTitle: 'ブラウザ不要のCLI最短',\n cliDesc: 'raw モードでローカル出力し、verify/stage を足してアップロードルートを安定化。',\n cliCmd: [\n 'npx --yes shipscreens wizard',\n '# assets/en-US/01.png〜05.png を差し替え',\n 'npx --yes shipscreens build --mode raw --zip --out out/agent',\n ].join('\\n'),\n cliCta: 'Agent + CLI を開く',\n proUnlockTitle: 'Proを解除(CLI)',\n proUnlockBody: '透かし解除&フル一括(端末×言語)のために、まずはCLI認証を実行:',\n proUnlockCmd: 'npx --yes shipscreens auth login',\n proUnlockNote: '初回のみブラウザでサインインします。以後は --require-pro で再実行。',\n partnerTitle: '初回エクスポート15分レビュー',\n partnerBody: '15分で現状フローを確認し、再実行できる運用へ進める具体的な次アクションを返します。',\n partnerEmailCta: '15分レビューを依頼',\n partnerDmCta: 'Xで15分レビュー相談',\n partnerJump: '初回エクスポート15分レビューを依頼',\n advancedTitle: '詳細: CLI + ガードレール',\n advancedBody: 'CIで決定的に再実行したいときに使います(初回の成果訴求確認では必須ではありません)。',\n },\n};\n\nconst ToolsIndex = () => {\n const { i18n, t } = useTranslation();\n const lang = normalizeLang(i18n.resolvedLanguage || i18n.language);\n const copy = COPY[lang] || COPY.en;\n const supportEmail = 'support@shimaumaservices.co.jp';\n const mailSubject =\n lang === 'ja' ? 'ShipScreens 初回エクスポートレビュー希望' : 'ShipScreens first export review';\n const mailBody =\n lang === 'ja'\n ? [\n 'ShipScreens チーム様',\n '',\n '初回エクスポートの15分レビューを希望します。',\n '',\n '- アプリ名 / URL:',\n '- 現在のスクショ作業フロー:',\n '- 端末数 / 言語数:',\n '',\n 'よろしくお願いします。',\n ].join('\\\\n')\n : [\n 'Hi ShipScreens team,',\n '',\n \"I'd like a 15-min first-export review.\",\n '',\n '- App name / link:',\n '- Current screenshot workflow:',\n '- #devices / #locales:',\n '',\n 'Thanks!',\n ].join('\\\\n');\n const partnerMailto = `mailto:${supportEmail}?subject=${encodeURIComponent(mailSubject)}&body=${encodeURIComponent(\n mailBody\n )}`;\n const openAppHref = '/app/?sample=5panel&entry_source=tools_index_open_app_header';\n const agentCliHref = '/tools/agent-cli/';\n const firstExportHref = '/tools/first-export/?entry_source=tools_index_first_export';\n const configDownloadHref = '/downloads/shipscreens-agent-cli-config.yml';\n const csvDownloadHref = '/downloads/shipscreens-agent-cli-copy.csv';\n const copyButtonLabel = t('common.copy', { defaultValue: 'Copy' });\n const primaryCardKeys = new Set(['first_export', 'agent_cli']);\n const primaryCards = copy.cards.filter((card) => primaryCardKeys.has(card.key));\n const secondaryCards = copy.cards.filter((card) => !primaryCardKeys.has(card.key));\n\n usePageTitle('titles.tools', { defaultValue: copy.title });\n\n useEffect(() => {\n trackEvent('tool_view', { tool: 'tools_index' });\n }, []);\n\n return (\n <div className=\"min-h-screen bg-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) => trackEventAndFollowLink(event, 'tool_cta_click', { tool: 'tools_index', cta: 'open_tools_header' })}\n onPricingClick={(event) =>\n trackEventAndFollowLink(event, 'tool_cta_click', { tool: 'tools_index', cta: 'pricing_header' })\n }\n onOpenAppClick={(event) => trackEventAndFollowLink(event, 'tool_cta_click', { tool: 'tools_index', cta: 'open_app_header' })}\n primaryCta={{\n href: firstExportHref,\n label: (\n <span className=\"inline-flex items-center gap-2\">\n {copy.primaryCta} <ArrowRight size={16} />\n </span>\n ),\n onClick: (event) =>\n trackEventAndFollowLink(event, 'tool_cta_click', { tool: 'tools_index', cta: 'open_first_export_header' }),\n }}\n />\n\n <main className=\"max-w-5xl mx-auto px-6 pb-24 space-y-10\">\n <section className=\"max-w-3xl mx-auto text-center space-y-4\">\n <div className=\"inline-flex items-center gap-2 px-3 py-1.5 rounded-full border border-slate-800 bg-slate-900/60 text-slate-200 text-xs font-semibold\">\n <Wrench size={14} />\n {copy.badge}\n </div>\n <h1 className=\"text-3xl md:text-5xl font-black leading-tight\">{copy.title}</h1>\n <p className=\"text-slate-300 text-lg leading-relaxed\">{copy.subtitle}</p>\n {copy.useCases?.length > 0 && (\n <div className=\"flex flex-wrap justify-center gap-2 text-xs text-slate-400\">\n {copy.useCases.map((item) => (\n <span key={item} className=\"px-3 py-1 rounded-full border border-slate-800 bg-slate-900/60\">\n {item}\n </span>\n ))}\n </div>\n )}\n <div className=\"max-w-xl mx-auto text-left bg-slate-900/60 border border-slate-800 rounded-2xl p-4 space-y-2\">\n <div className=\"text-[11px] uppercase tracking-[0.2em] text-slate-500 font-semibold\">{copy.quickPathTitle}</div>\n <ul className=\"space-y-1 text-xs text-slate-300\">\n {copy.quickPathBullets.map((item) => (\n <li key={item} className=\"flex items-start gap-2\">\n <CheckCircle2 size={14} className=\"mt-0.5 text-green-400 shrink-0\" />\n <span>{item}</span>\n </li>\n ))}\n </ul>\n <div className=\"flex flex-col sm:flex-row gap-2 pt-1\">\n <a\n href={firstExportHref}\n onClick={(event) =>\n trackEventAndFollowLink(event, 'tool_cta_click', { tool: 'tools_index', cta: 'open_first_export_quick_path' })\n }\n className=\"inline-flex items-center justify-center gap-2 px-3 py-2 rounded-lg bg-blue-500 text-white hover:bg-blue-600 transition text-xs font-semibold\"\n >\n {copy.quickPathPrimary} <ArrowRight size={14} />\n </a>\n <a\n href=\"/tools/5-panel-screenshot-framework/\"\n onClick={(event) =>\n trackEventAndFollowLink(event, 'tool_cta_click', { tool: 'tools_index', cta: 'open_five_panel_quick_path' })\n }\n className=\"inline-flex items-center justify-center gap-2 px-3 py-2 rounded-lg border border-slate-700 bg-slate-950 text-slate-200 hover:bg-slate-900 transition text-xs font-semibold\"\n >\n {copy.quickPathSecondary} <ArrowRight size={14} />\n </a>\n </div>\n </div>\n </section>\n\n <section className=\"space-y-4\">\n <div className=\"text-xs uppercase tracking-[0.2em] text-slate-500 font-semibold text-center\">\n {lang === 'ja' ? 'まずここから' : 'Start here'}\n </div>\n <div className=\"grid md:grid-cols-2 gap-6\">\n {primaryCards.map((card) => {\n const Icon = card.icon;\n return (\n <div key={card.key} className=\"bg-slate-900/70 border border-slate-700 rounded-2xl p-6 space-y-4\">\n <div className=\"flex items-center gap-3\">\n <div className=\"w-10 h-10 rounded-xl border border-slate-700 bg-slate-950 flex items-center justify-center\">\n <Icon size={18} className=\"text-slate-200\" />\n </div>\n <div className=\"text-lg font-bold text-white\">{card.title}</div>\n </div>\n <p className=\"text-sm text-slate-300 leading-relaxed\">{card.desc}</p>\n <a\n href={card.href}\n onClick={(event) =>\n trackEventAndFollowLink(event, 'tool_cta_click', { tool: 'tools_index', cta: `open_${card.key}` })\n }\n className=\"inline-flex items-center justify-center gap-2 px-4 py-3 rounded-xl bg-blue-500 text-white font-bold hover:bg-blue-600 transition w-full\"\n >\n {card.cta} <ArrowRight size={16} />\n </a>\n </div>\n );\n })}\n </div>\n </section>\n\n <FitPanel className=\"max-w-4xl mx-auto w-full\" />\n\n <section className=\"grid md:grid-cols-2 lg:grid-cols-4 gap-4\">\n {secondaryCards.map((card) => {\n const Icon = card.icon;\n return (\n <div key={card.key} className=\"bg-slate-900/50 border border-slate-800 rounded-2xl p-5 space-y-3\">\n <div className=\"flex items-center gap-3\">\n <div className=\"w-9 h-9 rounded-xl border border-slate-800 bg-slate-950 flex items-center justify-center\">\n <Icon size={16} className=\"text-slate-200\" />\n </div>\n <div className=\"text-sm font-bold text-white\">{card.title}</div>\n </div>\n <p className=\"text-xs text-slate-300 leading-relaxed\">{card.desc}</p>\n <a\n href={card.href}\n onClick={(event) =>\n trackEventAndFollowLink(event, 'tool_cta_click', { tool: 'tools_index', cta: `open_${card.key}` })\n }\n className=\"inline-flex items-center justify-center gap-2 px-3 py-2 rounded-lg border border-slate-700 bg-slate-950 text-slate-200 font-semibold text-xs hover:bg-slate-900 transition w-full\"\n >\n {card.cta} <ArrowRight size={14} />\n </a>\n </div>\n );\n })}\n </section>\n\n <section className=\"max-w-3xl mx-auto\">\n <details className=\"bg-slate-900/60 border border-slate-800 rounded-2xl p-5 group\">\n <summary className=\"flex items-center justify-between text-sm font-bold text-white cursor-pointer list-none\">\n <span>{copy.advancedTitle}</span>\n <span className=\"text-[10px] font-semibold tracking-[0.2em] text-slate-400\">\n {lang === 'ja' ? '任意' : 'OPTIONAL'}\n </span>\n </summary>\n <div className=\"mt-3 space-y-4\">\n <p className=\"text-sm text-slate-300\">{copy.advancedBody}</p>\n <div className=\"max-w-xl mx-auto text-left bg-slate-900/60 border border-slate-800 rounded-2xl p-4 space-y-2\">\n <div className=\"text-[11px] uppercase tracking-[0.2em] text-slate-500 font-semibold\">{copy.heroCliTitle}</div>\n <p className=\"text-xs text-slate-400\">{copy.heroCliNote}</p>\n <p className=\"text-xs text-slate-500\">{copy.heroCliSummary}</p>\n <div className=\"rounded-xl border border-slate-800 bg-slate-950 p-3\">\n <pre className=\"text-xs text-slate-200 whitespace-pre-wrap\">{copy.heroCliCmd}</pre>\n </div>\n <div className=\"flex flex-col sm:flex-row gap-2\">\n <CopyButton\n value={copy.heroCliCmd}\n onCopied={() => trackEvent('tool_cta_click', { tool: 'tools_index', cta: 'copy_cli_hero' })}\n className=\"inline-flex items-center justify-center gap-2 px-3 py-2 rounded-lg border border-slate-700 bg-slate-950 text-slate-200 hover:bg-slate-900 transition text-xs font-semibold\"\n >\n {({ copyLabel, copyState }) => (\n <>\n <ClipboardCopy size={14} />\n {copyState === 'idle' ? copy.heroCliCopyLabel : copyLabel || copyButtonLabel}\n </>\n )}\n </CopyButton>\n </div>\n {copy.heroCliProCmd && (\n <div className=\"flex flex-wrap items-center gap-3 text-xs text-slate-400\">\n {copy.heroCliProLabel && <span>{copy.heroCliProLabel}</span>}\n <div className=\"inline-flex items-center gap-2 px-2 py-1 rounded-md border border-slate-800 bg-slate-950 text-slate-200\">\n <code>{copy.heroCliProCmd}</code>\n <CopyButton\n value={copy.heroCliProCmd}\n onCopied={() => trackEvent('tool_cta_click', { tool: 'tools_index', cta: 'copy_cli_pro_unlock_hero' })}\n className=\"text-[11px] px-2 py-0.5 rounded-md border border-slate-700 bg-slate-900/60 text-slate-200 hover:bg-slate-900 transition\"\n />\n </div>\n </div>\n )}\n <div className=\"pt-1 space-y-2\">\n <div className=\"text-[10px] uppercase tracking-[0.2em] text-slate-500 font-semibold\">\n {copy.heroCliTemplatesLabel}\n </div>\n <div className=\"flex flex-wrap gap-2\">\n <a\n href={configDownloadHref}\n download\n onClick={() => trackEvent('tool_download', { tool: 'tools_index', asset: 'config_template' })}\n className=\"inline-flex items-center justify-center gap-2 px-2.5 py-1.5 rounded-md border border-slate-700 bg-slate-950 text-[11px] text-slate-200 hover:bg-slate-900 transition\"\n >\n {copy.heroCliConfigLabel}\n </a>\n <a\n href={csvDownloadHref}\n download\n onClick={() => trackEvent('tool_download', { tool: 'tools_index', asset: 'copy_template' })}\n className=\"inline-flex items-center justify-center gap-2 px-2.5 py-1.5 rounded-md border border-slate-700 bg-slate-950 text-[11px] text-slate-200 hover:bg-slate-900 transition\"\n >\n {copy.heroCliCsvLabel}\n </a>\n </div>\n </div>\n </div>\n <div className=\"max-w-xl mx-auto text-left bg-slate-900/60 border border-slate-800 rounded-2xl p-4 space-y-2\">\n <div className=\"flex items-center gap-2 text-[11px] uppercase tracking-[0.2em] text-slate-500 font-semibold\">\n <Terminal size={14} className=\"text-blue-300\" />\n {copy.demoTitle}\n </div>\n <p className=\"text-xs text-slate-400\">{copy.demoBody}</p>\n <div className=\"rounded-xl border border-slate-800 bg-slate-950 p-3\">\n <pre className=\"text-xs text-slate-200 whitespace-pre-wrap\">{copy.demoCmd}</pre>\n </div>\n <div className=\"flex flex-col sm:flex-row gap-2\">\n <CopyButton\n value={copy.demoCmd}\n onCopied={() => trackEvent('tool_cta_click', { tool: 'tools_index', cta: 'copy_demo_cmd' })}\n className=\"inline-flex items-center justify-center gap-2 px-3 py-2 rounded-lg border border-slate-700 bg-slate-950 text-slate-200 hover:bg-slate-900 transition text-xs font-semibold\"\n >\n {({ copyLabel, copyState }) => (\n <>\n <ClipboardCopy size={14} />\n {copyState === 'idle' ? copyButtonLabel : copyLabel || copyButtonLabel}\n </>\n )}\n </CopyButton>\n </div>\n {copy.demoBullets?.length > 0 && (\n <ul className=\"space-y-1 text-xs text-slate-300 pt-1\">\n {copy.demoBullets.map((item) => (\n <li key={item} className=\"flex items-start gap-2\">\n <CheckCircle2 size={14} className=\"mt-0.5 text-green-400 shrink-0\" />\n <span>{item}</span>\n </li>\n ))}\n </ul>\n )}\n {copy.demoNote && <div className=\"text-[11px] text-slate-500\">{copy.demoNote}</div>}\n </div>\n <ToolGuardrailsPanel\n title={lang === 'ja' ? '詳細: CLIガードレール + Pro解除' : 'Advanced: CLI guardrails + Pro unlock'}\n copyButtonLabel={copyButtonLabel}\n codeToggleLabel={t('common.showCommands', { defaultValue: 'Show commands' })}\n preflightHref=\"/tools/agent-cli/#preflight\"\n onPreflightClick={(event) =>\n trackEventAndFollowLink(event, 'tool_cta_click', { tool: 'tools_index', cta: 'open_cli_preflight' })\n }\n proUnlockTitle={copy.proUnlockTitle}\n proUnlockBody={copy.proUnlockBody}\n proUnlockCmd={copy.proUnlockCmd}\n proUnlockNote={copy.proUnlockNote}\n onProUnlockCopied={() => trackEvent('tool_cta_click', { tool: 'tools_index', cta: 'copy_cli_pro_unlock' })}\n />\n <CliPreflightCard\n compact\n href=\"/tools/agent-cli/#preflight\"\n onClick={(event) =>\n trackEventAndFollowLink(event, 'tool_cta_click', { tool: 'tools_index', cta: 'open_cli_preflight_card' })\n }\n className=\"max-w-xl mx-auto\"\n />\n </div>\n </details>\n </section>\n <section id=\"design-partner\" className=\"max-w-3xl mx-auto bg-slate-900/60 border border-slate-800 rounded-2xl p-6 space-y-4\">\n <div className=\"text-lg font-bold text-white\">{copy.partnerTitle}</div>\n <div className=\"text-sm text-slate-300 leading-relaxed\">{copy.partnerBody}</div>\n <div className=\"flex flex-col sm:flex-row gap-3\">\n <a\n href={partnerMailto}\n onClick={() => trackEvent('tool_cta_click', { tool: 'tools_index', cta: 'email_design_partner' })}\n className=\"flex-1 inline-flex items-center justify-center gap-2 px-4 py-3 rounded-xl bg-blue-500 text-white font-bold hover:bg-blue-600 transition\"\n >\n {copy.partnerEmailCta} <ArrowRight size={16} />\n </a>\n <a\n href=\"https://x.com/shipscreenscom\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n onClick={() => trackEvent('tool_cta_click', { tool: 'tools_index', cta: 'dm_design_partner' })}\n className=\"flex-1 inline-flex items-center justify-center gap-2 px-4 py-3 rounded-xl border border-slate-700 bg-slate-950 text-slate-200 hover:bg-slate-900 transition\"\n >\n {copy.partnerDmCta}\n </a>\n </div>\n <div className=\"text-xs text-slate-500\">\n {lang === 'ja' ? 'メール: ' : 'Email: '}\n <a href={`mailto:${supportEmail}`} className=\"underline underline-offset-4 hover:text-white\">\n {supportEmail}\n </a>\n </div>\n </section>\n </main>\n <StickyMobileCta\n note={copy.noLogin}\n primary={{\n label: copy.primaryCta,\n href: firstExportHref,\n onClick: (event) =>\n trackEventAndFollowLink(event, 'tool_cta_click', { tool: 'tools_index', cta: 'sticky_first_export' }),\n }}\n secondary={{\n label: copy.secondaryCta,\n href: agentCliHref,\n onClick: (event) =>\n trackEventAndFollowLink(event, 'tool_cta_click', { tool: 'tools_index', cta: 'sticky_agent_cli' }),\n }}\n />\n </div>\n );\n};\n\nexport default ToolsIndex;\n"],"names":["__iconNode","ClipboardList","createLucideIcon","Folder","Wrench","normalizeLang","lang","COPY","Terminal","Rocket","Calculator","LayoutGrid","ShieldCheck","ToolsIndex","i18n","t","useTranslation","copy","supportEmail","mailSubject","mailBody","partnerMailto","openAppHref","agentCliHref","firstExportHref","configDownloadHref","csvDownloadHref","copyButtonLabel","primaryCardKeys","primaryCards","card","secondaryCards","usePageTitle","useEffect","trackEvent","jsxs","jsx","StagingBadge","SiteHeader","event","trackEventAndFollowLink","ArrowRight","item","CheckCircle2","Icon","FitPanel","CopyButton","copyLabel","copyState","Fragment","ClipboardCopy","ToolGuardrailsPanel","CliPreflightCard","StickyMobileCta"],"mappings":"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","x_google_ignoreList":[0,1,2]}
@@ -0,0 +1,5 @@
1
+ import{u as ee,r as a,t as u,j as e,b as m}from"./index-Bffw9flM.js";import{C as te,S as se}from"./StickyMobileCta-C41cW-Ji.js";import{A as k,C as le}from"./CopyButton-BZQEBHBq.js";import{F as ae}from"./FitPanel-DzYzTMEi.js";import{a as oe,S as ie}from"./LanguageSwitcher-CfUhVVuT.js";import{S as re}from"./SiteHeader-BGQW06JF.js";import{T as ne}from"./ToolGuardrailsPanel-DbjLhdX8.js";import{C as ce}from"./calculator-_D64kDDH.js";import{C as de}from"./clipboard-copy-BfB1mutp.js";import{C as me}from"./chevron-down-DVRa-y8D.js";import{D as xe}from"./download-CqEtEEpe.js";import"./circle-check-reAyVfkP.js";import"./copy-B9y2mtjd.js";const x=(l,{min:i,max:o,fallback:y})=>{const s=typeof l=="number"?l:Number(l);return Number.isFinite(s)?Math.max(i,Math.min(o,s)):y},pe=l=>(l||"").split("-")[0]==="ja"?"ja":"en",E={en:{badge:"Screenshot workload & size buckets",title:"Screenshot Workload Calculator",subtitle:"Existing tools can draft screenshots, but release reruns still break on device x locale scale. Estimate workload first, then choose a minimum set that keeps panel #1 clear and rerunnable.",heroCliTitle:"CLI quickstart (2 steps)",heroCliNote:"wizard → build (raw mode, no Playwright).",heroCliSummary:"Outputs: fastlane/ + reproducible ZIP (local/CI) with verify/stage guardrails.",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",presetsTitle:"Presets",presetIosOnly:"iOS only",presetIosAndroid:"iOS + Android",inputsTitle:"Inputs",resultsTitle:"Results",screenshotsPerLocaleLabel:"Screenshots per locale",screenshotsPerLocaleHelp:"Typical: 5–8",localesLabel:"Locales",localesHelp:"Typical: 1–12",iosDeviceSizesLabel:"iOS device sizes",iosDeviceSizesToggle:"Include iOS",iosDeviceSizesHelp:"Example: 4 (iPhone + iPad variants)",androidDeviceSizesLabel:"Android device sizes",androidDeviceSizesToggle:"Include Android",androidDeviceSizesHelp:"Example: 2 (phone + tablet)",minutesPerImageLabel:"Manual minutes per image",minutesPerImageHelp:"Estimate: export + rename + folder sorting",totalImagesLabel:"Total images",totalImagesFormula:({shots:l,locales:i,deviceSizes:o})=>`${l} shots × ${i} locales × ${o} device sizes`,multiplierLabel:"Multiplier",multiplierSuffix:"×",multiplierHelp:({multiplier:l})=>`1 base shot turns into ${l} variants`,manualTimeLabel:"Manual time estimate",manualTimeFormula:({images:l,minutesPerImage:i})=>`${l} images × ${i} min/image`,withShipScreensLabel:"With ShipScreens",withShipScreensNote:"Bring translations. Wizard scaffolds config + placeholders. ShipScreens locks panel order + layout, exports Fastlane-ready folders (deliver/supply), and reruns deterministically in CI. verify + stage catch mixed folders and store constraints before upload. Screenshots stay local. Before scaling matrix size, check panel #1: if the same line could fit many apps, rewrite it with one concrete outcome.",downloadCsv:"Download CSV copy template",startSample:"Open sample project (free)",startCli:"Run CLI quickstart",example:"Example: 5 screenshots × 10 locales × 4 device sizes = 200 images.",minSetTitle:"Suggested v1 minimum set",minSetBody:"Use size buckets to avoid the full matrix on day one.",minSetBullets:{iosBase:"iPhone-only: start with the largest iPhone bucket + 5 frames.",iosIpad:"Add iPad 13-inch only if you ship iPad-first.",androidPhone:"Android: start with 1 phone bucket.",androidTablet:"Add tablet only if you need it.",none:"Select at least one platform to see a suggested minimum set."},minSetNote:"You can expand later; rerunnable exports make it safe.",nextTitle:"Next: structure your screenshots",nextBody:"Use the 5-panel framework (Hook → Problem → Proof → How → CTA) so screenshot #1 states outcome and audience quickly.",nextCtaSample:"Open sample project",nextCta:"Open 5-panel framework",feedbackText:"Want feedback on your screenshot workflow? We are talking to early users and can help set up a reproducible export pipeline.",feedbackCta:"DM @shipscreenscom on X"},ja:{badge:"スクショ作業量 + サイズバケット",title:"スクショ作業量 計算ツール",subtitle:"既存ツールで初稿は作れても、運用では端末x言語で崩れやすい。作業量を先に見積もり、1枚目の訴求が伝わる最小セットと再実行パスを決める。",heroCliTitle:"CLIクイックスタート(2ステップ)",heroCliNote:"wizard → build(raw / Playwright不要)。",heroCliSummary:"出力: fastlane/ + 再現性ZIP(ローカル/CI)+ verify/stage ガードレール。",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:"ツール",presetsTitle:"プリセット",presetIosOnly:"iOS のみ",presetIosAndroid:"iOS + Android",inputsTitle:"入力",resultsTitle:"結果",screenshotsPerLocaleLabel:"言語あたりのスクショ枚数",screenshotsPerLocaleHelp:"目安: 5〜8",localesLabel:"言語数",localesHelp:"目安: 1〜12",iosDeviceSizesLabel:"iOS 端末サイズ数",iosDeviceSizesToggle:"iOS を含める",iosDeviceSizesHelp:"例: 4(iPhone + iPad など)",androidDeviceSizesLabel:"Android 端末サイズ数",androidDeviceSizesToggle:"Android を含める",androidDeviceSizesHelp:"例: 2(スマホ + タブレット)",minutesPerImageLabel:"1枚あたりの手作業(分)",minutesPerImageHelp:"目安: エクスポート + リネーム + フォルダ整理",totalImagesLabel:"合計画像数",totalImagesFormula:({shots:l,locales:i,deviceSizes:o})=>`${l} 枚 × ${i} 言語 × ${o} サイズ`,multiplierLabel:"増加倍率",multiplierSuffix:"倍",multiplierHelp:({multiplier:l})=>`1枚が ${l} 枚に増える`,manualTimeLabel:"手作業の見積もり",manualTimeFormula:({images:l,minutesPerImage:i})=>`${l} 枚 × ${i} 分/枚`,withShipScreensLabel:"ShipScreens なら",withShipScreensNote:"翻訳は外部でOK。wizard で雛形を作り、訴求順 + レイアウト固定 -> Fastlane公式パスへ再現性出力。verify + stage で混在や制約をアップロード前に検知します。スクショはローカル。行列を増やす前に「1枚目見出しが他の多くのアプリにも当てはまるなら、成果を具体化して書き直す」を実施。",downloadCsv:"CSVコピー雛形をDL",startSample:"サンプルを開く(無料)",startCli:"CLIクイックスタート",example:"例: 5枚 × 10言語 × 4サイズ = 200枚",minSetTitle:"v1最小セットの目安",minSetBody:"サイズバケットでまず出す。",minSetBullets:{iosBase:"iPhone-only: 最大サイズ1バケット + 5枚",iosIpad:"iPadは13-inchが必要な場合のみ",androidPhone:"Androidはスマホ1バケットから",androidTablet:"必要ならタブレットを追加",none:"少なくとも1つのプラットフォームを選択してください。"},minSetNote:"後から増やせる。再実行できるから安心。",nextTitle:"次: スクショの構成を固める",nextBody:"5枚構成テンプレ(Hook→Problem→Proof→How→CTA)で、1枚目に成果と対象ユーザーを明確に置けます。",nextCtaSample:"サンプルを開く",nextCta:"5枚構成テンプレを開く",feedbackText:"スクショ作業フローの相談があれば、15分だけ聞かせてください。改善案やテンプレをご案内します。",feedbackCta:"XでDM: @shipscreenscom"}},Ne=()=>{const{t:l,i18n:i}=ee();oe("titles.workloadCalculator");const o=pe(i.resolvedLanguage||i.language),y=o==="ja"?"ja-JP":"en-US",s=E[o]||E.en,R="/app/?sample=5panel&entry_source=screenshot_workload_calculator_open_app_header",z="/tools/agent-cli/",W="/tools/first-export/?entry_source=screenshot_workload_calculator_primary_cta",q="/downloads/shipscreens-agent-cli-config.yml",V="/downloads/shipscreens-agent-cli-copy.csv",S="/app/?sample=5panel&entry_source=screenshot_workload_calculator_open_sample_project",T=l("common.copy",{defaultValue:"Copy"}),D=l("common.showCommands",{defaultValue:"Show commands"}),J=typeof window>"u"?!0:window.matchMedia("(min-width: 640px)").matches,B=a.useMemo(()=>new Intl.NumberFormat(y),[y]),c=a.useCallback(t=>B.format(t),[B]),X=a.useCallback(t=>{if(!Number.isFinite(t)||t<=0)return o==="ja"?"0分":"0m";if(t<60)return`${Math.round(t)}${o==="ja"?"分":"m"}`;const n=t/60;if(n<24)return`${n.toFixed(n<10?1:0)}${o==="ja"?"時間":"h"}`;const h=n/24;return`${h.toFixed(h<10?1:0)}${o==="ja"?"日":"d"}`},[o]);a.useEffect(()=>{u("tool_view",{tool:"screenshot_workload_calculator"})},[]);const H=a.useRef(!1),p=a.useCallback(()=>{H.current||(H.current=!0,u("tool_interact",{tool:"screenshot_workload_calculator"}))},[]),[N,A]=a.useState(5),[L,$]=a.useState(10),[f,F]=a.useState(!0),[g,O]=a.useState(!0),[I,U]=a.useState(4),[j,M]=a.useState(2),[C,Y]=a.useState(2),Z=a.useMemo(()=>{const t=[];return f&&(s.minSetBullets?.iosBase&&t.push(s.minSetBullets.iosBase),s.minSetBullets?.iosIpad&&t.push(s.minSetBullets.iosIpad)),g&&(s.minSetBullets?.androidPhone&&t.push(s.minSetBullets.androidPhone),j>1&&s.minSetBullets?.androidTablet&&t.push(s.minSetBullets.androidTablet)),!t.length&&s.minSetBullets?.none&&t.push(s.minSetBullets.none),t},[s,f,g,j]),G=a.useMemo(()=>[{key:"ios_only",label:s.presetIosOnly,localeCount:6,screenshotsPerLocale:5,includeIOS:!0,iosDeviceSizes:2,includeAndroid:!1,androidDeviceSizes:0},{key:"ios_android",label:s.presetIosAndroid,localeCount:6,screenshotsPerLocale:5,includeIOS:!0,iosDeviceSizes:2,includeAndroid:!0,androidDeviceSizes:1}],[s.presetIosAndroid,s.presetIosOnly]),K=a.useCallback(t=>{t&&(p(),$(t.localeCount),A(t.screenshotsPerLocale),F(t.includeIOS),U(t.iosDeviceSizes),O(t.includeAndroid),M(t.androidDeviceSizes))},[p]),r=a.useMemo(()=>{const t=x(N,{min:1,max:50,fallback:5}),n=x(L,{min:1,max:50,fallback:10}),h=f?x(I,{min:1,max:10,fallback:4}):0,v=g?x(j,{min:1,max:10,fallback:2}):0,w=h+v,_=t*n*w,P=n*w,b=_*x(C,{min:.25,max:30,fallback:2});return{shots:t,locales:n,iosSizes:h,androidSizes:v,deviceSizes:w,totalImages:_,multiplier:P,manualMinutes:b}},[j,g,f,I,L,C,N]),Q=()=>{const t=Math.min(50,Math.max(1,Math.trunc(r.shots))),n=["Locale"];for(let d=1;d<=t;d+=1)n.push(`Header_${d}`,`Subtitle_${d}`);const h=["en-US"],v=["ja-JP"];for(let d=1;d<=t;d+=1)h.push(`Headline ${d}`,`Subtitle ${d}`),v.push(`ヘッドライン${d}`,`サブタイトル${d}`);const _=`\uFEFF${[n.join(","),h.join(","),v.join(",")].join(`
4
+ `)}`,P=`data:text/csv;charset=utf-8,${encodeURIComponent(_)}`,b=document.createElement("a");b.href=P,b.download="shipscreens-copy-template.csv",document.body.appendChild(b),b.click(),document.body.removeChild(b),u("tool_download",{tool:"screenshot_workload_calculator",asset:"csv_template"})};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(ie,{}),e.jsx(re,{variant:"dark",active:"tools",openAppHref:R,onToolsClick:t=>m(t,"tool_cta_click",{tool:"screenshot_workload_calculator",cta:"open_tools_header"}),onPricingClick:t=>m(t,"tool_cta_click",{tool:"screenshot_workload_calculator",cta:"pricing_header"}),onOpenAppClick:t=>m(t,"tool_cta_click",{tool:"screenshot_workload_calculator",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(k,{size:16})]}),onClick:t=>m(t,"tool_cta_click",{tool:"screenshot_workload_calculator",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.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(ce,{size:14}),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("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(le,{value:s.heroCliCmd,onCopied:()=>u("tool_cta_click",{tool:"screenshot_workload_calculator",cta:"copy_cli_hero"}),className:"inline-flex items-center justify-center gap-2 px-3 py-2 rounded-lg border border-slate-700 bg-slate-950 text-slate-200 hover:bg-slate-900 transition text-xs font-semibold",children:({copyLabel:t,copyState:n})=>e.jsxs(e.Fragment,{children:[e.jsx(de,{size:14}),n==="idle"?s.heroCliCopyLabel:t||T]})}),e.jsxs("details",{className:"group",open:J,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(me,{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:q,download:!0,onClick:()=>u("tool_download",{tool:"screenshot_workload_calculator",asset:"config_template"}),className:"inline-flex items-center justify-center gap-2 px-2.5 py-1.5 rounded-md border border-slate-700 bg-slate-950 text-[11px] text-slate-200 hover:bg-slate-900 transition",children:s.heroCliConfigLabel}),e.jsx("a",{href:V,download:!0,onClick:()=>u("tool_download",{tool:"screenshot_workload_calculator",asset:"copy_template"}),className:"inline-flex items-center justify-center gap-2 px-2.5 py-1.5 rounded-md border border-slate-700 bg-slate-950 text-[11px] text-slate-200 hover:bg-slate-900 transition",children:s.heroCliCsvLabel})]})]})]}),e.jsx(ne,{title:o==="ja"?"詳細: CLIガードレール + Pro解除":"Advanced: CLI guardrails + Pro unlock",codeToggleLabel:D,copyButtonLabel:T,preflightHref:"/tools/agent-cli/#preflight",onPreflightClick:t=>m(t,"tool_cta_click",{tool:"screenshot_workload_calculator",cta:"open_cli_preflight"}),proUnlockTitle:s.proUnlockTitle,proUnlockBody:s.proUnlockBody,proUnlockCmd:s.proUnlockCmd,proUnlockNote:s.proUnlockNote,onProUnlockCopied:()=>u("tool_cta_click",{tool:"screenshot_workload_calculator",cta:"copy_cli_pro_unlock"})}),e.jsx(te,{compact:!0,href:"/tools/agent-cli/#preflight",onClick:t=>m(t,"tool_cta_click",{tool:"screenshot_workload_calculator",cta:"open_cli_preflight_card"}),className:"max-w-xl mx-auto"})]}),e.jsx(ae,{className:"max-w-4xl mx-auto w-full"}),e.jsxs("section",{className:"grid lg:grid-cols-2 gap-6",children:[e.jsxs("div",{className:"bg-slate-900/60 border border-slate-800 rounded-2xl p-6 space-y-5",children:[e.jsx("h2",{className:"text-lg font-bold text-white",children:s.inputsTitle}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("div",{className:"text-[10px] font-bold text-slate-400 uppercase tracking-wider",children:s.presetsTitle}),e.jsx("div",{className:"flex flex-wrap gap-2",children:G.map(t=>e.jsx("button",{type:"button",onClick:()=>K(t),className:"px-3 py-1.5 rounded-lg border border-slate-700 bg-slate-950 text-xs font-semibold text-slate-200 hover:bg-slate-900 transition-colors",children:t.label},t.key))})]}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[e.jsxs("label",{className:"space-y-1",children:[e.jsx("div",{className:"text-sm font-semibold text-slate-200",children:s.screenshotsPerLocaleLabel}),e.jsx("input",{type:"number",min:1,max:50,value:N,onChange:t=>{p(),A(x(t.target.value,{min:1,max:50,fallback:5}))},className:"w-full rounded-xl bg-slate-950 border border-slate-800 px-3 py-2 text-white focus:outline-none focus:ring-2 focus:ring-blue-500/60"}),e.jsx("div",{className:"text-xs text-slate-500",children:s.screenshotsPerLocaleHelp})]}),e.jsxs("label",{className:"space-y-1",children:[e.jsx("div",{className:"text-sm font-semibold text-slate-200",children:s.localesLabel}),e.jsx("input",{type:"number",min:1,max:50,value:L,onChange:t=>{p(),$(x(t.target.value,{min:1,max:50,fallback:10}))},className:"w-full rounded-xl bg-slate-950 border border-slate-800 px-3 py-2 text-white focus:outline-none focus:ring-2 focus:ring-blue-500/60"}),e.jsx("div",{className:"text-xs text-slate-500",children:s.localesHelp})]})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("div",{className:"text-sm font-semibold text-slate-200",children:s.iosDeviceSizesLabel}),e.jsxs("label",{className:"flex items-center gap-2 text-xs text-slate-400",children:[e.jsx("input",{type:"checkbox",checked:f,onChange:t=>{p(),F(t.target.checked)}}),s.iosDeviceSizesToggle]})]}),e.jsx("input",{type:"number",min:1,max:10,disabled:!f,value:I,onChange:t=>{p(),U(x(t.target.value,{min:1,max:10,fallback:4}))},className:"w-full rounded-xl bg-slate-950 border border-slate-800 px-3 py-2 text-white disabled:opacity-40 focus:outline-none focus:ring-2 focus:ring-blue-500/60"}),e.jsx("div",{className:"text-xs text-slate-500",children:s.iosDeviceSizesHelp})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("div",{className:"text-sm font-semibold text-slate-200",children:s.androidDeviceSizesLabel}),e.jsxs("label",{className:"flex items-center gap-2 text-xs text-slate-400",children:[e.jsx("input",{type:"checkbox",checked:g,onChange:t=>{p(),O(t.target.checked)}}),s.androidDeviceSizesToggle]})]}),e.jsx("input",{type:"number",min:1,max:10,disabled:!g,value:j,onChange:t=>{p(),M(x(t.target.value,{min:1,max:10,fallback:2}))},className:"w-full rounded-xl bg-slate-950 border border-slate-800 px-3 py-2 text-white disabled:opacity-40 focus:outline-none focus:ring-2 focus:ring-blue-500/60"}),e.jsx("div",{className:"text-xs text-slate-500",children:s.androidDeviceSizesHelp})]}),e.jsxs("label",{className:"space-y-1",children:[e.jsx("div",{className:"text-sm font-semibold text-slate-200",children:s.minutesPerImageLabel}),e.jsx("input",{type:"number",min:.25,max:30,step:.25,value:C,onChange:t=>{p(),Y(x(t.target.value,{min:.25,max:30,fallback:2}))},className:"w-full rounded-xl bg-slate-950 border border-slate-800 px-3 py-2 text-white focus:outline-none focus:ring-2 focus:ring-blue-500/60"}),e.jsx("div",{className:"text-xs text-slate-500",children:s.minutesPerImageHelp})]})]}),e.jsxs("div",{className:"bg-slate-900/60 border border-slate-800 rounded-2xl p-6 space-y-5",children:[e.jsx("h2",{className:"text-lg font-bold text-white",children:s.resultsTitle}),e.jsxs("div",{className:"grid sm:grid-cols-2 gap-4",children:[e.jsxs("div",{className:"rounded-2xl border border-slate-800 bg-slate-950 p-4",children:[e.jsx("div",{className:"text-xs text-slate-500",children:s.totalImagesLabel}),e.jsx("div",{className:"text-3xl font-black text-white",children:c(r.totalImages)}),e.jsx("div",{className:"text-xs text-slate-500 mt-1",children:s.totalImagesFormula({shots:c(r.shots),locales:c(r.locales),deviceSizes:c(r.deviceSizes)})})]}),e.jsxs("div",{className:"rounded-2xl border border-slate-800 bg-slate-950 p-4",children:[e.jsx("div",{className:"text-xs text-slate-500",children:s.multiplierLabel}),e.jsxs("div",{className:"text-3xl font-black text-white",children:[c(r.multiplier),s.multiplierSuffix]}),e.jsx("div",{className:"text-xs text-slate-500 mt-1",children:s.multiplierHelp({multiplier:c(r.multiplier)})})]})]}),e.jsxs("div",{className:"rounded-2xl border border-slate-800 bg-slate-950 p-4 space-y-2",children:[e.jsx("div",{className:"text-xs text-slate-500",children:s.manualTimeLabel}),e.jsx("div",{className:"text-2xl font-black text-white",children:X(r.manualMinutes)}),e.jsx("div",{className:"text-xs text-slate-500",children:s.manualTimeFormula({images:c(r.totalImages),minutesPerImage:c(C)})})]}),e.jsxs("div",{className:"rounded-2xl border border-blue-500/40 bg-blue-500/10 p-4 space-y-2",children:[e.jsx("div",{className:"text-xs text-blue-200 font-semibold",children:s.withShipScreensLabel}),e.jsx("div",{className:"text-sm text-slate-200",children:o==="ja"?e.jsxs(e.Fragment,{children:["元スクショ ",e.jsx("span",{className:"font-bold text-white",children:c(r.shots)})," 枚と CSV"," ",e.jsx("span",{className:"font-bold text-white",children:c(r.locales)})," 行を用意して、一括で出力できます。"]}):e.jsxs(e.Fragment,{children:["Prepare ",e.jsx("span",{className:"font-bold text-white",children:c(r.shots)})," base screenshots, import"," ",e.jsx("span",{className:"font-bold text-white",children:c(r.locales)})," locales, then export the full set."]})}),e.jsx("div",{className:"text-xs text-slate-300",children:s.withShipScreensNote})]}),e.jsxs("div",{className:"rounded-2xl border border-slate-800 bg-slate-950 p-4 space-y-2",children:[e.jsx("div",{className:"text-xs text-slate-500",children:s.minSetTitle}),e.jsx("div",{className:"text-sm text-slate-200",children:s.minSetBody}),e.jsx("ul",{className:"text-xs text-slate-400 space-y-1 list-disc list-inside",children:Z.map(t=>e.jsx("li",{children:t},t))}),e.jsx("div",{className:"text-xs text-slate-500",children:s.minSetNote})]}),e.jsxs("div",{className:"flex flex-col sm:flex-row gap-3",children:[e.jsxs("button",{type:"button",onClick:Q,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(xe,{size:16}),s.downloadCsv]}),e.jsxs("a",{href:S,onClick:t=>m(t,"tool_cta_click",{tool:"screenshot_workload_calculator",cta:"open_sample_project_results"}),className:"flex-1 inline-flex items-center justify-center gap-2 px-4 py-3 rounded-xl bg-blue-500 text-white font-bold hover:bg-blue-600 transition",children:[s.startSample," ",e.jsx(k,{size:16})]}),e.jsxs("a",{href:z,onClick:t=>m(t,"tool_cta_click",{tool:"screenshot_workload_calculator",cta:"open_agent_cli_results"}),className:"flex-1 inline-flex items-center justify-center gap-2 px-4 py-3 rounded-xl border border-slate-700 bg-slate-950 text-slate-200 font-bold hover:bg-slate-900 transition",children:[s.startCli," ",e.jsx(k,{size:16})]})]}),e.jsx("div",{className:"text-xs text-slate-500",children:o==="ja"?e.jsxs(e.Fragment,{children:["例: 5枚 × 10言語 × 4サイズ = ",e.jsx("span",{className:"text-slate-200 font-semibold",children:"200枚"}),"."]}):e.jsxs(e.Fragment,{children:["Example: 5 screenshots × 10 locales × 4 device sizes = ",e.jsx("span",{className:"text-slate-200 font-semibold",children:"200 images"}),"."]})})]})]}),e.jsxs("section",{className:"max-w-3xl mx-auto text-center space-y-3 pt-4",children:[e.jsx("p",{className:"text-sm text-slate-400",children:s.feedbackText}),e.jsx("a",{href:"https://x.com/shipscreenscom",target:"_blank",rel:"noopener noreferrer",onClick:()=>u("tool_cta_click",{tool:"screenshot_workload_calculator",cta:"dm_x"}),className:"text-sm text-blue-300 hover:text-blue-200 transition-colors underline underline-offset-4",children:s.feedbackCta})]}),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:S,onClick:t=>m(t,"tool_cta_click",{tool:"screenshot_workload_calculator",cta:"open_sample_project"}),className:"inline-flex items-center justify-center gap-2 px-4 py-3 rounded-xl bg-blue-500 text-white font-bold hover:bg-blue-600 transition w-full md:w-auto",children:[s.nextCtaSample," ",e.jsx(k,{size:16})]}),e.jsxs("a",{href:"/tools/5-panel-screenshot-framework/",onClick:()=>u("tool_cta_click",{tool:"screenshot_workload_calculator",cta:"open_framework"}),className:"inline-flex items-center justify-center gap-2 px-4 py-3 rounded-xl border border-slate-700 bg-slate-950 text-slate-200 font-bold hover:bg-slate-900 transition w-full md:w-auto",children:[s.nextCta," ",e.jsx(k,{size:16})]})]})]})]}),e.jsx(se,{primary:{label:s.startSample,href:S,onClick:t=>m(t,"tool_cta_click",{tool:"screenshot_workload_calculator",cta:"sticky_primary_sample"})},secondary:{label:s.startCli,href:z,onClick:t=>m(t,"tool_cta_click",{tool:"screenshot_workload_calculator",cta:"sticky_secondary_cli"})}})]})};export{Ne as default};
5
+ //# sourceMappingURL=WorkloadCalculator-CjdG5TVq.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WorkloadCalculator-CjdG5TVq.js","sources":["../../src/pages/WorkloadCalculator.jsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { ArrowRight, Calculator, ChevronDown, ClipboardCopy, Download } from 'lucide-react';\nimport { useTranslation } from 'react-i18next';\nimport CliPreflightCard from '../components/CliPreflightCard';\nimport CopyButton from '../components/CopyButton';\nimport FitPanel from '../components/FitPanel';\nimport StagingBadge from '../components/StagingBadge';\nimport StickyMobileCta from '../components/StickyMobileCta';\nimport SiteHeader from '../components/SiteHeader';\nimport ToolGuardrailsPanel from '../components/ToolGuardrailsPanel';\nimport usePageTitle from '../hooks/usePageTitle';\nimport { trackEvent, trackEventAndFollowLink } from '../lib/analytics';\n\nconst clampNumber = (value, { min, max, fallback }) => {\n const num = typeof value === 'number' ? value : Number(value);\n if (!Number.isFinite(num)) return fallback;\n return Math.max(min, Math.min(max, num));\n};\n\nconst normalizeLang = (lang) => {\n const base = (lang || '').split('-')[0];\n return base === 'ja' ? 'ja' : 'en';\n};\n\nconst COPY = {\n en: {\n badge: 'Screenshot workload & size buckets',\n title: 'Screenshot Workload Calculator',\n subtitle:\n 'Existing tools can draft screenshots, but release reruns still break on device x locale scale. Estimate workload first, then choose a minimum set that keeps panel #1 clear and rerunnable.',\n heroCliTitle: 'CLI quickstart (2 steps)',\n heroCliNote: 'wizard → build (raw mode, no Playwright).',\n heroCliSummary: 'Outputs: fastlane/ + reproducible ZIP (local/CI) with verify/stage guardrails.',\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 presetsTitle: 'Presets',\n presetIosOnly: 'iOS only',\n presetIosAndroid: 'iOS + Android',\n inputsTitle: 'Inputs',\n resultsTitle: 'Results',\n screenshotsPerLocaleLabel: 'Screenshots per locale',\n screenshotsPerLocaleHelp: 'Typical: 5–8',\n localesLabel: 'Locales',\n localesHelp: 'Typical: 1–12',\n iosDeviceSizesLabel: 'iOS device sizes',\n iosDeviceSizesToggle: 'Include iOS',\n iosDeviceSizesHelp: 'Example: 4 (iPhone + iPad variants)',\n androidDeviceSizesLabel: 'Android device sizes',\n androidDeviceSizesToggle: 'Include Android',\n androidDeviceSizesHelp: 'Example: 2 (phone + tablet)',\n minutesPerImageLabel: 'Manual minutes per image',\n minutesPerImageHelp: 'Estimate: export + rename + folder sorting',\n totalImagesLabel: 'Total images',\n totalImagesFormula: ({ shots, locales, deviceSizes }) => `${shots} shots × ${locales} locales × ${deviceSizes} device sizes`,\n multiplierLabel: 'Multiplier',\n multiplierSuffix: '×',\n multiplierHelp: ({ multiplier }) => `1 base shot turns into ${multiplier} variants`,\n manualTimeLabel: 'Manual time estimate',\n manualTimeFormula: ({ images, minutesPerImage }) => `${images} images × ${minutesPerImage} min/image`,\n withShipScreensLabel: 'With ShipScreens',\n withShipScreensNote:\n 'Bring translations. Wizard scaffolds config + placeholders. ShipScreens locks panel order + layout, exports Fastlane-ready folders (deliver/supply), and reruns deterministically in CI. verify + stage catch mixed folders and store constraints before upload. Screenshots stay local. Before scaling matrix size, check panel #1: if the same line could fit many apps, rewrite it with one concrete outcome.',\n downloadCsv: 'Download CSV copy template',\n startSample: 'Open sample project (free)',\n startCli: 'Run CLI quickstart',\n example: 'Example: 5 screenshots × 10 locales × 4 device sizes = 200 images.',\n minSetTitle: 'Suggested v1 minimum set',\n minSetBody: 'Use size buckets to avoid the full matrix on day one.',\n minSetBullets: {\n iosBase: 'iPhone-only: start with the largest iPhone bucket + 5 frames.',\n iosIpad: 'Add iPad 13-inch only if you ship iPad-first.',\n androidPhone: 'Android: start with 1 phone bucket.',\n androidTablet: 'Add tablet only if you need it.',\n none: 'Select at least one platform to see a suggested minimum set.',\n },\n minSetNote: 'You can expand later; rerunnable exports make it safe.',\n nextTitle: 'Next: structure your screenshots',\n nextBody: 'Use the 5-panel framework (Hook → Problem → Proof → How → CTA) so screenshot #1 states outcome and audience quickly.',\n nextCtaSample: 'Open sample project',\n nextCta: 'Open 5-panel framework',\n feedbackText:\n 'Want feedback on your screenshot workflow? We are talking to early users and can help set up a reproducible export pipeline.',\n feedbackCta: 'DM @shipscreenscom on X',\n },\n ja: {\n badge: 'スクショ作業量 + サイズバケット',\n title: 'スクショ作業量 計算ツール',\n subtitle: '既存ツールで初稿は作れても、運用では端末x言語で崩れやすい。作業量を先に見積もり、1枚目の訴求が伝わる最小セットと再実行パスを決める。',\n heroCliTitle: 'CLIクイックスタート(2ステップ)',\n heroCliNote: 'wizard → build(raw / Playwright不要)。',\n heroCliSummary: '出力: fastlane/ + 再現性ZIP(ローカル/CI)+ verify/stage ガードレール。',\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 presetsTitle: 'プリセット',\n presetIosOnly: 'iOS のみ',\n presetIosAndroid: 'iOS + Android',\n inputsTitle: '入力',\n resultsTitle: '結果',\n screenshotsPerLocaleLabel: '言語あたりのスクショ枚数',\n screenshotsPerLocaleHelp: '目安: 5〜8',\n localesLabel: '言語数',\n localesHelp: '目安: 1〜12',\n iosDeviceSizesLabel: 'iOS 端末サイズ数',\n iosDeviceSizesToggle: 'iOS を含める',\n iosDeviceSizesHelp: '例: 4(iPhone + iPad など)',\n androidDeviceSizesLabel: 'Android 端末サイズ数',\n androidDeviceSizesToggle: 'Android を含める',\n androidDeviceSizesHelp: '例: 2(スマホ + タブレット)',\n minutesPerImageLabel: '1枚あたりの手作業(分)',\n minutesPerImageHelp: '目安: エクスポート + リネーム + フォルダ整理',\n totalImagesLabel: '合計画像数',\n totalImagesFormula: ({ shots, locales, deviceSizes }) => `${shots} 枚 × ${locales} 言語 × ${deviceSizes} サイズ`,\n multiplierLabel: '増加倍率',\n multiplierSuffix: '倍',\n multiplierHelp: ({ multiplier }) => `1枚が ${multiplier} 枚に増える`,\n manualTimeLabel: '手作業の見積もり',\n manualTimeFormula: ({ images, minutesPerImage }) => `${images} 枚 × ${minutesPerImage} 分/枚`,\n withShipScreensLabel: 'ShipScreens なら',\n withShipScreensNote:\n '翻訳は外部でOK。wizard で雛形を作り、訴求順 + レイアウト固定 -> Fastlane公式パスへ再現性出力。verify + stage で混在や制約をアップロード前に検知します。スクショはローカル。行列を増やす前に「1枚目見出しが他の多くのアプリにも当てはまるなら、成果を具体化して書き直す」を実施。',\n downloadCsv: 'CSVコピー雛形をDL',\n startSample: 'サンプルを開く(無料)',\n startCli: 'CLIクイックスタート',\n example: '例: 5枚 × 10言語 × 4サイズ = 200枚',\n minSetTitle: 'v1最小セットの目安',\n minSetBody: 'サイズバケットでまず出す。',\n minSetBullets: {\n iosBase: 'iPhone-only: 最大サイズ1バケット + 5枚',\n iosIpad: 'iPadは13-inchが必要な場合のみ',\n androidPhone: 'Androidはスマホ1バケットから',\n androidTablet: '必要ならタブレットを追加',\n none: '少なくとも1つのプラットフォームを選択してください。',\n },\n minSetNote: '後から増やせる。再実行できるから安心。',\n nextTitle: '次: スクショの構成を固める',\n nextBody: '5枚構成テンプレ(Hook→Problem→Proof→How→CTA)で、1枚目に成果と対象ユーザーを明確に置けます。',\n nextCtaSample: 'サンプルを開く',\n nextCta: '5枚構成テンプレを開く',\n feedbackText: 'スクショ作業フローの相談があれば、15分だけ聞かせてください。改善案やテンプレをご案内します。',\n feedbackCta: 'XでDM: @shipscreenscom',\n },\n};\n\nconst WorkloadCalculator = () => {\n const { t, i18n } = useTranslation();\n usePageTitle('titles.workloadCalculator');\n\n const lang = normalizeLang(i18n.resolvedLanguage || i18n.language);\n const numberLocale = lang === 'ja' ? 'ja-JP' : 'en-US';\n const copy = COPY[lang] || COPY.en;\n const openAppHref = '/app/?sample=5panel&entry_source=screenshot_workload_calculator_open_app_header';\n const agentCliHref = '/tools/agent-cli/';\n const firstExportHref = '/tools/first-export/?entry_source=screenshot_workload_calculator_primary_cta';\n const configDownloadHref = '/downloads/shipscreens-agent-cli-config.yml';\n const csvDownloadHref = '/downloads/shipscreens-agent-cli-copy.csv';\n const sampleProjectHref = '/app/?sample=5panel&entry_source=screenshot_workload_calculator_open_sample_project';\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 numberFormatter = useMemo(() => new Intl.NumberFormat(numberLocale), [numberLocale]);\n const formatNumber = useCallback((value) => numberFormatter.format(value), [numberFormatter]);\n const formatDuration = useCallback(\n (minutes) => {\n if (!Number.isFinite(minutes) || minutes <= 0) return lang === 'ja' ? '0分' : '0m';\n if (minutes < 60) return `${Math.round(minutes)}${lang === 'ja' ? '分' : 'm'}`;\n const hours = minutes / 60;\n if (hours < 24) return `${hours.toFixed(hours < 10 ? 1 : 0)}${lang === 'ja' ? '時間' : 'h'}`;\n const days = hours / 24;\n return `${days.toFixed(days < 10 ? 1 : 0)}${lang === 'ja' ? '日' : 'd'}`;\n },\n [lang]\n );\n\n useEffect(() => {\n trackEvent('tool_view', { tool: 'screenshot_workload_calculator' });\n }, []);\n\n const hasInteractedRef = useRef(false);\n const markInteracted = useCallback(() => {\n if (hasInteractedRef.current) return;\n hasInteractedRef.current = true;\n trackEvent('tool_interact', { tool: 'screenshot_workload_calculator' });\n }, []);\n\n const [screenshotsPerLocale, setScreenshotsPerLocale] = useState(5);\n const [localeCount, setLocaleCount] = useState(10);\n const [includeIOS, setIncludeIOS] = useState(true);\n const [includeAndroid, setIncludeAndroid] = useState(true);\n const [iosDeviceSizes, setIosDeviceSizes] = useState(4);\n const [androidDeviceSizes, setAndroidDeviceSizes] = useState(2);\n const [minutesPerImage, setMinutesPerImage] = useState(2);\n\n const minSetBullets = useMemo(() => {\n const bullets = [];\n if (includeIOS) {\n if (copy.minSetBullets?.iosBase) bullets.push(copy.minSetBullets.iosBase);\n if (copy.minSetBullets?.iosIpad) bullets.push(copy.minSetBullets.iosIpad);\n }\n if (includeAndroid) {\n if (copy.minSetBullets?.androidPhone) bullets.push(copy.minSetBullets.androidPhone);\n if (androidDeviceSizes > 1 && copy.minSetBullets?.androidTablet) {\n bullets.push(copy.minSetBullets.androidTablet);\n }\n }\n if (!bullets.length && copy.minSetBullets?.none) {\n bullets.push(copy.minSetBullets.none);\n }\n return bullets;\n }, [copy, includeIOS, includeAndroid, androidDeviceSizes]);\n\n const presets = useMemo(\n () => [\n {\n key: 'ios_only',\n label: copy.presetIosOnly,\n localeCount: 6,\n screenshotsPerLocale: 5,\n includeIOS: true,\n iosDeviceSizes: 2,\n includeAndroid: false,\n androidDeviceSizes: 0,\n },\n {\n key: 'ios_android',\n label: copy.presetIosAndroid,\n localeCount: 6,\n screenshotsPerLocale: 5,\n includeIOS: true,\n iosDeviceSizes: 2,\n includeAndroid: true,\n androidDeviceSizes: 1,\n },\n ],\n [copy.presetIosAndroid, copy.presetIosOnly]\n );\n\n const applyPreset = useCallback(\n (preset) => {\n if (!preset) return;\n markInteracted();\n setLocaleCount(preset.localeCount);\n setScreenshotsPerLocale(preset.screenshotsPerLocale);\n setIncludeIOS(preset.includeIOS);\n setIosDeviceSizes(preset.iosDeviceSizes);\n setIncludeAndroid(preset.includeAndroid);\n setAndroidDeviceSizes(preset.androidDeviceSizes);\n },\n [markInteracted]\n );\n\n const totals = useMemo(() => {\n const shots = clampNumber(screenshotsPerLocale, { min: 1, max: 50, fallback: 5 });\n const locales = clampNumber(localeCount, { min: 1, max: 50, fallback: 10 });\n const iosSizes = includeIOS ? clampNumber(iosDeviceSizes, { min: 1, max: 10, fallback: 4 }) : 0;\n const androidSizes = includeAndroid ? clampNumber(androidDeviceSizes, { min: 1, max: 10, fallback: 2 }) : 0;\n const deviceSizes = iosSizes + androidSizes;\n const totalImages = shots * locales * deviceSizes;\n const multiplier = locales * deviceSizes;\n const manualMinutes = totalImages * clampNumber(minutesPerImage, { min: 0.25, max: 30, fallback: 2 });\n\n return {\n shots,\n locales,\n iosSizes,\n androidSizes,\n deviceSizes,\n totalImages,\n multiplier,\n manualMinutes,\n };\n }, [androidDeviceSizes, includeAndroid, includeIOS, iosDeviceSizes, localeCount, minutesPerImage, screenshotsPerLocale]);\n\n const downloadCsvTemplate = () => {\n const slideCount = Math.min(50, Math.max(1, Math.trunc(totals.shots)));\n const headerCells = ['Locale'];\n for (let i = 1; i <= slideCount; i += 1) {\n headerCells.push(`Header_${i}`, `Subtitle_${i}`);\n }\n const enRow = ['en-US'];\n const jaRow = ['ja-JP'];\n for (let i = 1; i <= slideCount; i += 1) {\n enRow.push(`Headline ${i}`, `Subtitle ${i}`);\n jaRow.push(`ヘッドライン${i}`, `サブタイトル${i}`);\n }\n const csvLines = [headerCells.join(','), enRow.join(','), jaRow.join(',')];\n const csvContent = `\\ufeff${csvLines.join('\\n')}`;\n const csv = `data:text/csv;charset=utf-8,${encodeURIComponent(csvContent)}`;\n const link = document.createElement('a');\n link.href = csv;\n link.download = 'shipscreens-copy-template.csv';\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n trackEvent('tool_download', { tool: 'screenshot_workload_calculator', asset: 'csv_template' });\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=\"tools\"\n openAppHref={openAppHref}\n onToolsClick={(event) =>\n trackEventAndFollowLink(event, 'tool_cta_click', { tool: 'screenshot_workload_calculator', cta: 'open_tools_header' })\n }\n onPricingClick={(event) =>\n trackEventAndFollowLink(event, 'tool_cta_click', { tool: 'screenshot_workload_calculator', cta: 'pricing_header' })\n }\n onOpenAppClick={(event) =>\n trackEventAndFollowLink(event, 'tool_cta_click', { tool: 'screenshot_workload_calculator', 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: 'screenshot_workload_calculator',\n cta: 'open_first_export_header',\n }),\n }}\n />\n\n <main className=\"max-w-5xl mx-auto px-6 pb-24 space-y-10\">\n <section className=\"max-w-3xl mx-auto text-center space-y-4\">\n <div className=\"inline-flex items-center gap-2 px-3 py-1.5 rounded-full border border-slate-800 bg-slate-900/60 text-slate-200 text-xs font-semibold\">\n <Calculator 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\">\n {copy.subtitle}\n </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={() => trackEvent('tool_cta_click', { tool: 'screenshot_workload_calculator', cta: 'copy_cli_hero' })}\n className=\"inline-flex items-center justify-center gap-2 px-3 py-2 rounded-lg border border-slate-700 bg-slate-950 text-slate-200 hover:bg-slate-900 transition text-xs font-semibold\"\n >\n {({ copyLabel, copyState }) => (\n <>\n <ClipboardCopy size={14} />\n {copyState === 'idle' ? copy.heroCliCopyLabel : copyLabel || copyButtonLabel}\n </>\n )}\n </CopyButton>\n <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: 'screenshot_workload_calculator', 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: 'screenshot_workload_calculator', asset: 'copy_template' })}\n className=\"inline-flex items-center justify-center gap-2 px-2.5 py-1.5 rounded-md border border-slate-700 bg-slate-950 text-[11px] text-slate-200 hover:bg-slate-900 transition\"\n >\n {copy.heroCliCsvLabel}\n </a>\n </div>\n </div>\n </div>\n <ToolGuardrailsPanel\n title={lang === 'ja' ? '詳細: CLIガードレール + Pro解除' : 'Advanced: CLI guardrails + Pro unlock'}\n codeToggleLabel={codeToggleLabel}\n copyButtonLabel={copyButtonLabel}\n preflightHref=\"/tools/agent-cli/#preflight\"\n onPreflightClick={(event) =>\n trackEventAndFollowLink(event, 'tool_cta_click', {\n tool: 'screenshot_workload_calculator',\n cta: 'open_cli_preflight',\n })\n }\n proUnlockTitle={copy.proUnlockTitle}\n proUnlockBody={copy.proUnlockBody}\n proUnlockCmd={copy.proUnlockCmd}\n proUnlockNote={copy.proUnlockNote}\n onProUnlockCopied={() =>\n trackEvent('tool_cta_click', { tool: 'screenshot_workload_calculator', cta: 'copy_cli_pro_unlock' })\n }\n />\n <CliPreflightCard\n compact\n href=\"/tools/agent-cli/#preflight\"\n onClick={(event) =>\n trackEventAndFollowLink(event, 'tool_cta_click', {\n tool: 'screenshot_workload_calculator',\n cta: 'open_cli_preflight_card',\n })\n }\n className=\"max-w-xl mx-auto\"\n />\n </section>\n\n <FitPanel className=\"max-w-4xl mx-auto w-full\" />\n\n <section className=\"grid lg:grid-cols-2 gap-6\">\n <div className=\"bg-slate-900/60 border border-slate-800 rounded-2xl p-6 space-y-5\">\n <h2 className=\"text-lg font-bold text-white\">{copy.inputsTitle}</h2>\n\n <div className=\"space-y-2\">\n <div className=\"text-[10px] font-bold text-slate-400 uppercase tracking-wider\">\n {copy.presetsTitle}\n </div>\n <div className=\"flex flex-wrap gap-2\">\n {presets.map((preset) => (\n <button\n key={preset.key}\n type=\"button\"\n onClick={() => applyPreset(preset)}\n className=\"px-3 py-1.5 rounded-lg border border-slate-700 bg-slate-950 text-xs font-semibold text-slate-200 hover:bg-slate-900 transition-colors\"\n >\n {preset.label}\n </button>\n ))}\n </div>\n </div>\n\n <div className=\"grid grid-cols-1 sm:grid-cols-2 gap-4\">\n <label className=\"space-y-1\">\n <div className=\"text-sm font-semibold text-slate-200\">{copy.screenshotsPerLocaleLabel}</div>\n <input\n type=\"number\"\n min={1}\n max={50}\n value={screenshotsPerLocale}\n onChange={(e) => {\n markInteracted();\n setScreenshotsPerLocale(clampNumber(e.target.value, { min: 1, max: 50, fallback: 5 }));\n }}\n className=\"w-full rounded-xl bg-slate-950 border border-slate-800 px-3 py-2 text-white focus:outline-none focus:ring-2 focus:ring-blue-500/60\"\n />\n <div className=\"text-xs text-slate-500\">{copy.screenshotsPerLocaleHelp}</div>\n </label>\n\n <label className=\"space-y-1\">\n <div className=\"text-sm font-semibold text-slate-200\">{copy.localesLabel}</div>\n <input\n type=\"number\"\n min={1}\n max={50}\n value={localeCount}\n onChange={(e) => {\n markInteracted();\n setLocaleCount(clampNumber(e.target.value, { min: 1, max: 50, fallback: 10 }));\n }}\n className=\"w-full rounded-xl bg-slate-950 border border-slate-800 px-3 py-2 text-white focus:outline-none focus:ring-2 focus:ring-blue-500/60\"\n />\n <div className=\"text-xs text-slate-500\">{copy.localesHelp}</div>\n </label>\n </div>\n\n <div className=\"space-y-3\">\n <div className=\"flex items-center justify-between\">\n <div className=\"text-sm font-semibold text-slate-200\">{copy.iosDeviceSizesLabel}</div>\n <label className=\"flex items-center gap-2 text-xs text-slate-400\">\n <input\n type=\"checkbox\"\n checked={includeIOS}\n onChange={(e) => {\n markInteracted();\n setIncludeIOS(e.target.checked);\n }}\n />\n {copy.iosDeviceSizesToggle}\n </label>\n </div>\n <input\n type=\"number\"\n min={1}\n max={10}\n disabled={!includeIOS}\n value={iosDeviceSizes}\n onChange={(e) => {\n markInteracted();\n setIosDeviceSizes(clampNumber(e.target.value, { min: 1, max: 10, fallback: 4 }));\n }}\n className=\"w-full rounded-xl bg-slate-950 border border-slate-800 px-3 py-2 text-white disabled:opacity-40 focus:outline-none focus:ring-2 focus:ring-blue-500/60\"\n />\n <div className=\"text-xs text-slate-500\">{copy.iosDeviceSizesHelp}</div>\n </div>\n\n <div className=\"space-y-3\">\n <div className=\"flex items-center justify-between\">\n <div className=\"text-sm font-semibold text-slate-200\">{copy.androidDeviceSizesLabel}</div>\n <label className=\"flex items-center gap-2 text-xs text-slate-400\">\n <input\n type=\"checkbox\"\n checked={includeAndroid}\n onChange={(e) => {\n markInteracted();\n setIncludeAndroid(e.target.checked);\n }}\n />\n {copy.androidDeviceSizesToggle}\n </label>\n </div>\n <input\n type=\"number\"\n min={1}\n max={10}\n disabled={!includeAndroid}\n value={androidDeviceSizes}\n onChange={(e) => {\n markInteracted();\n setAndroidDeviceSizes(clampNumber(e.target.value, { min: 1, max: 10, fallback: 2 }));\n }}\n className=\"w-full rounded-xl bg-slate-950 border border-slate-800 px-3 py-2 text-white disabled:opacity-40 focus:outline-none focus:ring-2 focus:ring-blue-500/60\"\n />\n <div className=\"text-xs text-slate-500\">{copy.androidDeviceSizesHelp}</div>\n </div>\n\n <label className=\"space-y-1\">\n <div className=\"text-sm font-semibold text-slate-200\">{copy.minutesPerImageLabel}</div>\n <input\n type=\"number\"\n min={0.25}\n max={30}\n step={0.25}\n value={minutesPerImage}\n onChange={(e) => {\n markInteracted();\n setMinutesPerImage(clampNumber(e.target.value, { min: 0.25, max: 30, fallback: 2 }));\n }}\n className=\"w-full rounded-xl bg-slate-950 border border-slate-800 px-3 py-2 text-white focus:outline-none focus:ring-2 focus:ring-blue-500/60\"\n />\n <div className=\"text-xs text-slate-500\">{copy.minutesPerImageHelp}</div>\n </label>\n </div>\n\n <div className=\"bg-slate-900/60 border border-slate-800 rounded-2xl p-6 space-y-5\">\n <h2 className=\"text-lg font-bold text-white\">{copy.resultsTitle}</h2>\n\n <div className=\"grid sm:grid-cols-2 gap-4\">\n <div className=\"rounded-2xl border border-slate-800 bg-slate-950 p-4\">\n <div className=\"text-xs text-slate-500\">{copy.totalImagesLabel}</div>\n <div className=\"text-3xl font-black text-white\">{formatNumber(totals.totalImages)}</div>\n <div className=\"text-xs text-slate-500 mt-1\">\n {copy.totalImagesFormula({\n shots: formatNumber(totals.shots),\n locales: formatNumber(totals.locales),\n deviceSizes: formatNumber(totals.deviceSizes),\n })}\n </div>\n </div>\n <div className=\"rounded-2xl border border-slate-800 bg-slate-950 p-4\">\n <div className=\"text-xs text-slate-500\">{copy.multiplierLabel}</div>\n <div className=\"text-3xl font-black text-white\">\n {formatNumber(totals.multiplier)}\n {copy.multiplierSuffix}\n </div>\n <div className=\"text-xs text-slate-500 mt-1\">{copy.multiplierHelp({ multiplier: formatNumber(totals.multiplier) })}</div>\n </div>\n </div>\n\n <div className=\"rounded-2xl border border-slate-800 bg-slate-950 p-4 space-y-2\">\n <div className=\"text-xs text-slate-500\">{copy.manualTimeLabel}</div>\n <div className=\"text-2xl font-black text-white\">{formatDuration(totals.manualMinutes)}</div>\n <div className=\"text-xs text-slate-500\">\n {copy.manualTimeFormula({ images: formatNumber(totals.totalImages), minutesPerImage: formatNumber(minutesPerImage) })}\n </div>\n </div>\n\n <div className=\"rounded-2xl border border-blue-500/40 bg-blue-500/10 p-4 space-y-2\">\n <div className=\"text-xs text-blue-200 font-semibold\">{copy.withShipScreensLabel}</div>\n <div className=\"text-sm text-slate-200\">\n {lang === 'ja' ? (\n <>\n 元スクショ <span className=\"font-bold text-white\">{formatNumber(totals.shots)}</span> 枚と CSV{' '}\n <span className=\"font-bold text-white\">{formatNumber(totals.locales)}</span> 行を用意して、一括で出力できます。\n </>\n ) : (\n <>\n Prepare <span className=\"font-bold text-white\">{formatNumber(totals.shots)}</span> base screenshots, import{' '}\n <span className=\"font-bold text-white\">{formatNumber(totals.locales)}</span> locales, then export the full set.\n </>\n )}\n </div>\n <div className=\"text-xs text-slate-300\">{copy.withShipScreensNote}</div>\n </div>\n\n <div className=\"rounded-2xl border border-slate-800 bg-slate-950 p-4 space-y-2\">\n <div className=\"text-xs text-slate-500\">{copy.minSetTitle}</div>\n <div className=\"text-sm text-slate-200\">{copy.minSetBody}</div>\n <ul className=\"text-xs text-slate-400 space-y-1 list-disc list-inside\">\n {minSetBullets.map((item) => (\n <li key={item}>{item}</li>\n ))}\n </ul>\n <div className=\"text-xs text-slate-500\">{copy.minSetNote}</div>\n </div>\n\n <div className=\"flex flex-col sm:flex-row gap-3\">\n <button\n type=\"button\"\n onClick={downloadCsvTemplate}\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.downloadCsv}\n </button>\n <a\n href={sampleProjectHref}\n onClick={(event) =>\n trackEventAndFollowLink(event, 'tool_cta_click', {\n tool: 'screenshot_workload_calculator',\n cta: 'open_sample_project_results',\n })\n }\n className=\"flex-1 inline-flex items-center justify-center gap-2 px-4 py-3 rounded-xl bg-blue-500 text-white font-bold hover:bg-blue-600 transition\"\n >\n {copy.startSample} <ArrowRight size={16} />\n </a>\n <a\n href={agentCliHref}\n onClick={(event) =>\n trackEventAndFollowLink(event, 'tool_cta_click', {\n tool: 'screenshot_workload_calculator',\n cta: 'open_agent_cli_results',\n })\n }\n className=\"flex-1 inline-flex items-center justify-center gap-2 px-4 py-3 rounded-xl border border-slate-700 bg-slate-950 text-slate-200 font-bold hover:bg-slate-900 transition\"\n >\n {copy.startCli} <ArrowRight size={16} />\n </a>\n </div>\n\n <div className=\"text-xs text-slate-500\">\n {lang === 'ja' ? (\n <>\n 例: 5枚 × 10言語 × 4サイズ = <span className=\"text-slate-200 font-semibold\">200枚</span>.\n </>\n ) : (\n <>\n Example: 5 screenshots × 10 locales × 4 device sizes = <span className=\"text-slate-200 font-semibold\">200 images</span>.\n </>\n )}\n </div>\n </div>\n </section>\n\n <section className=\"max-w-3xl mx-auto text-center space-y-3 pt-4\">\n <p className=\"text-sm text-slate-400\">\n {copy.feedbackText}\n </p>\n <a\n href=\"https://x.com/shipscreenscom\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n onClick={() => trackEvent('tool_cta_click', { tool: 'screenshot_workload_calculator', cta: 'dm_x' })}\n className=\"text-sm text-blue-300 hover:text-blue-200 transition-colors underline underline-offset-4\"\n >\n {copy.feedbackCta}\n </a>\n </section>\n\n <section className=\"bg-slate-900/60 border border-slate-800 rounded-2xl p-6 flex flex-col md:flex-row items-start md:items-center justify-between gap-4\">\n <div className=\"space-y-1\">\n <div className=\"text-sm font-bold text-white\">{copy.nextTitle}</div>\n <div className=\"text-sm text-slate-300\">{copy.nextBody}</div>\n </div>\n <div className=\"flex flex-col sm:flex-row gap-3 w-full md:w-auto\">\n <a\n href={sampleProjectHref}\n onClick={(event) =>\n trackEventAndFollowLink(event, 'tool_cta_click', {\n tool: 'screenshot_workload_calculator',\n cta: 'open_sample_project',\n })\n }\n className=\"inline-flex items-center justify-center gap-2 px-4 py-3 rounded-xl bg-blue-500 text-white font-bold hover:bg-blue-600 transition w-full md:w-auto\"\n >\n {copy.nextCtaSample} <ArrowRight size={16} />\n </a>\n <a\n href=\"/tools/5-panel-screenshot-framework/\"\n onClick={() => trackEvent('tool_cta_click', { tool: 'screenshot_workload_calculator', cta: 'open_framework' })}\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 md:w-auto\"\n >\n {copy.nextCta} <ArrowRight size={16} />\n </a>\n </div>\n </section>\n </main>\n <StickyMobileCta\n primary={{\n label: copy.startSample,\n href: sampleProjectHref,\n onClick: (event) =>\n trackEventAndFollowLink(event, 'tool_cta_click', {\n tool: 'screenshot_workload_calculator',\n cta: 'sticky_primary_sample',\n }),\n }}\n secondary={{\n label: copy.startCli,\n href: agentCliHref,\n onClick: (event) =>\n trackEventAndFollowLink(event, 'tool_cta_click', {\n tool: 'screenshot_workload_calculator',\n cta: 'sticky_secondary_cli',\n }),\n }}\n />\n </div>\n );\n};\n\nexport default WorkloadCalculator;\n"],"names":["clampNumber","value","min","max","fallback","num","normalizeLang","lang","COPY","shots","locales","deviceSizes","multiplier","images","minutesPerImage","WorkloadCalculator","t","i18n","useTranslation","usePageTitle","numberLocale","copy","openAppHref","agentCliHref","firstExportHref","configDownloadHref","csvDownloadHref","sampleProjectHref","copyButtonLabel","codeToggleLabel","defaultCodeOpen","numberFormatter","useMemo","formatNumber","useCallback","formatDuration","minutes","hours","days","useEffect","trackEvent","hasInteractedRef","useRef","markInteracted","screenshotsPerLocale","setScreenshotsPerLocale","useState","localeCount","setLocaleCount","includeIOS","setIncludeIOS","includeAndroid","setIncludeAndroid","iosDeviceSizes","setIosDeviceSizes","androidDeviceSizes","setAndroidDeviceSizes","setMinutesPerImage","minSetBullets","bullets","presets","applyPreset","preset","totals","iosSizes","androidSizes","totalImages","manualMinutes","downloadCsvTemplate","slideCount","headerCells","i","enRow","jaRow","csvContent","csv","link","jsxs","jsx","StagingBadge","SiteHeader","event","trackEventAndFollowLink","ArrowRight","Calculator","CopyButton","copyLabel","copyState","Fragment","ClipboardCopy","ChevronDown","ToolGuardrailsPanel","CliPreflightCard","FitPanel","e","item","Download","StickyMobileCta"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{c as e}from"./LanguageSwitcher-BD9N-dla.js";const t=[["rect",{width:"16",height:"20",x:"4",y:"2",rx:"2",key:"1nb95v"}],["line",{x1:"8",x2:"16",y1:"6",y2:"6",key:"x4nwl0"}],["line",{x1:"16",x2:"16",y1:"14",y2:"18",key:"wjye3r"}],["path",{d:"M16 10h.01",key:"1m94wz"}],["path",{d:"M12 10h.01",key:"1nrarc"}],["path",{d:"M8 10h.01",key:"19clt8"}],["path",{d:"M12 14h.01",key:"1etili"}],["path",{d:"M8 14h.01",key:"6423bh"}],["path",{d:"M12 18h.01",key:"mhygvu"}],["path",{d:"M8 18h.01",key:"lrp35t"}]],y=e("calculator",t);export{y as C};
2
- //# sourceMappingURL=calculator-CiqKFdRp.js.map
1
+ import{c as e}from"./LanguageSwitcher-CfUhVVuT.js";const t=[["rect",{width:"16",height:"20",x:"4",y:"2",rx:"2",key:"1nb95v"}],["line",{x1:"8",x2:"16",y1:"6",y2:"6",key:"x4nwl0"}],["line",{x1:"16",x2:"16",y1:"14",y2:"18",key:"wjye3r"}],["path",{d:"M16 10h.01",key:"1m94wz"}],["path",{d:"M12 10h.01",key:"1nrarc"}],["path",{d:"M8 10h.01",key:"19clt8"}],["path",{d:"M12 14h.01",key:"1etili"}],["path",{d:"M8 14h.01",key:"6423bh"}],["path",{d:"M12 18h.01",key:"mhygvu"}],["path",{d:"M8 18h.01",key:"lrp35t"}]],y=e("calculator",t);export{y as C};
2
+ //# sourceMappingURL=calculator-_D64kDDH.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"calculator-CiqKFdRp.js","sources":["../../node_modules/lucide-react/dist/esm/icons/calculator.js"],"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 [\"rect\", { width: \"16\", height: \"20\", x: \"4\", y: \"2\", rx: \"2\", key: \"1nb95v\" }],\n [\"line\", { x1: \"8\", x2: \"16\", y1: \"6\", y2: \"6\", key: \"x4nwl0\" }],\n [\"line\", { x1: \"16\", x2: \"16\", y1: \"14\", y2: \"18\", key: \"wjye3r\" }],\n [\"path\", { d: \"M16 10h.01\", key: \"1m94wz\" }],\n [\"path\", { d: \"M12 10h.01\", key: \"1nrarc\" }],\n [\"path\", { d: \"M8 10h.01\", key: \"19clt8\" }],\n [\"path\", { d: \"M12 14h.01\", key: \"1etili\" }],\n [\"path\", { d: \"M8 14h.01\", key: \"6423bh\" }],\n [\"path\", { d: \"M12 18h.01\", key: \"mhygvu\" }],\n [\"path\", { d: \"M8 18h.01\", key: \"lrp35t\" }]\n];\nconst Calculator = createLucideIcon(\"calculator\", __iconNode);\n\nexport { __iconNode, Calculator as default };\n//# sourceMappingURL=calculator.js.map\n"],"names":["__iconNode","Calculator","createLucideIcon"],"mappings":"mDASA,MAAMA,EAAa,CACjB,CAAC,OAAQ,CAAE,MAAO,KAAM,OAAQ,KAAM,EAAG,IAAK,EAAG,IAAK,GAAI,IAAK,IAAK,QAAQ,CAAE,EAC9E,CAAC,OAAQ,CAAE,GAAI,IAAK,GAAI,KAAM,GAAI,IAAK,GAAI,IAAK,IAAK,QAAQ,CAAE,EAC/D,CAAC,OAAQ,CAAE,GAAI,KAAM,GAAI,KAAM,GAAI,KAAM,GAAI,KAAM,IAAK,QAAQ,CAAE,EAClE,CAAC,OAAQ,CAAE,EAAG,aAAc,IAAK,QAAQ,CAAE,EAC3C,CAAC,OAAQ,CAAE,EAAG,aAAc,IAAK,QAAQ,CAAE,EAC3C,CAAC,OAAQ,CAAE,EAAG,YAAa,IAAK,QAAQ,CAAE,EAC1C,CAAC,OAAQ,CAAE,EAAG,aAAc,IAAK,QAAQ,CAAE,EAC3C,CAAC,OAAQ,CAAE,EAAG,YAAa,IAAK,QAAQ,CAAE,EAC1C,CAAC,OAAQ,CAAE,EAAG,aAAc,IAAK,QAAQ,CAAE,EAC3C,CAAC,OAAQ,CAAE,EAAG,YAAa,IAAK,QAAQ,CAAE,CAC5C,EACMC,EAAaC,EAAiB,aAAcF,CAAU","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"calculator-_D64kDDH.js","sources":["../../node_modules/lucide-react/dist/esm/icons/calculator.js"],"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 [\"rect\", { width: \"16\", height: \"20\", x: \"4\", y: \"2\", rx: \"2\", key: \"1nb95v\" }],\n [\"line\", { x1: \"8\", x2: \"16\", y1: \"6\", y2: \"6\", key: \"x4nwl0\" }],\n [\"line\", { x1: \"16\", x2: \"16\", y1: \"14\", y2: \"18\", key: \"wjye3r\" }],\n [\"path\", { d: \"M16 10h.01\", key: \"1m94wz\" }],\n [\"path\", { d: \"M12 10h.01\", key: \"1nrarc\" }],\n [\"path\", { d: \"M8 10h.01\", key: \"19clt8\" }],\n [\"path\", { d: \"M12 14h.01\", key: \"1etili\" }],\n [\"path\", { d: \"M8 14h.01\", key: \"6423bh\" }],\n [\"path\", { d: \"M12 18h.01\", key: \"mhygvu\" }],\n [\"path\", { d: \"M8 18h.01\", key: \"lrp35t\" }]\n];\nconst Calculator = createLucideIcon(\"calculator\", __iconNode);\n\nexport { __iconNode, Calculator as default };\n//# sourceMappingURL=calculator.js.map\n"],"names":["__iconNode","Calculator","createLucideIcon"],"mappings":"mDASA,MAAMA,EAAa,CACjB,CAAC,OAAQ,CAAE,MAAO,KAAM,OAAQ,KAAM,EAAG,IAAK,EAAG,IAAK,GAAI,IAAK,IAAK,QAAQ,CAAE,EAC9E,CAAC,OAAQ,CAAE,GAAI,IAAK,GAAI,KAAM,GAAI,IAAK,GAAI,IAAK,IAAK,QAAQ,CAAE,EAC/D,CAAC,OAAQ,CAAE,GAAI,KAAM,GAAI,KAAM,GAAI,KAAM,GAAI,KAAM,IAAK,QAAQ,CAAE,EAClE,CAAC,OAAQ,CAAE,EAAG,aAAc,IAAK,QAAQ,CAAE,EAC3C,CAAC,OAAQ,CAAE,EAAG,aAAc,IAAK,QAAQ,CAAE,EAC3C,CAAC,OAAQ,CAAE,EAAG,YAAa,IAAK,QAAQ,CAAE,EAC1C,CAAC,OAAQ,CAAE,EAAG,aAAc,IAAK,QAAQ,CAAE,EAC3C,CAAC,OAAQ,CAAE,EAAG,YAAa,IAAK,QAAQ,CAAE,EAC1C,CAAC,OAAQ,CAAE,EAAG,aAAc,IAAK,QAAQ,CAAE,EAC3C,CAAC,OAAQ,CAAE,EAAG,YAAa,IAAK,QAAQ,CAAE,CAC5C,EACMC,EAAaC,EAAiB,aAAcF,CAAU","x_google_ignoreList":[0]}
@@ -0,0 +1,2 @@
1
+ import{c}from"./LanguageSwitcher-CfUhVVuT.js";const e=[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]],t=c("check",e);export{t as C};
2
+ //# sourceMappingURL=check-BaiZ7vYg.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"check-BaiZ7vYg.js","sources":["../../node_modules/lucide-react/dist/esm/icons/check.js"],"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 = [[\"path\", { d: \"M20 6 9 17l-5-5\", key: \"1gmf2c\" }]];\nconst Check = createLucideIcon(\"check\", __iconNode);\n\nexport { __iconNode, Check as default };\n//# sourceMappingURL=check.js.map\n"],"names":["__iconNode","Check","createLucideIcon"],"mappings":"8CASA,MAAMA,EAAa,CAAC,CAAC,OAAQ,CAAE,EAAG,kBAAmB,IAAK,QAAQ,CAAE,CAAC,EAC/DC,EAAQC,EAAiB,QAASF,CAAU","x_google_ignoreList":[0]}
@@ -0,0 +1,2 @@
1
+ import{c as o}from"./LanguageSwitcher-CfUhVVuT.js";const n=[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]],e=o("chevron-down",n);export{e as C};
2
+ //# sourceMappingURL=chevron-down-DVRa-y8D.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"chevron-down-_xIkRLaA.js","sources":["../../node_modules/lucide-react/dist/esm/icons/chevron-down.js"],"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 = [[\"path\", { d: \"m6 9 6 6 6-6\", key: \"qrunsl\" }]];\nconst ChevronDown = createLucideIcon(\"chevron-down\", __iconNode);\n\nexport { __iconNode, ChevronDown as default };\n//# sourceMappingURL=chevron-down.js.map\n"],"names":["__iconNode","ChevronDown","createLucideIcon"],"mappings":"mDASA,MAAMA,EAAa,CAAC,CAAC,OAAQ,CAAE,EAAG,eAAgB,IAAK,QAAQ,CAAE,CAAC,EAC5DC,EAAcC,EAAiB,eAAgBF,CAAU","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"chevron-down-DVRa-y8D.js","sources":["../../node_modules/lucide-react/dist/esm/icons/chevron-down.js"],"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 = [[\"path\", { d: \"m6 9 6 6 6-6\", key: \"qrunsl\" }]];\nconst ChevronDown = createLucideIcon(\"chevron-down\", __iconNode);\n\nexport { __iconNode, ChevronDown as default };\n//# sourceMappingURL=chevron-down.js.map\n"],"names":["__iconNode","ChevronDown","createLucideIcon"],"mappings":"mDASA,MAAMA,EAAa,CAAC,CAAC,OAAQ,CAAE,EAAG,eAAgB,IAAK,QAAQ,CAAE,CAAC,EAC5DC,EAAcC,EAAiB,eAAgBF,CAAU","x_google_ignoreList":[0]}
@@ -0,0 +1,2 @@
1
+ import{c}from"./LanguageSwitcher-CfUhVVuT.js";const e=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]],r=c("circle-check",e);export{r as C};
2
+ //# sourceMappingURL=circle-check-reAyVfkP.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"circle-check-reAyVfkP.js","sources":["../../node_modules/lucide-react/dist/esm/icons/circle-check.js"],"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 [\"circle\", { cx: \"12\", cy: \"12\", r: \"10\", key: \"1mglay\" }],\n [\"path\", { d: \"m9 12 2 2 4-4\", key: \"dzmm74\" }]\n];\nconst CircleCheck = createLucideIcon(\"circle-check\", __iconNode);\n\nexport { __iconNode, CircleCheck as default };\n//# sourceMappingURL=circle-check.js.map\n"],"names":["__iconNode","CircleCheck","createLucideIcon"],"mappings":"8CASA,MAAMA,EAAa,CACjB,CAAC,SAAU,CAAE,GAAI,KAAM,GAAI,KAAM,EAAG,KAAM,IAAK,SAAU,EACzD,CAAC,OAAQ,CAAE,EAAG,gBAAiB,IAAK,QAAQ,CAAE,CAChD,EACMC,EAAcC,EAAiB,eAAgBF,CAAU","x_google_ignoreList":[0]}
@@ -1,2 +1,2 @@
1
- import{c as a}from"./LanguageSwitcher-BD9N-dla.js";const d=[["rect",{width:"8",height:"4",x:"8",y:"2",rx:"1",ry:"1",key:"tgr4d6"}],["path",{d:"M8 4H6a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-2",key:"4jdomd"}],["path",{d:"M16 4h2a2 2 0 0 1 2 2v4",key:"3hqy98"}],["path",{d:"M21 14H11",key:"1bme5i"}],["path",{d:"m15 10-4 4 4 4",key:"5dvupr"}]],o=a("clipboard-copy",d);export{o as C};
2
- //# sourceMappingURL=clipboard-copy-DCJioqIc.js.map
1
+ import{c as a}from"./LanguageSwitcher-CfUhVVuT.js";const d=[["rect",{width:"8",height:"4",x:"8",y:"2",rx:"1",ry:"1",key:"tgr4d6"}],["path",{d:"M8 4H6a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-2",key:"4jdomd"}],["path",{d:"M16 4h2a2 2 0 0 1 2 2v4",key:"3hqy98"}],["path",{d:"M21 14H11",key:"1bme5i"}],["path",{d:"m15 10-4 4 4 4",key:"5dvupr"}]],o=a("clipboard-copy",d);export{o as C};
2
+ //# sourceMappingURL=clipboard-copy-BfB1mutp.js.map