appscms-tools-theme 5.2.5 → 5.2.6

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 (631) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE.txt +21 -0
  3. data/README.md +50 -0
  4. data/_data/.DS_Store +0 -0
  5. data/_data/about/en/about.json +17 -0
  6. data/_data/aitools/en/ai-article-writer.json +184 -0
  7. data/_data/aitools/en/all-in-one-social-post.json +217 -0
  8. data/_data/aitools/en/amazon-product-bullet-points-generator.json +224 -0
  9. data/_data/aitools/en/amazon-product-description-generator.json +237 -0
  10. data/_data/aitools/en/blog-conclusion-generator.json +253 -0
  11. data/_data/aitools/en/blog-content-calendar.json +232 -0
  12. data/_data/aitools/en/blog-introduction-generator.json +246 -0
  13. data/_data/aitools/en/blog-outline-generator.json +232 -0
  14. data/_data/aitools/en/blog-section-generator.json +253 -0
  15. data/_data/aitools/en/blog-title-generator.json +232 -0
  16. data/_data/aitools/en/blog-topic-ideas.json +232 -0
  17. data/_data/aitools/en/brand-name-generator.json +215 -0
  18. data/_data/aitools/en/caption-generator.json +271 -0
  19. data/_data/aitools/en/engagement-post-generator.json +251 -0
  20. data/_data/aitools/en/facebook-post.json +232 -0
  21. data/_data/aitools/en/hidden-fact-finder.json +232 -0
  22. data/_data/aitools/en/human-written-blog-post.json +232 -0
  23. data/_data/aitools/en/instagram-bio-generator.json +246 -0
  24. data/_data/aitools/en/instagram-caption.json +232 -0
  25. data/_data/aitools/en/instagram-carousel.json +250 -0
  26. data/_data/aitools/en/instagram-hashtag-generator.json +231 -0
  27. data/_data/aitools/en/instagram-name-generator.json +239 -0
  28. data/_data/aitools/en/instagram-threads-generator.json +239 -0
  29. data/_data/aitools/en/interactive-content-creator.json +252 -0
  30. data/_data/aitools/en/linkedin-hashtag-generator.json +239 -0
  31. data/_data/aitools/en/linkedin-post.json +232 -0
  32. data/_data/aitools/en/motivational-posts.json +239 -0
  33. data/_data/aitools/en/pinterest-pin.json +217 -0
  34. data/_data/aitools/en/platform-specific-content-generator.json +246 -0
  35. data/_data/aitools/en/product-description.json +222 -0
  36. data/_data/aitools/en/quick-article-writer.json +253 -0
  37. data/_data/aitools/en/replies-for-facebook.json +239 -0
  38. data/_data/aitools/en/replies-for-instagram.json +239 -0
  39. data/_data/aitools/en/replies-for-linkedin.json +239 -0
  40. data/_data/aitools/en/replies-for-twitter.json +239 -0
  41. data/_data/aitools/en/rewrite-article-with-keywords.json +246 -0
  42. data/_data/aitools/en/script-for-instagram-reel.json +246 -0
  43. data/_data/aitools/en/script-for-tiktok-video.json +246 -0
  44. data/_data/aitools/en/seo-optimized-blog-post.json +239 -0
  45. data/_data/aitools/en/snapchat-caption-maker.json +245 -0
  46. data/_data/aitools/en/social-media-bio-creator.json +274 -0
  47. data/_data/aitools/en/social-media-bio-generator.json +246 -0
  48. data/_data/aitools/en/social-media-calendar.json +250 -0
  49. data/_data/aitools/en/tiktok-caption.json +232 -0
  50. data/_data/aitools/en/tiktok-username-generator.json +239 -0
  51. data/_data/aitools/en/twitter-poll-generator.json +250 -0
  52. data/_data/aitools/en/twitter-post.json +272 -0
  53. data/_data/blog/alertbar.yml +3 -0
  54. data/_data/blog/authors.yml +11 -0
  55. data/_data/blog/blog.yml +4 -0
  56. data/_data/blog/nav.json +14 -0
  57. data/_data/blog/relatedblogs.json +2816 -0
  58. data/_data/blog/share.yml +28 -0
  59. data/_data/contact/en/contact.json +39 -0
  60. data/_data/contenttool/en/features.json +18 -0
  61. data/_data/contenttool/en/mainfeatures.json +12 -0
  62. data/_data/customcdns/customcdns.yml +0 -0
  63. data/_data/disclaimer/en/disclaimer.json +38 -0
  64. data/_data/download/en/download.json +1 -0
  65. data/_data/feature/.DS_Store +0 -0
  66. data/_data/feature/en/3_shop_posters.json +456 -0
  67. data/_data/feature/en/allele-frequency.json +349 -0
  68. data/_data/feature/en/batch-conversion.json +193 -0
  69. data/_data/feature/en/compress-pdf.json +231 -0
  70. data/_data/feature/en/devtools.json +322 -0
  71. data/_data/feature/en/face-detection.json +157 -0
  72. data/_data/feature/en/split-pdf.json +222 -0
  73. data/_data/feature/en/theframe.json +161 -0
  74. data/_data/feature/hi/compress-pdf.json +1 -0
  75. data/_data/feature/tr/compress-pdf.json +1 -0
  76. data/_data/filecomparison/en/filecomparison.json +39 -0
  77. data/_data/fileinfo/en/fileinfo.json +16 -0
  78. data/_data/footer/.DS_Store +0 -0
  79. data/_data/footer/en/data.json +265 -0
  80. data/_data/footer/hi/data.json +69 -0
  81. data/_data/footer/networksites.json +16 -0
  82. data/_data/header/.DS_Store +0 -0
  83. data/_data/header/en/data.json +1396 -0
  84. data/_data/header/hi/data.json +145 -0
  85. data/_data/help/en/help.json +0 -0
  86. data/_data/home/.DS_Store +0 -0
  87. data/_data/home/de/da.json +0 -0
  88. data/_data/home/de/de.json +0 -0
  89. data/_data/home/en/en.json +249 -0
  90. data/_data/home/en/ens.json +143 -0
  91. data/_data/home/en/photoeffects.json +1 -0
  92. data/_data/home/en/posters.json +322 -0
  93. data/_data/home/hi/hi.json +87 -0
  94. data/_data/home-1/en/en.json +237 -0
  95. data/_data/languagesupport/compress-pdf-langs.json +12 -0
  96. data/_data/languagesupport/index-langs.json +14 -0
  97. data/_data/noindexURLs.json +23 -0
  98. data/_data/photo-categories.json +105 -0
  99. data/_data/photoeffects.json +32 -0
  100. data/_data/privacy/en/privacyPolicy.json +266 -0
  101. data/_data/rating/rating.json +1 -0
  102. data/_data/review/trustpilot.json +29 -0
  103. data/_data/templates.json +17459 -0
  104. data/_data/termAndCondition/en/termAndCondition.json +1 -0
  105. data/_data/vintage/en/test.json +142 -0
  106. data/_includes/.DS_Store +0 -0
  107. data/_includes/Atest.html +248 -0
  108. data/_includes/Rating/rating.html +93 -0
  109. data/_includes/Rating/structureddata.html +53 -0
  110. data/_includes/Usp/usp.html +96 -0
  111. data/_includes/adblocker.html +240 -0
  112. data/_includes/adsense/adsense.html +7 -0
  113. data/_includes/aitools/instagram-hashtag-generator.html +0 -0
  114. data/_includes/alternates/alternates.html +64 -0
  115. data/_includes/appscms/.DS_Store +0 -0
  116. data/_includes/appscms/category-tabs/category-tabs.html +145 -0
  117. data/_includes/appscms/customblog/contenttool-recent-posts.html +94 -0
  118. data/_includes/appscms/customblog/pageRelatedPosts.html +79 -0
  119. data/_includes/appscms/customblog/recentposts.html +68 -0
  120. data/_includes/appscms/customblog/relatedBlogs.html +83 -0
  121. data/_includes/appscms/customblog/relatedposts.html +194 -0
  122. data/_includes/appscms/extras/appscms-postbox.html +57 -0
  123. data/_includes/appscms/extras/ratings.html +349 -0
  124. data/_includes/appscms/extras/recent-posts.html +1 -0
  125. data/_includes/appscms/extras/traffic-count.html +21 -0
  126. data/_includes/appscms/faq/faq.html +40 -0
  127. data/_includes/appscms/featurePageAuthors/featurePageAuthors.html +86 -0
  128. data/_includes/appscms/featurehighlight/featurehighlight.html +48 -0
  129. data/_includes/appscms/footer/ai-image-tools-footer.html +14 -0
  130. data/_includes/appscms/footer/footer.html +438 -0
  131. data/_includes/appscms/footer/products.html +24 -0
  132. data/_includes/appscms/footer/static-footer.html +81 -0
  133. data/_includes/appscms/head/bloghead.html +129 -0
  134. data/_includes/appscms/head/head.html +516 -0
  135. data/_includes/appscms/headings/ai-image-tools-headings.html +24 -0
  136. data/_includes/appscms/headings/contenttool-headings.html +33 -0
  137. data/_includes/appscms/headings/devtool-headings.html +38 -0
  138. data/_includes/appscms/headings/headings.html +24 -0
  139. data/_includes/appscms/home/contenttool-feature-boxes.html +20 -0
  140. data/_includes/appscms/home/devtool-feature-boxes.html +71 -0
  141. data/_includes/appscms/home/feature-boxes.html +58 -0
  142. data/_includes/appscms/howto/howto.html +89 -0
  143. data/_includes/appscms/infographics/infographics.html +217 -0
  144. data/_includes/appscms/loaders/loader.html +4 -0
  145. data/_includes/appscms/navbars/ai-image-tools-navbar.html +454 -0
  146. data/_includes/appscms/navbars/devtool-navbar.html +50 -0
  147. data/_includes/appscms/navbars/devtool-toolbar.html +100 -0
  148. data/_includes/appscms/navbars/navbar.html +334 -0
  149. data/_includes/appscms/navbars/toolbar.html +303 -0
  150. data/_includes/appscms/recent-posts/recent_posts.html +90 -0
  151. data/_includes/appscms/recent-posts/related_categories_post.html +195 -0
  152. data/_includes/appscms/reviews/trustpilot.html +377 -0
  153. data/_includes/appscms/scripts/script.html +168 -0
  154. data/_includes/appscms/searchbar/devtool-searchbar.html +63 -0
  155. data/_includes/appscms/searchbar/searchbar.html +17 -0
  156. data/_includes/appscms/uploadbutton/uploadbutton.html +68 -0
  157. data/_includes/appscms/usp/usp.html +91 -0
  158. data/_includes/author_bio.html +41 -0
  159. data/_includes/authorpagehead/index.html +47 -0
  160. data/_includes/authors/authors.html +40 -0
  161. data/_includes/batch-conversion.html +141 -0
  162. data/_includes/bookmark.html +7 -0
  163. data/_includes/contenttool_banner.html +266 -0
  164. data/_includes/contenttool_result_banner.html +135 -0
  165. data/_includes/cssfile/links.html +54 -0
  166. data/_includes/custom-head.html +139 -0
  167. data/_includes/customCode.html +1 -0
  168. data/_includes/customScripts.html +1 -0
  169. data/_includes/customblog/pageRelatedPosts.html +88 -0
  170. data/_includes/customblog/recentposts.html +68 -0
  171. data/_includes/customblog/relatedBlogs.html +87 -0
  172. data/_includes/customblog/relatedposts.html +202 -0
  173. data/_includes/disqus_comments.html +11 -0
  174. data/_includes/dropdown/langdropdown.html +32 -0
  175. data/_includes/feature.html +40 -0
  176. data/_includes/featurePageAuthors/featurePageAuthors.html +101 -0
  177. data/_includes/fileformat/Tabularcompariosn.html +159 -0
  178. data/_includes/fileformat/comparisonfiles.html +152 -0
  179. data/_includes/fileformat/fileformatdetail.html +102 -0
  180. data/_includes/fileformat/fileinfoformat.html +94 -0
  181. data/_includes/footer/index.html +538 -0
  182. data/_includes/google-analytics.html +32 -0
  183. data/_includes/head/index.html +642 -0
  184. data/_includes/header/blogHeader.html +35 -0
  185. data/_includes/header/index.html +153 -0
  186. data/_includes/infographics/infographics.html +244 -0
  187. data/_includes/internationalization-section.html +67 -0
  188. data/_includes/languages/languages.html +61 -0
  189. data/_includes/monumetric/ads.html +58 -0
  190. data/_includes/monumetric/monumetric.html +58 -0
  191. data/_includes/monumetric/profitablecpmgate.html +52 -0
  192. data/_includes/nofiletransfer/nofiletransfer.html +38 -0
  193. data/_includes/paginationBlogPage.html +70 -0
  194. data/_includes/paginationPostPage.html +15 -0
  195. data/_includes/postauthorbio.html +18 -0
  196. data/_includes/postbox.html +65 -0
  197. data/_includes/script.html +560 -0
  198. data/_includes/section/alertbar.html +12 -0
  199. data/_includes/section/count.html +33 -0
  200. data/_includes/section/recent_posts.html +94 -0
  201. data/_includes/section/related_categories_post.html +197 -0
  202. data/_includes/share/socialshare.html +21 -0
  203. data/_includes/staticfooter.html +70 -0
  204. data/_includes/userTracking.html +15 -0
  205. data/_layouts/aboutUs.html +180 -0
  206. data/_layouts/ai-image-generator.html +307 -0
  207. data/_layouts/ai-image-home.html +160 -0
  208. data/_layouts/ai-image-pricing.html +642 -0
  209. data/_layouts/ai-image-profile.html +434 -0
  210. data/_layouts/allAuthors.html +136 -0
  211. data/_layouts/appscms-about.html +168 -0
  212. data/_layouts/appscms-audio.html +33 -0
  213. data/_layouts/appscms-author.html +440 -0
  214. data/_layouts/appscms-authors.html +150 -0
  215. data/_layouts/appscms-batch.html +136 -0
  216. data/_layouts/appscms-blog.html +122 -0
  217. data/_layouts/appscms-calculator.html +158 -0
  218. data/_layouts/appscms-categories.html +26 -0
  219. data/_layouts/appscms-contact.html +137 -0
  220. data/_layouts/appscms-disclaimer.html +129 -0
  221. data/_layouts/appscms-download.html +304 -0
  222. data/_layouts/appscms-feature-result.html +101 -0
  223. data/_layouts/appscms-feature.html +101 -0
  224. data/_layouts/appscms-help.html +32 -0
  225. data/_layouts/appscms-home.html +61 -0
  226. data/_layouts/appscms-imagekit.html +96 -0
  227. data/_layouts/appscms-post.html +247 -0
  228. data/_layouts/appscms-privacy-policy.html +786 -0
  229. data/_layouts/appscms-terms-and-conditions.html +650 -0
  230. data/_layouts/appscms-video.html +33 -0
  231. data/_layouts/audio.html +33 -0
  232. data/_layouts/author.html +413 -0
  233. data/_layouts/batch.html +177 -0
  234. data/_layouts/blog-1.html +121 -0
  235. data/_layouts/blog.html +136 -0
  236. data/_layouts/calculator.html +99 -0
  237. data/_layouts/categories.html +34 -0
  238. data/_layouts/contactUs.html +128 -0
  239. data/_layouts/content-tool-ai copy 2.html +6611 -0
  240. data/_layouts/content-tool-ai copy.html +261 -0
  241. data/_layouts/content-tool-ai-2.html +353 -0
  242. data/_layouts/content-tool-ai.html +566 -0
  243. data/_layouts/contenttool-feature.html +47 -0
  244. data/_layouts/contenttool-home.html +58 -0
  245. data/_layouts/default.html +1 -0
  246. data/_layouts/devtool-blog.html +137 -0
  247. data/_layouts/devtool-feature.html +59 -0
  248. data/_layouts/devtool-home.html +58 -0
  249. data/_layouts/devtools.html +58 -0
  250. data/_layouts/disclaimer.html +129 -0
  251. data/_layouts/download.html +305 -0
  252. data/_layouts/feature-1.html +412 -0
  253. data/_layouts/feature-download.html +315 -0
  254. data/_layouts/feature.html +499 -0
  255. data/_layouts/featureResultPage.html +87 -0
  256. data/_layouts/fileInfo.html +46 -0
  257. data/_layouts/filecomparison.html +130 -0
  258. data/_layouts/frame.html +223 -0
  259. data/_layouts/help.html +25 -0
  260. data/_layouts/home-1.html +260 -0
  261. data/_layouts/home.html +380 -0
  262. data/_layouts/homeResultPage.html +51 -0
  263. data/_layouts/imagekit.html +309 -0
  264. data/_layouts/page.html +5 -0
  265. data/_layouts/photo-effects-home.html +191 -0
  266. data/_layouts/post.html +237 -0
  267. data/_layouts/privacyPolicy.html +786 -0
  268. data/_layouts/profile.html +566 -0
  269. data/_layouts/termAndCondition.html +650 -0
  270. data/_layouts/video.html +33 -0
  271. data/assets/.DS_Store +0 -0
  272. data/assets/app.js +75 -0
  273. data/assets/bulb.svg +1 -0
  274. data/assets/cloud.svg +1 -0
  275. data/assets/cross.svg +5 -0
  276. data/assets/css/adblocker.css +185 -0
  277. data/assets/css/ai-image-generator.css +547 -0
  278. data/assets/css/ai-image-home.css +763 -0
  279. data/assets/css/appscms-blog.css +505 -0
  280. data/assets/css/appscms-calculator.css +97 -0
  281. data/assets/css/appscms-contenttool.css +1384 -0
  282. data/assets/css/appscms-feature.css +0 -0
  283. data/assets/css/appscms-home.css +5 -0
  284. data/assets/css/appscms-imagekit.css +855 -0
  285. data/assets/css/appscms-theme.css +3934 -0
  286. data/assets/css/appscms-variables.css +24 -0
  287. data/assets/css/batch.css +501 -0
  288. data/assets/css/blog-1.css +66 -0
  289. data/assets/css/blog.css +510 -0
  290. data/assets/css/bootstrap.min.css +7 -0
  291. data/assets/css/calculators.css +46 -0
  292. data/assets/css/common.css +945 -0
  293. data/assets/css/content-tool-ai.css +1192 -0
  294. data/assets/css/devtool-main.css +1351 -0
  295. data/assets/css/devtools.css +106 -0
  296. data/assets/css/feature-1.css +294 -0
  297. data/assets/css/filecomparison.css +25 -0
  298. data/assets/css/frame.css +781 -0
  299. data/assets/css/home-1.css +188 -0
  300. data/assets/css/imagekit copy.css +849 -0
  301. data/assets/css/imagekit.css +849 -0
  302. data/assets/css/responsive.css +0 -0
  303. data/assets/css/tools.css +2209 -0
  304. data/assets/document.png +0 -0
  305. data/assets/dropbox.png +0 -0
  306. data/assets/easy-to-use.svg +7 -0
  307. data/assets/easy.svg +1 -0
  308. data/assets/facebook.svg +5 -0
  309. data/assets/fileimg/0RX6D8V.jpeg +0 -0
  310. data/assets/fileimg/11To9CR.jpeg +0 -0
  311. data/assets/fileimg/16q77H1.jpeg +0 -0
  312. data/assets/fileimg/1o2rNBD.jpeg +0 -0
  313. data/assets/fileimg/2DVHHaP.jpeg +0 -0
  314. data/assets/fileimg/38J4iOl.jpeg +0 -0
  315. data/assets/fileimg/38SErjW.jpeg +0 -0
  316. data/assets/fileimg/3JbciOH.jpeg +0 -0
  317. data/assets/fileimg/51PJjGr.jpeg +0 -0
  318. data/assets/fileimg/5938cLE.jpeg +0 -0
  319. data/assets/fileimg/5hGiNf7.jpeg +0 -0
  320. data/assets/fileimg/69oMRM0.jpeg +0 -0
  321. data/assets/fileimg/6WTDOAw.jpeg +0 -0
  322. data/assets/fileimg/6hQNdGk.jpeg +0 -0
  323. data/assets/fileimg/6uyiajm.jpeg +0 -0
  324. data/assets/fileimg/6z9n45v.jpeg +0 -0
  325. data/assets/fileimg/7Z9sNdy.jpeg +0 -0
  326. data/assets/fileimg/7eQehmc.jpeg +0 -0
  327. data/assets/fileimg/7xNWYRA.jpeg +0 -0
  328. data/assets/fileimg/82vepge.jpeg +0 -0
  329. data/assets/fileimg/8A6rYqw.jpeg +0 -0
  330. data/assets/fileimg/8aN9yEj.jpeg +0 -0
  331. data/assets/fileimg/99jo0FJ.jpeg +0 -0
  332. data/assets/fileimg/A2QFJgs.jpeg +0 -0
  333. data/assets/fileimg/AuNqAKT.jpeg +0 -0
  334. data/assets/fileimg/BV8ML15.jpeg +0 -0
  335. data/assets/fileimg/Cc9amsH.jpeg +0 -0
  336. data/assets/fileimg/Cjoa7OB.jpeg +0 -0
  337. data/assets/fileimg/Dh0nFk6.jpeg +0 -0
  338. data/assets/fileimg/EuFgmVh.jpeg +0 -0
  339. data/assets/fileimg/F87GDJM.jpeg +0 -0
  340. data/assets/fileimg/FAo0QEL.jpeg +0 -0
  341. data/assets/fileimg/FSHZ7pW.jpeg +0 -0
  342. data/assets/fileimg/FYEygcW.jpeg +0 -0
  343. data/assets/fileimg/FdqTl1x.jpeg +0 -0
  344. data/assets/fileimg/H7CZmss.jpeg +0 -0
  345. data/assets/fileimg/HAhjqEA.jpeg +0 -0
  346. data/assets/fileimg/HmizpGb.jpeg +0 -0
  347. data/assets/fileimg/IKdU9NN.jpeg +0 -0
  348. data/assets/fileimg/JEuwwVE.jpeg +0 -0
  349. data/assets/fileimg/JeFS57j.jpeg +0 -0
  350. data/assets/fileimg/KXTzTK7.jpeg +0 -0
  351. data/assets/fileimg/Kp0egqG.jpeg +0 -0
  352. data/assets/fileimg/MX9qrvZ.jpeg +0 -0
  353. data/assets/fileimg/Mny97V6.jpeg +0 -0
  354. data/assets/fileimg/Mt9PAUF.jpeg +0 -0
  355. data/assets/fileimg/NY9GTXm.jpeg +0 -0
  356. data/assets/fileimg/O1HqazZ.jpeg +0 -0
  357. data/assets/fileimg/P6WGAMN.jpeg +0 -0
  358. data/assets/fileimg/PLx4Opv.jpeg +0 -0
  359. data/assets/fileimg/PePZ5cb.jpeg +0 -0
  360. data/assets/fileimg/PtakFU2.jpeg +0 -0
  361. data/assets/fileimg/QdcouPN.jpeg +0 -0
  362. data/assets/fileimg/RUVWLwB.jpeg +0 -0
  363. data/assets/fileimg/SJ29L8A.jpeg +0 -0
  364. data/assets/fileimg/TmHdEAq.jpeg +0 -0
  365. data/assets/fileimg/TnwKQd9.jpeg +0 -0
  366. data/assets/fileimg/U6hLUgu.jpeg +0 -0
  367. data/assets/fileimg/V2G1SGL.jpeg +0 -0
  368. data/assets/fileimg/WBNj13N.jpeg +0 -0
  369. data/assets/fileimg/WofJU7C.jpeg +0 -0
  370. data/assets/fileimg/XLdMM90.jpeg +0 -0
  371. data/assets/fileimg/XYvKzO9.jpeg +0 -0
  372. data/assets/fileimg/Xa1wjEf.jpeg +0 -0
  373. data/assets/fileimg/XxsKREw.jpeg +0 -0
  374. data/assets/fileimg/YaqCA2d.jpeg +0 -0
  375. data/assets/fileimg/YmBdG16.jpeg +0 -0
  376. data/assets/fileimg/ZTI2NTv.jpeg +0 -0
  377. data/assets/fileimg/acdsee.png +0 -0
  378. data/assets/fileimg/b18tt3b.jpeg +0 -0
  379. data/assets/fileimg/bC8ZzSs.jpeg +0 -0
  380. data/assets/fileimg/c2PuNRk.jpeg +0 -0
  381. data/assets/fileimg/c5Zl0O1.jpeg +0 -0
  382. data/assets/fileimg/cPO8bqH.jpeg +0 -0
  383. data/assets/fileimg/cfwD39J.jpeg +0 -0
  384. data/assets/fileimg/d5byEov.jpeg +0 -0
  385. data/assets/fileimg/diIDQ4M.jpeg +0 -0
  386. data/assets/fileimg/e9cgmZo.jpeg +0 -0
  387. data/assets/fileimg/fClLkgM.jpeg +0 -0
  388. data/assets/fileimg/fVyIEs4.jpeg +0 -0
  389. data/assets/fileimg/ffv3iNy.jpeg +0 -0
  390. data/assets/fileimg/hJWCII5.jpeg +0 -0
  391. data/assets/fileimg/hnkzD4T.jpeg +0 -0
  392. data/assets/fileimg/hodO9zz.jpeg +0 -0
  393. data/assets/fileimg/irCSU4s.jpeg +0 -0
  394. data/assets/fileimg/jcTagMw.jpeg +0 -0
  395. data/assets/fileimg/jsU9KjR.jpeg +0 -0
  396. data/assets/fileimg/kXyPDCs.jpeg +0 -0
  397. data/assets/fileimg/lWFl5mc.jpeg +0 -0
  398. data/assets/fileimg/mF1gtxb.jpeg +0 -0
  399. data/assets/fileimg/mSrHgSp.jpeg +0 -0
  400. data/assets/fileimg/nrsG7Ys.jpeg +0 -0
  401. data/assets/fileimg/ovQYI78.jpeg +0 -0
  402. data/assets/fileimg/p5rWIzT.jpeg +0 -0
  403. data/assets/fileimg/p64BUbi.jpeg +0 -0
  404. data/assets/fileimg/pgXaxjb.jpeg +0 -0
  405. data/assets/fileimg/pqcWQ2F.jpeg +0 -0
  406. data/assets/fileimg/qwnEy06.jpeg +0 -0
  407. data/assets/fileimg/rElyIoV.jpeg +0 -0
  408. data/assets/fileimg/rawD7q8.jpeg +0 -0
  409. data/assets/fileimg/rrCOBeO.jpeg +0 -0
  410. data/assets/fileimg/sOBpiyF.jpeg +0 -0
  411. data/assets/fileimg/t2WljZe.jpeg +0 -0
  412. data/assets/fileimg/uoX9gqI.jpeg +0 -0
  413. data/assets/fileimg/upbts7y.jpeg +0 -0
  414. data/assets/fileimg/vyEg9wb.jpeg +0 -0
  415. data/assets/fileimg/wAHKc6t.jpeg +0 -0
  416. data/assets/fileimg/wJy7aoh.jpeg +0 -0
  417. data/assets/fileimg/wK1B8lS.jpeg +0 -0
  418. data/assets/fileimg/wcqHWtb.jpeg +0 -0
  419. data/assets/fileimg/xbfyrdU.jpeg +0 -0
  420. data/assets/fileimg/xeDZX8x.jpeg +0 -0
  421. data/assets/flag.svg +7 -0
  422. data/assets/fonts/Calligraphy.ttf +0 -0
  423. data/assets/free.svg +7 -0
  424. data/assets/gdrive.png +0 -0
  425. data/assets/guaranty.svg +1 -0
  426. data/assets/homeimages/3_shop_posters-main.png +0 -0
  427. data/assets/images/.DS_Store +0 -0
  428. data/assets/images/1.png +0 -0
  429. data/assets/images/1.webp +0 -0
  430. data/assets/images/2.png +0 -0
  431. data/assets/images/2.webp +0 -0
  432. data/assets/images/3.png +0 -0
  433. data/assets/images/3.webp +0 -0
  434. data/assets/images/3_shop_posters.png +0 -0
  435. data/assets/images/Ankita.webp +0 -0
  436. data/assets/images/Anushka.webp +0 -0
  437. data/assets/images/Arjyahi.webp +0 -0
  438. data/assets/images/Nikita.webp +0 -0
  439. data/assets/images/abp.svg +41 -0
  440. data/assets/images/adblock.svg +266 -0
  441. data/assets/images/add-image.png +0 -0
  442. data/assets/images/add.png +0 -0
  443. data/assets/images/add.svg +1 -0
  444. data/assets/images/addimg.svg +3 -0
  445. data/assets/images/alka.webp +0 -0
  446. data/assets/images/arrow-left.svg +7 -0
  447. data/assets/images/arrow-right.svg +7 -0
  448. data/assets/images/audio-upload.svg +1 -0
  449. data/assets/images/avatar.jpeg +0 -0
  450. data/assets/images/avatar.png +0 -0
  451. data/assets/images/avatar.webp +0 -0
  452. data/assets/images/balark.jpeg +0 -0
  453. data/assets/images/balark.webp +0 -0
  454. data/assets/images/bandana.jpeg +0 -0
  455. data/assets/images/bandana.webp +0 -0
  456. data/assets/images/bgimg1.png +0 -0
  457. data/assets/images/bulb.png +0 -0
  458. data/assets/images/bulb.svg +1 -0
  459. data/assets/images/bunnies.png +0 -0
  460. data/assets/images/close-button.svg +32 -0
  461. data/assets/images/cloud-computing.png +0 -0
  462. data/assets/images/cloud_new.svg +1 -0
  463. data/assets/images/content-tool-logo.png +0 -0
  464. data/assets/images/contenttool-main.svg +66 -0
  465. data/assets/images/contributor.webp +0 -0
  466. data/assets/images/convert.png +0 -0
  467. data/assets/images/convert.svg +9 -0
  468. data/assets/images/cross.svg +1 -0
  469. data/assets/images/debosmita.jpeg +0 -0
  470. data/assets/images/debosmita.webp +0 -0
  471. data/assets/images/digiball.jpg +0 -0
  472. data/assets/images/digipaint.svg +7 -0
  473. data/assets/images/document.png +0 -0
  474. data/assets/images/download.png +0 -0
  475. data/assets/images/drive.svg +25 -0
  476. data/assets/images/dropbox.svg +17 -0
  477. data/assets/images/easy-to-use.svg +7 -0
  478. data/assets/images/faceframe.png +0 -0
  479. data/assets/images/fast.svg +1 -0
  480. data/assets/images/file.png +0 -0
  481. data/assets/images/fileformat.webp +0 -0
  482. data/assets/images/flag.svg +7 -0
  483. data/assets/images/free.svg +7 -0
  484. data/assets/images/gallary.png +0 -0
  485. data/assets/images/google-drive.svg +6 -0
  486. data/assets/images/iconn.svg +13 -0
  487. data/assets/images/idea.svg +95 -0
  488. data/assets/images/image.png +0 -0
  489. data/assets/images/karuna.1.webp +0 -0
  490. data/assets/images/karuna.jpeg +0 -0
  491. data/assets/images/karuna.png +0 -0
  492. data/assets/images/karuna.webp +0 -0
  493. data/assets/images/keshav.webp +0 -0
  494. data/assets/images/krutika.jpeg +0 -0
  495. data/assets/images/krutika.webp +0 -0
  496. data/assets/images/lakshmi.svg +1 -0
  497. data/assets/images/left-arrow.svg +9 -0
  498. data/assets/images/lightbulb.svg +1 -0
  499. data/assets/images/like.svg +7 -0
  500. data/assets/images/loader.gif +0 -0
  501. data/assets/images/logo.png +0 -0
  502. data/assets/images/logo.svg +3 -0
  503. data/assets/images/mahika.jpeg +0 -0
  504. data/assets/images/mahika.webp +0 -0
  505. data/assets/images/manthink.svg +3552 -0
  506. data/assets/images/mega.png +0 -0
  507. data/assets/images/menu.svg +1 -0
  508. data/assets/images/paavan.webp +0 -0
  509. data/assets/images/pallavi.jpeg +0 -0
  510. data/assets/images/pallavi.webp +0 -0
  511. data/assets/images/privacy.svg +7 -0
  512. data/assets/images/rating.png +0 -0
  513. data/assets/images/right-arrow.svg +9 -0
  514. data/assets/images/safeimagekit. (2).png +0 -0
  515. data/assets/images/safeimagekit. (3).png +0 -0
  516. data/assets/images/safeimagekit..png +0 -0
  517. data/assets/images/safeimagekit.png +0 -0
  518. data/assets/images/safety.svg +7 -0
  519. data/assets/images/safevideoconverter.svg +23 -0
  520. data/assets/images/search-icon.svg +3 -0
  521. data/assets/images/shield.svg +1 -0
  522. data/assets/images/siddhika.jpeg +0 -0
  523. data/assets/images/siddhika.webp +0 -0
  524. data/assets/images/sona.jpeg +0 -0
  525. data/assets/images/sona.webp +0 -0
  526. data/assets/images/speed.svg +7 -0
  527. data/assets/images/spinner.gif +0 -0
  528. data/assets/images/suchita.1.webp +0 -0
  529. data/assets/images/suchita.jpeg +0 -0
  530. data/assets/images/suchita.png +0 -0
  531. data/assets/images/suchita.webp +0 -0
  532. data/assets/images/target.svg +1 -0
  533. data/assets/images/taufik.1.webp +0 -0
  534. data/assets/images/taufik.jpeg +0 -0
  535. data/assets/images/taufik.png +0 -0
  536. data/assets/images/taufik.webp +0 -0
  537. data/assets/images/test.svg +1 -0
  538. data/assets/images/time.svg +16 -0
  539. data/assets/images/together_foreve (2).png +0 -0
  540. data/assets/images/together_foreve.png +0 -0
  541. data/assets/images/together_forever.png +0 -0
  542. data/assets/images/trust.svg +1 -0
  543. data/assets/images/udit.1.webp +0 -0
  544. data/assets/images/udit.2.webp +0 -0
  545. data/assets/images/udit.jpeg +0 -0
  546. data/assets/images/udit.jpg +0 -0
  547. data/assets/images/udit.png +0 -0
  548. data/assets/images/udit.webp +0 -0
  549. data/assets/images/uo.svg +41 -0
  550. data/assets/images/user-friendly.svg +7 -0
  551. data/assets/images/vectorpaint.svg +6 -0
  552. data/assets/images/video.png +0 -0
  553. data/assets/instagram.svg +5 -0
  554. data/assets/js/TopScroll.js +8 -0
  555. data/assets/js/adBlocker.js +68 -0
  556. data/assets/js/ads.js +8 -0
  557. data/assets/js/append-div.js +10 -0
  558. data/assets/js/appscms-infographics.js +0 -0
  559. data/assets/js/appscms-login.js +447 -0
  560. data/assets/js/appscms-search-home1.js +136 -0
  561. data/assets/js/appscms-search.js +133 -0
  562. data/assets/js/appscms-theme.js +516 -0
  563. data/assets/js/batch.js +219 -0
  564. data/assets/js/calculator-tooltip.js +3 -0
  565. data/assets/js/devtools.js +82 -0
  566. data/assets/js/face-api.js +38064 -0
  567. data/assets/js/face-detection.js +303 -0
  568. data/assets/js/faceSystem.js +0 -0
  569. data/assets/js/featureResult.js +48 -0
  570. data/assets/js/frame.js +264 -0
  571. data/assets/js/get-credits.js +0 -0
  572. data/assets/js/googledrive.js +158 -0
  573. data/assets/js/homeResult.js +37 -0
  574. data/assets/js/manifest.json +17 -0
  575. data/assets/js/models/age_gender_model-shard1 +0 -0
  576. data/assets/js/models/age_gender_model-weights_manifest.json +1 -0
  577. data/assets/js/models/face_expression_model-shard1 +0 -0
  578. data/assets/js/models/face_expression_model-weights_manifest.json +1 -0
  579. data/assets/js/models/face_landmark_68_model-shard1 +0 -0
  580. data/assets/js/models/face_landmark_68_model-weights_manifest.json +1 -0
  581. data/assets/js/models/face_landmark_68_tiny_model-shard1 +0 -0
  582. data/assets/js/models/face_landmark_68_tiny_model-weights_manifest.json +1 -0
  583. data/assets/js/models/face_recognition_model-shard1 +0 -0
  584. data/assets/js/models/face_recognition_model-shard2 +6 -0
  585. data/assets/js/models/face_recognition_model-weights_manifest.json +1 -0
  586. data/assets/js/models/mtcnn_model-shard1 +0 -0
  587. data/assets/js/models/mtcnn_model-weights_manifest.json +1 -0
  588. data/assets/js/models/ssd_mobilenetv1_model-shard1 +0 -0
  589. data/assets/js/models/ssd_mobilenetv1_model-shard2 +145 -0
  590. data/assets/js/models/ssd_mobilenetv1_model-weights_manifest.json +1 -0
  591. data/assets/js/models/tiny_face_detector_model-shard1 +0 -0
  592. data/assets/js/models/tiny_face_detector_model-weights_manifest.json +1 -0
  593. data/assets/js/multiselect.js +185 -0
  594. data/assets/js/partytown/debug/partytown-atomics.js +929 -0
  595. data/assets/js/partytown/debug/partytown-media.js +374 -0
  596. data/assets/js/partytown/debug/partytown-sandbox-sw.js +920 -0
  597. data/assets/js/partytown/debug/partytown-sw.js +59 -0
  598. data/assets/js/partytown/debug/partytown-ww-atomics.js +2699 -0
  599. data/assets/js/partytown/debug/partytown-ww-sw.js +2691 -0
  600. data/assets/js/partytown/debug/partytown.js +114 -0
  601. data/assets/js/partytown/partytown-atomics.js +600 -0
  602. data/assets/js/partytown/partytown-media.js +2 -0
  603. data/assets/js/partytown/partytown-sw.js +50 -0
  604. data/assets/js/perspective.min.js +182 -0
  605. data/assets/js/photo-effects.json +85 -0
  606. data/assets/js/redirectResult.js +10 -0
  607. data/assets/js/sharePage.js +65 -0
  608. data/assets/js/testing-batch.js +39 -0
  609. data/assets/js/theme.js +104 -0
  610. data/assets/js/usageTracking.js +143 -0
  611. data/assets/js/usageTrackingEvents.js +6 -0
  612. data/assets/js/userUsageCount.js +0 -0
  613. data/assets/js/webvitals.js +5 -0
  614. data/assets/like.svg +7 -0
  615. data/assets/linkdin.svg +5 -0
  616. data/assets/noserverupload.svg +4 -0
  617. data/assets/pdf.svg +20 -0
  618. data/assets/privacy.svg +7 -0
  619. data/assets/protect.svg +1 -0
  620. data/assets/secure.svg +43 -0
  621. data/assets/shield.svg +7 -0
  622. data/assets/skks.svg +1 -0
  623. data/assets/speed.svg +7 -0
  624. data/assets/star.svg +5 -0
  625. data/assets/support.svg +1 -0
  626. data/assets/time.svg +16 -0
  627. data/assets/twitter.svg +5 -0
  628. data/assets/user-friendly.svg +7 -0
  629. data/assets/youtube.svg +5 -0
  630. data/robots.txt +34 -0
  631. metadata +631 -2
@@ -0,0 +1,642 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ {%- include appscms/head/head.html -%}
4
+
5
+ <style>
6
+ .pricing-container {
7
+ max-width: 1400px;
8
+ margin: 0 auto;
9
+ display: grid;
10
+ grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
11
+ gap: 30px;
12
+ padding: 20px;
13
+ }
14
+
15
+ .pricing-card {
16
+ background: white;
17
+ border-radius: 20px;
18
+ padding: 40px 30px;
19
+ box-shadow: 0 10px 40px rgba(0, 0, 0, 0.08);
20
+ transition: transform 0.3s ease, box-shadow 0.3s ease;
21
+ position: relative;
22
+ border: 2px solid #e8ecf1;
23
+ }
24
+
25
+ .pricing-card:hover {
26
+ transform: translateY(-10px);
27
+ box-shadow: 0 20px 60px rgba(0, 0, 0, 0.12);
28
+ }
29
+
30
+ .pricing-card.popular {
31
+ border: 3px solid #f59e0b;
32
+ box-shadow: 0 15px 50px rgba(245, 158, 11, 0.2);
33
+ }
34
+
35
+ .popular-badge {
36
+ position: absolute;
37
+ top: -15px;
38
+ right: 30px;
39
+ background: linear-gradient(135deg, #fbbf24 0%, #f59e0b 100%);
40
+ color: white;
41
+ padding: 8px 20px;
42
+ border-radius: 20px;
43
+ font-size: 14px;
44
+ font-weight: 600;
45
+ box-shadow: 0 4px 12px rgba(245, 158, 11, 0.3);
46
+ }
47
+
48
+ .plan-header {
49
+ margin-bottom: 30px;
50
+ }
51
+
52
+ .plan-name {
53
+ text-align: left;
54
+ font-size: 28px;
55
+ font-weight: 700;
56
+ color: #1f2937;
57
+ margin-bottom: 8px;
58
+ }
59
+
60
+ .plan-description {
61
+ color: #6b7280;
62
+ font-size: 14px;
63
+ }
64
+
65
+ .price-section {
66
+ margin-bottom: 30px;
67
+ }
68
+
69
+ .price {
70
+ font-size: 48px;
71
+ font-weight: 800;
72
+ color: #1f2937;
73
+ display: flex;
74
+ align-items: baseline;
75
+ gap: 5px;
76
+ }
77
+
78
+ .original-price {
79
+ font-size: 18px;
80
+ color: #9ca3af;
81
+ text-decoration: line-through;
82
+ font-weight: 500;
83
+ }
84
+
85
+ .period {
86
+ font-size: 16px;
87
+ color: #6b7280;
88
+ font-weight: 400;
89
+ }
90
+
91
+ .buy-button {
92
+ width: 100%;
93
+ padding: 16px;
94
+ background: linear-gradient(135deg, #fbbf24 0%, #f59e0b 100%);
95
+ color: white;
96
+ border: none;
97
+ border-radius: 12px;
98
+ font-size: 16px;
99
+ font-weight: 600;
100
+ cursor: pointer;
101
+ transition: all 0.3s ease;
102
+ margin-bottom: 30px;
103
+ box-shadow: 0 4px 15px rgba(245, 158, 11, 0.3);
104
+ }
105
+
106
+ .buy-button:hover {
107
+ transform: scale(1.02);
108
+ box-shadow: 0 6px 20px rgba(245, 158, 11, 0.4);
109
+ }
110
+
111
+ .features-list {
112
+ list-style: none;
113
+ }
114
+
115
+ .feature-item {
116
+ display: flex;
117
+ align-items: center;
118
+ gap: 12px;
119
+ margin-bottom: 16px;
120
+ color: #374151;
121
+ font-size: 14px;
122
+ }
123
+
124
+ .checkmark {
125
+ width: 24px;
126
+ height: 24px;
127
+ border-radius: 50%;
128
+ display: flex;
129
+ align-items: center;
130
+ justify-content: center;
131
+ flex-shrink: 0;
132
+ font-size: 12px;
133
+ font-weight: 700;
134
+ }
135
+
136
+ .checkmark.active {
137
+ background: #10b981;
138
+ color: white;
139
+ }
140
+
141
+ .checkmark.inactive {
142
+ background: #ef4444;
143
+ color: white;
144
+ }
145
+
146
+ .feature-item.highlighted {
147
+ color: #f59e0b;
148
+ font-weight: 600;
149
+ }
150
+
151
+ @media (max-width: 768px) {
152
+ .pricing-container {
153
+ grid-template-columns: 1fr;
154
+ }
155
+ }
156
+ </style>
157
+
158
+ <body>
159
+ <div class="container">
160
+ {%- include /appscms/navbars/ai-image-tools-navbar.html -%}
161
+
162
+ <center>
163
+ <h1 class="appscms-h1">Pricing & Plans</h1>
164
+ <h2 class="appscms-h2"> Choose the subscription plan that fits you and unlock Nano Banana images.
165
+ </h2>
166
+ </center>
167
+
168
+
169
+ <div class="pricing-container" id="pricingContainer"></div>
170
+
171
+ {%- include /appscms/footer/ai-image-tools-footer.html -%}
172
+
173
+
174
+
175
+ </div>
176
+
177
+ {%- include /appscms/scripts/script.html -%}
178
+
179
+ <script src="https://checkout.razorpay.com/v1/checkout.js"></script>
180
+
181
+
182
+ <script>
183
+ // Loading Overlay Functions
184
+ function createLoadingOverlays() {
185
+ const overlay = document.createElement("div");
186
+ overlay.id = "pricingLoadingOverlay";
187
+ overlay.innerHTML = `
188
+ <div class="pricing-loading-overlay">
189
+ <div class="pricing-loading-content">
190
+ <div class="pricing-loading-spinner"></div>
191
+ <div class="pricing-loading-text">Loading pricing plans...</div>
192
+ </div>
193
+ </div>
194
+ `;
195
+
196
+ // Add CSS if not already present
197
+ if (!document.querySelector("#pricingLoadingStyles")) {
198
+ const style = document.createElement("style");
199
+ style.id = "pricingLoadingStyles";
200
+ style.textContent = `
201
+ .pricing-loading-overlay {
202
+ position: fixed;
203
+ top: 0;
204
+ left: 0;
205
+ width: 100%;
206
+ height: 100%;
207
+ background: rgba(255, 255, 255, 0.95);
208
+ backdrop-filter: blur(4px);
209
+ display: flex;
210
+ align-items: center;
211
+ justify-content: center;
212
+ z-index: 10000;
213
+ opacity: 1;
214
+ transition: opacity 0.3s ease;
215
+ }
216
+
217
+ .pricing-loading-content {
218
+ text-align: center;
219
+ padding: 40px;
220
+ background: white;
221
+ border-radius: 12px;
222
+ box-shadow: 0 8px 32px rgba(0,0,0,0.1);
223
+ }
224
+
225
+ .pricing-loading-spinner {
226
+ width: 40px;
227
+ height: 40px;
228
+ border: 4px solid #f3f3f3;
229
+ border-top: 4px solid #f59e0b;
230
+ border-radius: 50%;
231
+ animation: pricingLoadingSpin 1s linear infinite;
232
+ margin: 0 auto 16px;
233
+ }
234
+
235
+ .pricing-loading-text {
236
+ color: #333;
237
+ font-size: 16px;
238
+ font-weight: 500;
239
+ }
240
+
241
+ @keyframes pricingLoadingSpin {
242
+ 0% { transform: rotate(0deg); }
243
+ 100% { transform: rotate(360deg); }
244
+ }
245
+
246
+ .pricing-loading-overlay.fade-out {
247
+ opacity: 0;
248
+ pointer-events: none;
249
+ }
250
+ `;
251
+ document.head.appendChild(style);
252
+ }
253
+
254
+ return overlay;
255
+ }
256
+
257
+ // Success Modal Function
258
+ function showSubscriptionSuccess() {
259
+ // Create success modal
260
+ const modal = document.createElement('div');
261
+ modal.id = 'subscriptionSuccessModal';
262
+ modal.innerHTML = `
263
+ <div class="success-modal-overlay">
264
+ <div class="success-modal-content">
265
+ <div class="success-icon-wrapper">
266
+ <svg class="success-checkmark" viewBox="0 0 52 52">
267
+ <circle class="success-checkmark-circle" cx="26" cy="26" r="25" fill="none"/>
268
+ <path class="success-checkmark-check" fill="none" d="M14.1 27.2l7.1 7.2 16.7-16.8"/>
269
+ </svg>
270
+ </div>
271
+ <h2 class="success-title">Subscription Activated! 🎉</h2>
272
+ <p class="success-message">Your subscription has been successfully activated. You now have full access to all premium features!</p>
273
+ <div class="success-redirect-info">
274
+ <span class="redirect-text">Redirecting to dashboard in <span id="countdown">3</span>s...</span>
275
+ </div>
276
+ </div>
277
+ </div>
278
+ `;
279
+
280
+ // Add CSS for success modal
281
+ const style = document.createElement('style');
282
+ style.textContent = `
283
+ .success-modal-overlay {
284
+ position: fixed;
285
+ top: 0;
286
+ left: 0;
287
+ width: 100%;
288
+ height: 100%;
289
+ background: rgba(0, 0, 0, 0.6);
290
+ backdrop-filter: blur(8px);
291
+ display: flex;
292
+ align-items: center;
293
+ justify-content: center;
294
+ z-index: 10001;
295
+ animation: fadeIn 0.3s ease;
296
+ }
297
+
298
+ .success-modal-content {
299
+ background: white;
300
+ border-radius: 20px;
301
+ padding: 50px 40px;
302
+ max-width: 450px;
303
+ text-align: center;
304
+ box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3);
305
+ animation: slideUp 0.4s ease;
306
+ }
307
+
308
+ .success-icon-wrapper {
309
+ margin: 0 auto 30px;
310
+ width: 80px;
311
+ height: 80px;
312
+ }
313
+
314
+ .success-checkmark {
315
+ width: 80px;
316
+ height: 80px;
317
+ border-radius: 50%;
318
+ display: block;
319
+ stroke-width: 3;
320
+ stroke: #10b981;
321
+ stroke-miterlimit: 10;
322
+ box-shadow: inset 0px 0px 0px #10b981;
323
+ animation: fill 0.4s ease-in-out 0.4s forwards, scale 0.3s ease-in-out 0.9s both;
324
+ }
325
+
326
+ .success-checkmark-circle {
327
+ stroke-dasharray: 166;
328
+ stroke-dashoffset: 166;
329
+ stroke-width: 3;
330
+ stroke-miterlimit: 10;
331
+ stroke: #10b981;
332
+ fill: none;
333
+ animation: stroke 0.6s cubic-bezier(0.65, 0, 0.45, 1) forwards;
334
+ }
335
+
336
+ .success-checkmark-check {
337
+ transform-origin: 50% 50%;
338
+ stroke-dasharray: 48;
339
+ stroke-dashoffset: 48;
340
+ stroke: #10b981;
341
+ animation: stroke 0.3s cubic-bezier(0.65, 0, 0.45, 1) 0.8s forwards;
342
+ }
343
+
344
+ .success-title {
345
+ font-size: 28px;
346
+ font-weight: 700;
347
+ color: #1f2937;
348
+ margin-bottom: 15px;
349
+ }
350
+
351
+ .success-message {
352
+ font-size: 16px;
353
+ color: #6b7280;
354
+ line-height: 1.6;
355
+ margin-bottom: 25px;
356
+ }
357
+
358
+ .success-redirect-info {
359
+ background: #f0fdf4;
360
+ border: 1px solid #86efac;
361
+ border-radius: 10px;
362
+ padding: 15px;
363
+ }
364
+
365
+ .redirect-text {
366
+ color: #166534;
367
+ font-size: 14px;
368
+ font-weight: 500;
369
+ }
370
+
371
+ #countdown {
372
+ font-weight: 700;
373
+ color: #10b981;
374
+ }
375
+
376
+ @keyframes fadeIn {
377
+ from { opacity: 0; }
378
+ to { opacity: 1; }
379
+ }
380
+
381
+ @keyframes slideUp {
382
+ from {
383
+ transform: translateY(30px);
384
+ opacity: 0;
385
+ }
386
+ to {
387
+ transform: translateY(0);
388
+ opacity: 1;
389
+ }
390
+ }
391
+
392
+ @keyframes stroke {
393
+ 100% {
394
+ stroke-dashoffset: 0;
395
+ }
396
+ }
397
+
398
+ @keyframes scale {
399
+ 0%, 100% {
400
+ transform: none;
401
+ }
402
+ 50% {
403
+ transform: scale3d(1.1, 1.1, 1);
404
+ }
405
+ }
406
+
407
+ @keyframes fill {
408
+ 100% {
409
+ box-shadow: inset 0px 0px 0px 30px #10b981;
410
+ }
411
+ }
412
+ `;
413
+ document.head.appendChild(style);
414
+ document.body.appendChild(modal);
415
+
416
+ // Countdown and redirect
417
+ let countdown = 3;
418
+ const countdownEl = document.getElementById('countdown');
419
+ const interval = setInterval(() => {
420
+ countdown--;
421
+ if (countdownEl) {
422
+ countdownEl.textContent = countdown;
423
+ }
424
+ if (countdown === 0) {
425
+ clearInterval(interval);
426
+ window.location.href = '/';
427
+ }
428
+ }, 1000);
429
+ }
430
+
431
+
432
+ async function getAuthToken() {
433
+ const storedToken = localStorage.getItem("authToken");
434
+ if (storedToken) return storedToken;
435
+
436
+ if (typeof firebase !== "undefined" && firebase.auth) {
437
+ try {
438
+ const user = firebase.auth().currentUser;
439
+ if (user) {
440
+ const token = await user.getIdToken(true);
441
+ localStorage.setItem("authToken", token);
442
+ return token;
443
+ }
444
+ } catch (error) {
445
+ console.warn("Firebase auth error:", error);
446
+ }
447
+ }
448
+
449
+ return sessionStorage.getItem("authToken") || null;
450
+ }
451
+
452
+ async function loadPricingPlans() {
453
+ try {
454
+
455
+ const overlay = createLoadingOverlays();
456
+ document.body.appendChild(overlay);
457
+
458
+ const res = await fetch(
459
+ "https://us-central1-appscms-develop.cloudfunctions.net/payment_api/api/v1/payment-routes/image-toolkit-plans"
460
+ );
461
+ const data = await res.json();
462
+
463
+ // Remove loading overlay
464
+ const loadingOverlay = document.getElementById("pricingLoadingOverlay");
465
+ if (loadingOverlay) {
466
+ loadingOverlay.remove();
467
+ }
468
+
469
+ const container = document.getElementById("pricingContainer");
470
+ container.innerHTML = "";
471
+
472
+ data.plans.forEach((plan, index) => {
473
+ const features = plan.description
474
+ .replace(/"/g, "")
475
+ .split(",")
476
+ .map(item => item.trim());
477
+
478
+ const isPopular = plan.plan.toLowerCase() === "pro";
479
+
480
+ const card = `
481
+ <div class="pricing-card ${isPopular ? "popular" : ""}">
482
+ ${isPopular ? `<span class="popular-badge">Most Popular</span>` : ""}
483
+
484
+ <div class="plan-header">
485
+ <h2 class="plan-name">${plan.plan.toLowerCase()}</h2>
486
+ <p class="plan-description">
487
+ ${isPopular ? "For creators and professionals" : "Perfect for beginners"}
488
+ </p>
489
+ </div>
490
+
491
+ <div class="price-section">
492
+ <div class="price">
493
+ $${plan.price_dollar}
494
+ <span class="period">/month</span>
495
+ </div>
496
+ </div>
497
+
498
+ <button class="buy-button" id=${plan.plan.toLowerCase()}
499
+ onclick="buyPlan('${plan.razorpay_plan_id}', '${plan.plan}')">
500
+ Buy Now
501
+ </button>
502
+
503
+ <ul class="features-list">
504
+ ${features.map(f => `
505
+ <li class="feature-item">
506
+ <span class="checkmark active">✓</span>
507
+ <span>${f}</span>
508
+ </li>
509
+ `).join("")}
510
+ </ul>
511
+ </div>
512
+ `;
513
+
514
+ container.insertAdjacentHTML("beforeend", card);
515
+ });
516
+
517
+ // After rendering all plans, disable the button for the user's active plan
518
+ if (typeof firebase !== "undefined" && firebase.auth) {
519
+ const user = firebase.auth().currentUser;
520
+ if (user) {
521
+ user.getIdTokenResult().then(tokenResult => {
522
+ const customClaims = tokenResult.claims;
523
+ if (customClaims.plan && window.disableActivePlanButton) {
524
+ window.disableActivePlanButton(customClaims.plan);
525
+ }
526
+ }).catch(err => {
527
+ console.error("Error getting user claims:", err);
528
+ });
529
+ }
530
+ }
531
+
532
+ } catch (err) {
533
+ console.error("Pricing load error:", err);
534
+ }
535
+ }
536
+
537
+ const PAYMENT_API_URL = "https://us-central1-appscms-develop.cloudfunctions.net/payment_api";
538
+
539
+ async function checkSubscriptionStatus(subscriptionId) {
540
+ const POLL_INTERVAL = 5000; // 3 sec (OK to keep)
541
+ const TIMEOUT = 2 * 60 * 1000; // 2 minutes max
542
+
543
+ const startTime = Date.now();
544
+ const authToken = await getAuthToken();
545
+
546
+ const poll = async () => {
547
+ try {
548
+ const res = await fetch(
549
+ `${PAYMENT_API_URL}/api/v1/payment-routes/subscription-status?subscription_id=${subscriptionId}`,
550
+ {
551
+ method: "GET",
552
+ headers: {
553
+ "Content-Type": "application/json",
554
+ "Authorization": `Bearer ${authToken}`,
555
+ }
556
+ }
557
+ );
558
+
559
+ const data = await res.json();
560
+ console.log("Subscription status:", data.status);
561
+
562
+
563
+ // ✅ ACTIVE → STOP
564
+ if (data.status === "activated") {
565
+ hideLoadingOverlay();
566
+ showSubscriptionSuccess();
567
+ refreshFirebaseToken();
568
+ return;
569
+ }
570
+
571
+ setTimeout(poll, POLL_INTERVAL);
572
+
573
+ } catch (err) {
574
+ console.error("Polling error:", err);
575
+ // retry after interval (network glitch safe)
576
+ setTimeout(poll, POLL_INTERVAL);
577
+ }
578
+ };
579
+
580
+ poll();
581
+ }
582
+
583
+ function openRazorpayCheckout(subscriptionId, razorpayKey) {
584
+ const options = {
585
+ key: razorpayKey, // razorpay public key
586
+ subscription_id: subscriptionId,
587
+ name: "Nano Banana AI",
588
+ description: "AI Image Generation Subscription",
589
+ handler: function (response) {
590
+ console.log("Payment Success:", response);
591
+ checkSubscriptionStatus(subscriptionId);
592
+ },
593
+ theme: {
594
+ color: "#6C5CE7"
595
+ }
596
+ };
597
+
598
+ const rzp = new Razorpay(options);
599
+ rzp.open();
600
+ }
601
+
602
+
603
+ async function buyPlan(planId, planName) {
604
+ try {
605
+ const overlay = createLoadingOverlay();
606
+ document.body.appendChild(overlay);
607
+ const authToken = await getAuthToken();
608
+ const res = await fetch(
609
+ `${PAYMENT_API_URL}/api/v1/payment-routes/create-subscription`,
610
+ {
611
+ method: "POST",
612
+ headers: {
613
+ "Content-Type": "application/json",
614
+ Authorization: `Bearer ${authToken}`,
615
+ },
616
+ body: JSON.stringify({
617
+ plan_id: planId,
618
+ "total_count": 1200,
619
+ "site_id": 2,
620
+ "customer_notify": true,
621
+ plan_name: planName
622
+
623
+ })
624
+ }
625
+ );
626
+
627
+ const data = await res.json();
628
+ console.log("Subscription Created:", data.id);
629
+
630
+ openRazorpayCheckout(data.id, "rzp_test_8eh9kvtfj5GEvR");
631
+
632
+ } catch (err) {
633
+ console.error("Create subscription error:", err);
634
+ }
635
+ }
636
+
637
+ loadPricingPlans();
638
+ </script>
639
+
640
+ </body>
641
+
642
+ </html>