shipscreens 0.1.0

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 (605) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +27 -0
  3. package/bin/shipscreens.js +664 -0
  4. package/cli/assetRefs.js +33 -0
  5. package/cli/auth.js +454 -0
  6. package/cli/buildOutputs.js +146 -0
  7. package/cli/commands/auth.js +65 -0
  8. package/cli/commands/build.js +347 -0
  9. package/cli/commands/copyImport.js +263 -0
  10. package/cli/commands/exportFramefile.js +404 -0
  11. package/cli/commands/init.js +339 -0
  12. package/cli/commands/lock.js +144 -0
  13. package/cli/commands/plan.js +203 -0
  14. package/cli/commands/stage.js +318 -0
  15. package/cli/commands/validate.js +89 -0
  16. package/cli/commands/verify.js +659 -0
  17. package/cli/commands/wizard.js +266 -0
  18. package/cli/dataUrl.js +19 -0
  19. package/cli/fastlaneZip.js +115 -0
  20. package/cli/hash.js +13 -0
  21. package/cli/loadConfig.js +55 -0
  22. package/cli/outputPaths.js +24 -0
  23. package/cli/packageRoot.js +8 -0
  24. package/cli/pathUtils.js +25 -0
  25. package/cli/rendererServer.js +48 -0
  26. package/cli/repoRoot.js +23 -0
  27. package/cli/rootPolicy.js +17 -0
  28. package/cli/schema.js +290 -0
  29. package/cli/snapshotFromConfig.js +116 -0
  30. package/cli/staticServer.js +102 -0
  31. package/cli/templateConfig.js +51 -0
  32. package/cli/viteServer.js +40 -0
  33. package/dist/app/apple-touch-icon.png +0 -0
  34. package/dist/app/assets/AgentCli-8e28laT4.js +17 -0
  35. package/dist/app/assets/AgentCli-8e28laT4.js.map +1 -0
  36. package/dist/app/assets/App-DU0xew0e.js +13 -0
  37. package/dist/app/assets/App-DU0xew0e.js.map +1 -0
  38. package/dist/app/assets/AppReviewAso-OLwc4Rw_.js +4 -0
  39. package/dist/app/assets/AppReviewAso-OLwc4Rw_.js.map +1 -0
  40. package/dist/app/assets/Cancelled-BoeZQa1S.js +2 -0
  41. package/dist/app/assets/Cancelled-BoeZQa1S.js.map +1 -0
  42. package/dist/app/assets/CliPreflightCard-CxYyogdF.js +2 -0
  43. package/dist/app/assets/CliPreflightCard-CxYyogdF.js.map +1 -0
  44. package/dist/app/assets/CopyButton-CGfuSJtU.js +2 -0
  45. package/dist/app/assets/CopyButton-CGfuSJtU.js.map +1 -0
  46. package/dist/app/assets/FastlaneScreenshots-CFT6IiRb.js +52 -0
  47. package/dist/app/assets/FastlaneScreenshots-CFT6IiRb.js.map +1 -0
  48. package/dist/app/assets/FirstExport-B_UDacZm.js +6 -0
  49. package/dist/app/assets/FirstExport-B_UDacZm.js.map +1 -0
  50. package/dist/app/assets/FivePanelFramework-C1z_xUbe.js +60 -0
  51. package/dist/app/assets/FivePanelFramework-C1z_xUbe.js.map +1 -0
  52. package/dist/app/assets/ForgotPassword-ZQ8U3ejz.js +2 -0
  53. package/dist/app/assets/ForgotPassword-ZQ8U3ejz.js.map +1 -0
  54. package/dist/app/assets/Landing-DAIP71DD.js +2 -0
  55. package/dist/app/assets/Landing-DAIP71DD.js.map +1 -0
  56. package/dist/app/assets/LanguageSwitcher-D93nCuuR.js +2 -0
  57. package/dist/app/assets/LanguageSwitcher-D93nCuuR.js.map +1 -0
  58. package/dist/app/assets/Legal-Koe7vi6H.js +2 -0
  59. package/dist/app/assets/Legal-Koe7vi6H.js.map +1 -0
  60. package/dist/app/assets/NotFound-CfY31vMZ.js +2 -0
  61. package/dist/app/assets/NotFound-CfY31vMZ.js.map +1 -0
  62. package/dist/app/assets/Pricing-BQwtFVbj.js +2 -0
  63. package/dist/app/assets/Pricing-BQwtFVbj.js.map +1 -0
  64. package/dist/app/assets/Privacy-CaHf2UM7.js +2 -0
  65. package/dist/app/assets/Privacy-CaHf2UM7.js.map +1 -0
  66. package/dist/app/assets/SignIn-Cyi2_-Mn.js +2 -0
  67. package/dist/app/assets/SignIn-Cyi2_-Mn.js.map +1 -0
  68. package/dist/app/assets/SignUp-C9QH5po_.js +2 -0
  69. package/dist/app/assets/SignUp-C9QH5po_.js.map +1 -0
  70. package/dist/app/assets/SiteHeader-Dj3gDOnR.js +2 -0
  71. package/dist/app/assets/SiteHeader-Dj3gDOnR.js.map +1 -0
  72. package/dist/app/assets/StickyMobileCta-uyWGVhdc.js +2 -0
  73. package/dist/app/assets/StickyMobileCta-uyWGVhdc.js.map +1 -0
  74. package/dist/app/assets/StoreAssetsPipeline-BJlnD3kD.js +4 -0
  75. package/dist/app/assets/StoreAssetsPipeline-BJlnD3kD.js.map +1 -0
  76. package/dist/app/assets/Success-B7k7FvJj.js +2 -0
  77. package/dist/app/assets/Success-B7k7FvJj.js.map +1 -0
  78. package/dist/app/assets/Terms-DgJWOeUD.js +2 -0
  79. package/dist/app/assets/Terms-DgJWOeUD.js.map +1 -0
  80. package/dist/app/assets/ToolsIndex-xMPoFom9.js +6 -0
  81. package/dist/app/assets/ToolsIndex-xMPoFom9.js.map +1 -0
  82. package/dist/app/assets/WorkloadCalculator-Bdt6qPR3.js +5 -0
  83. package/dist/app/assets/WorkloadCalculator-Bdt6qPR3.js.map +1 -0
  84. package/dist/app/assets/calculator-CWfp5Day.js +2 -0
  85. package/dist/app/assets/calculator-CWfp5Day.js.map +1 -0
  86. package/dist/app/assets/check-BWCiUZ-C.js +2 -0
  87. package/dist/app/assets/check-BWCiUZ-C.js.map +1 -0
  88. package/dist/app/assets/chevron-down-DbSAem1L.js +2 -0
  89. package/dist/app/assets/chevron-down-DbSAem1L.js.map +1 -0
  90. package/dist/app/assets/circle-check-CeakjiXC.js +2 -0
  91. package/dist/app/assets/circle-check-CeakjiXC.js.map +1 -0
  92. package/dist/app/assets/clipboard-copy-DgTgnK84.js +2 -0
  93. package/dist/app/assets/clipboard-copy-DgTgnK84.js.map +1 -0
  94. package/dist/app/assets/copy-C9t_FzCZ.js +2 -0
  95. package/dist/app/assets/copy-C9t_FzCZ.js.map +1 -0
  96. package/dist/app/assets/crop-B7IxIx6D.js +2 -0
  97. package/dist/app/assets/crop-B7IxIx6D.js.map +1 -0
  98. package/dist/app/assets/download-65Zuvgwm.js +2 -0
  99. package/dist/app/assets/download-65Zuvgwm.js.map +1 -0
  100. package/dist/app/assets/eye-ouNo8Nv5.js +2 -0
  101. package/dist/app/assets/eye-ouNo8Nv5.js.map +1 -0
  102. package/dist/app/assets/grid-3x3-U1Nk_ppf.js +2 -0
  103. package/dist/app/assets/grid-3x3-U1Nk_ppf.js.map +1 -0
  104. package/dist/app/assets/hero/cli-build-tree-15s.mp4 +0 -0
  105. package/dist/app/assets/hero/cli-build-tree-15s.webm +0 -0
  106. package/dist/app/assets/hero/cli-build-tree-25s.mp4 +0 -0
  107. package/dist/app/assets/hero/cli-build-tree-25s.webm +0 -0
  108. package/dist/app/assets/hero/cli-build-tree-poster.png +0 -0
  109. package/dist/app/assets/hero/demo.gif +0 -0
  110. package/dist/app/assets/hero/demo.mp4 +0 -0
  111. package/dist/app/assets/hero/demo.webm +0 -0
  112. package/dist/app/assets/icons/apple-touch-icon.png +0 -0
  113. package/dist/app/assets/icons/device-base.png +0 -0
  114. package/dist/app/assets/icons/favicon-16x16.png +0 -0
  115. package/dist/app/assets/icons/favicon-32x32.png +0 -0
  116. package/dist/app/assets/icons/favicon.ico +0 -0
  117. package/dist/app/assets/icons/favicon.svg +1 -0
  118. package/dist/app/assets/index-B8Y8Y-Mi.js +180 -0
  119. package/dist/app/assets/index-B8Y8Y-Mi.js.map +1 -0
  120. package/dist/app/assets/index-hyiQFYGv.css +1 -0
  121. package/dist/app/assets/inter-cyrillic-400-normal-HOLc17fK.woff +0 -0
  122. package/dist/app/assets/inter-cyrillic-400-normal-obahsSVq.woff2 +0 -0
  123. package/dist/app/assets/inter-cyrillic-500-normal-BasfLYem.woff2 +0 -0
  124. package/dist/app/assets/inter-cyrillic-500-normal-CxZf_p3X.woff +0 -0
  125. package/dist/app/assets/inter-cyrillic-600-normal-4D_pXhcN.woff +0 -0
  126. package/dist/app/assets/inter-cyrillic-600-normal-CWCymEST.woff2 +0 -0
  127. package/dist/app/assets/inter-cyrillic-700-normal-CjBOestx.woff2 +0 -0
  128. package/dist/app/assets/inter-cyrillic-700-normal-DrXBdSj3.woff +0 -0
  129. package/dist/app/assets/inter-cyrillic-ext-400-normal-BQZuk6qB.woff2 +0 -0
  130. package/dist/app/assets/inter-cyrillic-ext-400-normal-DQukG94-.woff +0 -0
  131. package/dist/app/assets/inter-cyrillic-ext-500-normal-B0yAr1jD.woff2 +0 -0
  132. package/dist/app/assets/inter-cyrillic-ext-500-normal-BmqWE9Dz.woff +0 -0
  133. package/dist/app/assets/inter-cyrillic-ext-600-normal-Bcila6Z-.woff +0 -0
  134. package/dist/app/assets/inter-cyrillic-ext-600-normal-Dfes3d0z.woff2 +0 -0
  135. package/dist/app/assets/inter-cyrillic-ext-700-normal-BjwYoWNd.woff2 +0 -0
  136. package/dist/app/assets/inter-cyrillic-ext-700-normal-LO58E6JB.woff +0 -0
  137. package/dist/app/assets/inter-greek-400-normal-B4URO6DV.woff2 +0 -0
  138. package/dist/app/assets/inter-greek-400-normal-q2sYcFCs.woff +0 -0
  139. package/dist/app/assets/inter-greek-500-normal-BIZE56-Y.woff2 +0 -0
  140. package/dist/app/assets/inter-greek-500-normal-Xzm54t5V.woff +0 -0
  141. package/dist/app/assets/inter-greek-600-normal-BZpKdvQh.woff +0 -0
  142. package/dist/app/assets/inter-greek-600-normal-plRanbMR.woff2 +0 -0
  143. package/dist/app/assets/inter-greek-700-normal-BUv2fZ6O.woff +0 -0
  144. package/dist/app/assets/inter-greek-700-normal-C3JjAnD8.woff2 +0 -0
  145. package/dist/app/assets/inter-greek-ext-400-normal-DGGRlc-M.woff2 +0 -0
  146. package/dist/app/assets/inter-greek-ext-400-normal-KugGGMne.woff +0 -0
  147. package/dist/app/assets/inter-greek-ext-500-normal-2j5mBUwD.woff +0 -0
  148. package/dist/app/assets/inter-greek-ext-500-normal-C4iEst2y.woff2 +0 -0
  149. package/dist/app/assets/inter-greek-ext-600-normal-B8X0CLgF.woff +0 -0
  150. package/dist/app/assets/inter-greek-ext-600-normal-DRtmH8MT.woff2 +0 -0
  151. package/dist/app/assets/inter-greek-ext-700-normal-BoQ6DsYi.woff +0 -0
  152. package/dist/app/assets/inter-greek-ext-700-normal-qfdV9bQt.woff2 +0 -0
  153. package/dist/app/assets/inter-latin-400-normal-C38fXH4l.woff2 +0 -0
  154. package/dist/app/assets/inter-latin-400-normal-CyCys3Eg.woff +0 -0
  155. package/dist/app/assets/inter-latin-500-normal-BL9OpVg8.woff +0 -0
  156. package/dist/app/assets/inter-latin-500-normal-Cerq10X2.woff2 +0 -0
  157. package/dist/app/assets/inter-latin-600-normal-CiBQ2DWP.woff +0 -0
  158. package/dist/app/assets/inter-latin-600-normal-LgqL8muc.woff2 +0 -0
  159. package/dist/app/assets/inter-latin-700-normal-BLAVimhd.woff +0 -0
  160. package/dist/app/assets/inter-latin-700-normal-Yt3aPRUw.woff2 +0 -0
  161. package/dist/app/assets/inter-latin-ext-400-normal-77YHD8bZ.woff +0 -0
  162. package/dist/app/assets/inter-latin-ext-400-normal-C1nco2VV.woff2 +0 -0
  163. package/dist/app/assets/inter-latin-ext-500-normal-BxGbmqWO.woff +0 -0
  164. package/dist/app/assets/inter-latin-ext-500-normal-CV4jyFjo.woff2 +0 -0
  165. package/dist/app/assets/inter-latin-ext-600-normal-CIVaiw4L.woff +0 -0
  166. package/dist/app/assets/inter-latin-ext-600-normal-D2bJ5OIk.woff2 +0 -0
  167. package/dist/app/assets/inter-latin-ext-700-normal-Ca8adRJv.woff2 +0 -0
  168. package/dist/app/assets/inter-latin-ext-700-normal-TidjK2hL.woff +0 -0
  169. package/dist/app/assets/inter-vietnamese-400-normal-Bbgyi5SW.woff +0 -0
  170. package/dist/app/assets/inter-vietnamese-400-normal-DMkecbls.woff2 +0 -0
  171. package/dist/app/assets/inter-vietnamese-500-normal-DOriooB6.woff2 +0 -0
  172. package/dist/app/assets/inter-vietnamese-500-normal-mJboJaSs.woff +0 -0
  173. package/dist/app/assets/inter-vietnamese-600-normal-BuLX-rYi.woff +0 -0
  174. package/dist/app/assets/inter-vietnamese-600-normal-Cc8MFFhd.woff2 +0 -0
  175. package/dist/app/assets/inter-vietnamese-700-normal-BZaoP0fm.woff +0 -0
  176. package/dist/app/assets/inter-vietnamese-700-normal-DlLaEgI2.woff2 +0 -0
  177. package/dist/app/assets/layout-grid-X9Sgull2.js +2 -0
  178. package/dist/app/assets/layout-grid-X9Sgull2.js.map +1 -0
  179. package/dist/app/assets/merriweather-cyrillic-400-normal-AvfsDsMQ.woff2 +0 -0
  180. package/dist/app/assets/merriweather-cyrillic-400-normal-DAcQ8g-H.woff +0 -0
  181. package/dist/app/assets/merriweather-cyrillic-700-normal-CHCcU-4a.woff +0 -0
  182. package/dist/app/assets/merriweather-cyrillic-700-normal-wbY04GlL.woff2 +0 -0
  183. package/dist/app/assets/merriweather-cyrillic-ext-400-normal-D9NYhYTq.woff2 +0 -0
  184. package/dist/app/assets/merriweather-cyrillic-ext-400-normal-Di6yW_eE.woff +0 -0
  185. package/dist/app/assets/merriweather-cyrillic-ext-700-normal-Bk1p9YoV.woff2 +0 -0
  186. package/dist/app/assets/merriweather-cyrillic-ext-700-normal-DoooT6Vg.woff +0 -0
  187. package/dist/app/assets/merriweather-latin-400-normal-CvqO63Ah.woff +0 -0
  188. package/dist/app/assets/merriweather-latin-400-normal-G4kZaoXi.woff2 +0 -0
  189. package/dist/app/assets/merriweather-latin-700-normal-D4-nzrAh.woff +0 -0
  190. package/dist/app/assets/merriweather-latin-700-normal-DoUP8Ce-.woff2 +0 -0
  191. package/dist/app/assets/merriweather-latin-ext-400-normal-CLqijLtt.woff +0 -0
  192. package/dist/app/assets/merriweather-latin-ext-400-normal-CWVzVQq3.woff2 +0 -0
  193. package/dist/app/assets/merriweather-latin-ext-700-normal-CaBzXGOk.woff +0 -0
  194. package/dist/app/assets/merriweather-latin-ext-700-normal-jHnxg2Kc.woff2 +0 -0
  195. package/dist/app/assets/merriweather-vietnamese-400-normal-Dh8WVvgZ.woff +0 -0
  196. package/dist/app/assets/merriweather-vietnamese-400-normal-hNacsVs_.woff2 +0 -0
  197. package/dist/app/assets/merriweather-vietnamese-700-normal-Bp6kWjW5.woff2 +0 -0
  198. package/dist/app/assets/merriweather-vietnamese-700-normal-C7_HxHBa.woff +0 -0
  199. package/dist/app/assets/montserrat-cyrillic-400-normal-BPq32Q8K.woff2 +0 -0
  200. package/dist/app/assets/montserrat-cyrillic-400-normal-jEs4Tk-Z.woff +0 -0
  201. package/dist/app/assets/montserrat-cyrillic-700-normal-BvLYcGP1.woff +0 -0
  202. package/dist/app/assets/montserrat-cyrillic-700-normal-D-Pqjtdp.woff2 +0 -0
  203. package/dist/app/assets/montserrat-cyrillic-ext-400-normal-DRPPeomZ.woff +0 -0
  204. package/dist/app/assets/montserrat-cyrillic-ext-400-normal-Xqov12YL.woff2 +0 -0
  205. package/dist/app/assets/montserrat-cyrillic-ext-700-normal-D-Mk2xRJ.woff +0 -0
  206. package/dist/app/assets/montserrat-cyrillic-ext-700-normal-MyDreaeu.woff2 +0 -0
  207. package/dist/app/assets/montserrat-latin-400-normal-BLhwKU8k.woff2 +0 -0
  208. package/dist/app/assets/montserrat-latin-400-normal-xItZbAXg.woff +0 -0
  209. package/dist/app/assets/montserrat-latin-700-normal-BWkrl476.woff +0 -0
  210. package/dist/app/assets/montserrat-latin-700-normal-BdjcYUrC.woff2 +0 -0
  211. package/dist/app/assets/montserrat-latin-ext-400-normal-B8bwfy6Y.woff2 +0 -0
  212. package/dist/app/assets/montserrat-latin-ext-400-normal-BffdBkAA.woff +0 -0
  213. package/dist/app/assets/montserrat-latin-ext-700-normal-BOP2Nhf0.woff2 +0 -0
  214. package/dist/app/assets/montserrat-latin-ext-700-normal-DdDFr05Z.woff +0 -0
  215. package/dist/app/assets/montserrat-vietnamese-400-normal-BeEscFYY.woff +0 -0
  216. package/dist/app/assets/montserrat-vietnamese-400-normal-D4oHqQTd.woff2 +0 -0
  217. package/dist/app/assets/montserrat-vietnamese-700-normal-C0x1De3p.woff2 +0 -0
  218. package/dist/app/assets/montserrat-vietnamese-700-normal-DnwGT2D9.woff +0 -0
  219. package/dist/app/assets/playfair-display-cyrillic-400-normal-CjW2EstV.woff2 +0 -0
  220. package/dist/app/assets/playfair-display-cyrillic-400-normal-ZiRag6zj.woff +0 -0
  221. package/dist/app/assets/playfair-display-cyrillic-700-normal-Dk1mTcxf.woff +0 -0
  222. package/dist/app/assets/playfair-display-cyrillic-700-normal-Dw3uKy19.woff2 +0 -0
  223. package/dist/app/assets/playfair-display-latin-400-normal-CFtfchNt.woff2 +0 -0
  224. package/dist/app/assets/playfair-display-latin-400-normal-DHYHbkg3.woff +0 -0
  225. package/dist/app/assets/playfair-display-latin-700-normal-Bc_1Q1cG.woff +0 -0
  226. package/dist/app/assets/playfair-display-latin-700-normal-CuDiGg7c.woff2 +0 -0
  227. package/dist/app/assets/playfair-display-latin-ext-400-normal-BxlSGspa.woff2 +0 -0
  228. package/dist/app/assets/playfair-display-latin-ext-400-normal-qdZwdvNS.woff +0 -0
  229. package/dist/app/assets/playfair-display-latin-ext-700-normal-C58ejOkc.woff2 +0 -0
  230. package/dist/app/assets/playfair-display-latin-ext-700-normal-D5HUU8GT.woff +0 -0
  231. package/dist/app/assets/playfair-display-vietnamese-400-normal-BV2APVTb.woff2 +0 -0
  232. package/dist/app/assets/playfair-display-vietnamese-400-normal-BbvUAu4N.woff +0 -0
  233. package/dist/app/assets/playfair-display-vietnamese-700-normal-CaKJSIny.woff2 +0 -0
  234. package/dist/app/assets/playfair-display-vietnamese-700-normal-Cr1rw0mr.woff +0 -0
  235. package/dist/app/assets/proof/output-01.png +0 -0
  236. package/dist/app/assets/proof/output-02.png +0 -0
  237. package/dist/app/assets/proof/output-03.png +0 -0
  238. package/dist/app/assets/proof/output-04.png +0 -0
  239. package/dist/app/assets/roboto-cyrillic-400-normal-DAIM1_dR.woff2 +0 -0
  240. package/dist/app/assets/roboto-cyrillic-400-normal-DZJji7Rx.woff +0 -0
  241. package/dist/app/assets/roboto-cyrillic-500-normal-BI4HuXre.woff +0 -0
  242. package/dist/app/assets/roboto-cyrillic-500-normal-hCeO1jFL.woff2 +0 -0
  243. package/dist/app/assets/roboto-cyrillic-700-normal-BiSG5NnW.woff2 +0 -0
  244. package/dist/app/assets/roboto-cyrillic-700-normal-KqaQ5bNp.woff +0 -0
  245. package/dist/app/assets/roboto-cyrillic-ext-400-normal-DtZHuW6i.woff +0 -0
  246. package/dist/app/assets/roboto-cyrillic-ext-400-normal-DzMWdK87.woff2 +0 -0
  247. package/dist/app/assets/roboto-cyrillic-ext-500-normal-B7rQpwPu.woff2 +0 -0
  248. package/dist/app/assets/roboto-cyrillic-ext-500-normal-C927yMrb.woff +0 -0
  249. package/dist/app/assets/roboto-cyrillic-ext-700-normal-BuQgZIrO.woff +0 -0
  250. package/dist/app/assets/roboto-cyrillic-ext-700-normal-UFn0vR9r.woff2 +0 -0
  251. package/dist/app/assets/roboto-greek-400-normal-CcizSnRP.woff +0 -0
  252. package/dist/app/assets/roboto-greek-400-normal-jFM2czAU.woff2 +0 -0
  253. package/dist/app/assets/roboto-greek-500-normal-BJMS0heP.woff2 +0 -0
  254. package/dist/app/assets/roboto-greek-500-normal-BLLWU9W-.woff +0 -0
  255. package/dist/app/assets/roboto-greek-700-normal-BcGn9doz.woff2 +0 -0
  256. package/dist/app/assets/roboto-greek-700-normal-D3kmAf0K.woff +0 -0
  257. package/dist/app/assets/roboto-latin-400-normal-068yxgMN.woff +0 -0
  258. package/dist/app/assets/roboto-latin-400-normal-CNwBRw8h.woff2 +0 -0
  259. package/dist/app/assets/roboto-latin-500-normal-CC5nhZkh.woff +0 -0
  260. package/dist/app/assets/roboto-latin-500-normal-CkrA1NAy.woff2 +0 -0
  261. package/dist/app/assets/roboto-latin-700-normal-CXeAXeti.woff2 +0 -0
  262. package/dist/app/assets/roboto-latin-700-normal-DUekQERp.woff +0 -0
  263. package/dist/app/assets/roboto-latin-ext-400-normal-ZYmyxeOy.woff2 +0 -0
  264. package/dist/app/assets/roboto-latin-ext-400-normal-eTRLN0Nt.woff +0 -0
  265. package/dist/app/assets/roboto-latin-ext-500-normal-C_ARlJGk.woff2 +0 -0
  266. package/dist/app/assets/roboto-latin-ext-500-normal-FFcS8vBN.woff +0 -0
  267. package/dist/app/assets/roboto-latin-ext-700-normal-70GS1MYH.woff2 +0 -0
  268. package/dist/app/assets/roboto-latin-ext-700-normal-BS1OuQqR.woff +0 -0
  269. package/dist/app/assets/roboto-math-400-normal-B3wgz80t.woff2 +0 -0
  270. package/dist/app/assets/roboto-math-400-normal-rzxYvyVt.woff +0 -0
  271. package/dist/app/assets/roboto-math-500-normal-CFNaIMFC.woff2 +0 -0
  272. package/dist/app/assets/roboto-math-500-normal-DaFX-ZC8.woff +0 -0
  273. package/dist/app/assets/roboto-math-700-normal-VUAI6Bz2.woff2 +0 -0
  274. package/dist/app/assets/roboto-math-700-normal-pYD1nhov.woff +0 -0
  275. package/dist/app/assets/roboto-symbols-400-normal-Tzuungub.woff +0 -0
  276. package/dist/app/assets/roboto-symbols-400-normal-fF1SLJBj.woff2 +0 -0
  277. package/dist/app/assets/roboto-symbols-500-normal-BXFTxrNR.woff2 +0 -0
  278. package/dist/app/assets/roboto-symbols-500-normal-CAhAe-ik.woff +0 -0
  279. package/dist/app/assets/roboto-symbols-700-normal-CuuvBBxy.woff +0 -0
  280. package/dist/app/assets/roboto-symbols-700-normal-rJi6RjIy.woff2 +0 -0
  281. package/dist/app/assets/roboto-vietnamese-400-normal-CDDxGrUb.woff2 +0 -0
  282. package/dist/app/assets/roboto-vietnamese-400-normal-DmXaN3yE.woff +0 -0
  283. package/dist/app/assets/roboto-vietnamese-500-normal-DW96CsrR.woff +0 -0
  284. package/dist/app/assets/roboto-vietnamese-500-normal-HYpufUYk.woff2 +0 -0
  285. package/dist/app/assets/roboto-vietnamese-700-normal-Dz0HwF-w.woff +0 -0
  286. package/dist/app/assets/roboto-vietnamese-700-normal-iKxYNAzq.woff2 +0 -0
  287. package/dist/app/assets/rocket-BjOXauLe.js +2 -0
  288. package/dist/app/assets/rocket-BjOXauLe.js.map +1 -0
  289. package/dist/app/assets/shield-check-CFNhE_aD.js +2 -0
  290. package/dist/app/assets/shield-check-CFNhE_aD.js.map +1 -0
  291. package/dist/app/assets/signIn-CVoSzqCz.js +2 -0
  292. package/dist/app/assets/signIn-CVoSzqCz.js.map +1 -0
  293. package/dist/app/assets/smartphone-BcQB9gIh.js +2 -0
  294. package/dist/app/assets/smartphone-BcQB9gIh.js.map +1 -0
  295. package/dist/app/assets/terminal-CGhryJds.js +2 -0
  296. package/dist/app/assets/terminal-CGhryJds.js.map +1 -0
  297. package/dist/app/assets/useAuth-lZZC20Tl.js +4 -0
  298. package/dist/app/assets/useAuth-lZZC20Tl.js.map +1 -0
  299. package/dist/app/favicon-16x16.png +0 -0
  300. package/dist/app/favicon-32x32.png +0 -0
  301. package/dist/app/favicon.ico +0 -0
  302. package/dist/app/favicon.svg +10 -0
  303. package/dist/app/index.html +43 -0
  304. package/dist/apple-touch-icon.png +0 -0
  305. package/dist/assets/AgentCli-8e28laT4.js +17 -0
  306. package/dist/assets/AgentCli-8e28laT4.js.map +1 -0
  307. package/dist/assets/App-DU0xew0e.js +13 -0
  308. package/dist/assets/App-DU0xew0e.js.map +1 -0
  309. package/dist/assets/AppReviewAso-OLwc4Rw_.js +4 -0
  310. package/dist/assets/AppReviewAso-OLwc4Rw_.js.map +1 -0
  311. package/dist/assets/Cancelled-BoeZQa1S.js +2 -0
  312. package/dist/assets/Cancelled-BoeZQa1S.js.map +1 -0
  313. package/dist/assets/CliPreflightCard-CxYyogdF.js +2 -0
  314. package/dist/assets/CliPreflightCard-CxYyogdF.js.map +1 -0
  315. package/dist/assets/CopyButton-CGfuSJtU.js +2 -0
  316. package/dist/assets/CopyButton-CGfuSJtU.js.map +1 -0
  317. package/dist/assets/FastlaneScreenshots-CFT6IiRb.js +52 -0
  318. package/dist/assets/FastlaneScreenshots-CFT6IiRb.js.map +1 -0
  319. package/dist/assets/FirstExport-B_UDacZm.js +6 -0
  320. package/dist/assets/FirstExport-B_UDacZm.js.map +1 -0
  321. package/dist/assets/FivePanelFramework-C1z_xUbe.js +60 -0
  322. package/dist/assets/FivePanelFramework-C1z_xUbe.js.map +1 -0
  323. package/dist/assets/ForgotPassword-ZQ8U3ejz.js +2 -0
  324. package/dist/assets/ForgotPassword-ZQ8U3ejz.js.map +1 -0
  325. package/dist/assets/Landing-DAIP71DD.js +2 -0
  326. package/dist/assets/Landing-DAIP71DD.js.map +1 -0
  327. package/dist/assets/LanguageSwitcher-D93nCuuR.js +2 -0
  328. package/dist/assets/LanguageSwitcher-D93nCuuR.js.map +1 -0
  329. package/dist/assets/Legal-Koe7vi6H.js +2 -0
  330. package/dist/assets/Legal-Koe7vi6H.js.map +1 -0
  331. package/dist/assets/NotFound-CfY31vMZ.js +2 -0
  332. package/dist/assets/NotFound-CfY31vMZ.js.map +1 -0
  333. package/dist/assets/Pricing-BQwtFVbj.js +2 -0
  334. package/dist/assets/Pricing-BQwtFVbj.js.map +1 -0
  335. package/dist/assets/Privacy-CaHf2UM7.js +2 -0
  336. package/dist/assets/Privacy-CaHf2UM7.js.map +1 -0
  337. package/dist/assets/SignIn-Cyi2_-Mn.js +2 -0
  338. package/dist/assets/SignIn-Cyi2_-Mn.js.map +1 -0
  339. package/dist/assets/SignUp-C9QH5po_.js +2 -0
  340. package/dist/assets/SignUp-C9QH5po_.js.map +1 -0
  341. package/dist/assets/SiteHeader-Dj3gDOnR.js +2 -0
  342. package/dist/assets/SiteHeader-Dj3gDOnR.js.map +1 -0
  343. package/dist/assets/StickyMobileCta-uyWGVhdc.js +2 -0
  344. package/dist/assets/StickyMobileCta-uyWGVhdc.js.map +1 -0
  345. package/dist/assets/StoreAssetsPipeline-BJlnD3kD.js +4 -0
  346. package/dist/assets/StoreAssetsPipeline-BJlnD3kD.js.map +1 -0
  347. package/dist/assets/Success-B7k7FvJj.js +2 -0
  348. package/dist/assets/Success-B7k7FvJj.js.map +1 -0
  349. package/dist/assets/Terms-DgJWOeUD.js +2 -0
  350. package/dist/assets/Terms-DgJWOeUD.js.map +1 -0
  351. package/dist/assets/ToolsIndex-xMPoFom9.js +6 -0
  352. package/dist/assets/ToolsIndex-xMPoFom9.js.map +1 -0
  353. package/dist/assets/WorkloadCalculator-Bdt6qPR3.js +5 -0
  354. package/dist/assets/WorkloadCalculator-Bdt6qPR3.js.map +1 -0
  355. package/dist/assets/calculator-CWfp5Day.js +2 -0
  356. package/dist/assets/calculator-CWfp5Day.js.map +1 -0
  357. package/dist/assets/check-BWCiUZ-C.js +2 -0
  358. package/dist/assets/check-BWCiUZ-C.js.map +1 -0
  359. package/dist/assets/chevron-down-DbSAem1L.js +2 -0
  360. package/dist/assets/chevron-down-DbSAem1L.js.map +1 -0
  361. package/dist/assets/circle-check-CeakjiXC.js +2 -0
  362. package/dist/assets/circle-check-CeakjiXC.js.map +1 -0
  363. package/dist/assets/clipboard-copy-DgTgnK84.js +2 -0
  364. package/dist/assets/clipboard-copy-DgTgnK84.js.map +1 -0
  365. package/dist/assets/copy-C9t_FzCZ.js +2 -0
  366. package/dist/assets/copy-C9t_FzCZ.js.map +1 -0
  367. package/dist/assets/crop-B7IxIx6D.js +2 -0
  368. package/dist/assets/crop-B7IxIx6D.js.map +1 -0
  369. package/dist/assets/download-65Zuvgwm.js +2 -0
  370. package/dist/assets/download-65Zuvgwm.js.map +1 -0
  371. package/dist/assets/eye-ouNo8Nv5.js +2 -0
  372. package/dist/assets/eye-ouNo8Nv5.js.map +1 -0
  373. package/dist/assets/grid-3x3-U1Nk_ppf.js +2 -0
  374. package/dist/assets/grid-3x3-U1Nk_ppf.js.map +1 -0
  375. package/dist/assets/hero/cli-build-tree-15s.mp4 +0 -0
  376. package/dist/assets/hero/cli-build-tree-15s.webm +0 -0
  377. package/dist/assets/hero/cli-build-tree-25s.mp4 +0 -0
  378. package/dist/assets/hero/cli-build-tree-25s.webm +0 -0
  379. package/dist/assets/hero/cli-build-tree-poster.png +0 -0
  380. package/dist/assets/hero/demo.gif +0 -0
  381. package/dist/assets/hero/demo.mp4 +0 -0
  382. package/dist/assets/hero/demo.webm +0 -0
  383. package/dist/assets/icons/apple-touch-icon.png +0 -0
  384. package/dist/assets/icons/device-base.png +0 -0
  385. package/dist/assets/icons/favicon-16x16.png +0 -0
  386. package/dist/assets/icons/favicon-32x32.png +0 -0
  387. package/dist/assets/icons/favicon.ico +0 -0
  388. package/dist/assets/icons/favicon.svg +1 -0
  389. package/dist/assets/index-B8Y8Y-Mi.js +180 -0
  390. package/dist/assets/index-B8Y8Y-Mi.js.map +1 -0
  391. package/dist/assets/index-hyiQFYGv.css +1 -0
  392. package/dist/assets/inter-cyrillic-400-normal-HOLc17fK.woff +0 -0
  393. package/dist/assets/inter-cyrillic-400-normal-obahsSVq.woff2 +0 -0
  394. package/dist/assets/inter-cyrillic-500-normal-BasfLYem.woff2 +0 -0
  395. package/dist/assets/inter-cyrillic-500-normal-CxZf_p3X.woff +0 -0
  396. package/dist/assets/inter-cyrillic-600-normal-4D_pXhcN.woff +0 -0
  397. package/dist/assets/inter-cyrillic-600-normal-CWCymEST.woff2 +0 -0
  398. package/dist/assets/inter-cyrillic-700-normal-CjBOestx.woff2 +0 -0
  399. package/dist/assets/inter-cyrillic-700-normal-DrXBdSj3.woff +0 -0
  400. package/dist/assets/inter-cyrillic-ext-400-normal-BQZuk6qB.woff2 +0 -0
  401. package/dist/assets/inter-cyrillic-ext-400-normal-DQukG94-.woff +0 -0
  402. package/dist/assets/inter-cyrillic-ext-500-normal-B0yAr1jD.woff2 +0 -0
  403. package/dist/assets/inter-cyrillic-ext-500-normal-BmqWE9Dz.woff +0 -0
  404. package/dist/assets/inter-cyrillic-ext-600-normal-Bcila6Z-.woff +0 -0
  405. package/dist/assets/inter-cyrillic-ext-600-normal-Dfes3d0z.woff2 +0 -0
  406. package/dist/assets/inter-cyrillic-ext-700-normal-BjwYoWNd.woff2 +0 -0
  407. package/dist/assets/inter-cyrillic-ext-700-normal-LO58E6JB.woff +0 -0
  408. package/dist/assets/inter-greek-400-normal-B4URO6DV.woff2 +0 -0
  409. package/dist/assets/inter-greek-400-normal-q2sYcFCs.woff +0 -0
  410. package/dist/assets/inter-greek-500-normal-BIZE56-Y.woff2 +0 -0
  411. package/dist/assets/inter-greek-500-normal-Xzm54t5V.woff +0 -0
  412. package/dist/assets/inter-greek-600-normal-BZpKdvQh.woff +0 -0
  413. package/dist/assets/inter-greek-600-normal-plRanbMR.woff2 +0 -0
  414. package/dist/assets/inter-greek-700-normal-BUv2fZ6O.woff +0 -0
  415. package/dist/assets/inter-greek-700-normal-C3JjAnD8.woff2 +0 -0
  416. package/dist/assets/inter-greek-ext-400-normal-DGGRlc-M.woff2 +0 -0
  417. package/dist/assets/inter-greek-ext-400-normal-KugGGMne.woff +0 -0
  418. package/dist/assets/inter-greek-ext-500-normal-2j5mBUwD.woff +0 -0
  419. package/dist/assets/inter-greek-ext-500-normal-C4iEst2y.woff2 +0 -0
  420. package/dist/assets/inter-greek-ext-600-normal-B8X0CLgF.woff +0 -0
  421. package/dist/assets/inter-greek-ext-600-normal-DRtmH8MT.woff2 +0 -0
  422. package/dist/assets/inter-greek-ext-700-normal-BoQ6DsYi.woff +0 -0
  423. package/dist/assets/inter-greek-ext-700-normal-qfdV9bQt.woff2 +0 -0
  424. package/dist/assets/inter-latin-400-normal-C38fXH4l.woff2 +0 -0
  425. package/dist/assets/inter-latin-400-normal-CyCys3Eg.woff +0 -0
  426. package/dist/assets/inter-latin-500-normal-BL9OpVg8.woff +0 -0
  427. package/dist/assets/inter-latin-500-normal-Cerq10X2.woff2 +0 -0
  428. package/dist/assets/inter-latin-600-normal-CiBQ2DWP.woff +0 -0
  429. package/dist/assets/inter-latin-600-normal-LgqL8muc.woff2 +0 -0
  430. package/dist/assets/inter-latin-700-normal-BLAVimhd.woff +0 -0
  431. package/dist/assets/inter-latin-700-normal-Yt3aPRUw.woff2 +0 -0
  432. package/dist/assets/inter-latin-ext-400-normal-77YHD8bZ.woff +0 -0
  433. package/dist/assets/inter-latin-ext-400-normal-C1nco2VV.woff2 +0 -0
  434. package/dist/assets/inter-latin-ext-500-normal-BxGbmqWO.woff +0 -0
  435. package/dist/assets/inter-latin-ext-500-normal-CV4jyFjo.woff2 +0 -0
  436. package/dist/assets/inter-latin-ext-600-normal-CIVaiw4L.woff +0 -0
  437. package/dist/assets/inter-latin-ext-600-normal-D2bJ5OIk.woff2 +0 -0
  438. package/dist/assets/inter-latin-ext-700-normal-Ca8adRJv.woff2 +0 -0
  439. package/dist/assets/inter-latin-ext-700-normal-TidjK2hL.woff +0 -0
  440. package/dist/assets/inter-vietnamese-400-normal-Bbgyi5SW.woff +0 -0
  441. package/dist/assets/inter-vietnamese-400-normal-DMkecbls.woff2 +0 -0
  442. package/dist/assets/inter-vietnamese-500-normal-DOriooB6.woff2 +0 -0
  443. package/dist/assets/inter-vietnamese-500-normal-mJboJaSs.woff +0 -0
  444. package/dist/assets/inter-vietnamese-600-normal-BuLX-rYi.woff +0 -0
  445. package/dist/assets/inter-vietnamese-600-normal-Cc8MFFhd.woff2 +0 -0
  446. package/dist/assets/inter-vietnamese-700-normal-BZaoP0fm.woff +0 -0
  447. package/dist/assets/inter-vietnamese-700-normal-DlLaEgI2.woff2 +0 -0
  448. package/dist/assets/layout-grid-X9Sgull2.js +2 -0
  449. package/dist/assets/layout-grid-X9Sgull2.js.map +1 -0
  450. package/dist/assets/merriweather-cyrillic-400-normal-AvfsDsMQ.woff2 +0 -0
  451. package/dist/assets/merriweather-cyrillic-400-normal-DAcQ8g-H.woff +0 -0
  452. package/dist/assets/merriweather-cyrillic-700-normal-CHCcU-4a.woff +0 -0
  453. package/dist/assets/merriweather-cyrillic-700-normal-wbY04GlL.woff2 +0 -0
  454. package/dist/assets/merriweather-cyrillic-ext-400-normal-D9NYhYTq.woff2 +0 -0
  455. package/dist/assets/merriweather-cyrillic-ext-400-normal-Di6yW_eE.woff +0 -0
  456. package/dist/assets/merriweather-cyrillic-ext-700-normal-Bk1p9YoV.woff2 +0 -0
  457. package/dist/assets/merriweather-cyrillic-ext-700-normal-DoooT6Vg.woff +0 -0
  458. package/dist/assets/merriweather-latin-400-normal-CvqO63Ah.woff +0 -0
  459. package/dist/assets/merriweather-latin-400-normal-G4kZaoXi.woff2 +0 -0
  460. package/dist/assets/merriweather-latin-700-normal-D4-nzrAh.woff +0 -0
  461. package/dist/assets/merriweather-latin-700-normal-DoUP8Ce-.woff2 +0 -0
  462. package/dist/assets/merriweather-latin-ext-400-normal-CLqijLtt.woff +0 -0
  463. package/dist/assets/merriweather-latin-ext-400-normal-CWVzVQq3.woff2 +0 -0
  464. package/dist/assets/merriweather-latin-ext-700-normal-CaBzXGOk.woff +0 -0
  465. package/dist/assets/merriweather-latin-ext-700-normal-jHnxg2Kc.woff2 +0 -0
  466. package/dist/assets/merriweather-vietnamese-400-normal-Dh8WVvgZ.woff +0 -0
  467. package/dist/assets/merriweather-vietnamese-400-normal-hNacsVs_.woff2 +0 -0
  468. package/dist/assets/merriweather-vietnamese-700-normal-Bp6kWjW5.woff2 +0 -0
  469. package/dist/assets/merriweather-vietnamese-700-normal-C7_HxHBa.woff +0 -0
  470. package/dist/assets/montserrat-cyrillic-400-normal-BPq32Q8K.woff2 +0 -0
  471. package/dist/assets/montserrat-cyrillic-400-normal-jEs4Tk-Z.woff +0 -0
  472. package/dist/assets/montserrat-cyrillic-700-normal-BvLYcGP1.woff +0 -0
  473. package/dist/assets/montserrat-cyrillic-700-normal-D-Pqjtdp.woff2 +0 -0
  474. package/dist/assets/montserrat-cyrillic-ext-400-normal-DRPPeomZ.woff +0 -0
  475. package/dist/assets/montserrat-cyrillic-ext-400-normal-Xqov12YL.woff2 +0 -0
  476. package/dist/assets/montserrat-cyrillic-ext-700-normal-D-Mk2xRJ.woff +0 -0
  477. package/dist/assets/montserrat-cyrillic-ext-700-normal-MyDreaeu.woff2 +0 -0
  478. package/dist/assets/montserrat-latin-400-normal-BLhwKU8k.woff2 +0 -0
  479. package/dist/assets/montserrat-latin-400-normal-xItZbAXg.woff +0 -0
  480. package/dist/assets/montserrat-latin-700-normal-BWkrl476.woff +0 -0
  481. package/dist/assets/montserrat-latin-700-normal-BdjcYUrC.woff2 +0 -0
  482. package/dist/assets/montserrat-latin-ext-400-normal-B8bwfy6Y.woff2 +0 -0
  483. package/dist/assets/montserrat-latin-ext-400-normal-BffdBkAA.woff +0 -0
  484. package/dist/assets/montserrat-latin-ext-700-normal-BOP2Nhf0.woff2 +0 -0
  485. package/dist/assets/montserrat-latin-ext-700-normal-DdDFr05Z.woff +0 -0
  486. package/dist/assets/montserrat-vietnamese-400-normal-BeEscFYY.woff +0 -0
  487. package/dist/assets/montserrat-vietnamese-400-normal-D4oHqQTd.woff2 +0 -0
  488. package/dist/assets/montserrat-vietnamese-700-normal-C0x1De3p.woff2 +0 -0
  489. package/dist/assets/montserrat-vietnamese-700-normal-DnwGT2D9.woff +0 -0
  490. package/dist/assets/playfair-display-cyrillic-400-normal-CjW2EstV.woff2 +0 -0
  491. package/dist/assets/playfair-display-cyrillic-400-normal-ZiRag6zj.woff +0 -0
  492. package/dist/assets/playfair-display-cyrillic-700-normal-Dk1mTcxf.woff +0 -0
  493. package/dist/assets/playfair-display-cyrillic-700-normal-Dw3uKy19.woff2 +0 -0
  494. package/dist/assets/playfair-display-latin-400-normal-CFtfchNt.woff2 +0 -0
  495. package/dist/assets/playfair-display-latin-400-normal-DHYHbkg3.woff +0 -0
  496. package/dist/assets/playfair-display-latin-700-normal-Bc_1Q1cG.woff +0 -0
  497. package/dist/assets/playfair-display-latin-700-normal-CuDiGg7c.woff2 +0 -0
  498. package/dist/assets/playfair-display-latin-ext-400-normal-BxlSGspa.woff2 +0 -0
  499. package/dist/assets/playfair-display-latin-ext-400-normal-qdZwdvNS.woff +0 -0
  500. package/dist/assets/playfair-display-latin-ext-700-normal-C58ejOkc.woff2 +0 -0
  501. package/dist/assets/playfair-display-latin-ext-700-normal-D5HUU8GT.woff +0 -0
  502. package/dist/assets/playfair-display-vietnamese-400-normal-BV2APVTb.woff2 +0 -0
  503. package/dist/assets/playfair-display-vietnamese-400-normal-BbvUAu4N.woff +0 -0
  504. package/dist/assets/playfair-display-vietnamese-700-normal-CaKJSIny.woff2 +0 -0
  505. package/dist/assets/playfair-display-vietnamese-700-normal-Cr1rw0mr.woff +0 -0
  506. package/dist/assets/proof/output-01.png +0 -0
  507. package/dist/assets/proof/output-02.png +0 -0
  508. package/dist/assets/proof/output-03.png +0 -0
  509. package/dist/assets/proof/output-04.png +0 -0
  510. package/dist/assets/roboto-cyrillic-400-normal-DAIM1_dR.woff2 +0 -0
  511. package/dist/assets/roboto-cyrillic-400-normal-DZJji7Rx.woff +0 -0
  512. package/dist/assets/roboto-cyrillic-500-normal-BI4HuXre.woff +0 -0
  513. package/dist/assets/roboto-cyrillic-500-normal-hCeO1jFL.woff2 +0 -0
  514. package/dist/assets/roboto-cyrillic-700-normal-BiSG5NnW.woff2 +0 -0
  515. package/dist/assets/roboto-cyrillic-700-normal-KqaQ5bNp.woff +0 -0
  516. package/dist/assets/roboto-cyrillic-ext-400-normal-DtZHuW6i.woff +0 -0
  517. package/dist/assets/roboto-cyrillic-ext-400-normal-DzMWdK87.woff2 +0 -0
  518. package/dist/assets/roboto-cyrillic-ext-500-normal-B7rQpwPu.woff2 +0 -0
  519. package/dist/assets/roboto-cyrillic-ext-500-normal-C927yMrb.woff +0 -0
  520. package/dist/assets/roboto-cyrillic-ext-700-normal-BuQgZIrO.woff +0 -0
  521. package/dist/assets/roboto-cyrillic-ext-700-normal-UFn0vR9r.woff2 +0 -0
  522. package/dist/assets/roboto-greek-400-normal-CcizSnRP.woff +0 -0
  523. package/dist/assets/roboto-greek-400-normal-jFM2czAU.woff2 +0 -0
  524. package/dist/assets/roboto-greek-500-normal-BJMS0heP.woff2 +0 -0
  525. package/dist/assets/roboto-greek-500-normal-BLLWU9W-.woff +0 -0
  526. package/dist/assets/roboto-greek-700-normal-BcGn9doz.woff2 +0 -0
  527. package/dist/assets/roboto-greek-700-normal-D3kmAf0K.woff +0 -0
  528. package/dist/assets/roboto-latin-400-normal-068yxgMN.woff +0 -0
  529. package/dist/assets/roboto-latin-400-normal-CNwBRw8h.woff2 +0 -0
  530. package/dist/assets/roboto-latin-500-normal-CC5nhZkh.woff +0 -0
  531. package/dist/assets/roboto-latin-500-normal-CkrA1NAy.woff2 +0 -0
  532. package/dist/assets/roboto-latin-700-normal-CXeAXeti.woff2 +0 -0
  533. package/dist/assets/roboto-latin-700-normal-DUekQERp.woff +0 -0
  534. package/dist/assets/roboto-latin-ext-400-normal-ZYmyxeOy.woff2 +0 -0
  535. package/dist/assets/roboto-latin-ext-400-normal-eTRLN0Nt.woff +0 -0
  536. package/dist/assets/roboto-latin-ext-500-normal-C_ARlJGk.woff2 +0 -0
  537. package/dist/assets/roboto-latin-ext-500-normal-FFcS8vBN.woff +0 -0
  538. package/dist/assets/roboto-latin-ext-700-normal-70GS1MYH.woff2 +0 -0
  539. package/dist/assets/roboto-latin-ext-700-normal-BS1OuQqR.woff +0 -0
  540. package/dist/assets/roboto-math-400-normal-B3wgz80t.woff2 +0 -0
  541. package/dist/assets/roboto-math-400-normal-rzxYvyVt.woff +0 -0
  542. package/dist/assets/roboto-math-500-normal-CFNaIMFC.woff2 +0 -0
  543. package/dist/assets/roboto-math-500-normal-DaFX-ZC8.woff +0 -0
  544. package/dist/assets/roboto-math-700-normal-VUAI6Bz2.woff2 +0 -0
  545. package/dist/assets/roboto-math-700-normal-pYD1nhov.woff +0 -0
  546. package/dist/assets/roboto-symbols-400-normal-Tzuungub.woff +0 -0
  547. package/dist/assets/roboto-symbols-400-normal-fF1SLJBj.woff2 +0 -0
  548. package/dist/assets/roboto-symbols-500-normal-BXFTxrNR.woff2 +0 -0
  549. package/dist/assets/roboto-symbols-500-normal-CAhAe-ik.woff +0 -0
  550. package/dist/assets/roboto-symbols-700-normal-CuuvBBxy.woff +0 -0
  551. package/dist/assets/roboto-symbols-700-normal-rJi6RjIy.woff2 +0 -0
  552. package/dist/assets/roboto-vietnamese-400-normal-CDDxGrUb.woff2 +0 -0
  553. package/dist/assets/roboto-vietnamese-400-normal-DmXaN3yE.woff +0 -0
  554. package/dist/assets/roboto-vietnamese-500-normal-DW96CsrR.woff +0 -0
  555. package/dist/assets/roboto-vietnamese-500-normal-HYpufUYk.woff2 +0 -0
  556. package/dist/assets/roboto-vietnamese-700-normal-Dz0HwF-w.woff +0 -0
  557. package/dist/assets/roboto-vietnamese-700-normal-iKxYNAzq.woff2 +0 -0
  558. package/dist/assets/rocket-BjOXauLe.js +2 -0
  559. package/dist/assets/rocket-BjOXauLe.js.map +1 -0
  560. package/dist/assets/shield-check-CFNhE_aD.js +2 -0
  561. package/dist/assets/shield-check-CFNhE_aD.js.map +1 -0
  562. package/dist/assets/signIn-CVoSzqCz.js +2 -0
  563. package/dist/assets/signIn-CVoSzqCz.js.map +1 -0
  564. package/dist/assets/smartphone-BcQB9gIh.js +2 -0
  565. package/dist/assets/smartphone-BcQB9gIh.js.map +1 -0
  566. package/dist/assets/terminal-CGhryJds.js +2 -0
  567. package/dist/assets/terminal-CGhryJds.js.map +1 -0
  568. package/dist/assets/useAuth-lZZC20Tl.js +4 -0
  569. package/dist/assets/useAuth-lZZC20Tl.js.map +1 -0
  570. package/dist/cancelled/index.html +34 -0
  571. package/dist/downloads/shipscreens-agent-cli-config.yml +48 -0
  572. package/dist/downloads/shipscreens-agent-cli-copy.csv +2 -0
  573. package/dist/favicon-16x16.png +0 -0
  574. package/dist/favicon-32x32.png +0 -0
  575. package/dist/favicon.ico +0 -0
  576. package/dist/favicon.svg +10 -0
  577. package/dist/forgot-password/index.html +34 -0
  578. package/dist/index.html +42 -0
  579. package/dist/legal/index.html +33 -0
  580. package/dist/og-image.png +0 -0
  581. package/dist/pricing/index.html +33 -0
  582. package/dist/privacy/index.html +33 -0
  583. package/dist/robots.txt +11 -0
  584. package/dist/signin/index.html +34 -0
  585. package/dist/signup/index.html +34 -0
  586. package/dist/sitemap.xml +51 -0
  587. package/dist/success/index.html +34 -0
  588. package/dist/templates/clean_blue.png +0 -0
  589. package/dist/templates/minimal_dark.png +0 -0
  590. package/dist/templates/split_modern.png +0 -0
  591. package/dist/templates/vibrant_gradient.png +0 -0
  592. package/dist/terms/index.html +33 -0
  593. package/dist/tools/5-panel-screenshot-framework/index.html +33 -0
  594. package/dist/tools/agent-cli/index.html +33 -0
  595. package/dist/tools/app-review-aso/index.html +33 -0
  596. package/dist/tools/fastlane-screenshots/index.html +33 -0
  597. package/dist/tools/first-export/index.html +33 -0
  598. package/dist/tools/index.html +33 -0
  599. package/dist/tools/screenshot-workload-calculator/index.html +33 -0
  600. package/dist/tools/store-assets-pipeline/index.html +33 -0
  601. package/package.json +36 -0
  602. package/src/constants/devices.js +122 -0
  603. package/templates/agent/agent-prompt.txt +21 -0
  604. package/templates/agent/copy.csv +2 -0
  605. package/templates/agent/shipscreens.config.yml +48 -0
@@ -0,0 +1,13 @@
1
+ import{u as Nt,r as n,j as e,g as ul,a as nn,t as Je}from"./index-B8Y8Y-Mi.js";import{C as aa}from"./chevron-down-DbSAem1L.js";import{c as he,u as ls,X as Gt,a as hl,S as fl,L as ml,i as xl}from"./LanguageSwitcher-D93nCuuR.js";import{S as Ha}from"./smartphone-BcQB9gIh.js";import{C as gl}from"./circle-check-CeakjiXC.js";import{C as Za,c as on,A as Jr}from"./CopyButton-CGfuSJtU.js";import{u as bl}from"./useAuth-lZZC20Tl.js";import{C as Wa}from"./check-BWCiUZ-C.js";import{C as yl}from"./copy-C9t_FzCZ.js";import{T as vl}from"./terminal-CGhryJds.js";import{C as wl}from"./clipboard-copy-DgTgnK84.js";import{G as jl}from"./grid-3x3-U1Nk_ppf.js";import{D as Sl}from"./download-65Zuvgwm.js";const kl=[["rect",{width:"6",height:"16",x:"4",y:"2",rx:"2",key:"z5wdxg"}],["rect",{width:"6",height:"9",x:"14",y:"9",rx:"2",key:"um7a8w"}],["path",{d:"M22 22H2",key:"19qnx5"}]],Nl=he("align-end-horizontal",kl);const Cl=[["rect",{width:"10",height:"6",x:"7",y:"9",rx:"2",key:"b1zbii"}],["path",{d:"M22 20H2",key:"1p1f7z"}],["path",{d:"M22 4H2",key:"1b7qnq"}]],Vr=he("align-vertical-space-around",Cl);const _l=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m14.31 8 5.74 9.94",key:"1y6ab4"}],["path",{d:"M9.69 8h11.48",key:"1wxppr"}],["path",{d:"m7.38 12 5.74-9.94",key:"1grp0k"}],["path",{d:"M9.69 16 3.95 6.06",key:"libnyf"}],["path",{d:"M14.31 16H2.83",key:"x5fava"}],["path",{d:"m16.62 12-5.74 9.94",key:"1vwawt"}]],Ll=he("aperture",_l);const Il=[["path",{d:"m15.477 12.89 1.515 8.526a.5.5 0 0 1-.81.47l-3.58-2.687a1 1 0 0 0-1.197 0l-3.586 2.686a.5.5 0 0 1-.81-.469l1.514-8.526",key:"1yiouv"}],["circle",{cx:"12",cy:"8",r:"6",key:"1vp47v"}]],ln=he("award",Il);const Rl=[["path",{d:"M21 8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16Z",key:"hh9hay"}],["path",{d:"m3.3 7 8.7 5 8.7-5",key:"g66t2b"}],["path",{d:"M12 22V12",key:"d0xqtd"}]],El=he("box",Rl);const Pl=[["path",{d:"M12 13v8l-4-4",key:"1f5nwf"}],["path",{d:"m12 21 4-4",key:"1lfcce"}],["path",{d:"M4.393 15.269A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.436 8.284",key:"ui1hmy"}]],qa=he("cloud-download",Pl);const Dl=[["path",{d:"M12 13v8",key:"1l5pq0"}],["path",{d:"M4 14.899A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.5 8.242",key:"1pljnt"}],["path",{d:"m8 17 4-4 4 4",key:"1quai1"}]],zl=he("cloud-upload",Dl);const Tl=[["path",{d:"M17.5 19H9a7 7 0 1 1 6.71-9h1.79a4.5 4.5 0 1 1 0 9Z",key:"p7xjir"}]],$l=he("cloud",Tl);const Al=[["rect",{width:"20",height:"14",x:"2",y:"5",rx:"2",key:"ynyp8z"}],["line",{x1:"2",x2:"22",y1:"10",y2:"10",key:"1b3vmo"}]],Ml=he("credit-card",Al);const Ol=[["path",{d:"M11.562 3.266a.5.5 0 0 1 .876 0L15.39 8.87a1 1 0 0 0 1.516.294L21.183 5.5a.5.5 0 0 1 .798.519l-2.834 10.246a1 1 0 0 1-.956.734H5.81a1 1 0 0 1-.957-.734L2.02 6.02a.5.5 0 0 1 .798-.519l4.276 3.664a1 1 0 0 0 1.516-.294z",key:"1vdc57"}],["path",{d:"M5 21h14",key:"11awu3"}]],Ka=he("crown",Ol);const Fl=[["ellipse",{cx:"12",cy:"5",rx:"9",ry:"3",key:"msslwz"}],["path",{d:"M3 5V19A9 3 0 0 0 21 19V5",key:"1wlel7"}],["path",{d:"M3 12A9 3 0 0 0 21 12",key:"mv7ke4"}]],Bl=he("database",Fl);const Ul=[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M10 12a1 1 0 0 0-1 1v1a1 1 0 0 1-1 1 1 1 0 0 1 1 1v1a1 1 0 0 0 1 1",key:"1oajmo"}],["path",{d:"M14 18a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1 1 1 0 0 1-1-1v-1a1 1 0 0 0-1-1",key:"mpwhp6"}]],Hl=he("file-braces",Ul);const Wl=[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M10 9H8",key:"b1mrlr"}],["path",{d:"M16 13H8",key:"t4e002"}],["path",{d:"M16 17H8",key:"z1uh3a"}]],ql=he("file-text",Wl);const Jl=[["line",{x1:"22",x2:"2",y1:"12",y2:"12",key:"1y58io"}],["path",{d:"M5.45 5.11 2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z",key:"oot6mr"}],["line",{x1:"6",x2:"6.01",y1:"16",y2:"16",key:"sgf278"}],["line",{x1:"10",x2:"10.01",y1:"16",y2:"16",key:"1l4acy"}]],Vl=he("hard-drive",Jl);const Yl=[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",ry:"2",key:"1m3agn"}],["circle",{cx:"9",cy:"9",r:"2",key:"af1f0g"}],["path",{d:"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21",key:"1xmnt7"}]],Ja=he("image",Yl);const Gl=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 16v-4",key:"1dtifu"}],["path",{d:"M12 8h.01",key:"e9boi3"}]],Va=he("info",Gl);const Zl=[["rect",{width:"18",height:"7",x:"3",y:"3",rx:"1",key:"f1a2em"}],["rect",{width:"9",height:"7",x:"3",y:"14",rx:"1",key:"jqznyg"}],["rect",{width:"5",height:"7",x:"16",y:"14",rx:"1",key:"q5h2i8"}]],Kl=he("layout-template",Zl);const Xl=[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]],cn=he("loader-circle",Xl);const Ql=[["rect",{width:"18",height:"11",x:"3",y:"11",rx:"2",ry:"2",key:"1w4ew1"}],["path",{d:"M7 11V7a5 5 0 0 1 10 0v4",key:"fwvmzm"}]],Oa=he("lock",Ql);const ei=[["path",{d:"m16 17 5-5-5-5",key:"1bji2h"}],["path",{d:"M21 12H9",key:"dn1m92"}],["path",{d:"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4",key:"1uf3rs"}]],ti=he("log-out",ei);const si=[["rect",{width:"20",height:"14",x:"2",y:"3",rx:"2",key:"48i651"}],["line",{x1:"8",x2:"16",y1:"21",y2:"21",key:"1svkeh"}],["line",{x1:"12",x2:"12",y1:"17",y2:"21",key:"vw1qmm"}]],ai=he("monitor",si);const ri=[["path",{d:"M11 7 6 2",key:"1jwth8"}],["path",{d:"M18.992 12H2.041",key:"xw1gg"}],["path",{d:"M21.145 18.38A3.34 3.34 0 0 1 20 16.5a3.3 3.3 0 0 1-1.145 1.88c-.575.46-.855 1.02-.855 1.595A2 2 0 0 0 20 22a2 2 0 0 0 2-2.025c0-.58-.285-1.13-.855-1.595",key:"1nkol4"}],["path",{d:"m8.5 4.5 2.148-2.148a1.205 1.205 0 0 1 1.704 0l7.296 7.296a1.205 1.205 0 0 1 0 1.704l-7.592 7.592a3.615 3.615 0 0 1-5.112 0l-3.888-3.888a3.615 3.615 0 0 1 0-5.112L5.67 7.33",key:"1nk1rd"}]],ni=he("paint-bucket",ri);const oi=[["path",{d:"M13 21h8",key:"1jsn5i"}],["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}]],li=he("pen-line",oi);const ii=[["path",{d:"M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z",key:"10ikf1"}]],dn=he("play",ii);const ci=[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]],pn=he("plus",ci);const di=[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]],pi=he("refresh-cw",di);const ui=[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}]],hi=he("rotate-ccw",ui);const fi=[["path",{d:"M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8",key:"1p45f6"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}]],ta=he("rotate-cw",fi);const mi=[["path",{d:"M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z",key:"1c8476"}],["path",{d:"M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7",key:"1ydtos"}],["path",{d:"M7 3v4a1 1 0 0 0 1 1h7",key:"t51u73"}]],xi=he("save",mi);const gi=[["path",{d:"m21 21-4.34-4.34",key:"14j7rj"}],["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}]],bi=he("search",gi);const yi=[["path",{d:"M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915",key:"1i5ecw"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]],Ya=he("settings",yi);const vi=[["circle",{cx:"18",cy:"5",r:"3",key:"gq8acd"}],["circle",{cx:"6",cy:"12",r:"3",key:"w7nqdw"}],["circle",{cx:"18",cy:"19",r:"3",key:"1xt0gg"}],["line",{x1:"8.59",x2:"15.42",y1:"13.51",y2:"17.49",key:"47mynk"}],["line",{x1:"15.41",x2:"8.59",y1:"6.51",y2:"10.49",key:"1n3mei"}]],wi=he("share-2",vi);const ji=[["path",{d:"M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z",key:"1s2grr"}],["path",{d:"M20 2v4",key:"1rf3ol"}],["path",{d:"M22 4h-4",key:"gwowj6"}],["circle",{cx:"4",cy:"20",r:"2",key:"6kqj1y"}]],Yr=he("sparkles",ji);const Si=[["path",{d:"M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z",key:"r04s7s"}]],un=he("star",Si);const ki=[["path",{d:"M10 11v6",key:"nco0om"}],["path",{d:"M14 11v6",key:"outv1u"}],["path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6",key:"miytrc"}],["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2",key:"e791ji"}]],Gr=he("trash-2",ki);const Ni=[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]],Ci=he("triangle-alert",Ni);const _i=[["path",{d:"M12 3v12",key:"1x0j5s"}],["path",{d:"m17 8-5-5-5 5",key:"7q97r8"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}]],Fa=he("upload",_i);const Li=[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["path",{d:"M16 3.128a4 4 0 0 1 0 7.744",key:"16gr8j"}],["path",{d:"M22 21v-2a4 4 0 0 0-3-3.87",key:"kshegd"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}]],Ii=he("users",Li);const Ri=[["path",{d:"M12 10v2.2l1.6 1",key:"n3r21l"}],["path",{d:"m16.13 7.66-.81-4.05a2 2 0 0 0-2-1.61h-2.68a2 2 0 0 0-2 1.61l-.78 4.05",key:"18k57s"}],["path",{d:"m7.88 16.36.8 4a2 2 0 0 0 2 1.61h2.72a2 2 0 0 0 2-1.61l.81-4.05",key:"16ny36"}],["circle",{cx:"12",cy:"12",r:"6",key:"1vlfrh"}]],Ei=he("watch",Ri);const Pi=[["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}],["line",{x1:"21",x2:"16.65",y1:"21",y2:"16.65",key:"13gj7c"}],["line",{x1:"11",x2:"11",y1:"8",y2:"14",key:"1vmskp"}],["line",{x1:"8",x2:"14",y1:"11",y2:"11",key:"durymu"}]],Di=he("zoom-in",Pi),zi=({user:s,isPro:m,onUpgrade:d,onManageSubscription:p,onSignOut:g,isPortalLoading:B})=>{const{t:I}=Nt(),[F,K]=n.useState(!1),v=n.useRef(null);n.useEffect(()=>{const G=oe=>{v.current&&!v.current.contains(oe.target)&&K(!1)};return document.addEventListener("mousedown",G),()=>document.removeEventListener("mousedown",G)},[]);const M=(s?.email||s?.username||"?").charAt(0).toUpperCase();return e.jsxs("div",{className:"relative",ref:v,children:[e.jsxs("button",{onClick:()=>K(!F),className:"flex items-center gap-2 p-1 pl-2 pr-1 rounded-full border border-slate-200 hover:bg-slate-50 transition-colors",title:s?.email||s?.username,children:[e.jsx("div",{className:"w-8 h-8 rounded-full bg-slate-800 text-white flex items-center justify-center text-sm font-bold",children:M}),e.jsx(aa,{size:14,className:"text-slate-400 mr-1"})]}),F&&e.jsxs("div",{className:"absolute right-0 top-full mt-2 w-64 bg-white rounded-xl shadow-xl border border-slate-100 overflow-hidden z-50 animate-in fade-in slide-in-from-top-2 duration-200",children:[e.jsxs("div",{className:"px-4 py-3 border-b border-slate-100 bg-slate-50/50",children:[e.jsx("p",{className:"text-xs text-slate-500",children:I("app.userMenu.signedInAs")}),e.jsx("p",{className:"text-sm font-bold text-slate-800 truncate",title:s?.email,children:s?.email||s?.username})]}),e.jsxs("div",{className:"p-1",children:[!m&&e.jsxs("button",{onClick:()=>{K(!1),d?.()},className:"w-full flex items-center gap-2 px-3 py-2 text-sm text-amber-700 hover:bg-amber-50 rounded-lg transition-colors",children:[e.jsx(Ka,{size:16,className:"text-amber-500"}),I("app.header.upgrade")]}),m&&e.jsxs("button",{onClick:()=>{K(!1),p()},disabled:B,className:"w-full flex items-center gap-2 px-3 py-2 text-sm text-slate-700 hover:bg-slate-50 rounded-lg transition-colors disabled:opacity-50",children:[e.jsx(Ml,{size:16,className:"text-slate-400"}),I("app.header.manage")]}),m&&e.jsxs("p",{className:"px-3 pb-2 text-[11px] text-slate-500 leading-snug",children:[I("consent.billing")," ",e.jsx("a",{href:"/terms",className:"underline hover:text-slate-700",target:"_blank",rel:"noreferrer",children:I("landing.footer.terms")})," / ",e.jsx("a",{href:"/privacy",className:"underline hover:text-slate-700",target:"_blank",rel:"noreferrer",children:I("landing.footer.privacy")})," / ",e.jsx("a",{href:"/legal",className:"underline hover:text-slate-700",target:"_blank",rel:"noreferrer",children:I("landing.footer.legal")})]}),e.jsxs("button",{onClick:()=>{K(!1),g()},className:"w-full flex items-center gap-2 px-3 py-2 text-sm text-red-600 hover:bg-red-50 rounded-lg transition-colors",children:[e.jsx(ti,{size:16}),I("auth.actions.signOut")]})]})]})]})},Ke={iphone69:{name:'iPhone 6.9" (16 Pro Max)',storeLabel:"6.9-inch Display",modelLabel:"iPhone 16 Pro Max",width:1290,height:2796,type:"iphone-island",radius:55,bezel:8,group:"iPhone"},iphone65:{name:'iPhone 6.5" (XS Max)',storeLabel:"6.5-inch Display",modelLabel:"iPhone XS Max",width:1284,height:2778,type:"iphone-notch",radius:50,bezel:10,group:"iPhone"},iphone63:{name:'iPhone 6.3" (16 Pro)',storeLabel:"6.3-inch Display",modelLabel:"iPhone 16 Pro",width:1179,height:2556,type:"iphone-island",radius:55,bezel:8,group:"iPhone"},iphone61:{name:"iPhone 13 Pro",storeLabel:"6.1-inch Display",modelLabel:"iPhone 13 Pro",width:1170,height:2532,type:"iphone-notch",radius:48,bezel:10,group:"iPhone"},iphone55:{name:'iPhone 5.5" (8 Plus)',storeLabel:"5.5-inch Display",modelLabel:"iPhone 8 Plus",width:1242,height:2208,type:"iphone-classic-round",radius:36,bezel:4,group:"iPhone Classic"},iphone47:{name:'iPhone 4.7" (SE)',storeLabel:"4.7-inch Display",modelLabel:"iPhone SE",width:750,height:1334,type:"iphone-classic-round",radius:30,bezel:4,group:"iPhone Classic"},ipad13:{name:'iPad Pro 13" (M4)',storeLabel:"13-inch Display",modelLabel:"iPad Pro (M4)",width:2064,height:2752,type:"ipad-modern",radius:24,bezel:12,group:"iPad"},ipad129old:{name:'iPad Pro 12.9" (2nd)',storeLabel:"12.9-inch Display",modelLabel:"iPad Pro (2nd gen)",width:2048,height:2732,type:"ipad-classic",radius:18,bezel:5,group:"iPad"},ipad11:{name:'iPad 11" (Pro/Air)',storeLabel:"11-inch Display",modelLabel:"iPad Pro/Air",width:1488,height:2266,type:"ipad-modern",radius:20,bezel:12,group:"iPad"},watch:{name:"Apple Watch",storeLabel:"Apple Watch",modelLabel:"",width:422,height:514,type:"watch",radius:40,bezel:6,group:"Watch"},pixel8pro:{name:"Pixel 8 Pro",storeLabel:"Android Phone",modelLabel:"Pixel 8 Pro",width:1344,height:2992,type:"android-punchhole",radius:42,bezel:8,group:"Android"},pixel8:{name:"Pixel 8",storeLabel:"Android Phone",modelLabel:"Pixel 8",width:1080,height:2400,type:"android-punchhole",radius:48,bezel:9,group:"Android"},galaxy24ultra:{name:"Galaxy S24 Ultra",storeLabel:"Android Phone",modelLabel:"Galaxy S24 Ultra",width:1440,height:3120,type:"android-punchhole",radius:12,bezel:6,group:"Android"},pixeltablet:{name:"Pixel Tablet",storeLabel:"Android Tablet",modelLabel:"Pixel Tablet",width:2560,height:1600,type:"android-tablet",radius:28,bezel:16,group:"Android Tablet"}},Xs={iPhone:["iphone69","iphone65","iphone63","iphone61"],"iPhone Classic":["iphone55","iphone47"],iPad:["ipad13","ipad129old","ipad11"],Android:["pixel8pro","pixel8","galaxy24ultra"],"Android Tablet":["pixeltablet"],Watch:["watch"]},Zr={black:"#1a1a1a",silver:"#e3e3e3",titanium:"#8a8a8a",blue:"#2f3c4e",gold:"#f9e5c9"},Ti=["#ef4444","#f97316","#f59e0b","#84cc16","#10b981","#06b6d4","#3b82f6","#6366f1","#8b5cf6","#d946ef","#f43f5e","#0f172a","#ffffff"],$i=[{id:"minimal_dark",name:"Minimal Dark",thumbnail:"/templates/minimal_dark.png",tags:{layout:"Top",font:"Inter",bg:"Dark"},settings:{bgType:"solid",bgColor:"#0f172a",textColor:"#f8fafc",layoutMode:"top",topSpacing:15,deviceScale:.9,frameColor:"titanium",selectedFont:"Inter",badgeType:"download"}},{id:"clean_blue",name:"Clean Blue",thumbnail:"/templates/clean_blue.png",tags:{layout:"Top",font:"Inter",bg:"Blue"},settings:{bgType:"solid",bgColor:"#eff6ff",textColor:"#1e3a8a",layoutMode:"top",topSpacing:10,deviceScale:1,frameColor:"blue",selectedFont:"Inter",badgeType:"stars"}},{id:"vibrant_gradient",name:"Vibrant Pop",thumbnail:"/templates/vibrant_gradient.png",tags:{layout:"Bottom",font:"Montserrat",bg:"Gradient"},settings:{bgType:"gradient",gradientStart:"#f472b6",gradientEnd:"#fdba74",gradientAngle:135,textColor:"#ffffff",layoutMode:"bottom",topSpacing:8,deviceScale:1.1,frameColor:"silver",selectedFont:"Montserrat",badgeType:"award"}},{id:"split_modern",name:"Split Modern",thumbnail:"/templates/split_modern.png",tags:{layout:"Split",font:"Roboto",bg:"Light"},settings:{bgType:"solid",bgColor:"#f1f5f9",textColor:"#334155",layoutMode:"split",topSpacing:0,deviceScale:1,frameColor:"black",selectedFont:"Roboto",badgeType:"googleplay"}}],Ai={"iphone-island":{notch:{type:"dynamicIsland",width:"30%",height:"3.5%",top:"2.5%",borderRadius:"20px"}},"iphone-notch":{notch:{type:"notch",width:"40%",height:"3.5%",top:"10px",borderRadius:"0 0 20px 20px"}},"iphone-classic-round":{homeButton:{bottom:"5%",width:"12%",height:"12%",borderWidth:"2px"}},"android-punchhole":{notch:{type:"punchhole",width:"16px",height:"16px",top:"15px"}},"ipad-modern":{},"ipad-classic":{homeButton:{bottom:"5%",width:"4%",height:"4%",borderWidth:"1px"}},"android-tablet":{},watch:{}},Ga=({deviceId:s,orientation:m,deviceScale:d,topSpacing:p,layoutMode:g,frameColor:B,isBatchMode:I=!1,hasLogo:F=!1,hasBadge:K=!1})=>{const v=Ke[s];if(!v)return{};const M=v.type==="watch";let G=g;I&&(v.group?.includes("iPad")||v.group?.includes("Tablet"))&&(G="split");let oe=v.width,k=v.height;m==="landscape"&&(oe=v.height,k=v.width);const ee=m==="landscape"?v.height/3:v.width/3,R=m==="landscape"?v.width/3:v.height/3,ae=v.group==="Android Tablet"||v.group==="iPad",de=v.group==="iPhone Classic",ke=F&&K;let Ee=1,O=1;ke&&ae&&(G==="split"?(Ee=.9,O=.9):(Ee=.85,O=.85));const Z=(G==="split"?.45:M?.58:m==="landscape"?ae?.68:de?.6:.65:ae?.76:de?.7:.8)*Ee,o=(M?.46:m==="landscape"?ae?.52:de?.42:.48:ae?.62:de?.55:.65)*O,i=Math.min(k*o/R,oe*Z/ee),f=d*i,b=ee*f,j=R*f;let N="5%",te="5%",J="5%",X="5%";G!=="split"&&(G==="bottom"?(te=`${k*(p/100)}px`,N=`${k*.05}px`):(N=`${k*(p/100)}px`,te=`${k*.05}px`));const D={width:`${oe}px`,height:`${k}px`,paddingTop:N,paddingBottom:te,paddingLeft:J,paddingRight:X,display:"flex",flexDirection:G==="split"?"row":G==="bottom"?"column-reverse":"column",alignItems:"center",justifyContent:G==="split"?"center":"flex-start",gap:G==="split"?"5%":`${k*.03}px`},se={width:G==="split"?void 0:b,height:j},$={width:ee,height:R,transform:`scale(${f})`,transformOrigin:"center center"};return{effectiveLayoutMode:G,containerStyle:D,deviceWrapperStyle:se,deviceInnerStyle:$,canvasWidth:oe,canvasHeight:k,frameColor:B}},Kr=s=>{if(!s||typeof s!="string"||!s.startsWith("#"))return 255;const m=s.substring(1);if(m.length===3){const d=parseInt(m[0]+m[0],16),p=parseInt(m[1]+m[1],16),g=parseInt(m[2]+m[2],16);return(d*299+p*587+g*114)/1e3}if(m.length===6){const d=parseInt(m.substring(0,2),16),p=parseInt(m.substring(2,4),16),g=parseInt(m.substring(4,6),16);return(d*299+p*587+g*114)/1e3}return 255},Xr=({id:s,deviceId:m,orientation:d,deviceScale:p,topSpacing:g,layoutMode:B,bgType:I,bgColor:F,gradientStart:K,gradientEnd:v,gradientAngle:M,bgImage:G,bgBlur:oe,bgOpacity:k,headerText:ee,subHeaderText:R,textColor:ae,headerSize:de,subHeaderSize:ke,selectedFont:Ee,badgeType:O,screenshot:ce,logoImage:Z,frameColor:T,isBatchMode:o=!1,isPro:i=!1})=>{const{t:f}=Nt(),b=Ke[m],j=b.type==="watch",N=j?"portrait":d,{effectiveLayoutMode:te,containerStyle:J,deviceWrapperStyle:X,deviceInnerStyle:D,canvasWidth:se,canvasHeight:$}=Ga({deviceId:m,orientation:N,deviceScale:p,topSpacing:g,layoutMode:B,frameColor:T,isBatchMode:o,hasLogo:!!Z,hasBadge:O&&O!=="none"}),w=()=>{const A={};return I==="image"&&G?(A.backgroundImage=`url(${G})`,A.backgroundSize="cover",A.backgroundPosition="center"):I==="transparent"?(A.backgroundImage='url("https://www.transparenttextures.com/patterns/checkerboard.png")',A.backgroundColor="transparent"):I==="gradient"?A.backgroundImage=`linear-gradient(${M}deg, ${K}, ${v})`:I==="solid"&&(A.backgroundColor=F),A},V=(I==="solid"?Kr(F)<128:I==="gradient"?Kr(K)<128:I==="image")?"text-white/10":"text-slate-900 opacity-[0.05]",C=Ai[b.type]||{},ve=(A,fe,xe=8)=>{if(!A)return fe;const be=A.split("").reduce((Ze,it)=>Ze+(it.match(/[ -~]/)?.8:1.8),0);if(be<=xe)return fe;const me=.2,st=xe/be;return fe*Math.max(me,st)},we=te==="split"?se*.45:se*.9,ie=(A,fe,xe,be=!1)=>{if(!A)return fe;const me=be?.65:.55,st=be?1.1:1,it=A.split("").reduce((He,Qe)=>He+(Qe.match(/[ -~]/)?me:st),0)*fe;if(it<=xe)return fe;const et=xe/it;return fe*et*.95},pe=Math.min(se,$),le=pe*.15,Q=pe*.05,je=j?.14:d==="landscape"?.08:.22,u=$,E=Z?te==="split"?u*je:te==="top"?Math.min(le+Q,u*.12):0:0,H=Z&&te==="split"?E:0,W=Z&&te==="top"?E:0,U=ee?de*1.1:0,_=R?ke*1.3:0,q=O!=="none"?pe*(j||d==="landscape"?.08:.12):0,ge=ee&&R?16:0,Ge=te==="split"?void 0:U+_+q+ge,at=()=>{if(O==="none")return null;const A=()=>({lineHeight:1,display:"block"}),fe={display:"block",transform:"translateY(-1px)"},xe={padding:`${pe*.018}px ${pe*.038}px`,borderRadius:`${pe*.018}px`,backgroundColor:"#fff",border:"1px solid rgba(15,23,42,0.08)",boxShadow:"none",filter:"none",display:"flex",alignItems:"center",justifyContent:"center",gap:`${pe*.014}px`,marginTop:`${pe*.015}px`,cursor:"default",lineHeight:1,width:"fit-content",maxWidth:`${pe*.9}px`,overflow:"hidden"},be=pe*.045,me=pe*.028,st={display:"block",minWidth:0,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",textAlign:"left"},Ze={minWidth:0,flex:1,display:"flex",flexDirection:"column",justifyContent:"center"},it={width:"100%",display:"flex",justifyContent:te==="split"?"flex-start":"center",alignItems:"center"},et=(()=>{switch(O){case"stars":return e.jsxs("div",{"data-badge":"true",style:{...xe,color:"#f59e0b",backgroundColor:"#fff",border:"1px solid rgba(245,158,11,0.15)"},children:[e.jsx("div",{className:"flex gap-1 items-center h-full shrink-0",children:[1,2,3,4,5].map(He=>e.jsx(un,{size:be,fill:"#f59e0b",stroke:"#f59e0b",style:fe},He))}),e.jsx("span",{"data-badge-score":"true",style:{fontSize:me,fontWeight:800,color:"#111827",letterSpacing:"0",whiteSpace:"nowrap",...A(),transform:"translateY(1px)"},children:"5.0"})]});case"award":{const He=f("app.canvas.badges.award");return e.jsxs("div",{"data-badge":"true",style:{...xe,color:"#ef4444",backgroundColor:"#fef2f2",border:"1px solid rgba(239,68,68,0.25)"},children:[e.jsx(ln,{size:be,style:fe,className:"shrink-0"}),e.jsx("div",{style:Ze,"data-badge-text":"true",children:e.jsx("span",{style:{...st,fontSize:ve(He,me,8),fontWeight:800,color:"#7f1d1d",letterSpacing:"0",...A()},children:He})})]})}case"download":{const He=f("app.canvas.badges.downloadLine1"),Qe=f("app.canvas.badges.downloadLine2");return e.jsxs("div",{"data-badge":"true",style:{...xe,backgroundColor:"#000",color:"#fff",border:"1px solid rgba(255,255,255,0.12)",boxShadow:"none"},children:[e.jsx(qa,{size:be,style:fe,className:"shrink-0"}),e.jsxs("div",{style:Ze,"data-badge-text":"true",children:[e.jsx("span",{style:{...st,fontSize:ve(He,me*.6,12),opacity:.8,...A()},"data-badge-line":"1",children:He}),e.jsx("span",{style:{...st,fontSize:ve(Qe,me,8),fontWeight:800,letterSpacing:"0",...A()},"data-badge-line":"2",children:Qe})]})]})}case"googleplay":{const He=f("app.canvas.badges.googleLine1"),Qe=f("app.canvas.badges.googleLine2");return e.jsxs("div",{"data-badge":"true",style:{...xe,backgroundColor:"#000",color:"#fff",border:"1px solid rgba(255,255,255,0.12)",boxShadow:"none"},children:[e.jsx(dn,{size:be,fill:"#fff",style:fe,className:"shrink-0"}),e.jsxs("div",{style:Ze,"data-badge-text":"true",children:[e.jsx("span",{style:{...st,fontSize:ve(He,me*.6,12),opacity:.8,...A()},"data-badge-line":"1",children:He}),e.jsx("span",{style:{...st,fontSize:ve(Qe,me,8),fontWeight:800,letterSpacing:"0",...A()},"data-badge-line":"2",children:Qe})]})]})}default:return null}})();return e.jsx("div",{style:it,children:et})},Te=()=>{const A=C.notch;if(!A)return null;const fe=N==="landscape",xe={position:"absolute",backgroundColor:"black",zIndex:20};if(A.type==="dynamicIsland"){const be=fe?{left:A.top,top:"50%",transform:"translateY(-50%)",width:A.height,height:A.width,borderRadius:A.borderRadius}:{top:A.top,left:"50%",transform:"translateX(-50%)",width:A.width,height:A.height,borderRadius:A.borderRadius};return e.jsx("div",{style:{...xe,...be},className:"flex items-center justify-end pr-2",children:e.jsx("div",{className:"absolute bg-[#1a1a1a] rounded-full",style:fe?{bottom:"20%",left:"50%",transform:"translateX(-50%)",width:"30%",height:"30%"}:{right:"20%",top:"50%",transform:"translateY(-50%)",width:"12px",height:"12px"},children:e.jsx("div",{className:"absolute top-1 left-1 w-1 h-1 rounded-full bg-white/20 blur-[1px]"})})})}if(A.type==="notch"){const be=fe?{left:A.top,top:"50%",transform:"translateY(-50%)",width:A.height,height:A.width,borderTopRightRadius:"16px",borderBottomRightRadius:"16px",borderTopLeftRadius:"0",borderBottomLeftRadius:"0"}:{top:A.top,left:"50%",transform:"translateX(-50%)",width:A.width,height:A.height,borderBottomLeftRadius:"16px",borderBottomRightRadius:"16px",borderTopLeftRadius:"0",borderTopRightRadius:"0"};return e.jsx("div",{style:{...xe,...be}})}if(A.type==="punchhole"){const be=fe?{left:A.top,top:"50%",transform:"translateY(-50%)",width:A.width,height:A.height,borderRadius:"50%"}:{top:A.top,left:"50%",transform:"translateX(-50%)",width:A.width,height:A.height,borderRadius:"50%"};return e.jsx("div",{style:{...xe,...be}})}return null},Xe=()=>{const A=C.homeButton;if(!A)return null;const fe=N==="landscape",xe=A.width||"12%",be=A.borderWidth||"2px",me=A.bottom||"5%";return fe?e.jsx("div",{style:{position:"absolute",right:me,top:"50%",transform:"translate(50%, -50%)",height:xe,width:"auto",aspectRatio:"1 / 1",borderRadius:"50%",border:`${be} solid #333`,backgroundColor:"#111",boxShadow:"inset 0 0 4px rgba(0,0,0,0.5)"}}):e.jsx("div",{style:{position:"absolute",bottom:me,left:"50%",transform:"translate(-50%, 50%)",width:xe,height:"auto",aspectRatio:"1 / 1",borderRadius:"50%",border:`${be} solid #333`,backgroundColor:"#111",boxShadow:"inset 0 0 4px rgba(0,0,0,0.5)"}})},Le=Zr[T]||Zr.black,_e=(A=>{switch(A){case"titanium":return"linear-gradient(135deg, #706f6f 0%, #9e9e9e 25%, #5e5e5e 50%, #8a8a8a 75%, #666666 100%)";case"silver":return"linear-gradient(135deg, #e0e0e0 0%, #ffffff 30%, #c0c0c0 50%, #f5f5f5 80%, #dcdcdc 100%)";case"gold":return"linear-gradient(135deg, #e6cfa5 0%, #fff5e0 30%, #d4b585 50%, #faeacc 80%, #e0c598 100%)";case"blue":return"linear-gradient(135deg, #2b3a4a 0%, #4a5c70 30%, #1e2a38 50%, #3e4f63 80%, #24303d 100%)";default:return"linear-gradient(135deg, #333333 0%, #555555 30%, #1a1a1a 50%, #444444 80%, #222222 100%)"}})(T),Me="none",Fe={...J,boxShadow:"none",filter:"none",fontFamily:Ee,backgroundColor:F,...w(),position:"relative"},ft=Z&&te==="top"?"justify-start":"justify-center";return e.jsxs("div",{id:s,"data-device-name":b.name,"data-capture-target":"true",style:Fe,className:`relative shrink-0 overflow-visible bg-white ${o?"":"transition-all duration-300 ease-in-out"}`,children:[I==="image"&&G&&e.jsx("div",{className:"absolute inset-0 z-0",style:{backgroundImage:`url(${G})`,backgroundSize:"cover",backgroundPosition:"center",filter:`blur(${oe}px) brightness(${1-k*.01})`,transform:"scale(1.1)"}}),!i&&e.jsxs("div",{className:"absolute inset-0 z-40 pointer-events-none flex flex-col items-center justify-center overflow-hidden",children:[e.jsx("div",{className:`absolute inset-0 flex flex-wrap content-center justify-center gap-32 -rotate-12 scale-150 ${V}`,children:Array.from({length:30}).map((A,fe)=>e.jsx("span",{className:"text-4xl font-black uppercase whitespace-nowrap",children:f("app.canvas.watermark")},fe))}),e.jsxs("div",{"data-watermark-badge":"true",className:"bg-white/60 backdrop-blur-md border border-white/50 px-4 py-2 rounded-xl shadow-lg flex items-center gap-3 opacity-80 leading-none",children:[e.jsx("div",{className:"w-6 h-6 bg-slate-900 rounded-md flex items-center justify-center text-white shrink-0",children:e.jsx(Ha,{size:14})}),e.jsx("div",{className:"h-6 flex items-center justify-center leading-none",children:e.jsx("span",{className:"text-[10px] font-bold text-slate-900 uppercase tracking-wider leading-none pb-0.5",children:f("app.canvas.watermark")})})]})]}),Z&&e.jsx("div",{className:"absolute z-20",style:{top:`${Q}px`,left:`${Q}px`,width:`${le}px`,height:`${le}px`,display:"flex",alignItems:"center",justifyContent:"flex-start",backgroundImage:`url(${Z})`,backgroundSize:"contain",backgroundPosition:"left center",backgroundRepeat:"no-repeat"}}),e.jsxs("div",{className:`flex-none flex flex-col ${ft} ${te==="split"?"items-start text-left w-[45%]":"items-center text-center w-full"} z-50`,style:{color:ae,gap:"16px",minHeight:Ge?`${Ge}px`:void 0,borderTop:Z&&te==="split"?`${E}px solid transparent`:void 0,marginTop:W?`${W}px`:H?`-${H}px`:void 0,boxSizing:"border-box"},children:[e.jsx("h1",{style:{fontSize:`${ie(ee,de,we,!0)}px`,lineHeight:1.1,fontWeight:700,letterSpacing:"-0.02em",whiteSpace:"nowrap",wordBreak:"keep-all",overflow:"hidden",textOverflow:"ellipsis",minHeight:"1em",display:"block",margin:0,padding:0},children:ee}),e.jsx("h2",{style:{fontSize:`${ie(R,ke,we,!1)}px`,lineHeight:1.3,fontWeight:500,opacity:.85,whiteSpace:"nowrap",wordBreak:"keep-all",overflow:"hidden",textOverflow:"ellipsis",minHeight:"1em",display:"block",margin:0,padding:0},children:R}),at()]}),e.jsx("div",{className:`flex-none relative z-10 flex items-center justify-center ${te==="split"?"w-[50%]":"w-full"}`,style:{...X,boxShadow:"none",borderRadius:`${b.radius}px`,backgroundColor:"transparent",overflow:"visible",filter:"none"},"data-device-wrapper":"true","data-device-name":b.name,"data-shadow-style":Me,children:e.jsx("div",{style:{...D,overflow:"visible"},"data-device-inner":"true",children:e.jsxs("div",{className:"relative","data-frame-shadow":"true","data-shadow-style":Me,style:{width:"100%",height:"100%",borderRadius:`${b.radius}px`,background:j?Le:_e,boxShadow:"none",padding:j?void 0:"4px"},children:[!j&&!b.type.includes("android")&&e.jsx(e.Fragment,{children:d==="landscape"?e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"absolute left-[18%] -top-[2px] w-[12%] h-[2px] bg-slate-600 rounded-b-sm z-0"}),e.jsx("div",{className:"absolute left-[10%] -bottom-[2px] w-[4%] h-[2px] bg-slate-600 rounded-t-sm z-0"}),e.jsx("div",{className:"absolute left-[18%] -bottom-[2px] w-[8%] h-[2px] bg-slate-600 rounded-t-sm z-0"}),e.jsx("div",{className:"absolute left-[28%] -bottom-[2px] w-[8%] h-[2px] bg-slate-600 rounded-t-sm z-0"})]}):e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"absolute top-[10%] -left-[2px] w-[2px] h-[4%] bg-slate-600 rounded-l-sm z-0"}),e.jsx("div",{className:"absolute top-[18%] -left-[2px] w-[2px] h-[8%] bg-slate-600 rounded-l-sm z-0"}),e.jsx("div",{className:"absolute top-[28%] -left-[2px] w-[2px] h-[8%] bg-slate-600 rounded-l-sm z-0"}),e.jsx("div",{className:"absolute top-[18%] -right-[2px] w-[2px] h-[12%] bg-slate-600 rounded-r-sm z-0"})]})}),e.jsxs("div",{className:"absolute bg-black overflow-hidden",style:{top:`${b.bezel}px`,bottom:`${b.bezel}px`,left:`${b.bezel}px`,right:`${b.bezel}px`,borderRadius:`${b.radius-4}px`},children:[e.jsx("div",{className:"relative w-full h-full bg-slate-900",style:{top:b.type.includes("classic")?d==="landscape"?"0":"10%":"0",height:b.type.includes("classic")?d==="landscape"?"100%":"80%":"100%",width:b.type.includes("classic")&&d==="landscape"?"80%":"100%",left:b.type.includes("classic")&&d==="landscape"?"10%":"0"},children:ce?e.jsx("div",{"data-type":"screen-image",className:"w-full h-full bg-cover bg-center bg-no-repeat",style:{backgroundImage:`url(${ce})`},role:"img","aria-label":"Screen"}):e.jsx("div",{className:"w-full h-full flex flex-col items-center justify-center text-center p-4 bg-slate-800 text-white/20",children:j?e.jsx(Ei,{size:32}):e.jsx(Ha,{size:48})})}),b.type.includes("classic")&&e.jsx(e.Fragment,{children:e.jsxs("div",{className:`absolute flex justify-center items-center ${d==="landscape"?"left-0 top-0 bottom-0 w-[10%] flex-col gap-2":"top-0 left-0 right-0 h-[10%] flex-row gap-2"}`,children:[!b.type.includes("ipad")&&e.jsx("div",{className:`bg-[#333] rounded-full ${d==="landscape"?"w-1.5 h-12":"w-12 h-1.5"}`}),e.jsx("div",{className:"w-2 h-2 bg-[#222] rounded-full"})]})}),b.type==="android-tablet"&&e.jsx("div",{className:`absolute ${d==="landscape"?"top-[50%] -translate-y-1/2 right-2":"top-2 left-[50%] -translate-x-1/2"} w-3 h-3 bg-[#111] rounded-full ring-1 ring-[#333]`})]}),Te(),Xe(),j&&e.jsx("div",{className:"absolute bg-[#333] rounded-r-md shadow-sm border border-l-0 border-black z-0",style:{right:"-6px",top:"28%",width:"8px",height:"32px",borderTopRightRadius:"4px",borderBottomRightRadius:"4px"}}),e.jsx("div",{className:"absolute inset-0 rounded-[inherit] pointer-events-none bg-gradient-to-tr from-transparent via-white/5 to-transparent opacity-50 z-30"})]})})})]})},Mi=({isOpen:s,onClose:m,onUpgrade:d})=>{const{t:p}=Nt(),g=n.useRef(null),B=n.useRef(null),I=p("upgrade.features",{returnObjects:!0})||[];return ls({isOpen:s,onClose:m,panelRef:g,initialFocusRef:B}),s?e.jsx("div",{className:"fixed inset-0 z-[2000] bg-slate-900/60 backdrop-blur-sm flex items-center justify-center p-4 animate-in fade-in duration-200",role:"dialog","aria-modal":"true","aria-label":p("upgrade.title",{defaultValue:"Upgrade"}),onMouseDown:F=>{F.target===F.currentTarget&&m?.()},children:e.jsxs("div",{ref:g,className:"bg-white rounded-2xl shadow-2xl max-w-md w-full overflow-hidden",children:[e.jsxs("div",{className:"bg-gradient-to-br from-slate-900 to-slate-800 p-8 text-center text-white relative overflow-hidden",children:[e.jsx("div",{className:"absolute top-0 left-0 w-full h-full opacity-10 bg-[url('https://www.transparenttextures.com/patterns/cubes.png')]"}),e.jsxs("div",{className:"relative z-10",children:[e.jsx("div",{className:"w-12 h-12 bg-blue-500 rounded-xl flex items-center justify-center mx-auto mb-4 shadow-lg shadow-blue-500/30",children:e.jsx(Ka,{size:24,fill:"white"})}),e.jsx("h2",{className:"text-2xl font-bold mb-2",children:p("upgrade.title")}),e.jsx("p",{className:"text-slate-300 text-sm",children:p("upgrade.subtitle")})]})]}),e.jsxs("div",{className:"p-8",children:[e.jsx("div",{className:"space-y-4 mb-8",children:I.map(F=>e.jsx(Oi,{text:F},F))}),e.jsx("button",{ref:B,onClick:d,className:"w-full py-3 bg-blue-600 hover:bg-blue-700 text-white rounded-xl font-bold shadow-lg shadow-blue-600/20 transition-all transform hover:scale-[1.02] active:scale-[0.98]",children:p("upgrade.cta")}),e.jsxs("p",{className:"mt-3 text-[11px] text-slate-500 text-center leading-relaxed",children:[p("upgrade.legal"),e.jsx("br",{}),e.jsx("a",{href:"/terms",className:"underline hover:text-slate-700",target:"_blank",rel:"noreferrer",children:p("landing.footer.terms")})," / ",e.jsx("a",{href:"/privacy",className:"underline hover:text-slate-700",target:"_blank",rel:"noreferrer",children:p("landing.footer.privacy")})," / ",e.jsx("a",{href:"/legal",className:"underline hover:text-slate-700",target:"_blank",rel:"noreferrer",children:p("landing.footer.legal")})]}),e.jsx("button",{onClick:m,className:"w-full mt-3 py-2 text-slate-400 hover:text-slate-600 text-xs font-medium",children:p("upgrade.later")})]})]})}):null},Oi=({text:s})=>e.jsxs("div",{className:"flex items-center gap-3 text-sm text-slate-700",children:[e.jsx(gl,{size:18,className:"text-green-500 shrink-0"}),e.jsx("span",{children:s})]}),Fi=({isOpen:s,onClose:m})=>{const{t:d}=Nt(),p=n.useRef(null),g=n.useRef(null),B=n.useMemo(()=>d("landing.ciQuickstart",{returnObjects:!0})||{},[d]),I=typeof B.title=="string"?B.title:d("app.header.ciQuickstart",{defaultValue:"CI quickstart"}),F=typeof B.desc=="string"?B.desc:"",K=typeof B.codeLabel=="string"?B.codeLabel:"",v=typeof B.code=="string"?B.code:"",M=typeof B.note=="string"?B.note:"";return ls({isOpen:s,onClose:m,panelRef:g,initialFocusRef:p}),s?e.jsx("div",{className:"fixed inset-0 z-[2100] bg-slate-900/60 backdrop-blur-sm flex items-center justify-center p-4 animate-in fade-in duration-200",role:"dialog","aria-modal":"true","aria-label":I,onMouseDown:G=>{G.target===G.currentTarget&&m?.()},children:e.jsxs("div",{ref:g,className:"bg-white rounded-2xl shadow-2xl max-w-2xl w-full overflow-hidden border border-slate-200",children:[e.jsxs("div",{className:"flex items-start justify-between gap-4 px-6 py-4 border-b border-slate-200",children:[e.jsxs("div",{className:"min-w-0",children:[e.jsx("h2",{className:"text-lg font-black text-slate-900",children:I}),F&&e.jsx("p",{className:"text-sm text-slate-600 mt-1",children:F})]}),e.jsx("button",{ref:p,type:"button",onClick:m,className:"shrink-0 p-2 rounded-full border border-slate-200 text-slate-600 hover:bg-slate-50","aria-label":d("common.close",{defaultValue:"Close"}),title:d("common.close",{defaultValue:"Close"}),children:e.jsx(Gt,{size:16})})]}),e.jsxs("div",{className:"p-6 space-y-4",children:[e.jsxs("div",{className:"rounded-xl border border-slate-200 bg-slate-950 text-slate-100 overflow-hidden",children:[e.jsxs("div",{className:"flex items-center justify-between gap-3 px-4 py-2 border-b border-slate-800 bg-slate-950/80",children:[e.jsx("div",{className:"text-[11px] uppercase tracking-[0.2em] text-slate-400",children:K||d("landing.ciQuickstart.codeLabel",{defaultValue:"Commands"})}),e.jsx(Za,{value:v,className:"text-[11px] px-2 py-1 rounded-md border border-slate-700 bg-slate-900/60 text-slate-100 hover:bg-slate-900 transition disabled:opacity-50 disabled:cursor-not-allowed"})]}),e.jsx("pre",{className:"p-4 text-xs font-mono whitespace-pre overflow-auto max-h-[50vh] leading-relaxed",children:v})]}),M&&e.jsx("p",{className:"text-xs text-slate-500",children:M})]})]})}):null};var Bi="clover",hn="https://js.stripe.com",Ui="".concat(hn,"/").concat(Bi,"/stripe.js"),Hi=/^https:\/\/js\.stripe\.com\/v3\/?(\?.*)?$/,Wi=/^https:\/\/js\.stripe\.com\/(v3|[a-z]+)\/stripe\.js(\?.*)?$/;var qi=function(m){return Hi.test(m)||Wi.test(m)},Ji=function(){for(var m=document.querySelectorAll('script[src^="'.concat(hn,'"]')),d=0;d<m.length;d++){var p=m[d];if(qi(p.src))return p}return null},Qr=function(m){var d="",p=document.createElement("script");p.src="".concat(Ui).concat(d);var g=document.head||document.body;if(!g)throw new Error("Expected document.body not to be null. Stripe.js requires a <body> element.");return g.appendChild(p),p},Rs=null,Qs=null,ea=null,Vi=function(m){return function(d){m(new Error("Failed to load Stripe.js",{cause:d}))}},Yi=function(m,d){return function(){window.Stripe?m(window.Stripe):d(new Error("Stripe.js not available"))}},Gi=function(m){return Rs!==null?Rs:(Rs=new Promise(function(d,p){if(typeof window>"u"||typeof document>"u"){d(null);return}if(window.Stripe){d(window.Stripe);return}try{var g=Ji();if(!(g&&m)){if(!g)g=Qr(m);else if(g&&ea!==null&&Qs!==null){var B;g.removeEventListener("load",ea),g.removeEventListener("error",Qs),(B=g.parentNode)===null||B===void 0||B.removeChild(g),g=Qr(m)}}ea=Yi(d,p),Qs=Vi(p),g.addEventListener("load",ea),g.addEventListener("error",Qs)}catch(I){p(I);return}}),Rs.catch(function(d){return Rs=null,Promise.reject(d)}))},Es,Zi=function(){return Es||(Es=Gi(null).catch(function(m){return Es=null,Promise.reject(m)}),Es)};Promise.resolve().then(function(){return Zi()}).catch(function(s){console.warn(s)});const Ki="",Xi={"Content-Type":"application/json"},Ct=s=>s?{Authorization:`Bearer ${s}`}:void 0,_t=async(s,m={})=>{const d=`${Ki}${s}`,p=await fetch(d,{...m,headers:{...Xi,...m.headers||{}}});if(!p.ok){const g=await p.text();throw p.status===401&&typeof window<"u"&&window.dispatchEvent(new CustomEvent("auth:unauthorized")),new Error(`API error ${p.status}: ${g}`)}return p.status===204?null:p.json()},Ps=s=>_t("/me",{method:"GET",headers:Ct(s)}),Qi=s=>_t("/billing/portal",{method:"POST",headers:Ct(s)}),ec=s=>_t("/team/workspaces",{method:"GET",headers:Ct(s)}),tc=(s,m)=>_t("/team/workspaces",{method:"POST",body:JSON.stringify(s),headers:Ct(m)}),sc=(s,m)=>_t(`/team/workspaces/${encodeURIComponent(s)}/projects`,{method:"GET",headers:Ct(m)}),ac=(s,m,d)=>_t(`/team/workspaces/${encodeURIComponent(s)}/projects`,{method:"POST",body:JSON.stringify(m),headers:Ct(d)}),Ba=(s,m,d)=>_t(`/team/workspaces/${encodeURIComponent(s)}/projects/${encodeURIComponent(m)}`,{method:"GET",headers:Ct(d)}),rc=(s,m,d,p)=>_t(`/team/workspaces/${encodeURIComponent(s)}/projects/${encodeURIComponent(m)}`,{method:"PUT",body:JSON.stringify(d),headers:Ct(p)}),nc=(s,m,d)=>_t(`/team/workspaces/${encodeURIComponent(s)}/invites`,{method:"POST",body:JSON.stringify(m),headers:Ct(d)}),oc=(s,m)=>_t(`/team/invites/${encodeURIComponent(s)}/accept`,{method:"POST",headers:Ct(m)}),lc=async({priceId:s,email:m,token:d}={})=>{throw new Error("Stripe public key not configured")},ut={store:"store",detailed:"detailed"},ic=s=>{const m=s?.width,d=s?.height;return!m||!d?"":`${m}×${d}px`},Ds=(s,{id:m="",mode:d=ut.store}={})=>{const p=s?.storeLabel||s?.name||m,g=s?.modelLabel||"",B=g&&g!==p?g:"",I=ic(s),F=B?`${p} (${B})`:p,K=d===ut.detailed&&B||p,v=d===ut.detailed?[B?p:null,I].filter(Boolean).join(" • "):[B||null,I].filter(Boolean).join(" • "),M=d===ut.detailed?[K,I,B?p:null].filter(Boolean).join(" - "):F;return{storeLabel:p,modelLabel:B,dimensions:I,storeWithModel:F,optionLabel:M,primary:K,secondary:v,shortLabel:K}},cc=(s="")=>s.toLowerCase().replace(/×/g,"x").replace(/["'()]/g,"").trim(),dc=(s,m,d)=>{const p=cc(d);if(!p)return!0;const g=p.split(/\s+/).filter(Boolean);if(!g.length)return!0;const{storeLabel:B,modelLabel:I}=Ds(m,{id:s,mode:ut.store}),F=m?.width,K=m?.height,v=[s,m?.group,m?.type,B,I,m?.name,F&&K?`${F}x${K}`:null,F&&K?`${K}x${F}`:null,F&&K?`${F} ${K}`:null].filter(Boolean).join(" ").toLowerCase().replace(/×/g,"x");return g.every(M=>v.includes(M))},pc=s=>{if(s?.aborted)throw new Error("Aborted")},en=(s,m)=>new Promise((d,p)=>{if(m&&window[m])return d(window[m]);const g=document.createElement("script");g.src=s,g.onload=()=>d(m?window[m]:void 0),g.onerror=p,document.head.appendChild(g)}),uc=s=>{const m=s.querySelector("h1"),d=s.querySelector("h2"),p=m?.parentElement||d?.parentElement;p&&(p.style.position="relative",p.style.zIndex="1000")},hc=(s,m)=>{if(!s)return m;const d=s.toLowerCase();if(d==="transparent"||d==="rgba(0, 0, 0, 0)")return m;if(d.startsWith("rgba")){const p=parseFloat(d.split(",")[3]);if(!Number.isNaN(p)&&p===0)return m}return s},fc=s=>{if(!s)return null;const m=s.split(/\s+/);if(m.length<3)return null;const d=m.pop();let p=0;m.length>=4&&(p=parseFloat(m.pop())||0);const[g="0px",B="16px",I="40px"]=m;return{offsetX:parseFloat(g)||0,offsetY:parseFloat(B)||0,blur:parseFloat(I)||0,spread:p,color:d}};function mc({deviceLibrary:s,bgType:m,bgColor:d}){const[p,g]=n.useState(!1),[B,I]=n.useState({current:0,total:0}),F=n.useCallback(()=>en("https://cdnjs.cloudflare.com/ajax/libs/html2canvas/1.4.1/html2canvas.min.js","html2canvas"),[]),K=n.useCallback(()=>en("https://cdnjs.cloudflare.com/ajax/libs/jszip/3.10.1/jszip.min.js","JSZip"),[]),v=(k,ee=null)=>{if(!ee)return k;const R=document.createElement("canvas");R.width=k.width,R.height=k.height;const ae=R.getContext("2d");return ae.fillStyle=ee,ae.fillRect(0,0,R.width,R.height),ae.drawImage(k,0,0),R},M=n.useCallback((k,ee,R)=>{let ae=k.offsetWidth,de=k.offsetHeight;k.style.width&&k.style.width.endsWith("px")&&(ae=parseInt(k.style.width,10)),k.style.height&&k.style.height.endsWith("px")&&(de=parseInt(k.style.height,10));const ke=0,Ee=ae+ke*2,O=de+ke*2,ce=hc(R,"#ffffff"),Z=ee==="solid",T=Z?ce:ee==="transparent"?"transparent":void 0,o=null,i=Z?ce:null,f=window.getComputedStyle(k),b=f.background&&f.background!=="none"?f.background:void 0,j=T??b??"transparent",N=k.cloneNode(!0);N.style.position="relative",N.style.transform="none",N.style.transformOrigin="top left",N.style.width=`${ae}px`,N.style.height=`${de}px`,N.style.overflow="visible",N.style.margin="0",T!==void 0?N.style.background=T:b&&(N.style.background=b);const te=u=>{if(!u)return"";const E=u.split(",").map(U=>U.trim()).filter(U=>U&&!U.startsWith("inset"));if(!E.length)return"";let H="",W=-1;return E.forEach(U=>{const _=fc(U.replace("inset","").trim());_&&_.blur>W&&(W=_.blur,H=`${_.offsetX}px ${_.offsetY}px ${_.blur}px ${_.color}`)}),H?`drop-shadow(${H})`:""};N.querySelectorAll('[data-frame-shadow="true"], [data-device-wrapper="true"]').forEach(u=>{const H=u?.dataset?.shadowStyle||"0 40px 140px -28px rgba(0,0,0,0.6)",W=te(H);if(u.style.boxShadow=H,W){const U=u.style.filter==="none"?"":u.style.filter||"";u.style.filter=`${U} ${W}`.trim()}}),N.querySelectorAll('[data-badge-text="true"]').forEach(u=>{u.style.lineHeight="0.55",u.style.gap="0px",u.style.display="flex",u.style.flexDirection="column",u.style.justifyContent="center"}),N.querySelectorAll("[data-badge-line]").forEach(u=>{const E=u.dataset.badgeLine;u.style.lineHeight="0.55",u.style.display="block",u.style.transform="translateY(-3px)",E==="1"&&(u.style.marginBottom="-8px"),E==="2"&&(u.style.marginTop="-10px")});const se=u=>{if(!u)return{width:0,height:0};const E=u.getBoundingClientRect(),H=window.getComputedStyle(u),W=u.offsetWidth||E.width||parseFloat(H.width)||parseFloat(H.maxWidth)||parseFloat(H.minWidth)||0,U=u.offsetHeight||E.height||parseFloat(H.height)||parseFloat(H.maxHeight)||parseFloat(H.minHeight)||0;return{width:W,height:U}},$=document.createElement("div");$.style.position="absolute",$.style.top=`${ke}px`,$.style.left=`${ke}px`,$.style.background=j,$.style.boxShadow="none",$.style.borderRadius="48px",$.style.display="inline-block",$.style.overflow="visible",$.appendChild(N);const w=document.createElement("div");w.style.position="fixed",w.style.top="-10000px",w.style.left="-10000px",w.style.width=`${Ee}px`,w.style.height=`${O}px`,w.style.zIndex="-1000",w.style.background=j,w.style.overflow="visible",w.appendChild($),document.body.appendChild(w),N.querySelectorAll('[data-device-wrapper="true"]').forEach(u=>{const E=u.querySelector('[data-frame-shadow="true"]'),H=E?.getBoundingClientRect();E?.dataset?.shadowStyle||u.dataset.shadowStyle||u.style.boxShadow,E?.style?.borderRadius||u.style.borderRadius;const W=se(E),U=se(u),_=U.width||W.width,Ce=U.height||W.height,q=w.getBoundingClientRect(),ge=H||u.getBoundingClientRect();ge.width,ge.height,ge.left-q.left,ge.top-q.top});const V=[],C=!!N.querySelector('[data-badge="true"]'),ie=(()=>{const E=N.querySelector('[data-device-wrapper="true"]')?.dataset?.deviceName;return E&&Object.values(s||{}).find(W=>W.name===E)||null})()?.type==="watch",pe=N.querySelector('[data-device-wrapper="true"]');if(pe){pe.style.filter="none";const u=pe.style.transform&&pe.style.transform!=="none"?pe.style.transform+" ":"",E=ie?0:C?-1:-9;pe.style.transform=`${u}translateY(${E}px)`.trim()}N.querySelectorAll('[data-badge="true"]').forEach(u=>{const E=u?.dataset?.shadowStyle||u.style.boxShadow||"0 6px 18px rgba(0,0,0,0.25)",H=te(E);if(u.style.filter="none",u.style.boxShadow=E,!ie){const _=window.getComputedStyle(u),Ce=parseFloat(_.marginTop)||0;u.style.marginTop=`${Ce-6}px`}const W=u.style.transform&&u.style.transform!=="none"?u.style.transform+" ":"";ie||(u.style.transform=`${W}translateY(-2px)`.trim());const U=u.getBoundingClientRect();if(U?.width&&U?.height&&(u.style.width=`${U.width}px`,u.style.height=`${U.height}px`),u.style.whiteSpace="nowrap",u.style.wordBreak="keep-all",u.style.flexWrap="nowrap",u.style.overflow="visible",u.style.minWidth="max-content",u.querySelectorAll('div[data-badge-text="true"]').forEach(_=>{_.style.overflow="visible",_.style.height="auto",_.style.display="flex",_.style.flexDirection="column",_.style.paddingBottom="20px",_.style.marginBottom="-20px"}),u.querySelectorAll("span").forEach(_=>{const Ce=_.style.transform&&_.style.transform!=="none"?_.style.transform+" ":"";_.dataset?.badgeScore==="true"?_.style.transform=ie?"translateY(-8px)":"translateY(-12px)":ie?_.style.transform=`${Ce}translateY(-5px)`.trim():_.style.transform=`${Ce}translateY(-11px)`.trim(),_.style.letterSpacing="normal",_.style.whiteSpace="nowrap",_.style.wordBreak="keep-all",_.style.lineHeight="1.2",_.style.paddingBottom="0px",_.style.marginBottom="0px",_.style.display="block",_.style.overflow="visible"}),H){const _=u.style.filter==="none"?"":u.style.filter||"";u.style.filter=`${_} ${H}`.trim()}}),N.querySelectorAll('[data-watermark-badge="true"]').forEach(u=>{u.style.display="flex",u.style.alignItems="center",u.style.justifyContent="center",u.querySelectorAll("span").forEach(H=>{H.style.transform="translateY(-5.5px)",H.style.display="inline-block",H.style.lineHeight="1"})}),N.querySelectorAll("h1, h2").forEach(u=>{u.style.overflow="visible",u.style.textOverflow="clip",u.style.textShadow="none";const E=ie?8:15;u.style.paddingBottom=`${E}px`;const H=window.getComputedStyle(u),W=parseFloat(H.marginTop)||0,U=parseFloat(H.marginBottom)||0;if(ie||(u.style.marginTop=`${W-23}px`),u.tagName==="H1"?ie?u.style.marginBottom=`${U-2}px`:u.style.marginBottom=`${U+32}px`:!ie&&C?u.style.marginBottom="-4px":ie&&C?u.style.marginBottom=`${U+4}px`:u.style.marginBottom=`${U}px`,u.tagName==="H2"){if(!ie){const _=C?-14:-16;u.style.transform=`translateY(${_}px)`}}else ie||(u.style.transform="translateY(-13px)");u.style.display="block"});const je=N.querySelector("h1");if(je?.parentElement){const u=je.parentElement,E=window.getComputedStyle(u),H=parseFloat(E.rowGap||E.gap)||0,W=parseFloat(E.marginTop)||0;ie?u.style.marginTop=`${W-18}px`:u.style.marginTop=`${W-4}px`;const U=H||16;u.style.rowGap=`${U}px`,u.style.gap=`${U}px`}return uc(N),{clone:N,container:w,width:Ee,height:O,backgroundColor:i,captureBackground:o,manualShadows:V,baseWidth:ae,baseHeight:de,padTotal:ke}},[s]),G=n.useCallback(async(k,ee)=>{if(!k)return!1;g(!0),I({current:0,total:0});let R=null,ae=!1;try{await F();const{container:de,width:ke,height:Ee,backgroundColor:O,captureBackground:ce,manualShadows:Z,padTotal:T,baseWidth:o,baseHeight:i}=M(k,m,d);R=de;const f=2,b=await window.html2canvas(de,{backgroundColor:ce??null,scale:f,logging:!1,useCORS:!0,allowTaint:!0,scrollX:0,scrollY:0,width:ke,height:Ee,windowWidth:ke,windowHeight:Ee}),j=v(b,O??"#ffffff",Z,f),N=document.createElement("canvas");N.width=o,N.height=i,N.getContext("2d").drawImage(j,0,0,j.width,j.height,0,0,N.width,N.height);const J=document.createElement("a");J.download=ee,J.href=N.toDataURL("image/png"),J.click(),ae=!0}catch(de){console.error("Export failed",de)}finally{R&&R.parentNode&&R.parentNode.removeChild(R),g(!1),I({current:0,total:0})}return ae},[m,F,d,M]),oe=n.useCallback(async({locales:k,slides:ee,selectedDeviceIds:R,getElementById:ae,signal:de,onTaskStart:ke,outputMode:Ee="locale"})=>{if(!k?.length||!ee?.length||!R?.length)return;const O=()=>pc(de);O(),g(!0);const ce=k.length*ee.length*R.length;I({current:0,total:ce});let Z=0;try{await Promise.all([F(),K()]),O();const T=new window.JSZip,o=T.folder("fastlane").folder("screenshots"),i=Ee==="device"?"device":"locale",f=async({localeId:J,slideIndex:X,deviceId:D})=>{O();const se=ae(D);if(!se)return;if(typeof ke=="function")try{ke({localeId:J,slideIndex:X,slideNumber:X+1,deviceId:D,current:Z+1,total:ce})}catch(E){console.warn("onTaskStart failed",E)}const $=ee[X],w=$?.texts?.[J]||{header:"",sub:""},z=(X+1).toString(),{clone:V,container:C,width:ve,height:we,backgroundColor:ie,captureBackground:pe,manualShadows:le,padTotal:Q,baseWidth:je,baseHeight:u}=M(se,m,d);try{O();const E=V.querySelector("h1"),H=V.querySelector("h2");E&&(E.textContent=w.header),H&&(H.textContent=w.sub);const W=V.querySelector('div[data-type="screen-image"]');if(W){const Xe=$?.screenshotsByLocale?.[J]||$?.screenshot||null;W.style.backgroundImage=Xe?`url(${Xe})`:"none"}O();const U=2,_=await window.html2canvas(C,{scale:U,backgroundColor:pe??null,useCORS:!0,scrollX:0,scrollY:0,width:ve,height:we,windowWidth:ve,windowHeight:we});O();const Ce=v(_,ie??"#ffffff",le,U),q=document.createElement("canvas");q.width=je,q.height=u,q.getContext("2d").drawImage(Ce,0,0,Ce.width,Ce.height,0,0,q.width,q.height),O();const at=q.toDataURL("image/png").replace(/^data:image\/(png|jpg);base64,/,""),Te=String(D).toLowerCase();i==="device"?o.folder(Te).file(`${J}_${z}.png`,at,{base64:!0}):o.folder(J).file(`${Te}_${z}.png`,at,{base64:!0})}finally{C.parentNode&&document.body.removeChild(C)}Z+=1,I({current:Z,total:ce}),O()};if(i==="device")for(const J of R){O();for(const X of k){O();for(let D=0;D<ee.length;D++)await f({localeId:X.id,slideIndex:D,deviceId:J});await new Promise(D=>setTimeout(D,50)),O()}}else for(const J of k){O();for(let X=0;X<ee.length;X++){O();for(const D of R)await f({localeId:J.id,slideIndex:X,deviceId:D})}await new Promise(X=>setTimeout(X,50)),O()}const b={schemaVersion:1,generatedAt:new Date().toISOString(),structure:{root:"fastlane/screenshots",mode:i,filePattern:i==="device"?"{deviceId}/{locale}_{index}.png":"{locale}/{deviceId}_{index}.png"},counts:{locales:k.length,slides:ee.length,devices:R.length,images:ce},locales:k.map(J=>({id:J.id,name:J.name||""})),devices:R.map(J=>{const X=s?.[J]||{};return{id:J,group:X.group||"",storeLabel:X.storeLabel||X.name||J,modelLabel:X.modelLabel||"",width:X.width||null,height:X.height||null}})};T.file("manifest.json",JSON.stringify(b,null,2));const j=await T.generateAsync({type:"blob"});O();const N=window.URL.createObjectURL(j),te=document.createElement("a");te.href=N,te.download="fastlane_assets.zip",document.body.appendChild(te),te.click(),setTimeout(()=>{window.URL.revokeObjectURL(N),te.remove()},1500)}catch(T){throw T?.message!=="Aborted"&&console.error(T),T}finally{g(!1),I({current:0,total:0})}},[m,s,F,K,d,M]);return{exportSingle:G,exportBatch:oe,isExporting:p,exportProgress:B}}const Ua={bgType:"solid",bgColor:"#0f172a",layoutMode:"standard",textColor:"#f8fafc",locales:[{id:"en-US",name:"English (US)",flag:"🇺🇸"},{id:"ja-JP",name:"日本語",flag:"🇯🇵"}],currentLocaleId:"en-US",selectedBatchDevices:["iphone69"],slides:[{id:1,screenshot:null,screenshotsByLocale:{},texts:{"en-US":{header:"Screenshots as a build step",sub:"Master layout + CSV copy → rerun exports"},"ja-JP":{header:"スクショをビルドステップに",sub:"master layout + CSV copy → 再実行"}}},{id:2,screenshot:null,screenshotsByLocale:{},texts:{"en-US":{header:"The matrix explodes fast",sub:"5 shots × 10 locales × 4 sizes = 200 images"},"ja-JP":{header:"端末×言語が爆発",sub:"5枚×10言語×4サイズ = 200枚"}}},{id:3,screenshot:null,screenshotsByLocale:{},texts:{"en-US":{header:"Reproducible exports",sub:"Fastlane-ready ZIP every release"},"ja-JP":{header:"再現性のある出力",sub:"Fastlane 対応 ZIP を再実行"}}},{id:4,screenshot:null,screenshotsByLocale:{},texts:{"en-US":{header:"Bring your translations",sub:"Keep layout stable across locales"},"ja-JP":{header:"翻訳は外部でOK",sub:"レイアウトは崩れない"}}},{id:5,screenshot:null,screenshotsByLocale:{},texts:{"en-US":{header:"Try it free",sub:"Sample → edit → export"},"ja-JP":{header:"無料で試す",sub:"サンプル → 編集 → Export"}}}]};var sa={exports:{}};var xc=sa.exports,tn;function gc(){return tn||(tn=1,(function(s,m){((d,p)=>{s.exports=p()})(xc,function d(){var p=typeof self<"u"?self:typeof window<"u"?window:p!==void 0?p:{},g,B=!p.document&&!!p.postMessage,I=p.IS_PAPA_WORKER||!1,F={},K=0,v={};function M(o){this._handle=null,this._finished=!1,this._completed=!1,this._halted=!1,this._input=null,this._baseIndex=0,this._partialLine="",this._rowCount=0,this._start=0,this._nextChunk=null,this.isFirstChunk=!0,this._completeResults={data:[],errors:[],meta:{}},(function(i){var f=ce(i);f.chunkSize=parseInt(f.chunkSize),i.step||i.chunk||(f.chunkSize=null),this._handle=new R(f),(this._handle.streamer=this)._config=f}).call(this,o),this.parseChunk=function(i,f){var b=parseInt(this._config.skipFirstNLines)||0;if(this.isFirstChunk&&0<b){let N=this._config.newline;N||(j=this._config.quoteChar||'"',N=this._handle.guessLineEndings(i,j)),i=[...i.split(N).slice(b)].join(N)}this.isFirstChunk&&T(this._config.beforeFirstChunk)&&(j=this._config.beforeFirstChunk(i))!==void 0&&(i=j),this.isFirstChunk=!1,this._halted=!1;var b=this._partialLine+i,j=(this._partialLine="",this._handle.parse(b,this._baseIndex,!this._finished));if(!this._handle.paused()&&!this._handle.aborted()){if(i=j.meta.cursor,b=(this._finished||(this._partialLine=b.substring(i-this._baseIndex),this._baseIndex=i),j&&j.data&&(this._rowCount+=j.data.length),this._finished||this._config.preview&&this._rowCount>=this._config.preview),I)p.postMessage({results:j,workerId:v.WORKER_ID,finished:b});else if(T(this._config.chunk)&&!f){if(this._config.chunk(j,this._handle),this._handle.paused()||this._handle.aborted())return void(this._halted=!0);this._completeResults=j=void 0}return this._config.step||this._config.chunk||(this._completeResults.data=this._completeResults.data.concat(j.data),this._completeResults.errors=this._completeResults.errors.concat(j.errors),this._completeResults.meta=j.meta),this._completed||!b||!T(this._config.complete)||j&&j.meta.aborted||(this._config.complete(this._completeResults,this._input),this._completed=!0),b||j&&j.meta.paused||this._nextChunk(),j}this._halted=!0},this._sendError=function(i){T(this._config.error)?this._config.error(i):I&&this._config.error&&p.postMessage({workerId:v.WORKER_ID,error:i,finished:!1})}}function G(o){var i;(o=o||{}).chunkSize||(o.chunkSize=v.RemoteChunkSize),M.call(this,o),this._nextChunk=B?function(){this._readChunk(),this._chunkLoaded()}:function(){this._readChunk()},this.stream=function(f){this._input=f,this._nextChunk()},this._readChunk=function(){if(this._finished)this._chunkLoaded();else{if(i=new XMLHttpRequest,this._config.withCredentials&&(i.withCredentials=this._config.withCredentials),B||(i.onload=Z(this._chunkLoaded,this),i.onerror=Z(this._chunkError,this)),i.open(this._config.downloadRequestBody?"POST":"GET",this._input,!B),this._config.downloadRequestHeaders){var f,b=this._config.downloadRequestHeaders;for(f in b)i.setRequestHeader(f,b[f])}var j;this._config.chunkSize&&(j=this._start+this._config.chunkSize-1,i.setRequestHeader("Range","bytes="+this._start+"-"+j));try{i.send(this._config.downloadRequestBody)}catch(N){this._chunkError(N.message)}B&&i.status===0&&this._chunkError()}},this._chunkLoaded=function(){i.readyState===4&&(i.status<200||400<=i.status?this._chunkError():(this._start+=this._config.chunkSize||i.responseText.length,this._finished=!this._config.chunkSize||this._start>=(f=>(f=f.getResponseHeader("Content-Range"))!==null?parseInt(f.substring(f.lastIndexOf("/")+1)):-1)(i),this.parseChunk(i.responseText)))},this._chunkError=function(f){f=i.statusText||f,this._sendError(new Error(f))}}function oe(o){(o=o||{}).chunkSize||(o.chunkSize=v.LocalChunkSize),M.call(this,o);var i,f,b=typeof FileReader<"u";this.stream=function(j){this._input=j,f=j.slice||j.webkitSlice||j.mozSlice,b?((i=new FileReader).onload=Z(this._chunkLoaded,this),i.onerror=Z(this._chunkError,this)):i=new FileReaderSync,this._nextChunk()},this._nextChunk=function(){this._finished||this._config.preview&&!(this._rowCount<this._config.preview)||this._readChunk()},this._readChunk=function(){var j=this._input,N=(this._config.chunkSize&&(N=Math.min(this._start+this._config.chunkSize,this._input.size),j=f.call(j,this._start,N)),i.readAsText(j,this._config.encoding));b||this._chunkLoaded({target:{result:N}})},this._chunkLoaded=function(j){this._start+=this._config.chunkSize,this._finished=!this._config.chunkSize||this._start>=this._input.size,this.parseChunk(j.target.result)},this._chunkError=function(){this._sendError(i.error)}}function k(o){var i;M.call(this,o=o||{}),this.stream=function(f){return i=f,this._nextChunk()},this._nextChunk=function(){var f,b;if(!this._finished)return f=this._config.chunkSize,i=f?(b=i.substring(0,f),i.substring(f)):(b=i,""),this._finished=!i,this.parseChunk(b)}}function ee(o){M.call(this,o=o||{});var i=[],f=!0,b=!1;this.pause=function(){M.prototype.pause.apply(this,arguments),this._input.pause()},this.resume=function(){M.prototype.resume.apply(this,arguments),this._input.resume()},this.stream=function(j){this._input=j,this._input.on("data",this._streamData),this._input.on("end",this._streamEnd),this._input.on("error",this._streamError)},this._checkIsFinished=function(){b&&i.length===1&&(this._finished=!0)},this._nextChunk=function(){this._checkIsFinished(),i.length?this.parseChunk(i.shift()):f=!0},this._streamData=Z(function(j){try{i.push(typeof j=="string"?j:j.toString(this._config.encoding)),f&&(f=!1,this._checkIsFinished(),this.parseChunk(i.shift()))}catch(N){this._streamError(N)}},this),this._streamError=Z(function(j){this._streamCleanUp(),this._sendError(j)},this),this._streamEnd=Z(function(){this._streamCleanUp(),b=!0,this._streamData("")},this),this._streamCleanUp=Z(function(){this._input.removeListener("data",this._streamData),this._input.removeListener("end",this._streamEnd),this._input.removeListener("error",this._streamError)},this)}function R(o){var i,f,b,j,N=Math.pow(2,53),te=-N,J=/^\s*-?(\d+\.?|\.\d+|\d+\.\d+)([eE][-+]?\d+)?\s*$/,X=/^((\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z)))$/,D=this,se=0,$=0,w=!1,z=!1,V=[],C={data:[],errors:[],meta:{}};function ve(le){return o.skipEmptyLines==="greedy"?le.join("").trim()==="":le.length===1&&le[0].length===0}function we(){if(C&&b&&(pe("Delimiter","UndetectableDelimiter","Unable to auto-detect delimiting character; defaulted to '"+v.DefaultDelimiter+"'"),b=!1),o.skipEmptyLines&&(C.data=C.data.filter(function(u){return!ve(u)})),ie()){let u=function(E,H){T(o.transformHeader)&&(E=o.transformHeader(E,H)),V.push(E)};if(C)if(Array.isArray(C.data[0])){for(var le=0;ie()&&le<C.data.length;le++)C.data[le].forEach(u);C.data.splice(0,1)}else C.data.forEach(u)}function Q(u,E){for(var H=o.header?{}:[],W=0;W<u.length;W++){var U=W,_=u[W],_=((Ce,q)=>(ge=>(o.dynamicTypingFunction&&o.dynamicTyping[ge]===void 0&&(o.dynamicTyping[ge]=o.dynamicTypingFunction(ge)),(o.dynamicTyping[ge]||o.dynamicTyping)===!0))(Ce)?q==="true"||q==="TRUE"||q!=="false"&&q!=="FALSE"&&((ge=>{if(J.test(ge)&&(ge=parseFloat(ge),te<ge&&ge<N))return 1})(q)?parseFloat(q):X.test(q)?new Date(q):q===""?null:q):q)(U=o.header?W>=V.length?"__parsed_extra":V[W]:U,_=o.transform?o.transform(_,U):_);U==="__parsed_extra"?(H[U]=H[U]||[],H[U].push(_)):H[U]=_}return o.header&&(W>V.length?pe("FieldMismatch","TooManyFields","Too many fields: expected "+V.length+" fields but parsed "+W,$+E):W<V.length&&pe("FieldMismatch","TooFewFields","Too few fields: expected "+V.length+" fields but parsed "+W,$+E)),H}var je;C&&(o.header||o.dynamicTyping||o.transform)&&(je=1,!C.data.length||Array.isArray(C.data[0])?(C.data=C.data.map(Q),je=C.data.length):C.data=Q(C.data,0),o.header&&C.meta&&(C.meta.fields=V),$+=je)}function ie(){return o.header&&V.length===0}function pe(le,Q,je,u){le={type:le,code:Q,message:je},u!==void 0&&(le.row=u),C.errors.push(le)}T(o.step)&&(j=o.step,o.step=function(le){C=le,ie()?we():(we(),C.data.length!==0&&(se+=le.data.length,o.preview&&se>o.preview?f.abort():(C.data=C.data[0],j(C,D))))}),this.parse=function(le,Q,je){var u=o.quoteChar||'"',u=(o.newline||(o.newline=this.guessLineEndings(le,u)),b=!1,o.delimiter?T(o.delimiter)&&(o.delimiter=o.delimiter(le),C.meta.delimiter=o.delimiter):((u=((E,H,W,U,_)=>{var Ce,q,ge,Ge;_=_||[","," ","|",";",v.RECORD_SEP,v.UNIT_SEP];for(var at=0;at<_.length;at++){for(var Te,Xe=_[at],Le=0,Ue=0,_e=0,Me=(ge=void 0,new de({comments:U,delimiter:Xe,newline:H,preview:10}).parse(E)),Fe=0;Fe<Me.data.length;Fe++)W&&ve(Me.data[Fe])?_e++:(Te=Me.data[Fe].length,Ue+=Te,ge===void 0?ge=Te:0<Te&&(Le+=Math.abs(Te-ge),ge=Te));0<Me.data.length&&(Ue/=Me.data.length-_e),(q===void 0||Le<=q)&&(Ge===void 0||Ge<Ue)&&1.99<Ue&&(q=Le,Ce=Xe,Ge=Ue)}return{successful:!!(o.delimiter=Ce),bestDelimiter:Ce}})(le,o.newline,o.skipEmptyLines,o.comments,o.delimitersToGuess)).successful?o.delimiter=u.bestDelimiter:(b=!0,o.delimiter=v.DefaultDelimiter),C.meta.delimiter=o.delimiter),ce(o));return o.preview&&o.header&&u.preview++,i=le,f=new de(u),C=f.parse(i,Q,je),we(),w?{meta:{paused:!0}}:C||{meta:{paused:!1}}},this.paused=function(){return w},this.pause=function(){w=!0,f.abort(),i=T(o.chunk)?"":i.substring(f.getCharIndex())},this.resume=function(){D.streamer._halted?(w=!1,D.streamer.parseChunk(i,!0)):setTimeout(D.resume,3)},this.aborted=function(){return z},this.abort=function(){z=!0,f.abort(),C.meta.aborted=!0,T(o.complete)&&o.complete(C),i=""},this.guessLineEndings=function(E,u){E=E.substring(0,1048576);var u=new RegExp(ae(u)+"([^]*?)"+ae(u),"gm"),je=(E=E.replace(u,"")).split("\r"),u=E.split(`
2
+ `),E=1<u.length&&u[0].length<je[0].length;if(je.length===1||E)return`
3
+ `;for(var H=0,W=0;W<je.length;W++)je[W][0]===`
4
+ `&&H++;return H>=je.length/2?`\r
5
+ `:"\r"}}function ae(o){return o.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function de(o){var i=(o=o||{}).delimiter,f=o.newline,b=o.comments,j=o.step,N=o.preview,te=o.fastMode,J=null,X=!1,D=o.quoteChar==null?'"':o.quoteChar,se=D;if(o.escapeChar!==void 0&&(se=o.escapeChar),(typeof i!="string"||-1<v.BAD_DELIMITERS.indexOf(i))&&(i=","),b===i)throw new Error("Comment character same as delimiter");b===!0?b="#":(typeof b!="string"||-1<v.BAD_DELIMITERS.indexOf(b))&&(b=!1),f!==`
6
+ `&&f!=="\r"&&f!==`\r
7
+ `&&(f=`
8
+ `);var $=0,w=!1;this.parse=function(z,V,C){if(typeof z!="string")throw new Error("Input must be a string");var ve=z.length,we=i.length,ie=f.length,pe=b.length,le=T(j),Q=[],je=[],u=[],E=$=0;if(!z)return Le();if(te||te!==!1&&z.indexOf(D)===-1){for(var H=z.split(f),W=0;W<H.length;W++){if(u=H[W],$+=u.length,W!==H.length-1)$+=f.length;else if(C)return Le();if(!b||u.substring(0,pe)!==b){if(le){if(Q=[],Ge(u.split(i)),Ue(),w)return Le()}else Ge(u.split(i));if(N&&N<=W)return Q=Q.slice(0,N),Le(!0)}}return Le()}for(var U=z.indexOf(i,$),_=z.indexOf(f,$),Ce=new RegExp(ae(se)+ae(D),"g"),q=z.indexOf(D,$);;)if(z[$]===D)for(q=$,$++;;){if((q=z.indexOf(D,q+1))===-1)return C||je.push({type:"Quotes",code:"MissingQuotes",message:"Quoted field unterminated",row:Q.length,index:$}),Te();if(q===ve-1)return Te(z.substring($,q).replace(Ce,D));if(D===se&&z[q+1]===se)q++;else if(D===se||q===0||z[q-1]!==se){U!==-1&&U<q+1&&(U=z.indexOf(i,q+1));var ge=at((_=_!==-1&&_<q+1?z.indexOf(f,q+1):_)===-1?U:Math.min(U,_));if(z.substr(q+1+ge,we)===i){u.push(z.substring($,q).replace(Ce,D)),z[$=q+1+ge+we]!==D&&(q=z.indexOf(D,$)),U=z.indexOf(i,$),_=z.indexOf(f,$);break}if(ge=at(_),z.substring(q+1+ge,q+1+ge+ie)===f){if(u.push(z.substring($,q).replace(Ce,D)),Xe(q+1+ge+ie),U=z.indexOf(i,$),q=z.indexOf(D,$),le&&(Ue(),w))return Le();if(N&&Q.length>=N)return Le(!0);break}je.push({type:"Quotes",code:"InvalidQuotes",message:"Trailing quote on quoted field is malformed",row:Q.length,index:$}),q++}}else if(b&&u.length===0&&z.substring($,$+pe)===b){if(_===-1)return Le();$=_+ie,_=z.indexOf(f,$),U=z.indexOf(i,$)}else if(U!==-1&&(U<_||_===-1))u.push(z.substring($,U)),$=U+we,U=z.indexOf(i,$);else{if(_===-1)break;if(u.push(z.substring($,_)),Xe(_+ie),le&&(Ue(),w))return Le();if(N&&Q.length>=N)return Le(!0)}return Te();function Ge(_e){Q.push(_e),E=$}function at(_e){var Me=0;return Me=_e!==-1&&(_e=z.substring(q+1,_e))&&_e.trim()===""?_e.length:Me}function Te(_e){return C||(_e===void 0&&(_e=z.substring($)),u.push(_e),$=ve,Ge(u),le&&Ue()),Le()}function Xe(_e){$=_e,Ge(u),u=[],_=z.indexOf(f,$)}function Le(_e){if(o.header&&!V&&Q.length&&!X){var Me=Q[0],Fe=Object.create(null),ft=new Set(Me);let A=!1;for(let fe=0;fe<Me.length;fe++){let xe=Me[fe];if(Fe[xe=T(o.transformHeader)?o.transformHeader(xe,fe):xe]){let be,me=Fe[xe];for(;be=xe+"_"+me,me++,ft.has(be););ft.add(be),Me[fe]=be,Fe[xe]++,A=!0,(J=J===null?{}:J)[be]=xe}else Fe[xe]=1,Me[fe]=xe;ft.add(xe)}A&&console.warn("Duplicate headers found and renamed."),X=!0}return{data:Q,errors:je,meta:{delimiter:i,linebreak:f,aborted:w,truncated:!!_e,cursor:E+(V||0),renamedHeaders:J}}}function Ue(){j(Le()),Q=[],je=[]}},this.abort=function(){w=!0},this.getCharIndex=function(){return $}}function ke(o){var i=o.data,f=F[i.workerId],b=!1;if(i.error)f.userError(i.error,i.file);else if(i.results&&i.results.data){var j={abort:function(){b=!0,Ee(i.workerId,{data:[],errors:[],meta:{aborted:!0}})},pause:O,resume:O};if(T(f.userStep)){for(var N=0;N<i.results.data.length&&(f.userStep({data:i.results.data[N],errors:i.results.errors,meta:i.results.meta},j),!b);N++);delete i.results}else T(f.userChunk)&&(f.userChunk(i.results,j,i.file),delete i.results)}i.finished&&!b&&Ee(i.workerId,i.results)}function Ee(o,i){var f=F[o];T(f.userComplete)&&f.userComplete(i),f.terminate(),delete F[o]}function O(){throw new Error("Not implemented.")}function ce(o){if(typeof o!="object"||o===null)return o;var i,f=Array.isArray(o)?[]:{};for(i in o)f[i]=ce(o[i]);return f}function Z(o,i){return function(){o.apply(i,arguments)}}function T(o){return typeof o=="function"}return v.parse=function(o,i){var f=(i=i||{}).dynamicTyping||!1;if(T(f)&&(i.dynamicTypingFunction=f,f={}),i.dynamicTyping=f,i.transform=!!T(i.transform)&&i.transform,!i.worker||!v.WORKERS_SUPPORTED)return f=null,v.NODE_STREAM_INPUT,typeof o=="string"?(o=(b=>b.charCodeAt(0)!==65279?b:b.slice(1))(o),f=new(i.download?G:k)(i)):o.readable===!0&&T(o.read)&&T(o.on)?f=new ee(i):(p.File&&o instanceof File||o instanceof Object)&&(f=new oe(i)),f.stream(o);(f=(()=>{var b;return!!v.WORKERS_SUPPORTED&&(b=(()=>{var j=p.URL||p.webkitURL||null,N=d.toString();return v.BLOB_URL||(v.BLOB_URL=j.createObjectURL(new Blob(["var global = (function() { if (typeof self !== 'undefined') { return self; } if (typeof window !== 'undefined') { return window; } if (typeof global !== 'undefined') { return global; } return {}; })(); global.IS_PAPA_WORKER=true; ","(",N,")();"],{type:"text/javascript"})))})(),(b=new p.Worker(b)).onmessage=ke,b.id=K++,F[b.id]=b)})()).userStep=i.step,f.userChunk=i.chunk,f.userComplete=i.complete,f.userError=i.error,i.step=T(i.step),i.chunk=T(i.chunk),i.complete=T(i.complete),i.error=T(i.error),delete i.worker,f.postMessage({input:o,config:i,workerId:f.id})},v.unparse=function(o,i){var f=!1,b=!0,j=",",N=`\r
9
+ `,te='"',J=te+te,X=!1,D=null,se=!1,$=((()=>{if(typeof i=="object"){if(typeof i.delimiter!="string"||v.BAD_DELIMITERS.filter(function(V){return i.delimiter.indexOf(V)!==-1}).length||(j=i.delimiter),typeof i.quotes!="boolean"&&typeof i.quotes!="function"&&!Array.isArray(i.quotes)||(f=i.quotes),typeof i.skipEmptyLines!="boolean"&&typeof i.skipEmptyLines!="string"||(X=i.skipEmptyLines),typeof i.newline=="string"&&(N=i.newline),typeof i.quoteChar=="string"&&(te=i.quoteChar),typeof i.header=="boolean"&&(b=i.header),Array.isArray(i.columns)){if(i.columns.length===0)throw new Error("Option columns is empty");D=i.columns}i.escapeChar!==void 0&&(J=i.escapeChar+te),i.escapeFormulae instanceof RegExp?se=i.escapeFormulae:typeof i.escapeFormulae=="boolean"&&i.escapeFormulae&&(se=/^[=+\-@\t\r].*$/)}})(),new RegExp(ae(te),"g"));if(typeof o=="string"&&(o=JSON.parse(o)),Array.isArray(o)){if(!o.length||Array.isArray(o[0]))return w(null,o,X);if(typeof o[0]=="object")return w(D||Object.keys(o[0]),o,X)}else if(typeof o=="object")return typeof o.data=="string"&&(o.data=JSON.parse(o.data)),Array.isArray(o.data)&&(o.fields||(o.fields=o.meta&&o.meta.fields||D),o.fields||(o.fields=Array.isArray(o.data[0])?o.fields:typeof o.data[0]=="object"?Object.keys(o.data[0]):[]),Array.isArray(o.data[0])||typeof o.data[0]=="object"||(o.data=[o.data])),w(o.fields||[],o.data||[],X);throw new Error("Unable to serialize unrecognized input");function w(V,C,ve){var we="",ie=(typeof V=="string"&&(V=JSON.parse(V)),typeof C=="string"&&(C=JSON.parse(C)),Array.isArray(V)&&0<V.length),pe=!Array.isArray(C[0]);if(ie&&b){for(var le=0;le<V.length;le++)0<le&&(we+=j),we+=z(V[le],le);0<C.length&&(we+=N)}for(var Q=0;Q<C.length;Q++){var je=(ie?V:C[Q]).length,u=!1,E=ie?Object.keys(C[Q]).length===0:C[Q].length===0;if(ve&&!ie&&(u=ve==="greedy"?C[Q].join("").trim()==="":C[Q].length===1&&C[Q][0].length===0),ve==="greedy"&&ie){for(var H=[],W=0;W<je;W++){var U=pe?V[W]:W;H.push(C[Q][U])}u=H.join("").trim()===""}if(!u){for(var _=0;_<je;_++){0<_&&!E&&(we+=j);var Ce=ie&&pe?V[_]:_;we+=z(C[Q][Ce],_)}Q<C.length-1&&(!ve||0<je&&!E)&&(we+=N)}}return we}function z(V,C){var ve,we;return V==null?"":V.constructor===Date?JSON.stringify(V).slice(1,25):(we=!1,se&&typeof V=="string"&&se.test(V)&&(V="'"+V,we=!0),ve=V.toString().replace($,J),(we=we||f===!0||typeof f=="function"&&f(V,C)||Array.isArray(f)&&f[C]||((ie,pe)=>{for(var le=0;le<pe.length;le++)if(-1<ie.indexOf(pe[le]))return!0;return!1})(ve,v.BAD_DELIMITERS)||-1<ve.indexOf(j)||ve.charAt(0)===" "||ve.charAt(ve.length-1)===" ")?te+ve+te:ve)}},v.RECORD_SEP="",v.UNIT_SEP="",v.BYTE_ORDER_MARK="\uFEFF",v.BAD_DELIMITERS=["\r",`
10
+ `,'"',v.BYTE_ORDER_MARK],v.WORKERS_SUPPORTED=!B&&!!p.Worker,v.NODE_STREAM_INPUT=1,v.LocalChunkSize=10485760,v.RemoteChunkSize=5242880,v.DefaultDelimiter=",",v.Parser=de,v.ParserHandle=R,v.NetworkStreamer=G,v.FileStreamer=oe,v.StringStreamer=k,v.ReadableStreamStreamer=ee,p.jQuery&&((g=p.jQuery).fn.parse=function(o){var i=o.config||{},f=[];return this.each(function(N){if(!(g(this).prop("tagName").toUpperCase()==="INPUT"&&g(this).attr("type").toLowerCase()==="file"&&p.FileReader)||!this.files||this.files.length===0)return!0;for(var te=0;te<this.files.length;te++)f.push({file:this.files[te],inputElem:this,instanceConfig:g.extend({},i)})}),b(),this;function b(){if(f.length===0)T(o.complete)&&o.complete();else{var N,te,J,X,D=f[0];if(T(o.before)){var se=o.before(D.file,D.inputElem);if(typeof se=="object"){if(se.action==="abort")return N="AbortError",te=D.file,J=D.inputElem,X=se.reason,void(T(o.error)&&o.error({name:N},te,J,X));if(se.action==="skip")return void j();typeof se.config=="object"&&(D.instanceConfig=g.extend(D.instanceConfig,se.config))}else if(se==="skip")return void j()}var $=D.instanceConfig.complete;D.instanceConfig.complete=function(w){T($)&&$(w,D.file,D.inputElem),j()},v.parse(D.file,D.instanceConfig)}}function j(){f.splice(0,1),b()}}),I&&(p.onmessage=function(o){o=o.data,v.WORKER_ID===void 0&&o&&(v.WORKER_ID=o.workerId),typeof o.input=="string"?p.postMessage({workerId:v.WORKER_ID,results:v.parse(o.input,o.config),finished:!0}):(p.File&&o.input instanceof File||o.input instanceof Object)&&(o=v.parse(o.input,o.config))&&p.postMessage({workerId:v.WORKER_ID,results:o,finished:!0})}),(G.prototype=Object.create(M.prototype)).constructor=G,(oe.prototype=Object.create(M.prototype)).constructor=oe,(k.prototype=Object.create(k.prototype)).constructor=k,(ee.prototype=Object.create(M.prototype)).constructor=ee,v})})(sa)),sa.exports}var bc=gc();const yc=ul(bc),sn=[{id:"en-US",name:"English (US)",flag:"🇺🇸"},{id:"ja-JP",name:"日本語",flag:"🇯🇵"},{id:"es-ES",name:"Español (España)",flag:"🇪🇸"},{id:"fr-FR",name:"Français",flag:"🇫🇷"},{id:"de-DE",name:"Deutsch",flag:"🇩🇪"},{id:"it-IT",name:"Italiano",flag:"🇮🇹"},{id:"pt-BR",name:"Português (Brasil)",flag:"🇧🇷"},{id:"ko-KR",name:"한국어",flag:"🇰🇷"},{id:"zh-CN",name:"简体中文",flag:"🇨🇳"},{id:"zh-TW",name:"繁體中文",flag:"🇹🇼"},{id:"ru-RU",name:"Русский",flag:"🇷🇺"},{id:"id-ID",name:"Bahasa Indonesia",flag:"🇮🇩"},{id:"th-TH",name:"ไทย",flag:"🇹🇭"},{id:"vi-VN",name:"Tiếng Việt",flag:"🇻🇳"},{id:"tr-TR",name:"Türkçe",flag:"🇹🇷"},{id:"ar-SA",name:"العربية",flag:"🇸🇦"}],vc=[{label:"EFIGS",ids:["en-US","fr-FR","it-IT","de-DE","es-ES"]},{label:"CJK",ids:["zh-CN","ja-JP","ko-KR"]}],wc=({currentLocales:s,onAdd:m})=>{const{t:d}=Nt(),[p,g]=n.useState(!1),[B,I]=n.useState(""),F=n.useRef(null);n.useEffect(()=>{const R=ae=>{F.current&&!F.current.contains(ae.target)&&g(!1)};return document.addEventListener("mousedown",R),()=>document.removeEventListener("mousedown",R)},[]);const K=n.useMemo(()=>{const R=B.toLowerCase();return sn.filter(ae=>!s.some(de=>de.id===ae.id)&&(ae.name.toLowerCase().includes(R)||ae.id.toLowerCase().includes(R)))},[B,s]),v=R=>{R&&(m([R]),I(""),g(!1))},M=R=>{const ae=sn.filter(de=>R.includes(de.id)&&!s.some(ke=>ke.id===de.id));ae.length>0&&(m(ae),g(!1))},G=d("app.language.add","Add Language"),oe=d("app.language.searchPlaceholder","Search (e.g. ja, Japanese)"),k=d("app.language.presets","Presets"),ee=d("app.language.noResults","No languages found");return e.jsx("div",{className:"relative",ref:F,children:p?e.jsxs("div",{className:"absolute top-0 left-0 w-64 bg-white rounded-xl shadow-xl border border-slate-200 z-50 overflow-hidden animate-in fade-in zoom-in-95 duration-100 origin-top-left",children:[e.jsx("div",{className:"p-2 border-b border-slate-100",children:e.jsxs("div",{className:"relative",children:[e.jsx(bi,{size:14,className:"absolute left-2 top-1/2 -translate-y-1/2 text-slate-400"}),e.jsx("input",{autoFocus:!0,type:"text",value:B,onChange:R=>I(R.target.value),placeholder:oe,className:"w-full pl-7 pr-2 py-1.5 text-xs bg-slate-50 border border-slate-200 rounded-md focus:outline-none focus:border-blue-500 focus:ring-1 focus:ring-blue-500"})]})}),B===""&&e.jsxs("div",{className:"p-2 border-b border-slate-100 bg-slate-50/50",children:[e.jsx("div",{className:"text-[10px] font-bold text-slate-400 uppercase tracking-wider mb-1.5 px-1",children:k}),e.jsx("div",{className:"flex gap-2",children:vc.map(R=>e.jsxs("button",{onClick:()=>M(R.ids),className:"flex-1 py-1 px-2 bg-white border border-slate-200 rounded text-[10px] font-semibold text-slate-600 hover:border-blue-400 hover:text-blue-600 transition-colors",children:["+ ",R.label]},R.label))})]}),e.jsx("div",{className:"max-h-48 overflow-y-auto p-1",children:K.length===0?e.jsx("div",{className:"text-center py-4 text-xs text-slate-400",children:ee}):K.map(R=>e.jsxs("button",{onClick:()=>v(R),className:"w-full flex items-center gap-2 px-2 py-1.5 rounded hover:bg-blue-50 text-left transition-colors group",children:[e.jsx("span",{className:"text-base leading-none",children:R.flag}),e.jsxs("div",{className:"flex flex-col",children:[e.jsx("span",{className:"text-xs font-medium text-slate-700 group-hover:text-blue-700",children:R.name}),e.jsx("span",{className:"text-[10px] text-slate-400 group-hover:text-blue-400",children:R.id})]})]},R.id))})]}):e.jsxs("button",{onClick:()=>g(!0),className:"flex items-center gap-1 px-3 py-1.5 rounded-lg border border-slate-200 bg-white text-xs font-medium text-slate-600 hover:bg-slate-50 hover:border-blue-300 transition-colors shadow-sm",children:[e.jsx(pn,{size:14}),G]})})},jc=({selectedFont:s,setSelectedFont:m,fontOptions:d})=>{const[p,g]=n.useState(!1),B=n.useRef(null);n.useEffect(()=>{const F=K=>{B.current&&!B.current.contains(K.target)&&g(!1)};return document.addEventListener("mousedown",F),()=>document.removeEventListener("mousedown",F)},[]);const I=d.find(F=>F.value===s)||d[0];return e.jsxs("div",{className:"relative w-full",ref:B,children:[e.jsxs("button",{onClick:()=>g(!p),className:"w-full flex items-center justify-between px-3 py-2 bg-white border border-slate-200 rounded-lg text-xs hover:border-blue-400 transition-colors",children:[e.jsx("span",{style:{fontFamily:I?.family},className:"text-sm",children:I?.name}),e.jsx(aa,{size:14,className:"text-slate-400"})]}),p&&e.jsx("div",{className:"absolute top-full left-0 right-0 mt-1 bg-white border border-slate-200 rounded-lg shadow-xl z-50 max-h-60 overflow-y-auto",children:d.map(F=>e.jsxs("button",{onClick:()=>{m(F.value),g(!1)},className:"w-full flex items-center justify-between px-3 py-2.5 text-left hover:bg-slate-50 transition-colors border-b border-slate-50 last:border-0",children:[e.jsxs("div",{className:"flex flex-col gap-0.5",children:[e.jsx("span",{className:"text-xs font-bold text-slate-700",children:F.name}),e.jsx("span",{className:"text-lg text-slate-900 leading-tight",style:{fontFamily:F.family},children:"ShipScreens 123"})]}),s===F.value&&e.jsx(Wa,{size:14,className:"text-blue-600"})]},F.value))})]})},fn="shipscreens_team_sync_v1",mn=()=>{if(typeof window>"u")return{};try{return JSON.parse(localStorage.getItem(fn)||"{}")||{}}catch{return{}}},xs=s=>{if(typeof window>"u")return;const m=mn();localStorage.setItem(fn,JSON.stringify({...m,...s}))},Sc=s=>{if(!s)return"";try{return new Date(s*1e3).toISOString().replace("T"," ").slice(0,16)+" UTC"}catch{return""}},kc=({token:s,captureTeamSpec:m,applyTeamSpec:d})=>{const{t:p}=Nt(),{addToast:g}=nn(),B=n.useMemo(()=>mn(),[]),[I,F]=n.useState([]),[K,v]=n.useState([]),[M,G]=n.useState(B.workspaceId||""),[oe,k]=n.useState(B.projectId||""),[ee,R]=n.useState(null),[ae,de]=n.useState(null),[ke,Ee]=n.useState(""),[O,ce]=n.useState(null),[Z,T]=n.useState(!1),[o,i]=n.useState(!1),f=n.useCallback(async()=>{if(s){i(!0);try{const z=(await ec(s))?.workspaces||[];F(z),M&&!z.some(V=>V.workspaceId===M)&&(G(""),k(""),xs({workspaceId:"",projectId:""}))}catch(w){g({type:"error",message:p("app.teamSync.errors.fetchWorkspaces")}),console.error(w)}finally{i(!1)}}},[g,p,s,M]),b=n.useCallback(async w=>{if(!(!s||!w)){i(!0);try{const V=(await sc(w,s))?.projects||[];v(V),oe&&!V.some(C=>C.projectId===oe)&&(k(""),xs({projectId:""}))}catch(z){g({type:"error",message:p("app.teamSync.errors.fetchProjects")}),console.error(z)}finally{i(!1)}}},[g,oe,p,s]),j=n.useCallback(async()=>{if(!(!s||!M||!oe))try{const w=await Ba(M,oe,s);R(typeof w?.headRev=="number"?w.headRev:null),de(w?.headSha||null)}catch{R(null),de(null)}},[oe,s,M]);n.useEffect(()=>{s&&f()},[f,s]),n.useEffect(()=>{if(s){if(!M){v([]),k(""),xs({workspaceId:"",projectId:""});return}xs({workspaceId:M}),b(M)}},[b,s,M]),n.useEffect(()=>{if(!oe){R(null),de(null),xs({projectId:""});return}xs({projectId:oe}),j()},[oe,j]);const N=async()=>{if(s){T(!0);try{const z=(await tc({name:"Workspace"},s))?.workspaceId;if(!z)throw new Error("workspaceId missing");g({type:"success",message:p("app.teamSync.toasts.workspaceCreated")}),await f(),G(z)}catch(w){g({type:"error",message:p("app.teamSync.errors.createWorkspace")}),console.error(w)}finally{T(!1)}}},te=async()=>{if(!(!s||!M)){T(!0);try{const z=(await ac(M,{name:"Project"},s))?.projectId;if(!z)throw new Error("projectId missing");g({type:"success",message:p("app.teamSync.toasts.projectCreated")}),await b(M),k(z),R(0),de("")}catch(w){g({type:"error",message:p("app.teamSync.errors.createProject")}),console.error(w)}finally{T(!1)}}},J=async()=>{if(!(!s||!M||!oe)){T(!0);try{const w=await Ba(M,oe,s),z=w?.spec;if(!z){g({type:"info",message:p("app.teamSync.toasts.noRemoteSpec")});return}d?.(z),R(typeof w?.headRev=="number"?w.headRev:null),de(w?.headSha||null),g({type:"success",message:p("app.teamSync.toasts.pulled")})}catch(w){g({type:"error",message:p("app.teamSync.errors.pull")}),console.error(w)}finally{T(!1)}}},X=async()=>{if(!(!s||!M||!oe)){T(!0);try{const w=await Ba(M,oe,s),z=Number(w?.headRev||0),V=m?.();if(!V)throw new Error("spec missing");const C=await rc(M,oe,{baseRev:z,spec:V},s);if(C?.error==="conflict"){g({type:"error",message:p("app.teamSync.errors.conflict")});return}R(typeof C?.headRev=="number"?C.headRev:null),de(C?.headSha||null),g({type:"success",message:p("app.teamSync.toasts.pushed")})}catch(w){String(w?.message||"").includes("409")?g({type:"error",message:p("app.teamSync.errors.conflict")}):g({type:"error",message:p("app.teamSync.errors.push")}),console.error(w)}finally{T(!1)}}},D=async()=>{if(!(!s||!M)){T(!0);try{const w=await nc(M,{role:"editor"},s);if(!w?.token)throw new Error("invite token missing");ce(w),g({type:"success",message:p("app.teamSync.toasts.inviteCreated"),action:{label:p("app.teamSync.copy"),onClick:async()=>{const z=await on(w.token);g({type:z.ok?"success":"error",message:z.ok?p("common.copied",{defaultValue:"Copied"}):p("common.copyFailed",{defaultValue:"Copy failed"})})}}})}catch(w){g({type:"error",message:p("app.teamSync.errors.invite")}),console.error(w)}finally{T(!1)}}},se=async()=>{if(!(!s||!ke)){T(!0);try{const w=await oc(ke,s);if(!w?.workspaceId)throw new Error("workspaceId missing");g({type:"success",message:p("app.teamSync.toasts.inviteAccepted")}),Ee(""),await f(),G(w.workspaceId),k("")}catch(w){g({type:"error",message:p("app.teamSync.errors.inviteAccept")}),console.error(w)}finally{T(!1)}}},$=!!s;return e.jsxs("div",{className:"bg-white p-4 rounded-xl border border-slate-200 shadow-sm space-y-3",children:[e.jsxs("div",{className:"flex items-center justify-between gap-2",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:"p-2 bg-slate-100 text-slate-700 rounded-lg border border-slate-200",children:e.jsx($l,{size:18})}),e.jsxs("div",{children:[e.jsx("h4",{className:"text-sm font-bold text-slate-800",children:p("app.teamSync.title")}),e.jsx("div",{className:"text-[10px] text-slate-500",children:p("app.teamSync.subtitle")})]})]}),e.jsx("button",{type:"button",onClick:f,disabled:!$||o,className:"px-2 py-1 text-[10px] font-bold rounded border border-slate-200 text-slate-600 hover:bg-slate-50 disabled:opacity-50",title:p("app.teamSync.refresh"),children:e.jsxs("span",{className:"inline-flex items-center gap-1",children:[e.jsx(pi,{size:12})," ",p("app.teamSync.refresh")]})})]}),e.jsxs("div",{className:"flex gap-2 p-2 bg-slate-50 border border-slate-200 rounded text-[10px] text-slate-600 leading-tight",children:[e.jsx(Ii,{size:14,className:"shrink-0 text-slate-400"}),e.jsx("span",{children:p("app.teamSync.note")})]}),$?e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"grid grid-cols-1 gap-2",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs("select",{value:M,onChange:w=>G(w.target.value),className:"flex-1 px-2 py-2 rounded border border-slate-200 bg-white text-xs text-slate-700",children:[e.jsx("option",{value:"",children:p("app.teamSync.selectWorkspace")}),I.map(w=>e.jsx("option",{value:w.workspaceId,children:w.name},w.workspaceId))]}),e.jsx("button",{type:"button",onClick:N,disabled:Z,className:"px-3 py-2 rounded bg-slate-800 text-white text-xs font-bold hover:bg-slate-700 disabled:opacity-50",children:p("app.teamSync.newWorkspace")})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs("select",{value:oe,onChange:w=>k(w.target.value),disabled:!M,className:"flex-1 px-2 py-2 rounded border border-slate-200 bg-white text-xs text-slate-700 disabled:opacity-50",children:[e.jsx("option",{value:"",children:p("app.teamSync.selectProject")}),K.map(w=>e.jsx("option",{value:w.projectId,children:w.name},w.projectId))]}),e.jsx("button",{type:"button",onClick:te,disabled:Z||!M,className:"px-3 py-2 rounded bg-white border border-slate-200 text-slate-700 text-xs font-bold hover:bg-slate-50 disabled:opacity-50",children:p("app.teamSync.newProject")})]})]}),e.jsxs("div",{className:"flex items-center justify-between text-[10px] text-slate-500",children:[e.jsx("div",{children:ee!==null&&e.jsxs("span",{className:"tabular-nums",children:[p("app.teamSync.head"),": r",ee,ae?` (${ae.slice(0,7)})`:""]})}),M&&oe&&e.jsx("button",{type:"button",onClick:j,className:"text-[10px] font-bold text-slate-600 hover:underline",children:p("app.teamSync.refreshHead")})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-2",children:[e.jsx("button",{type:"button",onClick:J,disabled:Z||!M||!oe,className:"flex items-center justify-center gap-2 py-2 bg-white border border-slate-200 text-slate-700 rounded-lg hover:bg-slate-50 disabled:opacity-50",children:e.jsx("span",{className:"text-xs font-bold",children:p("app.teamSync.pull")})}),e.jsx("button",{type:"button",onClick:X,disabled:Z||!M||!oe,className:"flex items-center justify-center gap-2 py-2 bg-blue-600 text-white rounded-lg hover:bg-blue-700 disabled:opacity-50",children:e.jsx("span",{className:"text-xs font-bold",children:p("app.teamSync.push")})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("div",{className:"text-xs font-bold text-slate-700",children:p("app.teamSync.invites")}),e.jsx("button",{type:"button",onClick:D,disabled:Z||!M,className:"text-[10px] font-bold text-blue-600 hover:underline disabled:opacity-50",children:p("app.teamSync.createInvite")})]}),O?.token&&e.jsxs("div",{className:"flex items-center gap-2 p-2 bg-slate-50 border border-slate-200 rounded",children:[e.jsx("code",{className:"text-[10px] text-slate-700 break-all flex-1",children:O.token}),e.jsx(Za,{value:O.token,onCopied:()=>g({type:"success",message:p("common.copied",{defaultValue:"Copied"})}),onCopyFailed:()=>g({type:"error",message:p("common.copyFailed",{defaultValue:"Copy failed"})}),className:"p-1.5 rounded border border-slate-200 bg-white text-slate-600 hover:bg-slate-50",title:p("app.teamSync.copy"),"aria-label":p("app.teamSync.copy"),children:e.jsx(yl,{size:12})})]}),O?.expiresAt&&e.jsxs("div",{className:"text-[10px] text-slate-500",children:[p("app.teamSync.expires"),": ",Sc(O.expiresAt)]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("input",{value:ke,onChange:w=>Ee(w.target.value),placeholder:p("app.teamSync.invitePlaceholder"),className:"flex-1 px-2 py-2 rounded border border-slate-200 bg-white text-xs text-slate-700"}),e.jsx("button",{type:"button",onClick:se,disabled:Z||!ke,className:"px-3 py-2 rounded bg-white border border-slate-200 text-slate-700 text-xs font-bold hover:bg-slate-50 disabled:opacity-50",children:p("app.teamSync.acceptInvite")})]})]})]}):e.jsx("div",{className:"text-xs text-slate-500",children:p("app.teamSync.signInRequired")})]})},Nc=({activeTab:s,viewMode:m,isMobile:d,controlsVisible:p,controlsTranslation:g,isControlsDragging:B,currentHeaderText:I,currentSubText:F,currentLocaleId:K,updateSlideText:v,currentScreenshot:M,screenshotUploadScope:G="shared",setScreenshotUploadScope:oe=()=>{},hasCurrentLocaleScreenshotOverride:k=!1,currentSlideScreenshotsByLocale:ee={},currentSlideLocaleScreenshotOverrideCount:R=0,hasAnyLocaleScreenshotOverrides:ae=!1,hasSharedScreenshot:de=!1,clearCurrentSlideScreenshot:ke=()=>{},clearAllCurrentSlideLocaleScreenshotOverrides:Ee=()=>{},handleFileChange:O,fileInputRef:ce,handleDropWrapper:Z,handleDragOver:T,handleDragEnter:o,handleDragLeave:i,isDragging:f,locales:b,setCurrentLocaleId:j,removeLocale:N,handleAddLocales:te,deviceId:J,setDeviceId:X,deviceLabelMode:D=ut.store,setDeviceLabelMode:se=()=>{},orientation:$,setOrientation:w,isWatchSelected:z,applyTheme:V,bgType:C,setBgType:ve,bgInputRef:we,handleBgDropWrapper:ie,handleBgDragOver:pe,handleBgDragEnter:le,handleBgDragLeave:Q,isBgDragging:je,handleBgFileChange:u,bgBlur:E,setBgBlur:H,bgOpacity:W,setBgOpacity:U,bgColor:_,setBgColor:Ce,gradientStart:q,setGradientStart:ge,gradientEnd:Ge,setGradientEnd:at,frameColor:Te,setFrameColor:Xe,logoImage:Le,logoInputRef:Ue,handleLogoDropWrapper:_e,handleLogoDragOver:Me,handleLogoDragEnter:Fe,handleLogoDragLeave:ft,isLogoDragging:A,handleLogoFileChange:fe,handleLogoRemove:xe,overrideActive:be,ensureSlideOverride:me,clearSlideOverride:st,updateSlideOverride:Ze,layoutMode:it,setLayoutMode:et,effectiveLayoutMode:He,selectedFont:Qe,setSelectedFont:is,fontOptions:vt,textColor:cs,setTextColor:Ot,recentColors:Zt=[],addRecentColor:Oe,effectiveTopSpacing:wt,setTopSpacing:Lt,effectiveDeviceScale:Kt,setDeviceScale:It,badgeType:jt,setBadgeType:Ft,applyPreset:zs,myPresets:gs,requirePro:bs,openSavePresetDialog:Ts,deleteUserPreset:ra,isPro:ys,storageUsage:vs,saveProject:ws,loadProject:na,loadSampleProject:$s=()=>{},setConfirmDialog:Xt,saveStatus:Rt,statusMessage:ds,handleExportJSON:js,jsonInputRef:As,handleImportJSON:Qt,isJsonDragging:Ss,handleJsonDragOver:oa,handleJsonDragEnter:la,handleJsonDragLeave:Bt,handleJsonDropWrapper:$e,isCsvDragging:Ut,handleCsvDropWrapper:Re,handleCsvDragOver:Et,handleCsvDragEnter:ne,handleCsvDragLeave:tt,openCsvTemplateDialog:Ae,csvInputRef:Pt,handleCsvImport:es,onImportLocaleScreenshots:ps,selectedBatchDevices:gt,setSelectedBatchDevices:ks=()=>{},toggleBatchDevice:ts,exportStructureMode:rt="locale",setExportStructureMode:ss=()=>{},teamSyncEnabled:ia=!1,teamSyncToken:as=null,captureTeamSpec:ca=()=>null,applyTeamSpec:da=()=>{},onTouchStart:Ns,onTouchMove:pa,onTouchEnd:Ms,i18n:Os})=>{const{t:x,i18n:xt}=Nt(),Dt=Os||xt,[ct,zt]=n.useState(""),[We,Ht]=n.useState(!1),St=n.useRef(null),Wt=n.useRef(null),Cs=n.useRef(null),us={iPhone:x("app.device.groups.iPhone"),"iPhone Classic":x("app.device.groups.iphoneClassic"),iPad:x("app.device.groups.iPad"),Android:x("app.device.groups.android"),"Android Tablet":x("app.device.groups.androidTablet"),Watch:x("app.device.groups.watch")},bt=x("common.copy",{defaultValue:"Copy"}),kt=x("app.data.cliCmd"),rs=n.useMemo(()=>m==="single"?new Set([J]):new Set(gt||[]),[J,gt,m]),qt=n.useMemo(()=>{const c={};return Object.entries(Xs).forEach(([Ne,Ve])=>{const De=ct?Ve.filter(Ye=>rs.has(Ye)||dc(Ye,Ke[Ye],ct)):Ve;De.length&&(c[Ne]=De)}),rs.forEach(Ne=>{const Ve=Ke[Ne]?.group;Ve&&(c[Ve]||=[],c[Ve].includes(Ne)||(c[Ve]=[Ne,...c[Ve]]))}),c},[rs,ct]),Pe=({className:c=""})=>e.jsxs("div",{className:`space-y-1 ${c}`,children:[e.jsxs("div",{className:"flex gap-2 bg-slate-50 p-1 rounded-lg border border-slate-200",children:[e.jsx("button",{type:"button",onClick:()=>se(ut.store),className:`flex-1 py-1.5 rounded-md text-xs font-medium transition-colors ${D===ut.store?"bg-white text-blue-600 shadow-sm":"text-slate-500 hover:text-slate-700"}`,children:x("app.device.labelMode.store")}),e.jsx("button",{type:"button",onClick:()=>se(ut.detailed),className:`flex-1 py-1.5 rounded-md text-xs font-medium transition-colors ${D===ut.detailed?"bg-white text-blue-600 shadow-sm":"text-slate-500 hover:text-slate-700"}`,children:x("app.device.labelMode.detailed")})]}),e.jsx("div",{className:"text-[10px] text-slate-400 leading-snug",children:x("app.device.labelModeHint")})]}),Jt=n.useMemo(()=>{const c=["iphone69","iphone65","iphone55","ipad13"].filter(Ye=>Ke[Ye]),Ne=(Xs.Android||[]).filter(Ye=>Ke[Ye]),Ve=(Xs["Android Tablet"]||[]).filter(Ye=>Ke[Ye]),De=Object.values(Xs).flat().filter(Ye=>Ke[Ye]);return{iosRequired:c,playPhone:Ne,playTablet:Ve,all:De}},[]),Vt=c=>{if(!Array.isArray(c))return;const Ne=Array.from(new Set(c));ks(Ne)},Tt=({onSelect:c})=>Zt.length?e.jsxs("div",{className:"mt-2",children:[e.jsx("div",{className:"text-[10px] text-slate-400 mb-1",children:"Recent"}),e.jsx("div",{className:"flex flex-wrap gap-1",children:Zt.map(Ne=>e.jsx("button",{onClick:()=>c(Ne),className:"w-5 h-5 rounded-full border border-slate-200 shadow-sm transition-transform hover:scale-110",style:{backgroundColor:Ne},title:Ne},Ne))})]}):null,yt=c=>{const Ne=c?.settings||{};return Ne.bgType==="gradient"?{backgroundImage:`linear-gradient(${typeof Ne.gradientAngle=="number"?Ne.gradientAngle:135}deg, ${Ne.gradientStart||"#e0c3fc"}, ${Ne.gradientEnd||"#8ec5fc"})`}:Ne.bgColor?{backgroundColor:Ne.bgColor}:{backgroundColor:"#e2e8f0"}};return e.jsx("div",{className:`w-full md:w-80 ${d&&!p?"max-h-0":"h-1/2"} md:h-full bg-white border-b md:border-b-0 md:border-r border-slate-200 flex flex-col overflow-y-auto shrink-0 z-[120] order-2 md:order-none shadow-inner md:shadow-none ${d?"transition-all duration-300 max-h-[65vh] fixed inset-x-0 bottom-16":""} ${d&&!p?"pointer-events-none opacity-0":""}`,style:{transform:d?`translateY(${g}px)`:void 0,transition:B?"none":"transform 220ms ease, opacity 200ms ease, max-height 200ms ease"},onTouchStart:Ns,onTouchMove:pa,onTouchEnd:Ms,children:e.jsxs("div",{className:"p-6 space-y-8",children:[s==="edit"&&e.jsxs(e.Fragment,{children:[e.jsxs("section",{className:"space-y-3",children:[e.jsx("h3",{className:"font-bold text-xs uppercase tracking-wider text-slate-400",children:x("app.content.title")}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("input",{type:"text",value:I,onChange:c=>v("header",c.target.value),className:"w-full px-2 py-1.5 border border-slate-200 rounded-lg text-xs font-medium",placeholder:x("app.content.headerPlaceholder",{locale:K})}),e.jsx("input",{type:"text",value:F,onChange:c=>v("sub",c.target.value),className:"w-full px-2 py-1.5 border border-slate-200 rounded-lg text-xs",placeholder:x("app.content.subPlaceholder",{locale:K})})]}),e.jsxs("div",{className:"flex items-center justify-between gap-2",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-[10px] font-semibold text-slate-500",children:x("app.content.screenshotScopeLabel")}),k&&e.jsx("span",{className:"text-[10px] font-bold px-1.5 py-0.5 rounded border bg-blue-50 text-blue-700 border-blue-100",children:x("app.content.screenshotScopeOverride")})]}),e.jsxs("div",{className:"inline-flex rounded-lg border border-slate-200 overflow-hidden bg-white shadow-sm",children:[e.jsx("button",{type:"button",onClick:()=>oe("shared"),className:`px-2.5 py-1 text-[10px] font-bold transition-colors ${G==="shared"?"bg-slate-900 text-white":"text-slate-600 hover:bg-slate-50"}`,children:x("app.content.screenshotScopeShared")}),e.jsx("button",{type:"button",onClick:()=>oe("locale"),className:`px-2.5 py-1 text-[10px] font-bold transition-colors ${G==="locale"?"bg-slate-900 text-white":"text-slate-600 hover:bg-slate-50"}`,children:x("app.content.screenshotScopeLocale")})]})]}),G==="shared"&&ae&&e.jsx("p",{className:"text-[10px] text-slate-500 leading-snug",children:x("app.content.screenshotSharedOverridesHint",{count:R})}),G==="locale"&&!k&&de&&e.jsx("p",{className:"text-[10px] text-slate-500 leading-snug",children:x("app.content.screenshotLocaleFallbackHint")}),G==="locale"&&!k&&!de&&e.jsx("p",{className:"text-[10px] text-slate-500 leading-snug",children:x("app.content.screenshotLocaleEmptyHint")}),ae&&e.jsx("button",{type:"button",onClick:()=>{Xt?.({message:x("app.content.clearAllOverridesConfirm"),onConfirm:()=>Ee(),onCancel:()=>Xt?.(null)})},className:"text-[10px] font-bold text-rose-600 hover:underline self-start",children:x("app.content.clearAllOverrides")}),e.jsxs("div",{onClick:()=>ce.current?.click?.(),onDrop:Z,onDragOver:T,onDragEnter:o,onDragLeave:i,onKeyDown:c=>{c.target===c.currentTarget&&(c.key==="Enter"||c.key===" ")&&(c.preventDefault(),ce.current?.click?.())},role:"button",tabIndex:0,className:`border-2 border-dashed rounded-xl p-4 flex flex-col items-center justify-center transition-all cursor-pointer group relative overflow-hidden h-32 ${f?"border-blue-500 bg-blue-100 text-blue-600 scale-[1.02]":"border-slate-200 text-slate-400 bg-slate-50/50 hover:border-blue-500 hover:text-blue-500 hover:bg-blue-50"}`,children:[M?e.jsx("img",{src:M,alt:"",className:"absolute inset-0 w-full h-full object-cover opacity-80 pointer-events-none"}):e.jsx(Fa,{className:"w-5 h-5 mb-1 group-hover:scale-110 transition-transform pointer-events-none"}),(G==="shared"&&!!M||G==="locale"&&k)&&e.jsx("button",{type:"button",onClick:c=>{c.stopPropagation(),ke()},className:"absolute top-2 right-2 p-1 rounded-full bg-white/90 border border-slate-200 text-slate-600 hover:text-red-600 hover:border-red-200 hover:bg-red-50 shadow-sm",title:x("app.content.screenshotClear"),children:e.jsx(Gt,{size:12})}),e.jsx("span",{className:"text-[10px] font-medium relative z-10 bg-white/80 px-2 rounded pointer-events-none",children:M?G==="locale"?x("app.content.changeImageForLocale",{locale:K}):x("app.content.changeImage"):G==="locale"?x("app.content.uploadScreenshotForLocale",{locale:K}):x("app.content.uploadScreenshot")}),e.jsx("input",{type:"file",ref:ce,className:"hidden",accept:"image/*",onChange:O})]}),e.jsx("p",{className:"text-[10px] text-slate-500 leading-snug",children:x("app.data.privacy")})]}),e.jsx("hr",{className:"border-slate-100"}),e.jsxs("section",{className:"space-y-3",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx("h3",{className:"font-bold text-xs uppercase tracking-wider text-slate-400",children:x("app.language.title")}),e.jsx("p",{className:"text-xs text-slate-500 leading-relaxed",children:x("app.language.description")})]}),e.jsx("div",{className:"flex flex-wrap gap-2",children:b.map(c=>e.jsxs("div",{onClick:()=>j(c.id),className:`group relative px-3 py-2 rounded-lg text-xs font-medium cursor-pointer border transition-all select-none ${K===c.id?"bg-blue-50 border-blue-500 text-blue-700 shadow-sm":"bg-white border-slate-200 text-slate-600 hover:border-slate-300 hover:bg-slate-50"}`,children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-base",children:c.flag?`${c.flag}`:"??"}),e.jsxs("div",{className:"flex flex-col",children:[e.jsx("span",{className:"font-bold",children:c.name||c.id}),e.jsx("span",{className:"text-[10px] opacity-70",children:c.id})]})]}),!!ee?.[c.id]&&e.jsx("span",{className:"absolute bottom-2 right-2 w-2 h-2 rounded-full bg-blue-500 border border-white shadow-sm",title:x("app.content.screenshotScopeOverride")}),b.length>1&&e.jsx("div",{className:`absolute -top-1.5 -right-1.5 flex gap-0.5 bg-white rounded-full shadow-sm border border-slate-100 ${K===c.id?"opacity-100":"opacity-0 group-hover:opacity-100"} transition-opacity`,children:e.jsx("button",{onClick:Ne=>{Ne.stopPropagation(),N(c.id)},className:"p-1 text-slate-400 hover:text-red-500 hover:bg-red-50 rounded-full",title:x("app.language.remove"),children:e.jsx(Gt,{size:10})})})]},c.id))}),e.jsxs("div",{className:"flex gap-2 p-2 bg-slate-50 rounded-xl border border-slate-200/60 mt-2 items-center",children:[e.jsx(wc,{currentLocales:b,onAdd:te}),e.jsx("span",{className:"text-[11px] text-slate-500 hidden sm:block",children:x("app.language.presetsHint","EFIGS / CJK presets available")})]})]}),m==="single"&&e.jsxs(e.Fragment,{children:[e.jsx("hr",{className:"border-slate-100"}),e.jsxs("section",{className:"space-y-3",children:[e.jsx("h3",{className:"font-bold text-xs uppercase tracking-wider text-slate-400",children:x("app.device.title")}),e.jsx(Pe,{}),e.jsxs("div",{className:"relative",children:[e.jsx("input",{type:"text",value:ct,onChange:c=>zt(c.target.value),className:"w-full bg-slate-50 border border-slate-200 text-slate-700 text-sm rounded-xl px-4 py-2.5 pr-10 focus:outline-none focus:border-blue-500",placeholder:x("app.device.searchPlaceholder"),spellCheck:!1}),ct&&e.jsx("button",{type:"button",onClick:()=>zt(""),className:"absolute right-2.5 top-1/2 -translate-y-1/2 text-slate-400 hover:text-slate-600 p-1","aria-label":"Clear search",children:e.jsx(Gt,{size:14})})]}),e.jsxs("div",{className:"relative",children:[e.jsx("select",{value:J,onChange:c=>X(c.target.value),className:"w-full appearance-none bg-slate-50 border border-slate-200 text-slate-700 text-sm rounded-xl px-4 py-3 pr-8 focus:outline-none focus:border-blue-500 font-medium",children:Object.entries(qt).map(([c,Ne])=>{const Ve=us[c]||c;return e.jsx("optgroup",{label:Ve,children:Ne.map(De=>{const Ye=Ds(Ke[De],{id:De,mode:D});return e.jsx("option",{value:De,children:Ye.optionLabel},De)})},c)})}),e.jsx(aa,{className:"absolute right-3 top-1/2 -translate-y-1/2 text-slate-400 pointer-events-none",size:16})]}),e.jsxs("div",{className:"mt-2 flex gap-2 bg-slate-50 p-1 rounded-lg border border-slate-200",children:[e.jsxs("button",{onClick:()=>w("portrait"),className:`flex-1 py-1.5 rounded-md text-xs font-medium flex items-center justify-center gap-2 transition-colors ${$==="portrait"||z?"bg-white text-blue-600 shadow-sm":"text-slate-500 hover:text-slate-700"}`,children:[e.jsx(Ha,{size:12})," ",x("app.device.portrait")]}),e.jsxs("button",{onClick:()=>w("landscape"),disabled:z,className:`flex-1 py-1.5 rounded-md text-xs font-medium flex items-center justify-center gap-2 transition-colors ${$==="landscape"&&!z?"bg-white text-blue-600 shadow-sm":"text-slate-500 hover:text-slate-700"} ${z?"opacity-30 cursor-not-allowed":""}`,children:[e.jsx(ta,{size:12})," ",x("app.device.landscape")]})]})]})]})]}),s==="style"&&e.jsxs(e.Fragment,{children:[e.jsxs("section",{className:"space-y-3",children:[e.jsx("h3",{className:"font-bold text-xs uppercase tracking-wider text-slate-400",children:x("app.theme.title")}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx("button",{onClick:()=>V("clean"),className:"flex-1 py-2 bg-slate-50 border border-slate-200 rounded-lg text-xs font-medium hover:bg-slate-100",children:x("app.theme.clean")}),e.jsx("button",{onClick:()=>V("dark"),className:"flex-1 py-2 bg-slate-900 text-white border border-slate-800 rounded-lg text-xs font-medium hover:bg-slate-800",children:x("app.theme.dark")}),e.jsx("button",{onClick:()=>V("pop"),className:"flex-1 py-2 bg-gradient-to-r from-pink-200 to-pink-300 border border-pink-200 text-pink-900 rounded-lg text-xs font-medium hover:opacity-90",children:x("app.theme.pop")})]})]}),e.jsx("hr",{className:"border-slate-100"}),e.jsxs("section",{className:"space-y-4",children:[e.jsx("h3",{className:"font-bold text-xs uppercase tracking-wider text-slate-400",children:x("app.background.title")}),e.jsx("div",{className:"grid grid-cols-4 gap-2",children:["transparent","solid","gradient","image"].map(c=>e.jsx("button",{onClick:()=>ve(c),className:`w-full px-1.5 py-1.5 rounded-md border text-[8px] leading-[11px] tracking-normal font-bold uppercase text-center whitespace-normal break-all flex flex-col items-center justify-center gap-1 transition-all ${C===c?"border-blue-500 text-blue-600 bg-blue-50 ring-1 ring-blue-500":"border-slate-200 text-slate-500 hover:border-slate-300"}`,children:c==="image"?e.jsx(Ja,{size:14}):x(`app.background.types.${c}`)},c))}),C==="image"&&e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{onClick:()=>we.current.click(),onDrop:ie,onDragOver:pe,onDragEnter:le,onDragLeave:Q,className:`h-16 w-full rounded-lg border-2 border-dashed flex items-center justify-center cursor-pointer text-xs transition-all ${je?"border-blue-500 bg-blue-100 text-blue-600 scale-[1.01]":"border-slate-300 text-slate-400 hover:bg-slate-50 hover:border-blue-400 hover:text-blue-600"}`,children:[e.jsx(Fa,{size:14,className:"mr-1 pointer-events-none"})," ",e.jsx("span",{className:"pointer-events-none",children:x("app.background.upload")})," ",e.jsx("input",{type:"file",ref:we,className:"hidden",accept:"image/*",onChange:u})]}),e.jsxs("div",{className:"flex gap-2 pt-1",children:[e.jsxs("div",{className:"flex-1",children:[e.jsxs("div",{className:"flex justify-between text-[10px] text-slate-400",children:[e.jsx("span",{children:x("app.background.blur")}),e.jsxs("span",{children:[E,"px"]})]}),e.jsx("input",{type:"range",min:"0",max:"20",step:"1",value:E,onChange:c=>H(parseInt(c.target.value)),className:"w-full accent-slate-800 h-1 bg-slate-200 rounded-lg"})]}),e.jsxs("div",{className:"flex-1",children:[e.jsxs("div",{className:"flex justify-between text-[10px] text-slate-400",children:[e.jsx("span",{children:x("app.background.dim")}),e.jsxs("span",{children:[W,"%"]})]}),e.jsx("input",{type:"range",min:"0",max:"80",step:"5",value:W,onChange:c=>U(parseInt(c.target.value)),className:"w-full accent-slate-800 h-1 bg-slate-200 rounded-lg"})]})]})]}),C==="solid"&&e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex gap-2",children:[e.jsx("input",{type:"color",value:_,onChange:c=>Ce(c.target.value),onBlur:c=>Oe&&Oe(c.target.value),className:"h-8 w-8 rounded cursor-pointer border border-slate-300"}),e.jsx("div",{className:"flex-1 flex flex-wrap gap-1",children:Ti.slice(0,5).map(c=>e.jsx("div",{onClick:()=>{Ce(c),Oe&&Oe(c)},className:"w-6 h-6 rounded-full border cursor-pointer",style:{background:c}},c))})]}),e.jsx(Tt,{onSelect:c=>{Ce(c),Oe&&Oe(c)}})]}),C==="gradient"&&e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex gap-2",children:[e.jsx("input",{type:"color",value:q,onChange:c=>ge(c.target.value),onBlur:c=>Oe&&Oe(c.target.value),className:"h-8 w-8 rounded cursor-pointer border border-slate-300"}),e.jsx("input",{type:"color",value:Ge,onChange:c=>at(c.target.value),onBlur:c=>Oe&&Oe(c.target.value),className:"h-8 w-8 rounded cursor-pointer border border-slate-300"})]}),e.jsx(Tt,{onSelect:c=>{ge(c),Oe&&Oe(c)}})]})]}),e.jsx("hr",{className:"border-slate-100"}),e.jsxs("section",{className:"space-y-4",children:[e.jsx("h3",{className:"font-bold text-xs uppercase tracking-wider text-slate-400",children:x("app.branding.title")}),e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{children:[e.jsx("label",{className:"text-[10px] text-slate-500 mb-1 block",children:x("app.branding.frameColor")}),e.jsx("div",{className:"flex gap-2",children:["black","silver","titanium","blue","gold"].map(c=>e.jsx("button",{onClick:()=>Xe(c),className:`w-6 h-6 rounded-full border-2 transition-transform hover:scale-110 ${Te===c?"border-blue-500 scale-110":"border-slate-200"}`,style:{backgroundColor:c==="titanium"?"#8a8a8a":c==="blue"?"#2f3c4e":c==="gold"?"#f9e5c9":c==="silver"?"#e3e3e3":"#1a1a1a"},title:c},c))})]}),Le?e.jsxs("div",{onDrop:_e,onDragOver:Me,onDragEnter:Fe,onDragLeave:ft,onClick:()=>Ue.current.click(),className:`flex items-center justify-between p-2 border rounded-lg cursor-pointer transition-all shadow-sm group ${A?"border-blue-500 bg-blue-50 ring-2 ring-blue-200":"border-slate-200 bg-white hover:border-blue-300"}`,children:[e.jsxs("div",{className:"flex items-center gap-3 pointer-events-none",children:[e.jsxs("div",{className:"w-10 h-10 rounded border border-slate-100 bg-slate-50 flex items-center justify-center p-1 overflow-hidden relative",children:[e.jsx("div",{className:"absolute inset-0 opacity-20 bg-[url('https://www.transparenttextures.com/patterns/checkerboard.png')]"}),e.jsx("img",{src:Le,className:"w-full h-full object-contain relative z-10"})]}),e.jsxs("div",{className:"flex flex-col",children:[e.jsx("span",{className:"text-[10px] font-bold text-slate-700 uppercase tracking-wider",children:"Logo"}),e.jsx("span",{className:"text-[10px] text-slate-400",children:A?"Drop to Change":"Set"})]})]}),e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx("button",{onClick:c=>{c.stopPropagation(),Ue.current.click()},className:"p-1.5 text-slate-400 hover:text-blue-600 hover:bg-blue-50 rounded transition-colors",title:"Change Logo",children:e.jsx(ta,{size:14})}),e.jsx("button",{onClick:c=>{c.stopPropagation(),xe()},className:"p-1.5 text-slate-400 hover:text-red-500 hover:bg-red-50 rounded transition-colors",title:"Remove Logo",children:e.jsx(Gr,{size:14})})]}),e.jsx("input",{type:"file",ref:Ue,className:"hidden",accept:"image/*",onChange:fe})]}):e.jsxs("div",{onClick:()=>Ue.current.click(),onDrop:_e,onDragOver:Me,onDragEnter:Fe,onDragLeave:ft,className:`flex items-center justify-between p-3 border border-dashed rounded-lg cursor-pointer transition-all group ${A?"border-blue-500 bg-blue-50 text-blue-700":"border-slate-300 text-slate-500 hover:border-blue-400 hover:text-blue-600 hover:bg-slate-50"}`,children:[e.jsxs("span",{className:"text-xs font-medium flex items-center gap-2 pointer-events-none",children:[e.jsx(Ll,{size:16,className:"text-slate-400 group-hover:text-blue-500 transition-colors"}),x("app.branding.uploadLogo")]}),e.jsx(Fa,{size:14,className:"text-slate-300 group-hover:text-blue-400 transition-colors"}),e.jsx("input",{type:"file",ref:Ue,className:"hidden",accept:"image/*",onChange:fe})]})]})]}),e.jsx("hr",{className:"border-slate-100"}),e.jsxs("section",{className:"space-y-4",children:[e.jsx("h3",{className:"font-bold text-xs uppercase tracking-wider text-slate-400",children:x("app.layout.title")}),e.jsxs("div",{className:"flex items-center justify-between text-xs text-slate-600",children:[e.jsxs("label",{className:"flex items-center gap-2",children:[e.jsx("input",{type:"checkbox",checked:be,onChange:c=>c.target.checked?me():st(),className:"rounded border-slate-300 text-blue-600 focus:ring-blue-500"}),e.jsx("span",{children:x("app.layout.overrideToggle")})]}),be&&e.jsx("button",{onClick:st,className:"text-[11px] text-blue-600 hover:underline",children:x("app.layout.overrideReset")})]}),e.jsxs("div",{className:"grid grid-cols-3 gap-2",children:[e.jsxs("button",{onClick:()=>be?Ze("layoutMode","top"):et("top"),className:`py-2 rounded-md border text-[10px] font-bold flex flex-col items-center gap-1 ${He==="top"?"border-blue-500 bg-blue-50 text-blue-700":"border-slate-200 text-slate-500"}`,children:[e.jsx(Vr,{size:14,className:"rotate-180"}),x("app.layout.options.top")]}),e.jsxs("button",{onClick:()=>be?Ze("layoutMode","bottom"):et("bottom"),className:`py-2 rounded-md border text-[10px] font-bold flex flex-col items-center gap-1 ${He==="bottom"?"border-blue-500 bg-blue-50 text-blue-700":"border-slate-200 text-slate-500"}`,children:[e.jsx(Vr,{size:14}),x("app.layout.options.bottom")]}),e.jsxs("button",{onClick:()=>be?Ze("layoutMode","split"):et("split"),className:`py-2 rounded-md border text-[10px] font-bold flex flex-col items-center gap-1 ${He==="split"?"border-blue-500 bg-blue-50 text-blue-700":"border-slate-200 text-slate-500"}`,children:[e.jsx(Nl,{size:14}),x("app.layout.options.split")]})]}),e.jsxs("div",{className:"pt-2",children:[e.jsx("label",{className:"text-[10px] text-slate-500 mb-1 block",children:"Font Family"}),e.jsx(jc,{selectedFont:Qe,setSelectedFont:is,fontOptions:vt})]}),e.jsxs("div",{className:"flex items-center justify-between pt-1",children:[e.jsx("span",{className:"text-xs text-slate-500",children:x("app.layout.textColor")}),e.jsx("input",{type:"color",value:cs,onChange:c=>Ot(c.target.value),onBlur:c=>Oe&&Oe(c.target.value),className:"w-6 h-6 rounded-full cursor-pointer border border-slate-200"})]}),e.jsx(Tt,{onSelect:c=>{Ot(c),Oe&&Oe(c)}}),e.jsxs("div",{className:"space-y-1 pt-2",children:[e.jsxs("div",{className:"flex justify-between text-xs text-slate-500",children:[e.jsx("span",{children:x("app.layout.topSpacing")}),e.jsxs("span",{children:[wt,"%"]})]}),e.jsx("input",{type:"range",min:"0",max:"30",step:"1",value:wt,onChange:c=>be?Ze("topSpacing",parseInt(c.target.value)):Lt(parseInt(c.target.value)),className:"w-full accent-slate-800 h-1.5 bg-slate-200 rounded-lg appearance-none cursor-pointer"})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsxs("div",{className:"flex justify-between text-xs text-slate-500",children:[e.jsx("span",{children:x("app.layout.scale")}),e.jsxs("span",{children:[Math.round(Kt*100),"%"]})]}),e.jsx("input",{type:"range",min:"0.5",max:"2.0",step:"0.05",value:Kt,onChange:c=>be?Ze("deviceScale",parseFloat(c.target.value)):It(parseFloat(c.target.value)),className:"w-full accent-slate-800 h-1.5 bg-slate-200 rounded-lg appearance-none cursor-pointer"})]})]}),e.jsxs("section",{className:"space-y-2 pt-2",children:[e.jsx("h3",{className:"font-bold text-xs uppercase tracking-wider text-slate-400",children:x("app.badge.title")}),e.jsxs("div",{className:"grid grid-cols-5 gap-2",children:[e.jsx("button",{onClick:()=>Ft("none"),className:`p-1.5 rounded-lg border flex justify-center ${jt==="none"?"bg-blue-50 border-blue-500":"border-slate-200"}`,children:e.jsx(Gt,{size:14,className:"text-slate-400"})}),e.jsx("button",{onClick:()=>Ft("stars"),className:`p-1.5 rounded-lg border flex justify-center ${jt==="stars"?"bg-blue-50 border-blue-500":"border-slate-200"}`,children:e.jsx(un,{size:14,className:"text-yellow-500 fill-yellow-500"})}),e.jsx("button",{onClick:()=>Ft("award"),className:`p-1.5 rounded-lg border flex justify-center ${jt==="award"?"bg-blue-50 border-blue-500":"border-slate-200"}`,children:e.jsx(ln,{size:14,className:"text-red-500"})}),e.jsx("button",{onClick:()=>Ft("download"),className:`p-1.5 rounded-lg border flex justify-center ${jt==="download"?"bg-blue-50 border-blue-500":"border-slate-200"}`,children:e.jsx(qa,{size:14,className:"text-slate-700"})}),e.jsx("button",{onClick:()=>Ft("googleplay"),className:`p-1.5 rounded-lg border flex justify-center ${jt==="googleplay"?"bg-blue-50 border-blue-500":"border-slate-200"}`,children:e.jsx(dn,{size:14,className:"text-slate-700",fill:"currentColor"})})]})]})]}),s==="templates"&&e.jsxs(e.Fragment,{children:[e.jsxs("section",{className:"space-y-3",children:[e.jsx("h3",{className:"font-bold text-xs uppercase tracking-wider text-slate-400",children:x("app.templates.official")}),e.jsx("div",{className:"grid grid-cols-1 gap-4",children:$i.map(c=>e.jsxs("div",{onClick:()=>zs(c),className:"group cursor-pointer border border-slate-200 rounded-xl overflow-hidden hover:border-blue-400 hover:shadow-md transition-all bg-white",children:[e.jsxs("div",{className:"h-24 w-full relative overflow-hidden",style:yt(c),children:[e.jsx("img",{src:c.thumbnail,alt:c.name,className:"w-full h-full object-cover transition-transform duration-500 group-hover:scale-105",onError:Ne=>{Ne.currentTarget.style.display="none"}}),e.jsx("div",{className:"absolute inset-0 pointer-events-none bg-gradient-to-t from-black/40 to-transparent"}),e.jsxs("div",{className:"absolute bottom-0 left-0 right-0 p-2 flex items-center justify-between",children:[e.jsx("span",{className:"text-white text-xs font-bold drop-shadow",children:x(`app.templates.officialItems.${c.id}`,{defaultValue:c.name})}),c.tags?.bg&&e.jsx("span",{className:"text-[10px] text-white/80 bg-black/40 px-2 py-0.5 rounded-full border border-white/10",children:c.tags.bg})]})]}),e.jsx("div",{className:"p-3 flex flex-wrap gap-2 bg-white",children:c.tags&&Object.entries(c.tags).map(([Ne,Ve])=>e.jsx("span",{className:"inline-flex items-center px-1.5 py-0.5 rounded text-[10px] font-medium bg-slate-100 text-slate-500 border border-slate-200",children:Ve},Ne))})]},c.id))})]}),e.jsx("hr",{className:"border-slate-100"}),e.jsxs("section",{className:"space-y-3",children:[e.jsxs("div",{className:"flex justify-between items-center",children:[e.jsx("h3",{className:"font-bold text-xs uppercase tracking-wider text-slate-400",children:x("app.templates.mine")}),e.jsx("button",{onClick:()=>bs(Ts),className:"text-[10px] text-blue-600 font-bold hover:underline",children:x("app.templates.saveCurrent")})]}),e.jsxs("div",{className:"flex gap-2 p-2 bg-blue-50/50 border border-blue-100 rounded text-[10px] text-slate-600 leading-tight",children:[e.jsx(Va,{size:14,className:"shrink-0 text-blue-400"}),e.jsx("span",{children:Dt.language==="ja"?"背景・色・フォントなどのスタイルのみ保存されます。文字や画像は含まれません。":"Saves background, colors, fonts, and layout. Text and images are excluded."})]}),gs.length===0?e.jsx("div",{className:"text-xs text-slate-400 text-center py-4 bg-slate-50 rounded-lg border border-dashed border-slate-200",children:x("app.templates.empty").split(`
11
+ `).map(c=>e.jsx("div",{children:c},c))}):e.jsx("div",{className:"space-y-2",children:gs.map(c=>e.jsxs("div",{className:"flex items-center justify-between p-2 bg-white border border-slate-200 rounded-lg hover:border-blue-300 transition-colors group",children:[e.jsx("span",{onClick:()=>zs(c),className:"text-xs font-medium text-slate-700 cursor-pointer flex-1 truncate",children:c.name}),e.jsx("button",{onClick:()=>ra(c.id),className:"text-slate-300 hover:text-red-500 p-1 opacity-0 group-hover:opacity-100 transition-opacity",children:e.jsx(Gr,{size:12})})]},c.id))}),!ys&&e.jsxs("div",{className:"text-[10px] text-amber-600 bg-amber-50 p-2 rounded border border-amber-100 flex items-center gap-2",children:[e.jsx(Oa,{size:10})," ",x("app.templates.proRequired")]})]})]}),s==="data"&&e.jsxs(e.Fragment,{children:[e.jsxs("section",{className:"space-y-5",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx("h3",{className:"font-bold text-xs uppercase tracking-wider text-slate-400",children:x("app.data.title")}),e.jsxs("div",{className:"flex items-center gap-2 p-3 bg-blue-50/50 border border-blue-100 rounded-lg text-xs text-slate-600",children:[e.jsx(Oa,{size:14,className:"text-blue-500 shrink-0"}),e.jsx("span",{className:"font-medium",children:x("app.data.privacy")})]})]}),e.jsxs("div",{className:"bg-white p-4 rounded-xl border border-slate-200 shadow-sm space-y-3 relative overflow-hidden",children:[e.jsx("div",{className:"absolute top-0 right-0 w-16 h-16 bg-gradient-to-br from-slate-100 to-transparent rounded-bl-full opacity-50 pointer-events-none"}),e.jsx("div",{className:"flex items-start justify-between relative z-10",children:e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"p-2.5 bg-slate-100 text-slate-600 rounded-lg",children:e.jsx(Yr,{size:20})}),e.jsxs("div",{className:"space-y-0.5",children:[e.jsx("h4",{className:"text-sm font-bold text-slate-800",children:x("app.data.sampleTitle")}),e.jsx("p",{className:"text-[10px] text-slate-500 leading-relaxed",children:x("app.data.sampleDesc")})]})]})}),e.jsxs("button",{type:"button",onClick:$s,className:"w-full flex items-center justify-center gap-2 py-2.5 bg-white border border-slate-300 rounded-lg text-xs font-bold text-slate-700 hover:bg-slate-50 transition-all shadow-sm active:scale-[0.98]",children:[e.jsx(Yr,{size:14}),e.jsx("span",{children:x("app.data.sampleLoad")})]})]}),e.jsxs("div",{className:"bg-white p-4 rounded-xl border border-slate-200 shadow-sm space-y-3",children:[e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx("div",{className:"p-2 bg-slate-100 text-blue-600 rounded-lg border border-slate-200",children:e.jsx(vl,{size:18})}),e.jsxs("div",{className:"space-y-1",children:[e.jsx("h4",{className:"text-sm font-bold text-slate-800",children:x("app.data.cliTitle")}),e.jsx("p",{className:"text-[10px] text-slate-500 leading-relaxed",children:x("app.data.cliDesc")})]})]}),e.jsx("div",{className:"rounded-lg border border-slate-200 bg-slate-950 p-3",children:e.jsx("pre",{className:"text-[10px] text-slate-200 whitespace-pre-wrap",children:kt})}),e.jsxs("div",{className:"flex flex-col gap-2",children:[e.jsx(Za,{value:kt,className:"inline-flex items-center justify-center gap-2 px-3 py-2 rounded-lg border border-slate-900 bg-slate-900 text-white hover:bg-slate-800 transition text-[11px] font-semibold",children:({copyLabel:c})=>e.jsxs(e.Fragment,{children:[e.jsx(wl,{size:12}),c||bt]})}),e.jsxs("a",{href:"/tools/agent-cli/",className:"inline-flex items-center justify-center gap-2 px-3 py-2 rounded-lg border border-slate-200 bg-white text-slate-700 hover:bg-slate-50 transition text-[11px] font-semibold",children:[x("app.data.cliLink")," ",e.jsx(Jr,{size:14})]})]})]}),e.jsxs("div",{className:"bg-white p-4 rounded-xl border border-slate-200 shadow-sm space-y-4 relative overflow-hidden",children:[e.jsx("div",{className:"absolute top-0 right-0 w-16 h-16 bg-gradient-to-br from-slate-100 to-transparent rounded-bl-full opacity-50 pointer-events-none"}),e.jsx("div",{className:"flex items-start justify-between relative z-10",children:e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"p-2.5 bg-slate-100 text-slate-600 rounded-lg",children:e.jsx(Vl,{size:20})}),e.jsxs("div",{children:[e.jsx("h4",{className:"text-sm font-bold text-slate-800",children:x("app.data.browserTitle")}),e.jsxs("div",{className:"flex items-center gap-2 mt-1",children:[e.jsx("span",{className:"text-[10px] font-medium px-1.5 py-0.5 bg-slate-100 text-slate-500 rounded border border-slate-200",children:x("app.data.limitInfo")}),e.jsx("span",{className:`text-[10px] tabular-nums font-medium ${vs.percent>80?"text-rose-500":"text-slate-400"}`,children:x("app.data.usageInfo",{used:vs.used})})]})]})]})}),vs.percent>80&&e.jsxs("div",{className:"flex items-start gap-2 p-2 bg-rose-50 border border-rose-100 rounded text-[10px] text-rose-700 animate-in fade-in",children:[e.jsx(Ci,{size:12,className:"shrink-0 mt-0.5"}),e.jsx("span",{children:x("app.data.quotaWarning")})]}),e.jsxs("div",{className:"flex flex-col gap-3",children:[e.jsxs("button",{onClick:()=>ws(!1),className:"w-full flex items-center justify-between px-4 py-3 bg-slate-800 text-white rounded-lg hover:bg-slate-700 transition-all shadow-sm active:scale-[0.98] group",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(xi,{size:18}),e.jsxs("div",{className:"text-left",children:[e.jsx("span",{className:"block text-sm font-bold",children:x("app.data.overwrite")}),e.jsx("span",{className:"block text-[10px] opacity-70 font-medium",children:x("app.data.overwriteDesc")})]})]}),e.jsx(Jr,{size:16,className:"opacity-50 group-hover:opacity-100 group-hover:translate-x-1 transition-all"})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-2",children:[e.jsxs("button",{onClick:()=>{Xt({message:x("app.data.loadConfirm"),onConfirm:()=>{Xt(null),na()},onCancel:()=>Xt(null)})},className:"flex items-center justify-center gap-2 py-2 bg-white border border-slate-200 text-slate-600 rounded-lg hover:bg-slate-50 hover:text-slate-800 transition-colors",children:[e.jsx(ta,{size:14}),e.jsx("span",{className:"text-xs font-bold",children:x("app.data.restore")})]}),e.jsxs("button",{onClick:()=>ws(!0),className:"flex items-center justify-center gap-2 py-2 bg-white border border-slate-200 text-slate-400 rounded-lg hover:bg-slate-50 hover:text-slate-600 transition-colors",title:x("app.data.saveSettingsOnly"),children:[e.jsx(Ya,{size:14}),e.jsx("span",{className:"text-xs font-medium",children:x("app.data.settingsOnlyShort")})]})]})]}),e.jsx("div",{className:"h-0 relative",children:Rt&&e.jsx("div",{className:"absolute bottom-1 left-0 right-0 text-center",children:e.jsxs("span",{className:"inline-flex items-center gap-1.5 px-3 py-1 bg-emerald-100 text-emerald-700 text-[10px] font-bold rounded-full shadow-sm animate-in fade-in slide-in-from-bottom-2",children:[e.jsx(Wa,{size:10,strokeWidth:3})," ",ds]})})})]}),e.jsxs("div",{className:"bg-gradient-to-br from-blue-50 to-indigo-50/50 p-4 rounded-xl border border-blue-100 space-y-3",children:[e.jsx("div",{className:"flex justify-between items-start",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:"p-2 bg-white text-blue-600 rounded-lg shadow-sm border border-blue-100",children:e.jsx(Hl,{size:20})}),e.jsxs("div",{children:[e.jsx("h4",{className:"text-sm font-bold text-slate-800",children:x("app.data.fileExportTitle")}),e.jsx("span",{className:"text-[10px] font-bold text-blue-600 bg-blue-100/50 px-1.5 py-0.5 rounded border border-blue-200/50 block w-fit mt-1",children:x("app.data.fileExportBadge")})]})]})}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-[10px] text-slate-600 leading-relaxed",dangerouslySetInnerHTML:{__html:x("app.data.fileExportDesc")}}),e.jsxs("div",{className:"flex gap-2",children:[e.jsxs("div",{className:"flex -space-x-1",children:[e.jsx("div",{className:"w-5 h-5 rounded-full bg-white border border-slate-200 flex items-center justify-center text-slate-500",title:x("app.data.fileExportTitle"),children:e.jsx(Ja,{size:10})}),e.jsx("div",{className:"w-5 h-5 rounded-full bg-white border border-slate-200 flex items-center justify-center text-slate-500",title:x("app.data.fileExportTitle"),children:e.jsx(ql,{size:10})}),e.jsx("div",{className:"w-5 h-5 rounded-full bg-white border border-slate-200 flex items-center justify-center text-slate-500",title:x("app.data.fileExportTitle"),children:e.jsx(Ya,{size:10})})]}),e.jsx("span",{className:"text-[10px] text-slate-400 self-center",children:x("app.data.includeAll")})]})]}),e.jsxs("div",{className:"grid grid-cols-1 gap-2 mt-2",children:[e.jsxs("button",{onClick:js,className:"w-full flex items-center justify-center gap-2 py-2.5 bg-blue-600 text-white rounded-lg hover:bg-blue-700 transition-all shadow-sm active:scale-[0.98]",children:[e.jsx(qa,{size:16}),e.jsx("span",{className:"text-xs font-bold",children:x("app.data.export")})]}),e.jsxs("div",{className:`relative border border-dashed rounded-lg p-2.5 flex items-center justify-center gap-2 transition-all cursor-pointer ${Ss?"border-blue-500 bg-blue-100 text-blue-700 scale-[1.01]":"border-blue-200 text-slate-500 bg-white/50 hover:border-blue-400 hover:text-blue-600 hover:bg-white"}`,onClick:()=>As.current?.click(),onDragOver:oa,onDragEnter:la,onDragLeave:Bt,onDrop:$e,children:[e.jsx(zl,{size:14,className:"pointer-events-none"}),e.jsx("span",{className:"text-xs font-medium pointer-events-none",children:x("app.data.import")}),e.jsx("input",{type:"file",ref:As,className:"hidden",accept:".json,application/json",onChange:Qt})]})]})]})]}),ia&&e.jsx(kc,{token:as,captureTeamSpec:ca,applyTeamSpec:da}),e.jsx("hr",{className:"border-slate-100"}),e.jsxs("section",{className:"space-y-3",children:[e.jsx("h3",{className:"font-bold text-xs uppercase tracking-wider text-slate-400",children:x("app.importer.title")}),e.jsxs("div",{className:`p-4 rounded-xl border space-y-3 relative overflow-hidden transition-all ${Ut?"border-blue-500 bg-blue-100/80":"bg-slate-50 border-slate-200"}`,onDrop:Re,onDragOver:Et,onDragEnter:ne,onDragLeave:tt,children:[!ys&&e.jsx("div",{className:"absolute inset-0 bg-white/60 backdrop-blur-[1px] z-10 flex items-center justify-center pointer-events-none",children:e.jsx(Oa,{size:24,className:"text-slate-400"})}),e.jsx("p",{className:"text-xs text-slate-500 leading-relaxed",children:x("app.importer.description")}),e.jsx("p",{className:"text-[10px] text-slate-400",dangerouslySetInnerHTML:{__html:x("app.importer.hint")}}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx("button",{onClick:()=>bs(Ae),className:"flex-1 py-2 bg-white border border-slate-300 rounded-lg text-xs font-medium text-slate-600 hover:bg-slate-50",children:x("app.importer.downloadTemplate")}),e.jsx("button",{onClick:()=>bs(()=>Pt.current.click()),className:"flex-1 py-2 bg-blue-600 text-white rounded-lg text-xs font-medium hover:bg-blue-700",children:x("app.importer.importCsv")})]}),e.jsx("input",{type:"file",ref:Pt,className:"hidden",accept:".csv",onChange:es})]})]}),e.jsx("hr",{className:"border-slate-100"}),e.jsxs("section",{className:"space-y-3",children:[e.jsx("h3",{className:"font-bold text-xs uppercase tracking-wider text-slate-400",children:x("app.screenshotImporter.title")}),e.jsxs("div",{className:`p-4 rounded-xl border space-y-3 relative overflow-hidden transition-all ${We?"border-blue-500 bg-blue-100/80":"bg-slate-50 border-slate-200"}`,onDragOver:c=>{c?.dataTransfer&&Array.from(c.dataTransfer.types||[]).includes("Files")&&(c.preventDefault(),Ht(!0))},onDragEnter:c=>{c?.dataTransfer&&Array.from(c.dataTransfer.types||[]).includes("Files")&&(c.preventDefault(),Ht(!0))},onDragLeave:c=>{c&&(c.preventDefault(),!c.currentTarget.contains(c.relatedTarget)&&Ht(!1))},onDrop:c=>{c?.dataTransfer&&(c.preventDefault(),Ht(!1),ps?.(c.dataTransfer.files))},children:[e.jsx("p",{className:"text-xs text-slate-500 leading-relaxed",children:x("app.screenshotImporter.description")}),e.jsx("p",{className:"text-[10px] text-slate-400",dangerouslySetInnerHTML:{__html:x("app.screenshotImporter.hint")}}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx("button",{type:"button",onClick:()=>St.current?.click(),className:"flex-1 py-2 bg-white border border-slate-300 rounded-lg text-xs font-medium text-slate-600 hover:bg-slate-50",children:x("app.screenshotImporter.importZip")}),e.jsx("button",{type:"button",onClick:()=>Wt.current?.click(),className:"flex-1 py-2 bg-white border border-slate-300 rounded-lg text-xs font-medium text-slate-600 hover:bg-slate-50",children:x("app.screenshotImporter.importFolder")}),e.jsx("button",{type:"button",onClick:()=>Cs.current?.click(),className:"flex-1 py-2 bg-blue-600 text-white rounded-lg text-xs font-medium hover:bg-blue-700",children:x("app.screenshotImporter.importFiles")})]}),e.jsx("input",{type:"file",ref:St,className:"hidden",accept:".zip,application/zip,application/x-zip-compressed",onChange:c=>{ps?.(c.target.files),c?.target&&(c.target.value="")}}),e.jsx("input",{type:"file",ref:Wt,className:"hidden",accept:"image/*",multiple:!0,webkitdirectory:"",onChange:c=>{ps?.(c.target.files),c?.target&&(c.target.value="")}}),e.jsx("input",{type:"file",ref:Cs,className:"hidden",accept:"image/*",multiple:!0,onChange:c=>{ps?.(c.target.files),c?.target&&(c.target.value="")}})]})]}),e.jsx("hr",{className:"border-slate-100"}),m==="batch"&&e.jsxs("section",{className:"space-y-3",children:[e.jsxs("div",{className:"flex justify-between items-center",children:[e.jsx("h3",{className:"font-bold text-xs uppercase tracking-wider text-slate-400",children:x("app.batch.title")}),e.jsx("span",{className:"text-xs text-blue-600 font-medium",children:x("app.batch.selected",{count:gt.length})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("div",{className:"text-[10px] font-bold text-slate-400 uppercase tracking-wider",children:x("app.batch.presets.title")}),e.jsxs("div",{className:"flex flex-wrap gap-2",children:[e.jsx("button",{type:"button",onClick:()=>Vt(Jt.iosRequired),className:"px-2.5 py-1.5 rounded-lg border border-slate-200 bg-white text-[11px] font-semibold text-slate-600 hover:border-blue-300 hover:text-blue-700 hover:bg-blue-50 transition-colors",children:x("app.batch.presets.iosRequired")}),e.jsx("button",{type:"button",onClick:()=>Vt(Jt.playPhone),className:"px-2.5 py-1.5 rounded-lg border border-slate-200 bg-white text-[11px] font-semibold text-slate-600 hover:border-blue-300 hover:text-blue-700 hover:bg-blue-50 transition-colors",children:x("app.batch.presets.playPhone")}),e.jsx("button",{type:"button",onClick:()=>Vt(Jt.playTablet),className:"px-2.5 py-1.5 rounded-lg border border-slate-200 bg-white text-[11px] font-semibold text-slate-600 hover:border-blue-300 hover:text-blue-700 hover:bg-blue-50 transition-colors",children:x("app.batch.presets.playTablet")}),e.jsx("button",{type:"button",onClick:()=>Vt(Jt.all),className:"px-2.5 py-1.5 rounded-lg border border-slate-200 bg-white text-[11px] font-semibold text-slate-600 hover:border-blue-300 hover:text-blue-700 hover:bg-blue-50 transition-colors",children:x("app.batch.presets.all")}),e.jsx("button",{type:"button",onClick:()=>Vt([]),className:"px-2.5 py-1.5 rounded-lg border border-slate-200 bg-white text-[11px] font-semibold text-slate-500 hover:border-slate-300 hover:text-slate-700 hover:bg-slate-50 transition-colors",children:x("app.batch.presets.clear")})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("div",{className:"text-[10px] font-bold text-slate-400 uppercase tracking-wider",children:x("app.batch.structure.title")}),e.jsxs("div",{className:"relative",children:[e.jsxs("select",{value:rt,onChange:c=>ss(c.target.value==="device"?"device":"locale"),className:"w-full appearance-none bg-slate-50 border border-slate-200 text-slate-700 text-sm rounded-xl px-4 py-2.5 pr-8 focus:outline-none focus:border-blue-500",children:[e.jsx("option",{value:"locale",children:x("app.batch.structure.byLocale")}),e.jsx("option",{value:"device",children:x("app.batch.structure.byDevice")})]}),e.jsx(aa,{className:"absolute right-3 top-1/2 -translate-y-1/2 text-slate-400 pointer-events-none",size:16})]})]}),e.jsx(Pe,{}),e.jsxs("div",{className:"relative",children:[e.jsx("input",{type:"text",value:ct,onChange:c=>zt(c.target.value),className:"w-full bg-slate-50 border border-slate-200 text-slate-700 text-sm rounded-xl px-4 py-2.5 pr-10 focus:outline-none focus:border-blue-500",placeholder:x("app.device.searchPlaceholder"),spellCheck:!1}),ct&&e.jsx("button",{type:"button",onClick:()=>zt(""),className:"absolute right-2.5 top-1/2 -translate-y-1/2 text-slate-400 hover:text-slate-600 p-1","aria-label":"Clear search",children:e.jsx(Gt,{size:14})})]}),e.jsx("div",{className:"space-y-4 max-h-[200px] overflow-y-auto pr-2 scrollbar-thin border border-slate-100 rounded-lg p-2",children:Object.entries(qt).map(([c,Ne])=>{const Ve=us[c]||c;return e.jsxs("div",{className:"space-y-2",children:[e.jsx("div",{className:"text-xs font-semibold text-slate-900 bg-slate-50 p-1 px-2 rounded",children:Ve}),Ne.map(De=>{const Ye=Ds(Ke[De],{id:De,mode:D});return e.jsxs("label",{className:"flex items-center gap-3 p-2 rounded-lg hover:bg-slate-50 cursor-pointer transition-colors border border-transparent hover:border-slate-100",onClick:()=>ts(De),title:D===ut.detailed?Ye.optionLabel:[Ye.optionLabel,Ye.dimensions].filter(Boolean).join(" - "),children:[e.jsx("div",{className:`w-4 h-4 rounded border flex items-center justify-center transition-colors ${gt.includes(De)?"bg-blue-500 border-blue-500":"border-slate-300 bg-white"}`,children:gt.includes(De)&&e.jsx(Wa,{size:12,className:"text-white"})}),e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsx("div",{className:"text-xs text-slate-700 font-medium truncate",children:Ye.primary}),Ye.secondary&&e.jsx("div",{className:"text-[10px] text-slate-400 truncate",children:Ye.secondary})]})]},De)})]},c)})})]})]})]})})},Cc=({show:s,current:m,total:d,label:p,onCancel:g})=>{const{t:B}=Nt();if(!s)return null;const I=d>0?Math.round(m/d*100):0,F=p||B("app.progress.generating");return e.jsx("div",{className:"fixed inset-0 z-[100] bg-black/50 backdrop-blur-sm flex items-center justify-center",children:e.jsxs("div",{className:"bg-white p-8 rounded-2xl shadow-2xl flex flex-col items-center w-80",children:[e.jsx(cn,{size:48,className:"text-blue-600 animate-spin mb-4"}),e.jsx("h3",{className:"text-lg font-bold text-slate-800 mb-2",children:F}),e.jsx("div",{className:"w-full bg-slate-100 rounded-full h-2 mb-2 overflow-hidden",children:e.jsx("div",{className:"bg-blue-600 h-full transition-all duration-300",style:{width:`${I}%`}})}),e.jsx("p",{className:"text-sm text-slate-500",children:B("app.progress.images",{current:m,total:d})}),g&&e.jsxs("button",{type:"button",onClick:g,className:"mt-4 inline-flex items-center gap-2 px-4 py-2 text-sm font-semibold text-slate-700 rounded-lg border border-slate-200 hover:bg-slate-50 transition",children:[e.jsx(Gt,{size:16}),B("common.cancel",{defaultValue:"Cancel"})]})]})})},_c=({slides:s,activeSlideIndex:m,setActiveSlideIndex:d,currentLocaleId:p,addSlide:g,removeSlide:B,onApplyFileToSlide:I,onOpenFilePickerForSlide:F,validateImageFile:K,onAddSlidesFromFiles:v})=>{const{t:M}=Nt(),[G,oe]=n.useState(!1),[k,ee]=n.useState(null),R=n.useCallback(O=>{O?.dataTransfer&&Array.from(O.dataTransfer.types||[]).includes("Files")&&(O.preventDefault(),oe(!0))},[]),ae=n.useCallback(O=>{O&&(O.preventDefault(),!O.currentTarget.contains(O.relatedTarget)&&(oe(!1),ee(null)))},[]),de=n.useCallback((O,ce)=>{if(!O?.dataTransfer)return;O.preventDefault(),O.stopPropagation(),oe(!1),ee(null),d(ce);const Z=Array.from(O.dataTransfer.files||[]).filter(o=>o.type.startsWith("image/"));if(!Z.length||!I)return;const T=Z[0];K&&!K(T)||I(T,ce)},[I,d,K]),ke=n.useCallback(O=>{if(!O?.dataTransfer)return;O.preventDefault(),oe(!1),ee(null);const ce=Array.from(O.dataTransfer.files||[]).filter(Z=>Z.type.startsWith("image/"));if(ce.length){if(v){v(ce);return}ce.forEach(Z=>{if(K&&!K(Z))return;const T=new FileReader;T.onload=o=>g({screenshot:o.target?.result||null}),T.readAsDataURL(Z)})}},[g,v,K]),Ee=O=>{d(O),typeof F=="function"&&F(O)};return e.jsx("div",{className:"w-full flex justify-center absolute bottom-0 left-0 right-0 z-20 pointer-events-none",children:e.jsxs("div",{className:`w-full max-w-[1200px] bg-white border-t border-slate-200 flex items-center px-6 gap-4 shadow-[0_-8px_20px_-12px_rgba(0,0,0,0.25)] overflow-x-auto py-4 rounded-t-xl pointer-events-auto transition-colors ${G?"bg-blue-50 ring-2 ring-blue-400 border-blue-300":""}`,onDragOver:R,onDrop:ke,children:[G&&e.jsx("div",{className:"text-[11px] font-semibold text-blue-700 mr-2 whitespace-nowrap",children:M("app.storyboard.dropToAddSlides")}),s.map((O,ce)=>{const Z=O?.screenshotsByLocale?.[p]||O?.screenshot||null,T=Object.keys(O?.screenshotsByLocale||{}).length;return e.jsxs("div",{onClick:()=>d(ce),onDoubleClick:()=>Ee(ce),onKeyDown:o=>{o.target===o.currentTarget&&(o.key==="Enter"||o.key===" ")&&(o.preventDefault(),d(ce))},onDragOver:o=>{R(o),o.stopPropagation()},onDragLeave:o=>{ae(o),o.stopPropagation(),ee(null)},onDragEnter:o=>{R(o),o.stopPropagation(),ee(ce)},onDrop:o=>de(o,ce),role:"button",tabIndex:0,"aria-pressed":ce===m,className:`relative w-20 h-24 rounded-lg border-2 cursor-pointer transition-all flex flex-col items-center justify-center bg-slate-50 hover:bg-slate-100 ${ce===m?"border-blue-500 ring-2 ring-blue-200":"border-slate-200"} ${k===ce?"border-blue-400 bg-blue-50":""}`,children:[e.jsxs("span",{className:"absolute top-1 left-2 text-[10px] font-bold text-slate-400",children:["#",ce+1]}),T>0&&e.jsx("span",{className:"absolute bottom-1 left-1 px-1.5 py-0.5 rounded-full bg-blue-600 text-white text-[9px] font-bold shadow-sm",title:M("app.storyboard.localeOverrides",{count:T}),children:T}),Z?e.jsx("img",{src:Z,alt:"",className:"w-12 h-16 object-cover rounded shadow-sm border border-slate-200"}):e.jsx("div",{className:"w-12 h-16 bg-slate-200 rounded flex items-center justify-center",children:e.jsx(Ja,{size:16,className:"text-slate-400"})}),s.length>1&&e.jsx("button",{type:"button",onClick:o=>B(ce,o),className:"absolute -top-2 -right-2 bg-red-500 text-white rounded-full p-0.5 shadow-sm hover:scale-110 transition-transform","aria-label":M("common.remove",{defaultValue:"Remove"}),children:e.jsx(Gt,{size:10})})]},O.id)}),e.jsxs("button",{onClick:()=>g(),onDragOver:R,onDrop:ke,className:"w-20 h-24 rounded-lg border-2 border-dashed border-slate-300 flex flex-col items-center justify-center text-slate-400 hover:text-blue-500 hover:border-blue-400 hover:bg-blue-50 transition-all",children:[e.jsx(pn,{size:24}),e.jsx("span",{className:"text-xs font-medium mt-1",children:M("app.storyboard.addSlide")})]})]})})},an="shipScreensUpsellWatermarkToastLastShownAt",rn="shipscreensSampleWelcomePromptShownV1",Uc=()=>{const{t:s,i18n:m}=Nt(),{addToast:d}=nn();hl("titles.editor");const p=xl(),[g,B]=n.useState("single"),I=typeof window<"u"&&window.__SHIPSCREENS_CLI===!0;n.useEffect(()=>{I&&B("batch")},[I]);const[F,K]=n.useState("edit"),[v,M]=n.useState(()=>typeof window>"u"?ut.store:localStorage.getItem("shipScreensDeviceLabelMode")===ut.detailed?ut.detailed:ut.store),[G,oe]=n.useState(()=>typeof window>"u"?"locale":localStorage.getItem("shipScreensExportStructureMode")==="device"?"device":"locale"),[k,ee]=n.useState(!1),[R,ae]=n.useState(!1),[de,ke]=n.useState(!1),Ee=n.useRef(null),O=n.useRef(!1),[ce,Z]=n.useState(!1),[T,o]=n.useState(null),{user:i,isAuthenticated:f,isLoading:b,signIn:j,signOut:N}=bl(),te=I&&typeof window<"u"&&window.__SHIPSCREENS_CLI_AUTH?.token||null,J=i?.token||te,X=!!J,[D,se]=n.useState(""),[$,w]=n.useState(0),[z,V]=n.useState(!1),[C,ve]=n.useState({x:0,y:0}),[we,ie]=n.useState(!1),pe=n.useRef({x:0,y:0}),le=T==="past_due"||T==="unpaid",[Q,je]=n.useState(["iphone69","iphone65","iphone55","pixel8","ipad13"]),u=n.useCallback(t=>{je(a=>a.includes(t)?a.filter(r=>r!==t):[...a,t])},[]),[E,H]=n.useState("solid"),[W,U]=n.useState("#ffffff"),[_,Ce]=n.useState(null),[q,ge]=n.useState(0),[Ge,at]=n.useState(0),[Te,Xe]=n.useState("#e0c3fc"),[Le,Ue]=n.useState("#8ec5fc"),[_e,Me]=n.useState(135),[Fe,ft]=n.useState(1),[A,fe]=n.useState(.25),[xe,be]=n.useState("portrait"),[me,st]=n.useState("iphone69"),[Ze,it]=n.useState("black"),[et,He]=n.useState(8),[Qe,is]=n.useState("top"),[vt,cs]=n.useState("none"),[Ot,Zt]=n.useState(null),[Oe,wt]=n.useState("#1e293b"),[Lt,Kt]=n.useState(96),[It,jt]=n.useState(48),[Ft,zs]=n.useState(40),[gs,bs]=n.useState(24),[Ts,ra]=n.useState(5),[ys,vs]=n.useState(96),[ws,na]=n.useState(48),[$s,Xt]=n.useState(8),[Rt,ds]=n.useState("Inter"),[js,As]=n.useState(()=>{if(typeof window<"u"){const t=localStorage.getItem("shipScreensRecentColors");return t?JSON.parse(t):[]}return[]});n.useEffect(()=>{localStorage.setItem("shipScreensRecentColors",JSON.stringify(js))},[js]),n.useEffect(()=>{localStorage.setItem("shipScreensDeviceLabelMode",v)},[v]),n.useEffect(()=>{localStorage.setItem("shipScreensExportStructureMode",G)},[G]);const Qt=n.useCallback((t,a={})=>{tr.current||(tr.current=!0,Je("project_created",{source:t,...a}))},[]),Ss=n.useCallback((t={})=>{sr.current||(sr.current=!0,Qt("screenshot_upload"),Je("base_screenshots_uploaded",t))},[Qt]),oa=n.useCallback(t=>{t&&As(a=>[t,...a.filter(l=>l!==t)].slice(0,10))},[]),la=t=>{st(t),Ke[t]?.type==="watch"?(Kt(Ft),jt(gs),He(Ts)):Ke[me]?.type==="watch"&&(Kt(ys),jt(ws),He($s))},Bt=[{id:"en-US",name:"English (US)",flag:"🇺🇸",defaults:{header:"New App",sub:"Available Now"}},{id:"ja-JP",name:"日本語",flag:"🇯🇵",defaults:{header:"新作アプリ",sub:"好評配信中"}},{id:"es-ES",name:"Espanol (Espana)",flag:"🇪🇸",defaults:{header:"Nueva app",sub:"Disponible ahora"}},{id:"fr-FR",name:"Francais",flag:"🇫🇷",defaults:{header:"Nouvelle appli",sub:"Disponible maintenant"}},{id:"de-DE",name:"Deutsch",flag:"🇩🇪",defaults:{header:"Neue App",sub:"Jetzt verfügbar"}},{id:"ko-KR",name:"한국어",flag:"🇰🇷",defaults:{header:"새로운 앱",sub:"지금 이용 가능"}},{id:"zh-CN",name:"简体中文",flag:"🇨🇳",defaults:{header:"新应用",sub:"现已发布"}},{id:"zh-TW",name:"繁體中文",flag:"🇹🇼",defaults:{header:"新應用",sub:"現已發布"}},{id:"it-IT",name:"Italiano",flag:"🇮🇹",defaults:{header:"Nuova app",sub:"Disponibile ora"}},{id:"pt-BR",name:"Portugues (Brasil)",flag:"🇧🇷",defaults:{header:"Novo app",sub:"Disponível agora"}}],[$e,Ut]=n.useState([{id:"en-US",name:"English (US)",flag:"🇺🇸"},{id:"ja-JP",name:"日本語",flag:"🇯🇵"}]),[Re,Et]=n.useState("en-US"),[ne,tt]=n.useState([{id:1,screenshot:null,screenshotsByLocale:{},texts:{"en-US":{header:"New App",sub:"Available Now"},"ja-JP":{header:"新作アプリ",sub:"好評配信中"}}}]),[Ae,Pt]=n.useState(0),[es,ps]=n.useState("shared"),[gt,ks]=n.useState([]),[ts,rt]=n.useState(""),[ss,ia]=n.useState(!1),[as,ca]=n.useState({current:0,total:0}),[da,Ns]=n.useState({used:"0.00",percent:0}),[pa,Ms]=n.useState(!1),[Os,x]=n.useState({past:[],future:[]}),[xt,Dt]=n.useState(null),[ct,zt]=n.useState(null),[We,Ht]=n.useState(null),[St,Wt]=n.useState("merge"),[Cs,us]=n.useState(!1),[bt,kt]=n.useState("current"),[rs,qt]=n.useState("5"),[Pe,Jt]=n.useState(null),[Vt,Tt]=n.useState({current:0,total:0}),[yt,c]=n.useState(!1),[Ne,Ve]=n.useState(""),[De,Ye]=n.useState(()=>typeof window<"u"?window.innerWidth<768:!1),[xn,_s]=n.useState(()=>typeof window<"u"?window.innerWidth>=768:!1),[Xa,ua]=n.useState(0),[Qa,ha]=n.useState(!1),[gn,fa]=n.useState(!1),[bn,ma]=n.useState(!1),[yn,xa]=n.useState(!1),[vn,ga]=n.useState(!1),[wn,ba]=n.useState(!1),er=n.useRef(!1),tr=n.useRef(!1),sr=n.useRef(!1),ar=n.useRef(!1),rr=n.useRef(null),nr=n.useRef(null),or=n.useRef(null),lr=n.useRef(null),ir=n.useRef(null),cr=n.useRef(null),dr=n.useRef(null),pr=n.useRef(null),ur=n.useRef(null),hr=n.useRef(null),Fs=n.useCallback(()=>zt(null),[]),ya=n.useCallback(()=>{us(!1),kt("current"),qt(String(Math.max(1,ne.length)))},[ne.length]),va=n.useCallback(()=>{Ht(null),Wt("merge")},[]),wa=n.useCallback(()=>{xt?.onCancel?.(),Dt(null)},[xt]);ls({isOpen:!!ct,onClose:Fs,panelRef:rr,initialFocusRef:nr}),ls({isOpen:Cs,onClose:ya,panelRef:or,initialFocusRef:lr}),ls({isOpen:!!We,onClose:va,panelRef:ir,initialFocusRef:cr}),ls({isOpen:!!xt,onClose:wa,panelRef:ur,initialFocusRef:hr});const jn=n.useRef(null),Bs=n.useRef(null),Us=n.useRef(null),Sn=n.useRef(null),kn=n.useRef(null),Nn=n.useRef(null),Cn=n.useRef(null),fr=n.useRef(null),mr=n.useRef(null),Hs=n.useRef(!1),ja=n.useRef(""),xr=n.useRef(!1),gr=n.useRef(0),Sa=n.useRef(null),Ws=n.useRef([]),ka=n.useRef(null),{exportSingle:br,exportBatch:yr,isExporting:vr,exportProgress:wr}=mc({deviceLibrary:Ke,bgType:E,bgColor:W});n.useEffect(()=>{const t=mr.current;if(!t)return;const a=r=>{if(r.ctrlKey||r.metaKey){r.preventDefault();const l=.05;fe(h=>{const y=r.deltaY<0?h+l:h-l;return Math.min(1,Math.max(.05,y))})}};return t.addEventListener("wheel",a,{passive:!1}),()=>{t.removeEventListener("wheel",a)}},[]);const $t=ne[Ae];$e.find(t=>t.id===Re)?.name;const Na=$t.texts[Re]?.header||"",Ca=$t.texts[Re]?.sub||"",_a=$t.screenshotsByLocale?.[Re]||$t.screenshot,_n=!!$t.screenshotsByLocale?.[Re],Ln=es==="shared"?$t.screenshot:_a,jr=$t?.screenshotsByLocale||{},Sr=Object.keys(jr).length,In=Sr>0,Rn=!!$t?.screenshot,qs=Ke[me]?.type==="watch",La=qs?"portrait":xe,Js=$t.layoutOverride||null,En=!!Js,Vs=Js?.topSpacing??et,Ys=Js?.deviceScale??Fe,Gs=Js?.layoutMode??Qe,{canvasWidth:Ia=1200,canvasHeight:kr=2200}=n.useMemo(()=>Ga({deviceId:me,orientation:La,deviceScale:Ys,topSpacing:Vs,layoutMode:Gs})||{},[me,La,Ys,Vs,Gs]);n.useEffect(()=>{qs?(zs(Lt),bs(It),ra(et)):(vs(Lt),na(It),Xt(et))},[qs,Lt,It,et]);const Nr=[{name:s("app.fonts.inter"),value:"Inter",family:"'Inter', sans-serif"},{name:s("app.fonts.roboto"),value:"Roboto",family:"'Roboto', sans-serif"},{name:s("app.fonts.montserrat"),value:"Montserrat",family:"'Montserrat', sans-serif"},{name:s("app.fonts.playfair"),value:"Playfair Display",family:"'Playfair Display', serif"},{name:s("app.fonts.merriweather"),value:"Merriweather",family:"'Merriweather', serif"},{name:s("app.fonts.system"),value:"System",family:"system-ui, -apple-system, sans-serif"}],Cr=n.useCallback(()=>{if(typeof localStorage>"u"){Ns({used:"0.00",percent:0});return}try{let t=0;for(let l=0;l<localStorage.length;l++){const h=localStorage.key(l);if(!h)continue;const y=localStorage.getItem(h);y!==null&&(t+=(h.length+y.length)*2)}const a=t/1024/1024,r=Math.min(t/(5*1024*1024)*100,100);Ns({used:a.toFixed(2),percent:r})}catch(t){console.error("Failed to calculate storage usage",t),Ns({used:"0.00",percent:0})}},[]),nt=n.useCallback(()=>({bgType:E,bgColor:W,gradientStart:Te,gradientEnd:Le,gradientAngle:_e,bgBlur:q,bgOpacity:Ge,deviceScale:Fe,orientation:xe,deviceId:me,topSpacing:et,badgeType:vt,layoutMode:Qe,frameColor:Ze,locales:$e,currentLocaleId:Re,activeSlideIndex:Ae,slides:ne,textColor:Oe,headerSize:Lt,subHeaderSize:It,selectedFont:Rt,selectedBatchDevices:Q,bgImage:_,logoImage:Ot}),[E,W,Te,Le,_e,q,Ge,Fe,xe,me,et,vt,Qe,Ze,$e,Re,ne,Oe,Lt,It,Rt,Q,_,Ot,Ae]),dt=n.useCallback(t=>{if(!t)return;Hs.current=!0,H(t.bgType??"solid"),U(t.bgColor??"#ffffff"),Xe(t.gradientStart??"#e0c3fc"),Ue(t.gradientEnd??"#8ec5fc"),Me(t.gradientAngle??135),ge(t.bgBlur??0),at(t.bgOpacity??0),ft(t.deviceScale??1),fe(l=>t.previewZoom??l??.25),be(t.orientation??"portrait"),st(t.deviceId??"iphone69"),it(t.frameColor??"black"),He(t.topSpacing??8),cs(t.badgeType??"none"),is(t.layoutMode??"top"),Ut(Array.isArray(t.locales)?t.locales:[]),Et(t.currentLocaleId??"en-US");const a=Array.isArray(t.slides)?t.slides:[];tt(a);const r=typeof t.activeSlideIndex=="number"?t.activeSlideIndex:0;Pt(a.length?Math.min(Math.max(r,0),a.length-1):0),wt(t.textColor??"#1e293b"),Kt(t.headerSize??96),jt(t.subHeaderSize??48),ds(t.selectedFont??"Inter"),je(Array.isArray(t.selectedBatchDevices)?t.selectedBatchDevices:[]),Ce(t.bgImage??null),Zt(t.logoImage??null)},[]),_r=n.useCallback(()=>{x(t=>{if(!t.past.length)return t;const a=[...t.past],r=a.pop(),l=[nt(),...t.future].slice(0,20);return dt(r),{past:a,future:l}})},[nt,dt]),Pn=n.useCallback(()=>{x(t=>{if(!t.future.length)return t;const[a,...r]=t.future,l=[...t.past,nt()].slice(-20);return dt(a),{past:l,future:r}})},[nt,dt]);n.useEffect(()=>{const t=()=>{const a=window.innerHeight,r=window.innerWidth<768;Ye(r),_s(!r),g==="single"&&(a<800?fe(.2):a<1e3?fe(.25):fe(.35))};return t(),window.addEventListener("resize",t),()=>window.removeEventListener("resize",t)},[g]),n.useEffect(()=>{if(ts){const t=setTimeout(()=>rt(""),2e3);return()=>clearTimeout(t)}},[ts]),n.useEffect(()=>{ia(vr),ca(wr)},[vr,wr]),n.useEffect(()=>{if(g==="single"){const t=document.getElementById("single-canvas")||document.querySelector('[data-capture-target="true"]');t&&(fr.current=t)}},[g]),n.useEffect(()=>{F==="data"&&Cr()},[F,Cr]),n.useEffect(()=>{if(xr.current)return;xr.current=!0;const t=nt(),a=JSON.stringify(t);ja.current=a},[nt]),n.useEffect(()=>{if(Hs.current){Hs.current=!1;return}const t=nt(),a=JSON.stringify(t);a!==ja.current&&(ja.current=a,x(r=>({past:[...r.past,t].slice(-20),future:[]})))},[nt]),n.useEffect(()=>{const t=localStorage.getItem("mockupStudioUserPresets");t&&ks(JSON.parse(t))},[]),n.useEffect(()=>{(async()=>{if(!J){ee(!1),o(null),Z(!1);return}try{const a=await Ps(J);a?.isPro!==void 0&&ee(!!a.isPro),a?.subscriptionStatus!==void 0&&o(a.subscriptionStatus||null),Z(!!a?.stripeCustomerId)}catch(a){console.error("Failed to load profile",a),ee(!1),o(null),Z(!1)}})()},[J]),n.useEffect(()=>{const t=async()=>{if(J)try{const r=await Ps(J);r?.isPro!==void 0&&ee(!!r.isPro),r?.subscriptionStatus!==void 0&&o(r.subscriptionStatus||null),r?.stripeCustomerId!==void 0&&Z(!!r.stripeCustomerId)}catch(r){console.error("Failed to refresh profile on focus",r)}},a=()=>{t()};return window.addEventListener("focus",a),()=>window.removeEventListener("focus",a)},[J]),n.useEffect(()=>{if(b||I)return;const t=new URLSearchParams(window.location.search),a=localStorage.getItem("pendingCheckoutSessionId"),r=t.get("session_id")||a;if(!r||r==="cli")return;const l=()=>{if(t.has("session_id")){t.delete("session_id");const y=t.toString(),L=`${window.location.pathname}${y?`?${y}`:""}${window.location.hash||""}`;window.history.replaceState({},"",L)}},h=async(y=1,L=6)=>{if(!f||!i?.token){se("signin"),localStorage.setItem("pendingCheckoutSessionId",r),er.current||(er.current=!0,j());return}localStorage.removeItem("pendingCheckoutSessionId"),se("pending"),w(y);try{const Y=await Ps(i.token);if(Y?.isPro){ee(!0),Y?.subscriptionStatus!==void 0&&o(Y.subscriptionStatus||null),Y?.stripeCustomerId&&Z(!0),se("success");return}}catch(Y){console.error("Failed to refresh after checkout",Y)}if(y>=L){se("retry");return}setTimeout(()=>h(y+1,L),1500)};h(),l()},[f,i?.token,b,j,I]),n.useEffect(()=>{const t=()=>{V(!0),I||N(),ee(!1),o(null),Z(!1)};return window.addEventListener("auth:unauthorized",t),()=>window.removeEventListener("auth:unauthorized",t)},[N,I]);const At=t=>t?t.type?.startsWith("image/")?t.size>20*1024*1024?(d({type:"error",message:s("app.alerts.fileSize")}),!1):!0:(d({type:"error",message:s("app.alerts.fileType")}),!1):!1,Lr=t=>new Promise((a,r)=>{const l=new FileReader;l.onload=h=>a(h.target.result),l.onerror=r,l.readAsDataURL(t)}),Dn=async()=>{const t={bgType:E,bgColor:W,gradientStart:Te,gradientEnd:Le,gradientAngle:_e,bgBlur:q,bgOpacity:Ge,deviceScale:Fe,orientation:xe,deviceId:me,topSpacing:et,layoutMode:Qe,badgeType:vt,frameColor:Ze,locales:$e,currentLocaleId:Re,slides:ne.map(a=>({...a,screenshot:null,screenshotsByLocale:{}})),textColor:Oe,headerSize:Lt,subHeaderSize:It,selectedFont:Rt,selectedBatchDevices:Q};try{const a=JSON.stringify(t);if(a.length>6e3){d({type:"error",message:s("app.alerts.shareTooLarge")});return}const r=btoa(encodeURIComponent(a).replace(/%([0-9A-F]{2})/g,(y,L)=>String.fromCharCode("0x"+L))),l=`${window.location.origin}${window.location.pathname}?project=${r}`,h=await on(l);h.ok?(rt("shared"),d({type:"success",message:h.method==="execCommand"?s("app.share.fallbackSuccess"):s("app.share.copySuccess")})):d({type:"info",message:s("app.share.manualCopy")})}catch(a){console.error("Share failed",a),d({type:"error",message:s("app.alerts.shareTooLarge")})}};n.useEffect(()=>{const a=new URLSearchParams(window.location.search).get("project");if(a)try{const r=decodeURIComponent(atob(a).split("").map(h=>"%"+("00"+h.charCodeAt(0).toString(16)).slice(-2)).join("")),l=JSON.parse(r);l.bgType&&H(l.bgType),l.bgColor&&U(l.bgColor),l.gradientStart&&Xe(l.gradientStart),l.gradientEnd&&Ue(l.gradientEnd),l.gradientAngle&&Me(l.gradientAngle),l.deviceScale&&ft(l.deviceScale),l.orientation&&be(l.orientation),l.deviceId&&st(l.deviceId),l.topSpacing&&He(l.topSpacing),l.layoutMode&&is(l.layoutMode),l.badgeType&&cs(l.badgeType),l.locales&&Ut(l.locales),l.currentLocaleId&&Et(l.currentLocaleId),l.slides&&(tt(l.slides),Pt(0)),l.textColor&&wt(l.textColor),l.headerSize&&Kt(l.headerSize),l.subHeaderSize&&jt(l.subHeaderSize),l.selectedFont&&ds(l.selectedFont),l.selectedBatchDevices&&je(l.selectedBatchDevices),l.frameColor&&it(l.frameColor)}catch(r){console.error("Failed to load project from URL",r)}},[]),n.useEffect(()=>{if(typeof window>"u")return;const t=new URLSearchParams(window.location.search),a=(t.get("upgrade")||"").trim().toLowerCase();if(!a)return;O.current=!0,(a==="1"||a==="true"||a==="yes"||a==="on")&&!k&&(Ee.current="url_param",Je("upgrade_modal_opened",{source:"url_param",is_pro:k,is_authenticated:!!X}),ae(!0)),t.delete("upgrade");const l=t.toString(),h=`${window.location.pathname}${l?`?${l}`:""}${window.location.hash||""}`;window.history.replaceState(window.history.state,"",h)},[X,k]);const ns=n.useCallback((t="unknown")=>{R||(Ee.current=t,Je("upgrade_modal_opened",{source:t,is_pro:k,is_authenticated:!!X}),ae(!0))},[X,k,R]),Ir=()=>{if(typeof window>"u")return"/app/";const t=`${window.location.pathname}${window.location.search}${window.location.hash||""}`;return t.length>1200?"/app/":t},zn=()=>{if(typeof window>"u")return"/app/?upgrade=1";try{const t=new URL(window.location.href);t.searchParams.set("upgrade","1");const a=`${t.pathname}${t.search}${t.hash||""}`;return a.length>1200?"/app/?upgrade=1":a}catch{return"/app/?upgrade=1"}},Ra=async()=>{window.location.href=`/signin?next=${encodeURIComponent(Ir())}`},Tn=async()=>{window.location.href=`/signup?next=${encodeURIComponent(Ir())}`},$n=async()=>{try{await N(),ee(!1),o(null),se("")}catch(t){console.error("Sign out failed",t)}},An=async()=>{const t=Ee.current||"unknown";try{if(Je("upgrade_cta_clicked",{source:t,is_pro:k,is_authenticated:!!X}),!X){Pa(!0),Je("upgrade_signin_redirected",{source:t}),window.location.href=`/signin?next=${encodeURIComponent(zn())}`;return}Pa();const a=void 0;if(!a)throw new Error(s("app.alerts.priceMissing"));const r=(y,L={},Y=1200)=>new Promise(re=>{let ye=!1;const S=()=>{ye||(ye=!0,re())};Je(y,{...L,event_callback:S,event_timeout:Y}),setTimeout(S,Y+150)});let l=!1;const h=async()=>{if(!l){l=!0;try{await lc({priceId:a,email:i?.email,token:J})}catch(y){console.error(y),Je("checkout_failed",{source:t}),d({type:"error",message:s("app.alerts.checkoutFailed")})}}};await r("checkout_started",{source:t,transport_type:"beacon"}),h(),ae(!1)}catch(a){console.error(a),Je("checkout_failed",{source:t}),d({type:"error",message:s("app.alerts.checkoutFailed")})}},Mn=t=>{if(k){t();return}ns("require_pro")},On=()=>{se("pending"),w(0);const t=new URLSearchParams(window.location.search);if(t.get("session_id")){t.delete("session_id");const r=t.toString(),l=`${window.location.pathname}${r?`?${r}`:""}${window.location.hash||""}`;window.history.replaceState({},"",l)}if(X&&J){const r=async(l=1,h=6)=>{se("pending"),w(l);try{if((await Ps(J))?.isPro){ee(!0),se("success");return}}catch(y){console.error("Failed to refresh after checkout",y)}if(l>=h){se("retry");return}setTimeout(()=>r(l+1,h),1500)};r()}else se("signin")},Rr=async()=>{try{if(!X||!J){d({type:"error",message:s("app.alerts.signInManage")});return}Ms(!0);let t=ce;try{const r=await Ps(J);r?.isPro!==void 0&&ee(!!r.isPro),r?.subscriptionStatus!==void 0&&o(r.subscriptionStatus||null),t=!!r?.stripeCustomerId,Z(t)}catch(r){console.error("Failed to refresh profile before portal",r)}if(!t){d({type:"error",message:s("app.alerts.portalNoCustomer")});return}const a=await Qi(J);a?.url?window.location.assign(a.url):d({type:"error",message:s("app.alerts.portalUnavailable")})}catch(t){console.error(t),d({type:"error",message:s("app.alerts.portalFailed")})}finally{Ms(!1)}},Fn=(t={})=>{if(t?.nativeEvent&&(t={}),ne.length>=50){d({type:"error",message:s("app.alerts.slideLimit")});return}Qt("add_slide",{slide_count:ne.length+1});const a=ne.length?Math.max(...ne.map(h=>h.id))+1:1,r={};$e.forEach(h=>{r[h.id]={header:s("app.defaults.newSlideTitle"),sub:s("app.defaults.newSlideDesc")}});const l={screenshot:null,screenshotsByLocale:{},texts:r,...t,id:a};tt([...ne,l]),Pt(ne.length)},Bn=async t=>{if(!t?.length)return;const a=t.filter(Y=>At?At(Y):!0);if(!a.length)return;const r=a.reduce((Y,re)=>Y+(re.size||0),0);Ss({source:"bulk_upload",file_count:a.length,total_bytes:r,scope:"shared",slide_count:Math.min(50,ne.length+a.length)});const l=[...ne],h=[...a],y=l.findIndex(Y=>!Y.screenshot);if(y!==-1&&h.length){const Y=h.shift(),re=await Lr(Y);l[y]={...l[y],screenshot:re,screenshotsByLocale:l[y]?.screenshotsByLocale||{}}}let L=l.length?Math.max(...l.map(Y=>Y.id||0)):0;for(const Y of h){if(l.length>=50)break;const re=await Lr(Y),ye={};$e.forEach(S=>{ye[S.id]={header:s("app.defaults.newSlideTitle"),sub:s("app.defaults.newSlideDesc")}}),l.push({screenshot:re,screenshotsByLocale:{},texts:ye,id:++L})}tt(l),Pt(l.length-1)},Un=(t,a)=>{if(a.stopPropagation(),ne.length>1){const r=ne.filter((l,h)=>h!==t);tt(r),Ae>=t&&Ae>0&&Pt(Ae-1)}},Hn=(t,a)=>{const r=[...ne],l=r[Ae].texts;l[Re]||(l[Re]={header:"",sub:""}),l[Re][t]=a,tt(r)},Er=(t,a,r={})=>{const l=[...ne];if(!l[t])return;const h=r?.scope??es,y=r?.localeId??Re;if(h==="locale"){const L={...l[t].screenshotsByLocale||{}};L[y]=a,l[t]={...l[t],screenshotsByLocale:L}}else l[t]={...l[t],screenshot:a};tt(l)},Wn=(t,a={})=>{const r=[...ne];if(!r[t])return;const l=a?.scope??es,h=a?.localeId??Re;if(l==="locale"){const y=r[t].screenshotsByLocale||{};if(!(h in y))return;const L={...y};delete L[h],r[t]={...r[t],screenshotsByLocale:L}}else r[t]={...r[t],screenshot:null};tt(r)},qn=t=>{const a=[...ne];if(!a[t])return;const r=a[t].screenshotsByLocale||{};Object.keys(r).length&&(a[t]={...a[t],screenshotsByLocale:{}},tt(a))},Jn=()=>{const t=[...ne];t[Ae].layoutOverride||(t[Ae].layoutOverride={deviceScale:Fe,topSpacing:et,layoutMode:Qe}),tt(t)},Vn=(t,a)=>{const r=[...ne];r[Ae].layoutOverride||(r[Ae].layoutOverride={}),r[Ae].layoutOverride[t]=a,tt(r)},Yn=()=>{const t=[...ne];delete t[Ae].layoutOverride,tt(t)},Pr=(t,a=Ae)=>{if(!At(t))return;const r=es,l=Re,h={source:"single_upload",file_count:1,total_bytes:t.size||0,scope:r,slide_count:ne.length};r==="locale"&&(h.locale_id=l),Ss(h);const y=new FileReader;y.onload=L=>Er(a,L.target.result,{scope:r,localeId:l}),y.readAsDataURL(t)},Dr=(t,a=Ae)=>{if(!At(t))return;Ss({source:"single_upload",file_count:1,total_bytes:t.size||0,scope:"shared",slide_count:ne.length});const r=new FileReader;r.onload=l=>Er(a,l.target.result,{scope:"shared"}),r.readAsDataURL(t)},Gn=t=>{const a=t?.target?.files?.[0],r=typeof Us.current=="number"?Us.current:Ae;a&&Dr(a,r),Us.current=null,t?.target&&(t.target.value="")},Zn=t=>{if(Us.current=t,!!Bs.current){try{Bs.current.value=null}catch{}Bs.current.click()}},Kn=(t,a=Ae)=>{const r=t.target.files[0];r&&Pr(r,a)},Xn=t=>{t.preventDefault(),t.stopPropagation(),fa(!0)},Qn=t=>{t.preventDefault(),t.stopPropagation(),fa(!1)},eo=t=>{t.preventDefault(),t.stopPropagation()},to=t=>{t.preventDefault(),t.stopPropagation(),fa(!1),so(t)},so=(t,a=Ae)=>{t.preventDefault();const r=t.dataTransfer.files[0];r&&Pr(r,a)},ao=t=>{t.preventDefault();const a=t.dataTransfer.files[0];if(!At(a))return;const r=new FileReader;r.onload=l=>{Ce(l.target.result),H("image")},r.readAsDataURL(a)},ro=t=>{t.preventDefault(),t.stopPropagation(),ma(!0)},no=t=>{t.preventDefault(),t.stopPropagation(),ma(!1)},oo=t=>{t.preventDefault(),t.stopPropagation()},lo=t=>{t.preventDefault(),t.stopPropagation(),ma(!1),ao(t)},io=t=>{const a=t.target.files?.[0];if(!At(a))return;const r=new FileReader;r.onload=l=>{Ce(l.target.result),H("image")},r.readAsDataURL(a)},co=t=>{t.preventDefault();const a=t.dataTransfer.files[0];if(!At(a))return;const r=new FileReader;r.onload=l=>Zt(l.target.result),r.readAsDataURL(a)},po=t=>{t.preventDefault(),t.stopPropagation(),xa(!0)},uo=t=>{t.preventDefault(),t.stopPropagation(),xa(!1)},ho=t=>{t.preventDefault(),t.stopPropagation()},fo=t=>{t.preventDefault(),t.stopPropagation(),xa(!1),co(t)},mo=t=>{const a=t.target.files?.[0];if(!At(a))return;const r=new FileReader;r.onload=l=>Zt(l.target.result),r.readAsDataURL(a)},xo=n.useCallback(()=>{Zt(null)},[]),go=t=>{!Array.isArray(t)||t.length===0||(Ut(a=>{const r=new Set(a.map(h=>h.id)),l=[...a];return t.forEach(h=>{r.has(h.id)||(l.push(h),r.add(h.id))}),l}),tt(a=>a.map(r=>{const l={...r.texts};return t.forEach(h=>{if(!l[h.id]){const y=Bt.find(L=>L.id===h.id)?.defaults||{header:"",sub:""};l[h.id]={header:y.header,sub:y.sub}}}),{...r,texts:l}})),t[0]?.id&&Et(t[0].id))},bo=n.useCallback(t=>{Et(t),!ar.current&&$e.length>1&&t&&t!==Re&&(ar.current=!0,Je("multi_locale_previewed",{locale_count:$e.length,from:Re,to:t}))},[Re,$e.length]),yo=t=>{Ut(a=>{if(a.length<=1)return a;const r=a.filter(l=>l.id!==t);return r.length?(Re===t&&Et(r[0].id),tt(l=>l.map(h=>{const y={...h.texts};if(delete y[t],!h?.screenshotsByLocale||!(t in h.screenshotsByLocale))return{...h,texts:y};const L={...h.screenshotsByLocale};return delete L[t],{...h,texts:y,screenshotsByLocale:L}})),r):a})},vo=()=>{const t=nt(),a={version:"1.0",savedAt:new Date().toISOString(),data:t},r=new Blob([JSON.stringify(a,null,2)],{type:"application/json"}),l=URL.createObjectURL(r),h=document.createElement("a");h.href=l,h.download="shipscreens-project.json",document.body.appendChild(h),h.click(),h.remove(),URL.revokeObjectURL(l)},zr=t=>{const a=t?.target?.files?.[0]||t?.dataTransfer?.files?.[0];if(!a)return;const r=new FileReader;r.onload=l=>{try{const h=JSON.parse(l.target.result),y=h?.data||h;dt(y);const L=Array.isArray(y?.locales)?y.locales.length:0;d({type:"success",message:s("app.alerts.importSuccess",{count:L})}),Qt("json_import",{locale_count:L})}catch(h){console.error("Failed to import JSON",h),d({type:"error",message:s("app.data.importError")})}},r.onerror=()=>d({type:"error",message:s("app.data.importError")}),r.readAsText(a),t?.target&&(t.target.value="")},wo=t=>{t.preventDefault(),t.stopPropagation(),ga(!0)},jo=t=>{t.preventDefault(),t.stopPropagation(),ga(!1)},So=t=>{t.preventDefault(),t.stopPropagation()},ko=t=>{t.preventDefault(),t.stopPropagation(),ga(!1),zr(t)},hs=t=>(t==null?"":t.toString()).trim(),Tr=t=>hs(t).toLowerCase().replace(/[^a-z0-9]/g,""),No=t=>{if(!Array.isArray(t)||!t.length)return 0;let a=0;return t.forEach(r=>{const l=Tr(r);if(!l)return;const h=l.match(/^(header|headline|title|subtitle|sub)(\d+)$/);if(h){const y=parseInt(h[2],10);Number.isNaN(y)||(a=Math.max(a,y));return}(l==="header"||l==="subtitle"||l==="sub")&&(a=Math.max(a,1))}),a},$r=t=>{const a=new FileReader;a.onload=r=>{const l=r.target.result,h=yc.parse(l,{header:!0,skipEmptyLines:!0,transformHeader:P=>(P||"").replace(/^\ufeff/,"").trim()}),y=Array.isArray(h.data)?h.data:[],L=[],Y=new Set,re=No(h?.meta?.fields||Object.keys(y[0]||{}));if(!re){d({type:"error",message:s("app.alerts.importInvalidCsvColumns")});return}if(re>50){d({type:"error",message:s("app.alerts.slideLimit")});return}const ye=Array.from({length:re},()=>({}));y.forEach((P,Ie)=>{const ue=new Map;Object.entries(P||{}).forEach(([lt,Yt])=>{const mt=Tr(lt);mt&&ue.set(mt,Yt)});const ot=ue.get("locale")??ue.get("language")??ue.get("lang")??ue.get("id")??"",ze=hs(ot),Se=Array.from({length:re},(lt,Yt)=>{const mt=Yt+1,Ks=ue.get(`header${mt}`)??ue.get(`headline${mt}`)??ue.get(`title${mt}`)??(mt===1?ue.get("header")??ue.get("headline")??ue.get("title"):void 0)??"",ms=ue.get(`subtitle${mt}`)??ue.get(`sub${mt}`)??(mt===1?ue.get("subtitle")??ue.get("sub"):void 0)??"";return{header:hs(Ks),sub:hs(ms)}}),pt=Se.some(lt=>lt.header||lt.sub);if(!ze&&!pt)return;const Be=ze||`lang-${Ie+1}`;if(Y.has(Be))return;const ht=Bt.find(lt=>lt.id.toLowerCase()===Be.toLowerCase());L.push({id:Be,name:ht?ht.name:Be,flag:ht?ht.flag:"??"}),Se.forEach((lt,Yt)=>{ye[Yt][Be]=lt}),Y.add(Be)});const S=h.errors?.filter(P=>P.type!=="FieldMismatch")||[];if(!L.length){d({type:"error",message:y.length?s("app.alerts.importCsvNoRows"):s("app.alerts.importInvalidCsv")});return}Wt("merge"),Ht({locales:L,slideCount:re,slidesTexts:ye,texts:ye[0]||{},errors:S.length})},a.onerror=()=>d({type:"error",message:s("app.alerts.importInvalidCsv")}),a.readAsText(t)},Co=t=>{const a=t.target.files?.[0];a&&$r(a),t?.target&&(t.target.value="")},_o=t=>{t.preventDefault(),t.stopPropagation(),ba(!0)},Lo=t=>{t.preventDefault(),t.stopPropagation(),ba(!1)},Io=t=>{t.preventDefault(),t.stopPropagation()},Ro=t=>{if(t.preventDefault(),t.stopPropagation(),ba(!1),!k){ns("csv_drop");return}const a=t.dataTransfer?.files?.[0];a&&$r(a)},Eo=()=>{kt("current"),qt(String(Math.max(1,ne.length))),us(!0)},Po=(t=Math.max(1,ne.length))=>{const a=Math.max(1,ne.length),r=Number.isFinite(t)?t:a,l=Math.min(50,Math.max(1,r)),h=["Locale"];for(let P=1;P<=l;P+=1)h.push(`Header_${P}`,`Subtitle_${P}`);const y=["en-US"],L=["ja-JP"];for(let P=1;P<=l;P+=1)y.push(`Headline ${P}`,`Subtitle ${P}`),L.push(`ヘッドライン${P}`,`サブタイトル${P}`);const re=`\uFEFF${[h.join(","),y.join(","),L.join(",")].join(`
12
+ `)}`,ye=`data:text/csv;charset=utf-8,${encodeURIComponent(re)}`,S=document.createElement("a");S.href=ye,S.download="shipscreens-copy-template.csv",document.body.appendChild(S),S.click(),document.body.removeChild(S)},Do=()=>{const t=Math.max(1,ne.length);let a=t;if(bt==="current")a=t;else if(bt==="custom"){const r=parseInt(rs,10);a=Number.isFinite(r)?r:t}else{const r=parseInt(bt,10);a=Number.isFinite(r)?r:t}Po(a),us(!1),kt("current"),qt(String(t))},zo=()=>{if(!We)return;let t=We.locales;const a=new Set($e.map(S=>S.id));if(St==="merge"){const S=new Map($e.map(Ie=>[Ie.id,Ie])),P=[...$e];We.locales.forEach(Ie=>{if(S.has(Ie.id)){const ue=P.findIndex(ot=>ot.id===Ie.id);P[ue]={...S.get(Ie.id),...Ie}}else P.push(Ie)}),t=P}const r=Math.max(ne.length,We.slideCount||1);if(r>50){d({type:"error",message:s("app.alerts.slideLimit")});return}const l=new Set(t.map(S=>S.id)),h=t.filter(S=>!a.has(S.id)).length,y=Array.from(a).filter(S=>!l.has(S)).length,L=[...ne];let Y=L.length?Math.max(...L.map(S=>S.id||0)):0;for(;L.length<r;)Y+=1,L.push({id:Y,screenshot:null,screenshotsByLocale:{},texts:{}});const re=Array.isArray(We.slidesTexts)?We.slidesTexts:[],ye=L.map((S,P)=>{const Ie={...S?.texts||{}},ue=St==="replace"?Object.fromEntries(Object.entries(Ie).filter(([ze])=>l.has(ze))):Ie;t.forEach(ze=>{ue[ze.id]||(ue[ze.id]={header:"",sub:""})});const ot=re[P]||{};return Object.entries(ot).forEach(([ze,Se])=>{if(!l.has(ze))return;const pt=hs(Se?.header),Be=hs(Se?.sub);if(St==="merge"){const ht=ue[ze]||{header:"",sub:""};pt&&(ht.header=pt),Be&&(ht.sub=Be),ue[ze]=ht}else ue[ze]={header:pt,sub:Be}}),{...S,texts:ue}});tt(ye),Ut(t),t.length&&Et(t[0].id),d({type:"success",message:s("app.alerts.importSuccess",{count:We.locales.length})}),Qt("csv_import",{locale_count:t.length,slide_count:r}),Je("copy_imported",{locale_count:t.length,slide_count:r,import_mode:St,added_locale_count:h,removed_locale_count:y}),Ht(null),Wt("merge")},To=(t,a)=>new Promise((r,l)=>{if(window[a])return r(window[a]);const h=document.createElement("script");h.src=t,h.onload=()=>r(window[a]),h.onerror=l,document.head.appendChild(h)}),$o=async()=>(window.JSZip||await To("https://cdnjs.cloudflare.com/ajax/libs/jszip/3.10.1/jszip.min.js","JSZip"),window.JSZip),Ao=t=>new Promise((a,r)=>{const l=new FileReader;l.onload=h=>a(h.target.result),l.onerror=r,l.readAsDataURL(t)}),Mo=t=>{const a=(t==null?"":t.toString()).trim();if(!a)return"";const r=a.replace(/_/g,"-"),l=r.split("-").filter(Boolean);return l.length?l.map((y,L)=>L===0?y.toLowerCase():y.length===2&&/^[a-zA-Z]{2}$/.test(y)?y.toUpperCase():y.length===4&&/^[a-zA-Z]{4}$/.test(y)?`${y[0].toUpperCase()}${y.slice(1).toLowerCase()}`:y).join("-"):r},Oo=t=>{const a=Mo(t);if(!a)return"";const r=$e.find(h=>h.id.toLowerCase()===a.toLowerCase());if(r)return r.id;const l=Bt.find(h=>h.id.toLowerCase()===a.toLowerCase());return l?l.id:a},Ar=t=>{const a=(t==null?"":t.toString()).trim();if(!a)return null;const r=a.replace(/\\/g,"/"),l=r.split("/").filter(Boolean),y=(l.length?l[l.length-1]:r).replace(/\.[^.]+$/,""),L=[],Y=new Set([...$e.map(ze=>ze.id.toLowerCase()),...Bt.map(ze=>ze.id.toLowerCase())]),re=/^[A-Za-z]{2,3}(?:-[A-Za-z0-9]{2,8})+$/;l.slice(0,-1).forEach(ze=>{const Se=ze.trim();if(!Se)return;const pt=Se.toLowerCase();if(Y.has(pt)){L.push(Se);return}if(re.test(Se)){L.push(Se);return}Se.length===2&&/^[A-Za-z]{2}$/.test(Se)&&L.push(Se)});let ye="",S=y;const P=y.match(/^([A-Za-z]{2,3}(?:-[A-Za-z0-9]{2,8})*)(?:[ _-]+)(.+)$/);P?(ye=P[1],S=P[2]||""):L.length&&(ye=L[L.length-1]);const Ie=Oo(ye);if(!Ie)return null;const ue=(S||y).match(/\d+/g);if(!ue?.length)return null;const ot=parseInt(ue[ue.length-1],10);return Number.isFinite(ot)?{localeId:Ie,slideNumber:ot}:null},fs=()=>{Jt(null),Tt({current:0,total:0}),c(!1),Ws.current=[],ka.current=null};ls({isOpen:!!Pe,onClose:yt?void 0:fs,panelRef:dr,initialFocusRef:yt?void 0:pr,closeOnEscape:!yt});const Fo=async t=>{const a=Array.from(t||[]);if(a.length)try{fs();const r=Se=>(Se?.name||"").toLowerCase().endsWith(".zip")||Se?.type==="application/zip"||Se?.type==="application/x-zip-compressed",l=a.find(r)||null;if(l){const pt=await(await $o()).loadAsync(l);ka.current=pt;const Be=[],ht=new Set,lt=new Set;let Yt=0,mt=0,Ks=0,ms=0;if(Object.values(pt.files||{}).forEach(Mt=>{if(!Mt||Mt.dir)return;const Aa=Mt.name||"";if(!/\.(png|jpe?g|webp)$/i.test(Aa)){mt+=1;return}const os=Ar(Aa);if(!os){Yt+=1;return}if(os.slideNumber<1||os.slideNumber>50){Ks+=1;return}const qr=os.slideNumber-1;ms=Math.max(ms,os.slideNumber);const Ma=`${os.localeId}#${qr}`;lt.has(Ma)&&ht.add(Ma),lt.add(Ma),Be.push({kind:"zip",entryName:Aa,localeId:os.localeId,slideIndex:qr})}),Ws.current=Be,!Be.length){d({type:"error",message:s("app.screenshotImporter.noMatches")});return}const Wr=Array.from(new Set(Be.map(Mt=>Mt.localeId))),il=new Set($e.map(Mt=>Mt.id.toLowerCase())),cl=Wr.filter(Mt=>!il.has(Mt.toLowerCase())),dl=Math.max(ne.length,ms),pl=Math.max(0,dl-ne.length);Jt({source:{type:"zip",name:l.name||"screenshots.zip"},totalFound:Be.length,localeCount:Wr.length,newLocaleCount:cl.length,slideCount:ms,addedSlideCount:pl,skipped:Yt,skippedNotImage:mt,skippedOutOfRange:Ks,duplicateCount:ht.size});return}const h=a.filter(Se=>Se?.type?.startsWith("image/")||/\.(png|jpe?g|webp)$/i.test(Se?.name||""));if(!h.length){d({type:"error",message:s("app.screenshotImporter.noFiles")});return}const y=[],L=new Set,Y=new Set;let re=0,ye=0,S=0;if(h.forEach(Se=>{const pt=Se?.webkitRelativePath||Se?.name||"",Be=Ar(pt);if(!Be){re+=1;return}if(Be.slideNumber<1||Be.slideNumber>50){ye+=1;return}const ht=Be.slideNumber-1;S=Math.max(S,Be.slideNumber);const lt=`${Be.localeId}#${ht}`;Y.has(lt)&&L.add(lt),Y.add(lt),y.push({kind:"file",file:Se,localeId:Be.localeId,slideIndex:ht,path:pt})}),Ws.current=y,!y.length){d({type:"error",message:s("app.screenshotImporter.noMatches")});return}const P=Array.from(new Set(y.map(Se=>Se.localeId))),Ie=new Set($e.map(Se=>Se.id.toLowerCase())),ue=P.filter(Se=>!Ie.has(Se.toLowerCase())),ot=Math.max(ne.length,S),ze=Math.max(0,ot-ne.length);Jt({source:{type:"files",name:s("app.screenshotImporter.filesLabel",{count:h.length})},totalFound:y.length,localeCount:P.length,newLocaleCount:ue.length,slideCount:S,addedSlideCount:ze,skipped:re,skippedOutOfRange:ye,duplicateCount:L.size})}catch(r){console.error("Locale screenshot import failed",r),d({type:"error",message:s("app.screenshotImporter.failed")})}},Bo=async()=>{if(!Pe)return;const t=Ws.current||[];if(!t.length){fs();return}if(yt)return;c(!0),Tt({current:0,total:t.length});let a=0;try{const r=Array.from(new Set(t.map(S=>S.localeId))),l=new Set($e.map(S=>S.id.toLowerCase())),h=[...$e];r.forEach(S=>{if(l.has(S.toLowerCase()))return;const P=Bt.find(Ie=>Ie.id.toLowerCase()===S.toLowerCase());h.push({id:P?P.id:S,name:P?P.name:S,flag:P?P.flag:"??"}),l.add(S.toLowerCase())});const y=Math.max(0,...t.map(S=>S.slideIndex)),L=Math.max(ne.length,y+1);if(L>50){d({type:"error",message:s("app.alerts.slideLimit")}),c(!1);return}const Y=[...ne].map(S=>({...S,screenshot:S?.screenshot??null,screenshotsByLocale:{...S?.screenshotsByLocale||{}},texts:{...S?.texts||{}}}));Y.forEach(S=>{h.forEach(P=>{if(S.texts?.[P.id])return;const Ie=Bt.find(ue=>ue.id===P.id)?.defaults||{header:"",sub:""};S.texts[P.id]={header:Ie.header||"",sub:Ie.sub||""}})});let re=Y.length?Math.max(...Y.map(S=>S.id||0)):0;for(;Y.length<L;){re+=1;const S={};h.forEach(P=>{S[P.id]={header:s("app.defaults.newSlideTitle"),sub:s("app.defaults.newSlideDesc")}}),Y.push({id:re,screenshot:null,screenshotsByLocale:{},texts:S})}const ye=ka.current;for(let S=0;S<t.length;S+=1){const P=t[S],Ie=Y[P.slideIndex];if(!Ie){a+=1,Tt({current:S+1,total:t.length});continue}try{let ue=null;if(P.kind==="file")ue=P.file;else if(P.kind==="zip"&&ye){const ze=ye.file(P.entryName);ze&&(ue=await ze.async("blob"))}if(!ue){a+=1,Tt({current:S+1,total:t.length});continue}const ot=await Ao(ue);Ie.screenshotsByLocale[P.localeId]=ot}catch{a+=1}Tt({current:S+1,total:t.length})}tt(Y),Ut(h),h.length&&!h.some(S=>S.id===Re)&&Et(h[0].id),d({type:a?"info":"success",message:a?s("app.screenshotImporter.appliedWithErrors",{count:t.length-a,errors:a}):s("app.screenshotImporter.applied",{count:t.length})}),fs()}catch(r){console.error("Failed to apply locale screenshots",r),d({type:"error",message:s("app.screenshotImporter.failed")}),c(!1)}};function Uo(t){switch(t){case"dark":H("solid"),U("#0f172a"),wt("#f8fafc"),it("black");break;case"clean":H("solid"),U("#f8fafc"),wt("#1e293b"),it("silver");break;case"pop":H("gradient"),Xe("#ff9a9e"),Ue("#fecfef"),Me(135),wt("#ffffff"),it("titanium");break}}const Zs=n.useCallback(t=>{if(k||typeof window>"u")return;const a=Date.now(),r=1440*60*1e3;try{const l=Number(localStorage.getItem(an)||0);if(l&&a-l<r)return;localStorage.setItem(an,String(a))}catch{}Je("upsell_toast_shown",{surface:"export",export_type:t,is_pro:k,is_authenticated:!!X}),d({type:"info",message:s("app.upsell.watermarkToast.message",{defaultValue:"Exported with watermark. Upgrade to remove it."}),duration:9e3,action:{label:s("app.upsell.watermarkToast.action",{defaultValue:"Remove watermark"}),onClick:()=>{Je("upsell_toast_clicked",{surface:"export",export_type:t}),ns("upsell_toast")}}})},[d,X,k,ns,s]),Ho=n.useCallback(async(t,a)=>{!t||!await br(t,a)||(Je("export_completed",{export_type:"single",device_count:1,locale_count:1,slide_count:1,device_id:me,locale_id:Re,slide_index:Ae+1,is_pro:k}),Zs("single"))},[Ae,Re,me,br,k,Zs]),Wo=n.useCallback(()=>{const t=Sa.current;t&&(t.abort(),Ve(s("app.progress.cancelling",{defaultValue:"Cancelling..."})))},[s]),Ea=n.useCallback(async()=>{const t=!k&&!I,a=5,r=(()=>{if(!t)return $e;const L=$e.find(Y=>Y.id===Re);return L?[L]:$e.slice(0,1)})(),l=t?ne.slice(0,a):ne,h=(()=>{if(!t)return Q;const L=Array.isArray(Q)?Q:[],re=new Set(L).has(me)?me:null,ye=[],S=[];L.forEach(Se=>{String(Ke[Se]?.group||"").toLowerCase().includes("android")?S.push(Se):ye.push(Se)});const P=[],Ie=re?String(Ke[re]?.group||"").toLowerCase():"",ue=re?Ie.includes("android"):!1,ot=re&&!ue?re:ye[0],ze=re&&ue?re:S[0];return ot&&P.push(ot),ze&&ze!==ot&&P.push(ze),!P.length&&L.length&&P.push(L[0]),P})();if(!h?.length){d({type:"error",message:s("app.batch.noDevices",{defaultValue:"Select at least one device."})});return}if(!r?.length){d({type:"error",message:s("app.locale.none",{defaultValue:"Add at least one locale."})});return}if(!l?.length){d({type:"error",message:s("app.slides.none",{defaultValue:"Add at least one slide."})});return}Ve(s("app.progress.preparingBundle",{defaultValue:"Preparing Fastlane ZIP..."}));const y=new AbortController;Sa.current=y;try{await yr({locales:r,slides:l,selectedDeviceIds:h,getElementById:L=>document.getElementById(`batch-canvas-${L}`),signal:y.signal,outputMode:G,onTaskStart:({localeId:L,slideNumber:Y,deviceId:re})=>{const ye=Ds(Ke[re],{id:re,mode:v}).optionLabel;Ve(s("app.progress.detail",{device:ye,locale:L,index:Y}))}}),Je("export_completed",{export_type:"batch",device_count:h.length,locale_count:r.length,slide_count:l.length,total_images:r.length*l.length*h.length,output_mode:G,is_pro:k}),d({type:"success",message:s("app.alerts.downloadSuccess",{defaultValue:"Export completed"})}),Zs("batch")}catch(L){L?.message==="Aborted"?d({type:"info",message:s("app.alerts.downloadCancelled",{defaultValue:"エクスポートをキャンセルしました"})}):(console.error("Batch download failed",L),d({type:"error",message:s("app.alerts.downloadError",{defaultValue:"Failed to export"})}))}finally{Sa.current=null,Ve("")}},[yr,$e,ne,Q,d,s,v,G,k,I,Re,me,Zs]);n.useEffect(()=>{if(I)return window.__shipscreensCli={exportBundle:()=>Ea()},()=>{try{delete window.__shipscreensCli}catch{}}},[I,Ea]);const qo=t=>{if(!t?.settings)return;const a=nt();x(l=>({past:[...l.past,a].slice(-20),future:[]})),Hs.current=!0;const r=t.settings;r.bgType&&H(r.bgType),r.bgColor&&U(r.bgColor),r.gradientStart&&Xe(r.gradientStart),r.gradientEnd&&Ue(r.gradientEnd),typeof r.gradientAngle=="number"&&Me(r.gradientAngle),r.layoutMode&&is(r.layoutMode),typeof r.topSpacing=="number"&&He(r.topSpacing),typeof r.deviceScale=="number"&&ft(r.deviceScale),r.frameColor&&it(r.frameColor),r.textColor&&wt(r.textColor),r.selectedFont&&ds(r.selectedFont),r.badgeType&&cs(r.badgeType),r.deviceId&&st(r.deviceId),d({type:"info",message:s("app.templates.applied",{name:t.name,defaultValue:`${t.name} applied`}),duration:4e3,action:{label:s("app.history.undo"),onClick:_r}})},Jo=n.useCallback(()=>{zt({value:""})},[]),Mr=n.useCallback(()=>{const t=ct?.value?.trim();if(!t)return;const a={id:Date.now().toString(),name:t,settings:{bgType:E,bgColor:W,gradientStart:Te,gradientEnd:Le,gradientAngle:_e,layoutMode:Qe,topSpacing:et,deviceScale:Fe,frameColor:Ze,textColor:Oe,selectedFont:Rt,badgeType:vt,deviceId:me}},r=[...gt,a];ks(r),localStorage.setItem("mockupStudioUserPresets",JSON.stringify(r)),zt(null),d({type:"success",message:s("app.templates.saved",{defaultValue:"Preset saved"})})},[d,vt,W,E,me,Fe,Ze,_e,Le,Te,Qe,gt,ct?.value,Rt,Oe,s,et]),Vo=n.useCallback(t=>{const a=gt.filter(r=>r.id!==t);ks(a),localStorage.setItem("mockupStudioUserPresets",JSON.stringify(a)),d({type:"info",message:s("app.templates.deleted",{defaultValue:"Preset deleted"})})},[d,gt,s]),Ls="shipscreens_project",Pa=n.useCallback((t=!1)=>{try{const a=nt(),r=t?{...a,slides:a.slides.map(h=>({...h,screenshot:null,screenshotsByLocale:{}}))}:a,l={version:"1.0",savedAt:new Date().toISOString(),data:r};localStorage.setItem(Ls,JSON.stringify(l)),rt("saved"),setTimeout(()=>rt(""),2e3),d({type:"success",message:s("app.data.saved")})}catch(a){console.error("Failed to save project",a),rt("error"),d({type:"error",message:s("app.data.saveError")})}},[nt,d,s]),Da=n.useCallback(()=>{try{const t=localStorage.getItem(Ls);if(!t){d({type:"error",message:s("app.data.noSavedProject")});return}const a=JSON.parse(t),r=a?.data||a;dt(r),rt("loaded"),setTimeout(()=>rt(""),2e3),d({type:"success",message:s("app.data.loaded")})}catch(t){console.error("Failed to load project",t),rt("error"),d({type:"error",message:s("app.data.loadError")})}},[dt,d,s]),za=n.useCallback((t="data_panel")=>{Dt({message:s("app.data.sampleConfirm"),onConfirm:()=>{dt(Ua),rt("loaded"),setTimeout(()=>rt(""),2e3),d({type:"success",message:s("app.data.sampleLoaded")}),Je("sample_project_loaded",{source:t})}})},[d,dt,Dt,s]),Yo=n.useCallback(()=>{const t=nt();return{...t,bgImage:null,logoImage:null,slides:(t.slides||[]).map(a=>({...a,screenshot:null,screenshotsByLocale:{}}))}},[nt]),Go=n.useCallback(t=>{if(!t)return;const a=nt(),r=Array.isArray(a.slides)?a.slides:[],h=(Array.isArray(t.slides)?t.slides:[]).map((y,L)=>{const Y=r.find(re=>re.id===y.id)||r[L]||null;return{...y,screenshot:Y?.screenshot??null,screenshotsByLocale:Y?.screenshotsByLocale??{}}});dt({...t,bgImage:a.bgImage??null,logoImage:a.logoImage??null,slides:h})},[nt,dt]);n.useEffect(()=>{new URLSearchParams(window.location.search).get("session_id")&&localStorage.getItem(Ls)&&Da()},[Da]);const Or=n.useRef(!1);n.useEffect(()=>{if(Or.current)return;Or.current=!0;const t=new URLSearchParams(window.location.search);if(t.get("session_id"))return;const a=t.get("sample");if(!a)return;const r=a.trim().toLowerCase();if(!["5panel","fivepanel","five-panel","five_panel","5-panel","5_panel"].includes(r))return;t.delete("sample");const h=t.toString(),y=`${window.location.pathname}${h?`?${h}`:""}${window.location.hash||""}`;if(window.history.replaceState(null,"",y),!localStorage.getItem(Ls)){dt(Ua),rt("loaded"),setTimeout(()=>rt(""),2e3),d({type:"success",message:s("app.data.sampleLoaded")}),Je("sample_project_loaded",{source:"url_param_auto"});return}O.current||za("url_param")},[d,za,dt,s]);const Fr=n.useRef(!1);n.useEffect(()=>{if(Fr.current||(Fr.current=!0,typeof window>"u"))return;const t=new URLSearchParams(window.location.search);if(t.get("session_id")||t.get("project")||t.get("sample")||t.get("upgrade"))return;let a=null;try{a=localStorage.getItem(Ls)}catch{return}if(!a){try{if(localStorage.getItem(rn)==="1")return;localStorage.setItem(rn,"1")}catch{return}Je("sample_prompt_shown",{source:"app_start"}),Dt({title:s("app.data.sampleWelcomeTitle",{defaultValue:"Quick start"}),message:s("app.data.sampleWelcomeBody",{defaultValue:"New here? Load a sample project to see the workflow (recommended)."}),cancelLabel:s("app.data.sampleWelcomeBlank",{defaultValue:"Start blank"}),confirmLabel:s("app.data.sampleWelcomeLoad",{defaultValue:"Load sample"}),onCancel:()=>Je("sample_prompt_dismissed",{source:"app_start"}),onConfirm:()=>{dt(Ua),rt("loaded"),setTimeout(()=>rt(""),2e3),d({type:"success",message:s("app.data.sampleLoaded")}),Je("sample_project_loaded",{source:"welcome_prompt"})}})}},[d,dt,Dt,s]);const Br=Nr.find(t=>t.value===Rt)?.family||"sans-serif",Zo=ts?s(`app.statuses.${ts}`):"",Ko=n.useRef(null),Ta=ss&&as.total>0,$a=n.useCallback(()=>{ve({x:0,y:0})},[]),qe=g==="batch",Xo=(()=>{if(!qe||k||I)return Q;const t=Array.isArray(Q)?Q:[],r=new Set(t).has(me)?me:null,l=[],h=[];t.forEach(S=>{String(Ke[S]?.group||"").toLowerCase().includes("android")?h.push(S):l.push(S)});const y=[],L=r?String(Ke[r]?.group||"").toLowerCase():"",Y=r?L.includes("android"):!1,re=r&&!Y?r:l[0],ye=r&&Y?r:h[0];return re&&y.push(re),ye&&ye!==re&&y.push(ye),!y.length&&t.length&&y.push(t[0]),y})(),Qo=t=>{if(qe||t.touches.length!==1)return;const a=t.touches[0];ie(!0),pe.current={x:a.clientX-C.x,y:a.clientY-C.y}},el=t=>{if(qe||!we)return;t.preventDefault();const a=t.touches[0],r=De?.85:1,l=(a.clientX-pe.current.x)*r,h=(a.clientY-pe.current.y)*r;ve({x:l,y:h})},Ur=()=>ie(!1),tl=()=>_s(t=>!t),Is=!De||xn,sl=De?Is?Math.min(Xa,240):520:0,al=t=>{De&&(gr.current=t.touches[0]?.clientY||0,ha(!0))},rl=t=>{if(!De||!Qa)return;const a=(t.touches[0]?.clientY||0)-gr.current;ua(Math.max(0,a))},nl=()=>{if(!De){ua(0),ha(!1);return}Xa>80&&_s(!1),ua(0),ha(!1)},ol=t=>{qe||(t.preventDefault(),ie(!0),pe.current={x:t.clientX-C.x,y:t.clientY-C.y})},ll=t=>{if(qe||!we)return;t.preventDefault();const a=t.clientX-pe.current.x,r=t.clientY-pe.current.y;ve({x:a,y:r})},Hr=()=>ie(!1);return n.useEffect(()=>{requestAnimationFrame(()=>$a())},[g,me,xe,A,Ia,$a]),n.useEffect(()=>{qe&&(ve({x:0,y:0}),ie(!1))},[qe]),e.jsxs("div",{className:"h-screen bg-gray-100 font-sans flex flex-col overflow-hidden text-slate-800 relative",children:[e.jsx(fl,{}),le&&e.jsxs("div",{className:"mx-4 md:mx-6 lg:mx-10 mt-2 bg-amber-100 border border-amber-200 text-amber-800 text-sm rounded-lg px-4 py-3 flex items-center gap-3 justify-between",children:[e.jsx("span",{className:"leading-snug",children:"決済に問題があります。Pro機能を継続するにはカード情報を更新してください。"}),e.jsx("button",{onClick:Rr,className:"shrink-0 px-3 py-1.5 bg-amber-500 text-white text-xs font-semibold rounded hover:bg-amber-600 transition",children:"カードを更新"})]}),e.jsx(Mi,{isOpen:R,onClose:()=>ae(!1),onUpgrade:An}),e.jsx(Fi,{isOpen:de,onClose:()=>ke(!1)}),e.jsx(Cc,{show:ss&&as.total>0,current:as.current,total:as.total,label:Ne,onCancel:ss?Wo:null}),D&&e.jsxs("div",{className:`absolute top-0 left-0 right-0 z-50 border-b text-sm text-center py-2 px-4 flex flex-wrap items-center justify-center gap-3 shadow-md ${D==="success"?"bg-green-50 border-green-100 text-green-800":D==="pending"||D==="retry"?"bg-amber-50 border-amber-100 text-amber-800":"bg-blue-50 border-blue-100 text-blue-800"}`,children:[e.jsxs("span",{children:[D==="success"&&s("app.checkout.success"),D==="pending"&&s("app.checkout.pending",{count:$}),D==="retry"&&s("app.checkout.retry"),D==="signin"&&s("app.checkout.signin")]}),(D==="pending"||D==="retry")&&e.jsx("button",{onClick:On,className:"px-3 py-1.5 rounded-full border border-amber-200 bg-white text-xs font-semibold text-amber-700 hover:bg-amber-100",children:"Check status again"}),D==="signin"&&!f&&e.jsx("button",{onClick:Ra,className:"px-3 py-1.5 rounded-full border border-blue-200 bg-white text-xs font-semibold text-blue-700 hover:bg-blue-100",children:s("auth.actions.signIn")})]}),z&&e.jsxs("div",{className:"bg-amber-50 border-b border-amber-100 text-amber-800 text-sm text-center py-2 px-4 flex items-center justify-center gap-3",children:[e.jsx("span",{children:s("app.sessionExpired.message")}),e.jsx("button",{onClick:Ra,className:"px-3 py-1.5 rounded-full border border-amber-200 bg-white text-xs font-semibold text-amber-700 hover:bg-amber-100",children:s("auth.actions.signIn")}),e.jsx("button",{onClick:()=>V(!1),className:"px-2 py-1 rounded-full text-xs text-amber-700 hover:bg-amber-100",children:s("app.sessionExpired.dismiss")})]}),e.jsxs("header",{className:"bg-white border-b border-slate-200 flex flex-wrap items-center justify-between gap-3 px-4 sm:px-8 py-3 shrink-0 z-20",children:[e.jsxs("div",{className:"flex items-center gap-3 min-w-0",children:[e.jsx("div",{className:"w-8 h-8 rounded-lg border border-slate-200 bg-slate-950 p-1 flex items-center justify-center overflow-hidden shadow-sm",children:e.jsx("img",{src:"/app/assets/icons/favicon-32x32.png?v=3",alt:"ShipScreens",className:"w-full h-full object-contain",loading:"lazy"})}),e.jsxs("h1",{className:"font-bold text-lg text-slate-900 hidden sm:flex items-center gap-2",children:["ShipScreens",k&&e.jsx("span",{className:"px-1.5 py-0.5 rounded text-[10px] font-black bg-amber-100 text-amber-700 border border-amber-200 tracking-wider",children:"PRO"})]}),e.jsxs("div",{className:"ml-4 flex bg-slate-100 rounded-lg p-1",children:[e.jsxs("button",{onClick:()=>B("single"),className:`flex items-center gap-2 px-3 py-1.5 rounded-md text-xs font-bold transition-all ${g==="single"?"bg-white text-blue-600 shadow-sm":"text-slate-500 hover:text-slate-700"}`,children:[e.jsx(ai,{size:14})," ",s("app.header.editor")]}),e.jsxs("button",{onClick:()=>{B("batch"),!k&&!I&&Je("free_bundle_preview_opened",{surface:"header_toggle"})},className:`flex items-center gap-2 px-3 py-1.5 rounded-md text-xs font-bold transition-all ${g==="batch"?"bg-white text-blue-600 shadow-sm":"text-slate-500 hover:text-slate-700"}`,children:[e.jsx(jl,{size:14})," ",s("app.header.batch"),!k&&!I&&e.jsx("span",{className:"ml-1 px-1.5 py-0.5 rounded bg-slate-200 text-slate-700 text-[10px] font-black tracking-wide",children:s("app.batch.freePreview.badge",{defaultValue:"Free preview"})})]})]})]}),e.jsxs("div",{className:"flex items-center gap-2 sm:gap-4 flex-wrap justify-end min-w-[220px]",children:[e.jsx("a",{href:"https://x.com/shipscreenscom",target:"_blank",rel:"noopener noreferrer",className:"p-2 rounded-full border border-slate-200 text-slate-600 hover:bg-slate-50","aria-label":"ShipScreens on X (opens in new tab)",children:e.jsx("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true",children:e.jsx("path",{d:"M20.5 3h-2.4L12 9.6 6.9 3H3l7.2 9.1L3.2 21h2.4L12 14l6.6 7h3.1l-7.7-9.5L20.5 3Z"})})}),e.jsx("a",{href:"/tools/",target:"_blank",rel:"noopener noreferrer",className:"hidden lg:inline text-xs font-semibold text-slate-600 hover:text-slate-900 transition-colors",children:s("landing.nav.tools")}),e.jsx("button",{type:"button",onClick:()=>{ke(!0),Je("ci_quickstart_opened",{surface:"app_header"})},className:"md:hidden p-2 rounded-full border border-slate-200 text-slate-600 hover:bg-slate-50","aria-label":s("app.header.ciQuickstart",{defaultValue:"CI quickstart"}),title:s("app.header.ciQuickstart",{defaultValue:"CI quickstart"}),children:e.jsx(Va,{size:14})}),e.jsxs("button",{type:"button",onClick:()=>{ke(!0),Je("ci_quickstart_opened",{surface:"app_header"})},className:"hidden md:flex items-center gap-2 px-3 py-1.5 bg-slate-50 text-slate-700 rounded-full text-xs font-bold hover:bg-slate-100 transition-colors border border-slate-200",children:[e.jsx(Va,{size:14}),s("app.header.ciQuickstart",{defaultValue:"CI quickstart"})]}),e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx("button",{onClick:_r,disabled:Os.past.length===0,className:"p-2 rounded-full border border-slate-200 text-slate-600 hover:bg-slate-50 disabled:opacity-40 disabled:cursor-not-allowed",title:"Undo (Ctrl/Cmd + Z)",children:e.jsx(hi,{size:14})}),e.jsx("button",{onClick:Pn,disabled:Os.future.length===0,className:"p-2 rounded-full border border-slate-200 text-slate-600 hover:bg-slate-50 disabled:opacity-40 disabled:cursor-not-allowed",title:"Redo (Ctrl/Cmd + Shift + Z)",children:e.jsx(ta,{size:14})})]}),e.jsx(ml,{}),!f&&e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("button",{onClick:Ra,disabled:b,className:"px-3 py-1.5 rounded-full border border-slate-200 text-xs font-semibold text-slate-700 hover:bg-slate-50 disabled:opacity-50",children:s("auth.actions.signIn")}),e.jsx("button",{onClick:Tn,disabled:b,className:"px-3 py-1.5 rounded-full border border-blue-200 bg-blue-50 text-xs font-semibold text-blue-700 hover:bg-blue-100 disabled:opacity-50",children:s("auth.actions.signUp")})]}),f&&e.jsx(zi,{user:i,isPro:k,onUpgrade:()=>ns("user_menu"),onManageSubscription:Rr,onSignOut:$n,isPortalLoading:pa}),e.jsxs("button",{onClick:Dn,className:"hidden md:flex items-center gap-2 px-3 py-1.5 bg-slate-50 text-slate-700 rounded-full text-xs font-bold hover:bg-slate-100 transition-colors border border-slate-200",children:[e.jsx(wi,{size:14})," ",s("app.header.share")]}),!k&&e.jsxs("button",{onClick:()=>ns("header_button"),className:"hidden md:flex items-center gap-2 px-3 py-1.5 bg-amber-100 text-amber-700 rounded-full text-xs font-bold hover:bg-amber-200 transition-colors",children:[e.jsx(Ka,{size:14})," ",s("app.header.upgrade")]}),e.jsxs("button",{onClick:()=>g==="single"?Ho(document.getElementById("single-canvas")||fr.current,`${Re}_${me}_${Ae+1}.png`):Ea(),disabled:ss,className:`px-4 py-2 text-white rounded-lg font-semibold shadow-lg hover:scale-[1.02] active:scale-[0.98] transition-all flex items-center justify-center gap-2 disabled:opacity-70 disabled:cursor-not-allowed text-sm ${g==="batch"?"bg-gradient-to-r from-blue-600 to-indigo-600 shadow-blue-500/30":"bg-slate-900 shadow-slate-900/10 hover:bg-slate-800"}`,children:[ss&&as.total===0?e.jsx(cn,{size:16,className:"animate-spin"}):g==="batch"?e.jsx(El,{size:16}):e.jsx(Sl,{size:16}),e.jsx("span",{className:"hidden sm:inline",children:s(g==="single"?k?"app.header.downloadPro":"app.header.downloadWatermark":"app.header.exportBundle")})]})]})]}),e.jsxs("div",{className:"flex-1 flex flex-col md:flex-row overflow-hidden relative",children:[De&&Is&&e.jsx("div",{className:"fixed inset-0 bg-black/40 backdrop-blur-[1px] z-[110]",onClick:()=>_s(!1)}),e.jsxs("div",{className:`w-full md:w-16 h-16 md:h-full bg-white border-t md:border-t-0 md:border-r border-slate-200 flex flex-row md:flex-col items-center justify-around md:justify-start py-2 md:py-4 shrink-0 z-30 order-last md:order-first transition-opacity ${Ta?"opacity-0 pointer-events-none":""}`,children:[e.jsx("button",{onClick:()=>K("edit"),className:`p-3 rounded-xl md:mb-2 transition-all ${F==="edit"?"bg-blue-50 text-blue-600":"text-slate-400 hover:bg-slate-50"}`,title:s("app.tabs.edit"),children:e.jsx(li,{size:20})}),e.jsx("button",{onClick:()=>K("style"),className:`p-3 rounded-xl md:mb-2 transition-all ${F==="style"?"bg-blue-50 text-blue-600":"text-slate-400 hover:bg-slate-50"}`,title:s("app.tabs.style"),children:e.jsx(ni,{size:20})}),e.jsx("button",{onClick:()=>K("templates"),className:`p-3 rounded-xl md:mb-2 transition-all ${F==="templates"?"bg-blue-50 text-blue-600":"text-slate-400 hover:bg-slate-50"}`,title:s("app.tabs.templates"),children:e.jsx(Kl,{size:20})}),e.jsx("button",{onClick:()=>K("data"),className:`p-3 rounded-xl md:mb-2 transition-all ${F==="data"?"bg-blue-50 text-blue-600":"text-slate-400 hover:bg-slate-50"}`,title:s("app.tabs.data"),children:e.jsx(Bl,{size:20})})]}),e.jsx("div",{className:`${Ta?"pointer-events-none opacity-0":""} transition-opacity`,children:e.jsx(Nc,{activeTab:F,viewMode:g,isMobile:De,controlsVisible:Is,controlsTranslation:sl,isControlsDragging:Qa,currentHeaderText:Na,currentSubText:Ca,currentLocaleId:Re,updateSlideText:Hn,currentScreenshot:Ln,screenshotUploadScope:es,setScreenshotUploadScope:ps,hasCurrentLocaleScreenshotOverride:_n,currentSlideScreenshotsByLocale:jr,currentSlideLocaleScreenshotOverrideCount:Sr,hasAnyLocaleScreenshotOverrides:In,hasSharedScreenshot:Rn,clearCurrentSlideScreenshot:()=>Wn(Ae),clearAllCurrentSlideLocaleScreenshotOverrides:()=>qn(Ae),handleFileChange:Kn,fileInputRef:jn,handleDropWrapper:to,handleDragOver:eo,handleDragEnter:Xn,handleDragLeave:Qn,isDragging:gn,locales:$e,setCurrentLocaleId:bo,removeLocale:yo,handleAddLocales:go,deviceId:me,setDeviceId:la,deviceLabelMode:v,setDeviceLabelMode:M,exportStructureMode:G,setExportStructureMode:oe,teamSyncEnabled:p,teamSyncToken:i?.token||null,captureTeamSpec:Yo,applyTeamSpec:Go,orientation:xe,setOrientation:be,isWatchSelected:qs,applyTheme:Uo,bgType:E,setBgType:H,bgInputRef:Sn,handleBgDropWrapper:lo,handleBgDragOver:oo,handleBgDragEnter:ro,handleBgDragLeave:no,isBgDragging:bn,handleBgFileChange:io,bgBlur:q,setBgBlur:ge,bgOpacity:Ge,setBgOpacity:at,bgColor:W,setBgColor:U,gradientStart:Te,setGradientStart:Xe,gradientEnd:Le,setGradientEnd:Ue,frameColor:Ze,setFrameColor:it,logoImage:Ot,logoInputRef:kn,handleLogoDropWrapper:fo,handleLogoDragOver:ho,handleLogoDragEnter:po,handleLogoDragLeave:uo,isLogoDragging:yn,handleLogoFileChange:mo,handleLogoRemove:xo,overrideActive:En,ensureSlideOverride:Jn,clearSlideOverride:Yn,updateSlideOverride:Vn,layoutMode:Qe,setLayoutMode:is,effectiveLayoutMode:Gs,selectedFont:Rt,setSelectedFont:ds,fontOptions:Nr,textColor:Oe,setTextColor:wt,recentColors:js,addRecentColor:oa,effectiveTopSpacing:Vs,setTopSpacing:He,effectiveDeviceScale:Ys,setDeviceScale:ft,badgeType:vt,setBadgeType:cs,applyPreset:qo,myPresets:gt,requirePro:Mn,openSavePresetDialog:Jo,deleteUserPreset:Vo,isPro:k,storageUsage:da,saveProject:Pa,loadProject:Da,loadSampleProject:za,setConfirmDialog:Dt,saveStatus:ts,statusMessage:Zo,handleExportJSON:vo,jsonInputRef:Cn,handleImportJSON:zr,isJsonDragging:vn,handleJsonDragOver:So,handleJsonDragEnter:wo,handleJsonDragLeave:jo,handleJsonDropWrapper:ko,isCsvDragging:wn,handleCsvDropWrapper:Ro,handleCsvDragOver:Io,handleCsvDragEnter:_o,handleCsvDragLeave:Lo,openCsvTemplateDialog:Eo,csvInputRef:Nn,handleCsvImport:Co,onImportLocaleScreenshots:Fo,selectedBatchDevices:Q,setSelectedBatchDevices:je,toggleBatchDevice:u,onTouchStart:al,onTouchMove:rl,onTouchEnd:nl})}),e.jsxs("div",{ref:mr,className:`${De?"h-full":"h-1/2"} md:h-full flex-1 md:flex-auto bg-slate-200/50 relative overflow-visible flex flex-col order-1 md:order-none border-b md:border-b-0 border-slate-200`,style:{minHeight:0,...qe?{touchAction:"auto"}:{}},children:[e.jsx("div",{className:"w-full flex justify-end pointer-events-none",children:e.jsx("div",{className:`fixed top-20 right-8 z-[400] flex flex-col items-end gap-1 pointer-events-auto transition-opacity ${Ta?"opacity-0 pointer-events-none":""}`,children:e.jsxs("div",{className:"flex items-center gap-3 bg-white/90 backdrop-blur shadow-sm border border-slate-200 rounded-full px-4 py-2",children:[e.jsx(Di,{size:14,className:"text-slate-400"}),e.jsx("input",{type:"range",min:"0.05",max:"1.0",step:"0.05",value:A,onChange:t=>fe(parseFloat(t.target.value)),className:"w-24 accent-slate-800 h-1.5 bg-slate-200 rounded-lg appearance-none cursor-pointer"}),e.jsxs("span",{className:"text-xs font-mono text-slate-500 w-8",children:[Math.round(A*100),"%"]}),g==="single"&&e.jsx("button",{onClick:$a,className:"text-[10px] text-blue-600 font-bold hover:underline px-2 border-l border-slate-200 ml-1",children:s("app.canvas.center")})]})})}),e.jsxs("div",{className:"flex-1 w-full flex flex-col overflow-visible",style:{minHeight:0},children:[e.jsx("div",{className:"flex-1 w-full pb-48",style:{overflowY:"auto",overflowX:"hidden"},children:e.jsx("div",{className:"flex flex-col items-center gap-12 p-12",style:{touchAction:qe?"auto":"pan-y pinch-zoom"},children:e.jsxs("div",{className:"grid place-items-center w-full pb-12 overflow-visible",ref:Ko,onMouseDown:qe?void 0:ol,onMouseMove:qe?void 0:ll,onMouseUp:qe?void 0:Hr,onMouseLeave:qe?void 0:Hr,onTouchStart:qe?void 0:Qo,onTouchMove:qe?void 0:el,onTouchEnd:qe?void 0:Ur,onTouchCancel:qe?void 0:Ur,style:{cursor:qe?"default":we?"grabbing":"grab",userSelect:"none",touchAction:qe?"auto":"none"},children:[g==="single"&&e.jsx("div",{style:{width:Ia*A,height:kr*A,flexShrink:0,marginLeft:"auto",marginRight:"auto"},children:e.jsx("div",{style:{transform:`translate(${C.x}px, ${C.y}px) scale(${A})`,transformOrigin:"top left",width:Ia,height:kr,transition:we?"none":"transform 0.1s ease-out",willChange:"transform"},children:e.jsx(Xr,{id:"single-canvas",deviceId:me,orientation:La,deviceScale:Ys,topSpacing:Vs,layoutMode:Gs,bgType:E,bgColor:W,gradientStart:Te,gradientEnd:Le,gradientAngle:_e,bgImage:_,bgBlur:q,bgOpacity:Ge,headerText:Na,subHeaderText:Ca,textColor:Oe,headerSize:Lt,subHeaderSize:It,selectedFont:Br,badgeType:vt,screenshot:_a,logoImage:Ot,frameColor:Ze,isPro:k})})}),g==="batch"&&e.jsxs("div",{style:{transform:qe?void 0:`translate(${C.x}px, ${C.y}px)`,transition:qe||we?"none":"transform 0.1s ease-out",willChange:qe?void 0:"transform"},className:"flex flex-wrap justify-center items-start content-start py-10",children:[!k&&!I&&e.jsx("div",{className:"w-full px-4 pb-6",children:e.jsxs("div",{className:"max-w-3xl mx-auto rounded-2xl border border-amber-200 bg-amber-50 text-amber-900 p-4 flex flex-col sm:flex-row sm:items-center sm:justify-between gap-3",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx("div",{className:"text-sm font-black",children:s("app.batch.freePreview.title",{defaultValue:"Free bundle preview"})}),e.jsx("div",{className:"text-xs text-amber-800",children:s("app.batch.freePreview.body",{defaultValue:"Limited to 1 locale × 5 slides × 1 iOS + 1 Android device (watermarked). Upgrade for full matrix exports."})})]}),e.jsx("button",{type:"button",onClick:()=>ns("free_bundle_banner"),className:"inline-flex items-center justify-center gap-2 px-4 py-2 rounded-xl bg-white text-amber-900 border border-amber-200 text-xs font-bold hover:bg-amber-100 transition",children:s("app.batch.freePreview.cta",{defaultValue:"Upgrade"})})]})}),Xo.map(t=>{const a=Ke[t],r=a?.type==="watch"?"portrait":xe,l=a?.type==="watch",h=l?Ft:ys,y=l?gs:ws,L=l?Ts:$s,{canvasWidth:Y,canvasHeight:re}=Ga({deviceId:t,orientation:r,deviceScale:Fe,topSpacing:L,layoutMode:Qe,isBatchMode:!0}),ye=Y*A,S=re*A;return e.jsxs("div",{className:"flex flex-col items-center m-4 group",children:[e.jsx("div",{className:"mb-2",children:e.jsx("span",{className:"text-xs font-bold text-slate-500 uppercase tracking-widest bg-white/90 px-3 py-1 rounded-full shadow-sm border border-slate-100 whitespace-nowrap",children:Ds(Ke[t],{id:t,mode:v}).optionLabel})}),e.jsx("div",{style:{width:ye,height:S},children:e.jsx("div",{style:{transform:`scale(${A})`,transformOrigin:"top left",width:Y,height:re},children:e.jsx("div",{id:`batch-canvas-${t}`,children:e.jsx(Xr,{id:`canvas-${t}`,deviceId:t,orientation:r,deviceScale:Fe,topSpacing:L,layoutMode:Qe,bgType:E,bgColor:W,gradientStart:Te,gradientEnd:Le,gradientAngle:_e,bgImage:_,bgBlur:q,bgOpacity:Ge,headerText:Na,subHeaderText:Ca,textColor:Oe,headerSize:h,subHeaderSize:y,selectedFont:Br,badgeType:vt,screenshot:_a,logoImage:Ot,frameColor:Ze,isBatchMode:!0,isPro:k})})})})]},t)})]})]})})}),e.jsx("input",{type:"file",ref:Bs,className:"hidden",accept:"image/*",onChange:Gn}),e.jsx(_c,{slides:ne,activeSlideIndex:Ae,setActiveSlideIndex:Pt,currentLocaleId:Re,addSlide:Fn,removeSlide:Un,onApplyFileToSlide:Dr,onOpenFilePickerForSlide:Zn,validateImageFile:At,onAddSlidesFromFiles:Bn})]})]})]}),ct&&e.jsx("div",{className:"fixed inset-0 z-[1250] bg-black/40 backdrop-blur-sm flex items-center justify-center px-4",role:"dialog","aria-modal":"true","aria-label":s("app.templates.saveCurrent"),onMouseDown:t=>{t.target===t.currentTarget&&Fs()},children:e.jsxs("div",{ref:rr,className:"bg-white rounded-xl shadow-xl border border-slate-200 w-full max-w-sm p-5 space-y-4",children:[e.jsx("h3",{className:"text-base font-semibold text-slate-800",children:s("app.templates.saveCurrent")}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("label",{className:"block text-xs font-medium text-slate-600",htmlFor:"preset-name-input",children:s("app.prompts.presetName")}),e.jsx("input",{id:"preset-name-input",ref:nr,value:ct.value,onChange:t=>zt({value:t.target.value}),onKeyDown:t=>{t.key==="Enter"&&ct.value.trim()&&Mr(),t.key==="Escape"&&Fs()},placeholder:s("app.prompts.presetDefault"),className:"w-full rounded-lg border border-slate-300 px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500",autoFocus:!0})]}),e.jsxs("div",{className:"flex justify-end gap-2",children:[e.jsx("button",{className:"px-3 py-1.5 text-sm rounded-lg border border-slate-200 text-slate-600 hover:bg-slate-50",onClick:Fs,children:s("auth.actions.cancel")||"Cancel"}),e.jsx("button",{disabled:!ct.value.trim(),className:"px-3 py-1.5 text-sm rounded-lg bg-blue-600 text-white hover:bg-blue-700 disabled:opacity-60 disabled:cursor-not-allowed",onClick:Mr,children:s("app.header.confirm")||"OK"})]})]})}),De&&e.jsxs(e.Fragment,{children:[Is&&e.jsx("div",{className:"fixed inset-0 z-[90] bg-black/20 backdrop-blur-[1px] md:hidden",onClick:()=>_s(!1)}),e.jsxs("button",{onClick:tl,className:"fixed bottom-20 right-4 z-[110] md:hidden px-4 py-2 rounded-full shadow-lg bg-white border border-slate-200 text-sm font-semibold text-slate-700 flex items-center gap-2",children:[e.jsx(Ya,{size:16}),s(Is?"app.mobile.closeControls":"app.mobile.openControls")]})]}),e.jsxs("footer",{className:"border-t border-slate-200 bg-white text-[11px] text-slate-500 py-3 px-4 md:px-8 flex flex-col md:flex-row items-center justify-between gap-2",children:[e.jsxs("span",{className:"font-medium",children:["© ",new Date().getFullYear()," ShipScreens"]}),e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("a",{href:"/terms",className:"hover:text-slate-700 underline-offset-2 hover:underline",children:s("landing.footer.terms")}),e.jsx("a",{href:"/privacy",className:"hover:text-slate-700 underline-offset-2 hover:underline",children:s("landing.footer.privacy")}),e.jsx("a",{href:"/legal",className:"hover:text-slate-700 underline-offset-2 hover:underline",children:s("landing.footer.legal")})]})]}),Cs&&e.jsx("div",{className:"fixed inset-0 z-[1220] bg-black/40 backdrop-blur-sm flex items-center justify-center px-4",role:"dialog","aria-modal":"true","aria-label":s("app.importer.templateDialog.title"),onMouseDown:t=>{t.target===t.currentTarget&&ya()},children:e.jsxs("div",{ref:or,className:"bg-white rounded-xl shadow-xl border border-slate-200 w-full max-w-sm p-5 space-y-4",children:[e.jsx("h3",{className:"text-base font-semibold text-slate-800",children:s("app.importer.templateDialog.title")}),e.jsx("p",{className:"text-sm text-slate-600",children:s("app.importer.templateDialog.description")}),e.jsxs("div",{className:"rounded-lg border border-slate-200 bg-slate-50/60 p-3 space-y-2",children:[e.jsxs("label",{className:"flex items-start gap-2 text-sm text-slate-700",children:[e.jsx("input",{ref:lr,type:"radio",name:"csv-template-slide-count",value:"current",checked:bt==="current",onChange:()=>kt("current"),className:"mt-1 accent-blue-600"}),e.jsxs("div",{children:[e.jsx("div",{className:"font-semibold text-sm",children:s("app.importer.templateDialog.optionCurrent",{count:Math.max(1,ne.length)})}),e.jsx("div",{className:"text-[11px] text-slate-500",children:s("app.importer.templateDialog.optionCurrentDesc")})]})]}),e.jsxs("label",{className:"flex items-start gap-2 text-sm text-slate-700",children:[e.jsx("input",{type:"radio",name:"csv-template-slide-count",value:"custom",checked:bt==="custom",onChange:()=>{kt("custom"),qt(t=>t||String(Math.max(1,ne.length)))},className:"mt-1 accent-blue-600"}),e.jsxs("div",{className:"flex-1",children:[e.jsx("div",{className:"font-semibold text-sm",children:s("app.importer.templateDialog.optionCustom")}),e.jsxs("div",{className:"mt-1 flex items-center gap-2",children:[e.jsx("input",{type:"number",min:1,max:50,step:1,value:rs,onChange:t=>{kt("custom"),qt(t.target.value)},className:`w-20 rounded-lg border px-2 py-1 text-sm focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500 ${bt==="custom"?"bg-white border-slate-300 text-slate-900":"bg-slate-100 border-slate-200 text-slate-500"}`,disabled:bt!=="custom"}),e.jsx("span",{className:"text-[11px] text-slate-500",children:s("app.importer.templateDialog.optionCustomUnit")})]}),e.jsx("div",{className:"text-[11px] text-slate-500",children:s("app.importer.templateDialog.optionCustomDesc")})]})]}),[5,7,10].map(t=>e.jsxs("label",{className:"flex items-start gap-2 text-sm text-slate-700",children:[e.jsx("input",{type:"radio",name:"csv-template-slide-count",value:String(t),checked:bt===String(t),onChange:()=>kt(String(t)),className:"mt-1 accent-blue-600"}),e.jsxs("div",{children:[e.jsx("div",{className:"font-semibold text-sm",children:s("app.importer.templateDialog.optionPreset",{count:t})}),e.jsx("div",{className:"text-[11px] text-slate-500",children:s("app.importer.templateDialog.optionPresetDesc")})]})]},t))]}),e.jsxs("div",{className:"flex justify-end gap-2",children:[e.jsx("button",{className:"px-3 py-1.5 text-sm rounded-lg border border-slate-200 text-slate-600 hover:bg-slate-50",onClick:ya,children:s("auth.actions.cancel")||"Cancel"}),e.jsx("button",{className:"px-3 py-1.5 text-sm rounded-lg bg-blue-600 text-white hover:bg-blue-700",onClick:Do,disabled:(()=>{if(bt!=="custom")return!1;const t=parseInt(rs,10);return!Number.isFinite(t)||t<1||t>50})(),children:s("app.importer.templateDialog.download")})]})]})}),We&&e.jsx("div",{className:"fixed inset-0 z-[1225] bg-black/40 backdrop-blur-sm flex items-center justify-center px-4",role:"dialog","aria-modal":"true","aria-label":s("app.importer.previewTitle"),onMouseDown:t=>{t.target===t.currentTarget&&va()},children:e.jsxs("div",{ref:ir,className:"bg-white rounded-xl shadow-xl border border-slate-200 w-full max-w-md p-5 space-y-4",children:[e.jsx("h3",{className:"text-base font-semibold text-slate-800",children:s("app.importer.previewTitle")}),e.jsx("p",{className:"text-sm text-slate-600",children:s("app.importer.previewSummary",{count:We.locales.length,slides:We.slideCount||1})}),We.errors>0&&e.jsx("p",{className:"text-xs text-amber-600 bg-amber-50 border border-amber-100 rounded-lg p-2",children:s("app.importer.previewWarning",{count:We.errors})}),(()=>{const t=ne.length,a=We.slideCount||1;return a>t?e.jsx("p",{className:"text-xs text-blue-700 bg-blue-50 border border-blue-100 rounded-lg p-2",children:s("app.importer.previewSlideNoteAdd",{count:a-t})}):a<t?e.jsx("p",{className:"text-xs text-slate-600 bg-slate-50 border border-slate-100 rounded-lg p-2",children:s("app.importer.previewSlideNotePartial",{count:a,from:a+1})}):null})(),(()=>{const t=new Set($e.map(P=>P.id)),a=new Set(We.locales.map(P=>P.id)),r=Array.from(a).filter(P=>!t.has(P)).length,l=Array.from(t).filter(P=>!a.has(P)).length,h=Array.from(a).filter(P=>t.has(P)).length,y=t.size-h,L=ne.length,Y=We.slideCount||1,re=Math.max(0,Y-L),ye=Math.max(0,L-Y),S=[];return r>0&&S.push({key:"loc-add",tone:"good",label:s("app.importer.delta.localesAdded",{count:r})}),St==="replace"?(l>0&&S.push({key:"loc-remove",tone:"bad",label:s("app.importer.delta.localesRemoved",{count:l})}),h>0&&S.push({key:"loc-kept",tone:"neutral",label:s("app.importer.delta.localesKept",{count:h})})):(h>0&&S.push({key:"loc-update",tone:"info",label:s("app.importer.delta.localesUpdated",{count:h})}),y>0&&S.push({key:"loc-unchanged",tone:"neutral",label:s("app.importer.delta.localesUnchanged",{count:y})})),re>0&&S.push({key:"slide-add",tone:"good",label:s("app.importer.delta.slidesAdded",{count:re})}),ye>0&&S.push({key:"slide-unchanged",tone:"neutral",label:s("app.importer.delta.slidesUnchanged",{count:ye})}),S.length?e.jsxs("div",{className:"rounded-lg border border-slate-200 bg-slate-50/60 p-3 space-y-2",children:[e.jsx("div",{className:"text-xs font-semibold text-slate-700",children:s("app.importer.previewChangesTitle")}),e.jsx("div",{className:"flex flex-wrap gap-2",children:S.map(P=>{const Ie=P.tone==="bad"?"bg-rose-50 text-rose-700 border-rose-100":P.tone==="good"?"bg-emerald-50 text-emerald-700 border-emerald-100":P.tone==="info"?"bg-blue-50 text-blue-700 border-blue-100":"bg-white text-slate-700 border-slate-200";return e.jsx("span",{className:`px-2 py-1 rounded-full border text-[11px] font-semibold ${Ie}`,children:P.label},P.key)})})]}):null})(),e.jsxs("div",{className:"border border-slate-200 rounded-lg divide-y divide-slate-100 max-h-60 overflow-auto",children:[We.locales.slice(0,4).map(t=>{const a=We.slideCount||1,r=Math.min(2,a),l=Array.from({length:r},(h,y)=>y);return e.jsxs("div",{className:"p-3",children:[e.jsxs("div",{className:"text-xs font-semibold text-slate-700 flex justify-between",children:[e.jsx("span",{children:t.name}),e.jsx("span",{className:"text-slate-400",children:t.id})]}),e.jsxs("div",{className:"mt-1 text-[11px] text-slate-600 space-y-1",children:[l.map(h=>{const y=We.slidesTexts?.[h]?.[t.id]||{};return e.jsxs("div",{children:[e.jsxs("span",{className:"font-semibold text-slate-500",children:["#",h+1]})," ",y.header||"-"," ",e.jsx("span",{className:"text-slate-400",children:"/"})," ",y.sub||"-"]},`${t.id}-${h}`)}),a>r&&e.jsx("div",{className:"text-[10px] text-slate-400",children:s("app.importer.previewMoreSlides",{extra:a-r})})]})]},t.id)}),We.locales.length>4&&e.jsx("div",{className:"p-2 text-[11px] text-slate-500 text-center",children:s("app.importer.previewMore",{extra:We.locales.length-4})})]}),e.jsxs("div",{className:"rounded-lg border border-slate-200 bg-slate-50/60 p-3 space-y-2",children:[e.jsx("div",{className:"text-xs font-semibold text-slate-700",children:s("app.importer.mode.label")}),e.jsxs("label",{className:"flex items-start gap-2 text-sm text-slate-700",children:[e.jsx("input",{type:"radio",name:"csv-apply-mode",value:"merge",checked:St==="merge",onChange:()=>Wt("merge"),className:"mt-1 accent-blue-600"}),e.jsxs("div",{children:[e.jsx("div",{className:"font-semibold text-sm",children:s("app.importer.mode.merge")}),e.jsx("div",{className:"text-[11px] text-slate-500",children:s("app.importer.mode.mergeDesc")})]})]}),e.jsxs("label",{className:"flex items-start gap-2 text-sm text-slate-700",children:[e.jsx("input",{type:"radio",name:"csv-apply-mode",value:"replace",checked:St==="replace",onChange:()=>Wt("replace"),className:"mt-1 accent-blue-600"}),e.jsxs("div",{children:[e.jsx("div",{className:"font-semibold text-sm",children:s("app.importer.mode.replace")}),e.jsx("div",{className:"text-[11px] text-slate-500",children:s("app.importer.mode.replaceDesc")})]})]})]}),e.jsxs("div",{className:"flex justify-end gap-2",children:[e.jsx("button",{ref:cr,className:"px-3 py-1.5 text-sm rounded-lg border border-slate-200 text-slate-600 hover:bg-slate-50",onClick:va,children:s("auth.actions.cancel")||"Cancel"}),e.jsx("button",{className:"px-3 py-1.5 text-sm rounded-lg bg-blue-600 text-white hover:bg-blue-700",onClick:zo,children:s("app.importer.previewApply")})]})]})}),Pe&&e.jsx("div",{className:"fixed inset-0 z-[1230] bg-black/40 backdrop-blur-sm flex items-center justify-center px-4",role:"dialog","aria-modal":"true","aria-label":s("app.screenshotImporter.dialog.title"),onMouseDown:t=>{yt||t.target===t.currentTarget&&fs()},children:e.jsxs("div",{ref:dr,className:"bg-white rounded-xl shadow-xl border border-slate-200 w-full max-w-md p-5 space-y-4",children:[e.jsx("h3",{className:"text-base font-semibold text-slate-800",children:s("app.screenshotImporter.dialog.title")}),e.jsx("p",{className:"text-sm text-slate-600",children:s("app.screenshotImporter.dialog.summary",{count:Pe.totalFound,locales:Pe.localeCount,slides:Pe.slideCount})}),e.jsx("p",{className:"text-xs text-slate-500",children:s("app.screenshotImporter.dialog.source",{source:Pe.source?.name||""})}),(Pe.newLocaleCount>0||Pe.addedSlideCount>0)&&e.jsxs("div",{className:"text-xs text-blue-700 bg-blue-50 border border-blue-100 rounded-lg p-2 space-y-1",children:[Pe.newLocaleCount>0&&e.jsx("div",{children:s("app.screenshotImporter.dialog.noteAddLocales",{count:Pe.newLocaleCount})}),Pe.addedSlideCount>0&&e.jsx("div",{children:s("app.screenshotImporter.dialog.noteAddSlides",{count:Pe.addedSlideCount})})]}),(Pe.skipped>0||Pe.skippedNotImage>0||Pe.skippedOutOfRange>0)&&e.jsxs("div",{className:"text-xs text-amber-700 bg-amber-50 border border-amber-100 rounded-lg p-2 space-y-1",children:[Pe.skipped>0&&e.jsx("div",{children:s("app.screenshotImporter.dialog.warnSkipped",{count:Pe.skipped})}),Pe.skippedNotImage>0&&e.jsx("div",{children:s("app.screenshotImporter.dialog.warnNotImages",{count:Pe.skippedNotImage})}),Pe.skippedOutOfRange>0&&e.jsx("div",{children:s("app.screenshotImporter.dialog.warnOutOfRange",{count:Pe.skippedOutOfRange})})]}),Pe.duplicateCount>0&&e.jsx("div",{className:"text-xs text-slate-600 bg-slate-50 border border-slate-100 rounded-lg p-2",children:s("app.screenshotImporter.dialog.noteDuplicates",{count:Pe.duplicateCount})}),yt&&e.jsx("div",{className:"text-xs text-slate-600 bg-slate-50 border border-slate-100 rounded-lg p-2",children:s("app.screenshotImporter.dialog.progress",{current:Vt.current,total:Vt.total})}),e.jsxs("div",{className:"flex justify-end gap-2",children:[e.jsx("button",{ref:pr,className:"px-3 py-1.5 text-sm rounded-lg border border-slate-200 text-slate-600 hover:bg-slate-50 disabled:opacity-60 disabled:cursor-not-allowed",onClick:fs,disabled:yt,children:s("auth.actions.cancel")||"Cancel"}),e.jsx("button",{className:"px-3 py-1.5 text-sm rounded-lg bg-blue-600 text-white hover:bg-blue-700 disabled:opacity-60 disabled:cursor-not-allowed",onClick:Bo,disabled:yt,children:s(yt?"app.screenshotImporter.dialog.applying":"app.screenshotImporter.dialog.apply")})]})]})}),xt&&e.jsx("div",{className:"fixed inset-0 z-[1200] bg-black/40 backdrop-blur-sm flex items-center justify-center px-4",role:"dialog","aria-modal":"true","aria-label":xt.title||s("app.data.title"),onMouseDown:t=>{t.target===t.currentTarget&&wa()},children:e.jsxs("div",{ref:ur,className:"bg-white rounded-xl shadow-xl border border-slate-200 w-full max-w-sm p-4 space-y-4",children:[e.jsx("h3",{className:"text-sm font-semibold text-slate-800",children:xt.title||s("app.data.title")}),e.jsx("p",{className:"text-sm text-slate-600",children:xt.message}),e.jsxs("div",{className:"flex justify-end gap-2",children:[e.jsx("button",{ref:hr,className:"px-3 py-1.5 text-sm rounded-lg border border-slate-200 text-slate-600 hover:bg-slate-50",onClick:wa,children:xt.cancelLabel||s("auth.actions.cancel")||"Cancel"}),e.jsx("button",{className:"px-3 py-1.5 text-sm rounded-lg bg-blue-600 text-white hover:bg-blue-700",onClick:()=>{xt.onConfirm?.(),Dt(null)},children:xt.confirmLabel||s("app.header.confirm")||"OK"})]})]})})]})};export{Uc as default};
13
+ //# sourceMappingURL=App-DU0xew0e.js.map