@linguanahq/cli 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 (412) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +43 -0
  3. package/dist/index.js +1543 -0
  4. package/dist/templates/blog/react/.env.example +15 -0
  5. package/dist/templates/blog/react/ASSETS.md +1 -0
  6. package/dist/templates/blog/react/DEPLOY.md +23 -0
  7. package/dist/templates/blog/react/LICENSE +21 -0
  8. package/dist/templates/blog/react/README.md +36 -0
  9. package/dist/templates/blog/react/_gitignore +11 -0
  10. package/dist/templates/blog/react/index.html +2 -0
  11. package/dist/templates/blog/react/linguana.json +10 -0
  12. package/dist/templates/blog/react/package.json +34 -0
  13. package/dist/templates/blog/react/public/assets/scene-1.svg +1 -0
  14. package/dist/templates/blog/react/public/assets/scene-2.svg +1 -0
  15. package/dist/templates/blog/react/public/assets/scene-3.svg +1 -0
  16. package/dist/templates/blog/react/public/assets/scene-4.svg +1 -0
  17. package/dist/templates/blog/react/public/assets/scene-5.svg +1 -0
  18. package/dist/templates/blog/react/public/assets/scene-6.svg +1 -0
  19. package/dist/templates/blog/react/src/App.tsx +465 -0
  20. package/dist/templates/blog/react/src/Copy.tsx +322 -0
  21. package/dist/templates/blog/react/src/demo-messages.ts +221 -0
  22. package/dist/templates/blog/react/src/i18n.ts +62 -0
  23. package/dist/templates/blog/react/src/main.tsx +11 -0
  24. package/dist/templates/blog/react/src/messages.ts +71 -0
  25. package/dist/templates/blog/react/src/model.ts +128 -0
  26. package/dist/templates/blog/react/src/styles.css +1159 -0
  27. package/dist/templates/blog/react/src/vite-env.d.ts +1 -0
  28. package/dist/templates/blog/react/tsconfig.json +23 -0
  29. package/dist/templates/blog/react/vite.config.ts +36 -0
  30. package/dist/templates/blog/react/wrangler.jsonc +8 -0
  31. package/dist/templates/blog/solidjs/.env.example +15 -0
  32. package/dist/templates/blog/solidjs/ASSETS.md +1 -0
  33. package/dist/templates/blog/solidjs/DEPLOY.md +23 -0
  34. package/dist/templates/blog/solidjs/LICENSE +21 -0
  35. package/dist/templates/blog/solidjs/README.md +36 -0
  36. package/dist/templates/blog/solidjs/_gitignore +11 -0
  37. package/dist/templates/blog/solidjs/index.html +2 -0
  38. package/dist/templates/blog/solidjs/linguana.json +10 -0
  39. package/dist/templates/blog/solidjs/package.json +31 -0
  40. package/dist/templates/blog/solidjs/public/assets/scene-1.svg +1 -0
  41. package/dist/templates/blog/solidjs/public/assets/scene-2.svg +1 -0
  42. package/dist/templates/blog/solidjs/public/assets/scene-3.svg +1 -0
  43. package/dist/templates/blog/solidjs/public/assets/scene-4.svg +1 -0
  44. package/dist/templates/blog/solidjs/public/assets/scene-5.svg +1 -0
  45. package/dist/templates/blog/solidjs/public/assets/scene-6.svg +1 -0
  46. package/dist/templates/blog/solidjs/src/App.tsx +457 -0
  47. package/dist/templates/blog/solidjs/src/Copy.tsx +322 -0
  48. package/dist/templates/blog/solidjs/src/demo-messages.ts +221 -0
  49. package/dist/templates/blog/solidjs/src/i18n.ts +62 -0
  50. package/dist/templates/blog/solidjs/src/main.tsx +14 -0
  51. package/dist/templates/blog/solidjs/src/messages.ts +71 -0
  52. package/dist/templates/blog/solidjs/src/model.ts +128 -0
  53. package/dist/templates/blog/solidjs/src/styles.css +1159 -0
  54. package/dist/templates/blog/solidjs/src/vite-env.d.ts +1 -0
  55. package/dist/templates/blog/solidjs/tsconfig.json +24 -0
  56. package/dist/templates/blog/solidjs/vite.config.ts +36 -0
  57. package/dist/templates/blog/solidjs/wrangler.jsonc +8 -0
  58. package/dist/templates/blog/svelte/.env.example +15 -0
  59. package/dist/templates/blog/svelte/ASSETS.md +1 -0
  60. package/dist/templates/blog/svelte/DEPLOY.md +23 -0
  61. package/dist/templates/blog/svelte/LICENSE +21 -0
  62. package/dist/templates/blog/svelte/README.md +36 -0
  63. package/dist/templates/blog/svelte/_gitignore +11 -0
  64. package/dist/templates/blog/svelte/index.html +2 -0
  65. package/dist/templates/blog/svelte/linguana.json +10 -0
  66. package/dist/templates/blog/svelte/package.json +32 -0
  67. package/dist/templates/blog/svelte/public/assets/scene-1.svg +1 -0
  68. package/dist/templates/blog/svelte/public/assets/scene-2.svg +1 -0
  69. package/dist/templates/blog/svelte/public/assets/scene-3.svg +1 -0
  70. package/dist/templates/blog/svelte/public/assets/scene-4.svg +1 -0
  71. package/dist/templates/blog/svelte/public/assets/scene-5.svg +1 -0
  72. package/dist/templates/blog/svelte/public/assets/scene-6.svg +1 -0
  73. package/dist/templates/blog/svelte/src/App.svelte +196 -0
  74. package/dist/templates/blog/svelte/src/Copy.svelte +60 -0
  75. package/dist/templates/blog/svelte/src/Root.svelte +11 -0
  76. package/dist/templates/blog/svelte/src/demo-messages.ts +221 -0
  77. package/dist/templates/blog/svelte/src/i18n.ts +62 -0
  78. package/dist/templates/blog/svelte/src/main.ts +5 -0
  79. package/dist/templates/blog/svelte/src/messages.ts +71 -0
  80. package/dist/templates/blog/svelte/src/model.ts +128 -0
  81. package/dist/templates/blog/svelte/src/styles.css +1159 -0
  82. package/dist/templates/blog/svelte/src/vite-env.d.ts +1 -0
  83. package/dist/templates/blog/svelte/svelte.config.js +2 -0
  84. package/dist/templates/blog/svelte/tsconfig.json +23 -0
  85. package/dist/templates/blog/svelte/vite.config.ts +36 -0
  86. package/dist/templates/blog/svelte/wrangler.jsonc +8 -0
  87. package/dist/templates/blog/tanstack-start/.env.example +15 -0
  88. package/dist/templates/blog/tanstack-start/ASSETS.md +1 -0
  89. package/dist/templates/blog/tanstack-start/DEPLOY.md +23 -0
  90. package/dist/templates/blog/tanstack-start/LICENSE +21 -0
  91. package/dist/templates/blog/tanstack-start/README.md +36 -0
  92. package/dist/templates/blog/tanstack-start/_gitignore +11 -0
  93. package/dist/templates/blog/tanstack-start/linguana.json +10 -0
  94. package/dist/templates/blog/tanstack-start/nitro.config.ts +2 -0
  95. package/dist/templates/blog/tanstack-start/package.json +42 -0
  96. package/dist/templates/blog/tanstack-start/public/assets/scene-1.svg +1 -0
  97. package/dist/templates/blog/tanstack-start/public/assets/scene-2.svg +1 -0
  98. package/dist/templates/blog/tanstack-start/public/assets/scene-3.svg +1 -0
  99. package/dist/templates/blog/tanstack-start/public/assets/scene-4.svg +1 -0
  100. package/dist/templates/blog/tanstack-start/public/assets/scene-5.svg +1 -0
  101. package/dist/templates/blog/tanstack-start/public/assets/scene-6.svg +1 -0
  102. package/dist/templates/blog/tanstack-start/src/App.tsx +450 -0
  103. package/dist/templates/blog/tanstack-start/src/Copy.tsx +322 -0
  104. package/dist/templates/blog/tanstack-start/src/demo-messages.ts +221 -0
  105. package/dist/templates/blog/tanstack-start/src/i18n.ts +62 -0
  106. package/dist/templates/blog/tanstack-start/src/locale-server.ts +54 -0
  107. package/dist/templates/blog/tanstack-start/src/messages.ts +71 -0
  108. package/dist/templates/blog/tanstack-start/src/model.ts +128 -0
  109. package/dist/templates/blog/tanstack-start/src/router.tsx +10 -0
  110. package/dist/templates/blog/tanstack-start/src/routes/$.tsx +7 -0
  111. package/dist/templates/blog/tanstack-start/src/routes/__root.tsx +50 -0
  112. package/dist/templates/blog/tanstack-start/src/routes/index.tsx +5 -0
  113. package/dist/templates/blog/tanstack-start/src/styles.css +1159 -0
  114. package/dist/templates/blog/tanstack-start/src/vite-env.d.ts +1 -0
  115. package/dist/templates/blog/tanstack-start/tsconfig.json +23 -0
  116. package/dist/templates/blog/tanstack-start/vite.config.ts +50 -0
  117. package/dist/templates/blog/tanstack-start/wrangler.jsonc +12 -0
  118. package/dist/templates/blog/vue/.env.example +15 -0
  119. package/dist/templates/blog/vue/ASSETS.md +1 -0
  120. package/dist/templates/blog/vue/DEPLOY.md +23 -0
  121. package/dist/templates/blog/vue/LICENSE +21 -0
  122. package/dist/templates/blog/vue/README.md +36 -0
  123. package/dist/templates/blog/vue/_gitignore +11 -0
  124. package/dist/templates/blog/vue/index.html +2 -0
  125. package/dist/templates/blog/vue/linguana.json +10 -0
  126. package/dist/templates/blog/vue/package.json +34 -0
  127. package/dist/templates/blog/vue/public/assets/scene-1.svg +1 -0
  128. package/dist/templates/blog/vue/public/assets/scene-2.svg +1 -0
  129. package/dist/templates/blog/vue/public/assets/scene-3.svg +1 -0
  130. package/dist/templates/blog/vue/public/assets/scene-4.svg +1 -0
  131. package/dist/templates/blog/vue/public/assets/scene-5.svg +1 -0
  132. package/dist/templates/blog/vue/public/assets/scene-6.svg +1 -0
  133. package/dist/templates/blog/vue/src/App.vue +188 -0
  134. package/dist/templates/blog/vue/src/Copy.vue +59 -0
  135. package/dist/templates/blog/vue/src/demo-messages.ts +221 -0
  136. package/dist/templates/blog/vue/src/i18n.ts +62 -0
  137. package/dist/templates/blog/vue/src/main.ts +7 -0
  138. package/dist/templates/blog/vue/src/messages.ts +71 -0
  139. package/dist/templates/blog/vue/src/model.ts +128 -0
  140. package/dist/templates/blog/vue/src/styles.css +1159 -0
  141. package/dist/templates/blog/vue/src/vite-env.d.ts +1 -0
  142. package/dist/templates/blog/vue/tsconfig.json +23 -0
  143. package/dist/templates/blog/vue/vite.config.ts +36 -0
  144. package/dist/templates/blog/vue/wrangler.jsonc +8 -0
  145. package/dist/templates/saas/react/.env.example +15 -0
  146. package/dist/templates/saas/react/ASSETS.md +1 -0
  147. package/dist/templates/saas/react/DEPLOY.md +23 -0
  148. package/dist/templates/saas/react/LICENSE +21 -0
  149. package/dist/templates/saas/react/README.md +36 -0
  150. package/dist/templates/saas/react/_gitignore +11 -0
  151. package/dist/templates/saas/react/index.html +2 -0
  152. package/dist/templates/saas/react/linguana.json +10 -0
  153. package/dist/templates/saas/react/package.json +34 -0
  154. package/dist/templates/saas/react/src/App.tsx +631 -0
  155. package/dist/templates/saas/react/src/Copy.tsx +380 -0
  156. package/dist/templates/saas/react/src/demo-messages.ts +228 -0
  157. package/dist/templates/saas/react/src/i18n.ts +62 -0
  158. package/dist/templates/saas/react/src/main.tsx +11 -0
  159. package/dist/templates/saas/react/src/messages.ts +77 -0
  160. package/dist/templates/saas/react/src/model.ts +73 -0
  161. package/dist/templates/saas/react/src/styles.css +1159 -0
  162. package/dist/templates/saas/react/src/vite-env.d.ts +1 -0
  163. package/dist/templates/saas/react/tsconfig.json +23 -0
  164. package/dist/templates/saas/react/vite.config.ts +36 -0
  165. package/dist/templates/saas/react/wrangler.jsonc +8 -0
  166. package/dist/templates/saas/solidjs/.env.example +15 -0
  167. package/dist/templates/saas/solidjs/ASSETS.md +1 -0
  168. package/dist/templates/saas/solidjs/DEPLOY.md +23 -0
  169. package/dist/templates/saas/solidjs/LICENSE +21 -0
  170. package/dist/templates/saas/solidjs/README.md +36 -0
  171. package/dist/templates/saas/solidjs/_gitignore +11 -0
  172. package/dist/templates/saas/solidjs/index.html +2 -0
  173. package/dist/templates/saas/solidjs/linguana.json +10 -0
  174. package/dist/templates/saas/solidjs/package.json +31 -0
  175. package/dist/templates/saas/solidjs/src/App.tsx +629 -0
  176. package/dist/templates/saas/solidjs/src/Copy.tsx +380 -0
  177. package/dist/templates/saas/solidjs/src/demo-messages.ts +228 -0
  178. package/dist/templates/saas/solidjs/src/i18n.ts +62 -0
  179. package/dist/templates/saas/solidjs/src/main.tsx +14 -0
  180. package/dist/templates/saas/solidjs/src/messages.ts +77 -0
  181. package/dist/templates/saas/solidjs/src/model.ts +73 -0
  182. package/dist/templates/saas/solidjs/src/styles.css +1159 -0
  183. package/dist/templates/saas/solidjs/src/vite-env.d.ts +1 -0
  184. package/dist/templates/saas/solidjs/tsconfig.json +24 -0
  185. package/dist/templates/saas/solidjs/vite.config.ts +36 -0
  186. package/dist/templates/saas/solidjs/wrangler.jsonc +8 -0
  187. package/dist/templates/saas/svelte/.env.example +15 -0
  188. package/dist/templates/saas/svelte/ASSETS.md +1 -0
  189. package/dist/templates/saas/svelte/DEPLOY.md +23 -0
  190. package/dist/templates/saas/svelte/LICENSE +21 -0
  191. package/dist/templates/saas/svelte/README.md +36 -0
  192. package/dist/templates/saas/svelte/_gitignore +11 -0
  193. package/dist/templates/saas/svelte/index.html +2 -0
  194. package/dist/templates/saas/svelte/linguana.json +10 -0
  195. package/dist/templates/saas/svelte/package.json +32 -0
  196. package/dist/templates/saas/svelte/src/App.svelte +252 -0
  197. package/dist/templates/saas/svelte/src/Copy.svelte +74 -0
  198. package/dist/templates/saas/svelte/src/Root.svelte +11 -0
  199. package/dist/templates/saas/svelte/src/demo-messages.ts +228 -0
  200. package/dist/templates/saas/svelte/src/i18n.ts +62 -0
  201. package/dist/templates/saas/svelte/src/main.ts +5 -0
  202. package/dist/templates/saas/svelte/src/messages.ts +77 -0
  203. package/dist/templates/saas/svelte/src/model.ts +73 -0
  204. package/dist/templates/saas/svelte/src/styles.css +1159 -0
  205. package/dist/templates/saas/svelte/src/vite-env.d.ts +1 -0
  206. package/dist/templates/saas/svelte/svelte.config.js +2 -0
  207. package/dist/templates/saas/svelte/tsconfig.json +23 -0
  208. package/dist/templates/saas/svelte/vite.config.ts +36 -0
  209. package/dist/templates/saas/svelte/wrangler.jsonc +8 -0
  210. package/dist/templates/saas/tanstack-start/.env.example +15 -0
  211. package/dist/templates/saas/tanstack-start/ASSETS.md +1 -0
  212. package/dist/templates/saas/tanstack-start/DEPLOY.md +23 -0
  213. package/dist/templates/saas/tanstack-start/LICENSE +21 -0
  214. package/dist/templates/saas/tanstack-start/README.md +36 -0
  215. package/dist/templates/saas/tanstack-start/_gitignore +11 -0
  216. package/dist/templates/saas/tanstack-start/linguana.json +10 -0
  217. package/dist/templates/saas/tanstack-start/nitro.config.ts +2 -0
  218. package/dist/templates/saas/tanstack-start/package.json +42 -0
  219. package/dist/templates/saas/tanstack-start/src/App.tsx +616 -0
  220. package/dist/templates/saas/tanstack-start/src/Copy.tsx +380 -0
  221. package/dist/templates/saas/tanstack-start/src/demo-messages.ts +228 -0
  222. package/dist/templates/saas/tanstack-start/src/i18n.ts +62 -0
  223. package/dist/templates/saas/tanstack-start/src/locale-server.ts +54 -0
  224. package/dist/templates/saas/tanstack-start/src/messages.ts +77 -0
  225. package/dist/templates/saas/tanstack-start/src/model.ts +73 -0
  226. package/dist/templates/saas/tanstack-start/src/router.tsx +10 -0
  227. package/dist/templates/saas/tanstack-start/src/routes/$.tsx +7 -0
  228. package/dist/templates/saas/tanstack-start/src/routes/__root.tsx +50 -0
  229. package/dist/templates/saas/tanstack-start/src/routes/index.tsx +5 -0
  230. package/dist/templates/saas/tanstack-start/src/styles.css +1159 -0
  231. package/dist/templates/saas/tanstack-start/src/vite-env.d.ts +1 -0
  232. package/dist/templates/saas/tanstack-start/tsconfig.json +23 -0
  233. package/dist/templates/saas/tanstack-start/vite.config.ts +50 -0
  234. package/dist/templates/saas/tanstack-start/wrangler.jsonc +12 -0
  235. package/dist/templates/saas/vue/.env.example +15 -0
  236. package/dist/templates/saas/vue/ASSETS.md +1 -0
  237. package/dist/templates/saas/vue/DEPLOY.md +23 -0
  238. package/dist/templates/saas/vue/LICENSE +21 -0
  239. package/dist/templates/saas/vue/README.md +36 -0
  240. package/dist/templates/saas/vue/_gitignore +11 -0
  241. package/dist/templates/saas/vue/index.html +2 -0
  242. package/dist/templates/saas/vue/linguana.json +10 -0
  243. package/dist/templates/saas/vue/package.json +34 -0
  244. package/dist/templates/saas/vue/src/App.vue +244 -0
  245. package/dist/templates/saas/vue/src/Copy.vue +73 -0
  246. package/dist/templates/saas/vue/src/demo-messages.ts +228 -0
  247. package/dist/templates/saas/vue/src/i18n.ts +62 -0
  248. package/dist/templates/saas/vue/src/main.ts +7 -0
  249. package/dist/templates/saas/vue/src/messages.ts +77 -0
  250. package/dist/templates/saas/vue/src/model.ts +73 -0
  251. package/dist/templates/saas/vue/src/styles.css +1159 -0
  252. package/dist/templates/saas/vue/src/vite-env.d.ts +1 -0
  253. package/dist/templates/saas/vue/tsconfig.json +23 -0
  254. package/dist/templates/saas/vue/vite.config.ts +36 -0
  255. package/dist/templates/saas/vue/wrangler.jsonc +8 -0
  256. package/dist/templates/storefront/react/.env.example +15 -0
  257. package/dist/templates/storefront/react/ASSETS.md +1 -0
  258. package/dist/templates/storefront/react/DEPLOY.md +23 -0
  259. package/dist/templates/storefront/react/LICENSE +21 -0
  260. package/dist/templates/storefront/react/README.md +36 -0
  261. package/dist/templates/storefront/react/_gitignore +11 -0
  262. package/dist/templates/storefront/react/index.html +2 -0
  263. package/dist/templates/storefront/react/linguana.json +10 -0
  264. package/dist/templates/storefront/react/package.json +34 -0
  265. package/dist/templates/storefront/react/public/assets/collection.svg +1 -0
  266. package/dist/templates/storefront/react/public/assets/product-1.svg +1 -0
  267. package/dist/templates/storefront/react/public/assets/product-2.svg +1 -0
  268. package/dist/templates/storefront/react/public/assets/product-3.svg +1 -0
  269. package/dist/templates/storefront/react/public/assets/product-4.svg +1 -0
  270. package/dist/templates/storefront/react/public/assets/product-5.svg +1 -0
  271. package/dist/templates/storefront/react/public/assets/product-6.svg +1 -0
  272. package/dist/templates/storefront/react/public/assets/product-7.svg +1 -0
  273. package/dist/templates/storefront/react/public/assets/product-8.svg +1 -0
  274. package/dist/templates/storefront/react/src/App.tsx +616 -0
  275. package/dist/templates/storefront/react/src/Copy.tsx +304 -0
  276. package/dist/templates/storefront/react/src/demo-messages.ts +205 -0
  277. package/dist/templates/storefront/react/src/i18n.ts +64 -0
  278. package/dist/templates/storefront/react/src/main.tsx +11 -0
  279. package/dist/templates/storefront/react/src/messages.ts +71 -0
  280. package/dist/templates/storefront/react/src/model.ts +146 -0
  281. package/dist/templates/storefront/react/src/styles.css +1159 -0
  282. package/dist/templates/storefront/react/src/vite-env.d.ts +1 -0
  283. package/dist/templates/storefront/react/tsconfig.json +23 -0
  284. package/dist/templates/storefront/react/vite.config.ts +36 -0
  285. package/dist/templates/storefront/react/wrangler.jsonc +8 -0
  286. package/dist/templates/storefront/solidjs/.env.example +15 -0
  287. package/dist/templates/storefront/solidjs/ASSETS.md +1 -0
  288. package/dist/templates/storefront/solidjs/DEPLOY.md +23 -0
  289. package/dist/templates/storefront/solidjs/LICENSE +21 -0
  290. package/dist/templates/storefront/solidjs/README.md +36 -0
  291. package/dist/templates/storefront/solidjs/_gitignore +11 -0
  292. package/dist/templates/storefront/solidjs/index.html +2 -0
  293. package/dist/templates/storefront/solidjs/linguana.json +10 -0
  294. package/dist/templates/storefront/solidjs/package.json +31 -0
  295. package/dist/templates/storefront/solidjs/public/assets/collection.svg +1 -0
  296. package/dist/templates/storefront/solidjs/public/assets/product-1.svg +1 -0
  297. package/dist/templates/storefront/solidjs/public/assets/product-2.svg +1 -0
  298. package/dist/templates/storefront/solidjs/public/assets/product-3.svg +1 -0
  299. package/dist/templates/storefront/solidjs/public/assets/product-4.svg +1 -0
  300. package/dist/templates/storefront/solidjs/public/assets/product-5.svg +1 -0
  301. package/dist/templates/storefront/solidjs/public/assets/product-6.svg +1 -0
  302. package/dist/templates/storefront/solidjs/public/assets/product-7.svg +1 -0
  303. package/dist/templates/storefront/solidjs/public/assets/product-8.svg +1 -0
  304. package/dist/templates/storefront/solidjs/src/App.tsx +612 -0
  305. package/dist/templates/storefront/solidjs/src/Copy.tsx +304 -0
  306. package/dist/templates/storefront/solidjs/src/demo-messages.ts +205 -0
  307. package/dist/templates/storefront/solidjs/src/i18n.ts +64 -0
  308. package/dist/templates/storefront/solidjs/src/main.tsx +14 -0
  309. package/dist/templates/storefront/solidjs/src/messages.ts +71 -0
  310. package/dist/templates/storefront/solidjs/src/model.ts +146 -0
  311. package/dist/templates/storefront/solidjs/src/styles.css +1159 -0
  312. package/dist/templates/storefront/solidjs/src/vite-env.d.ts +1 -0
  313. package/dist/templates/storefront/solidjs/tsconfig.json +24 -0
  314. package/dist/templates/storefront/solidjs/vite.config.ts +36 -0
  315. package/dist/templates/storefront/solidjs/wrangler.jsonc +8 -0
  316. package/dist/templates/storefront/svelte/.env.example +15 -0
  317. package/dist/templates/storefront/svelte/ASSETS.md +1 -0
  318. package/dist/templates/storefront/svelte/DEPLOY.md +23 -0
  319. package/dist/templates/storefront/svelte/LICENSE +21 -0
  320. package/dist/templates/storefront/svelte/README.md +36 -0
  321. package/dist/templates/storefront/svelte/_gitignore +11 -0
  322. package/dist/templates/storefront/svelte/index.html +2 -0
  323. package/dist/templates/storefront/svelte/linguana.json +10 -0
  324. package/dist/templates/storefront/svelte/package.json +32 -0
  325. package/dist/templates/storefront/svelte/public/assets/collection.svg +1 -0
  326. package/dist/templates/storefront/svelte/public/assets/product-1.svg +1 -0
  327. package/dist/templates/storefront/svelte/public/assets/product-2.svg +1 -0
  328. package/dist/templates/storefront/svelte/public/assets/product-3.svg +1 -0
  329. package/dist/templates/storefront/svelte/public/assets/product-4.svg +1 -0
  330. package/dist/templates/storefront/svelte/public/assets/product-5.svg +1 -0
  331. package/dist/templates/storefront/svelte/public/assets/product-6.svg +1 -0
  332. package/dist/templates/storefront/svelte/public/assets/product-7.svg +1 -0
  333. package/dist/templates/storefront/svelte/public/assets/product-8.svg +1 -0
  334. package/dist/templates/storefront/svelte/src/App.svelte +218 -0
  335. package/dist/templates/storefront/svelte/src/Copy.svelte +66 -0
  336. package/dist/templates/storefront/svelte/src/Root.svelte +11 -0
  337. package/dist/templates/storefront/svelte/src/demo-messages.ts +205 -0
  338. package/dist/templates/storefront/svelte/src/i18n.ts +64 -0
  339. package/dist/templates/storefront/svelte/src/main.ts +5 -0
  340. package/dist/templates/storefront/svelte/src/messages.ts +71 -0
  341. package/dist/templates/storefront/svelte/src/model.ts +146 -0
  342. package/dist/templates/storefront/svelte/src/styles.css +1159 -0
  343. package/dist/templates/storefront/svelte/src/vite-env.d.ts +1 -0
  344. package/dist/templates/storefront/svelte/svelte.config.js +2 -0
  345. package/dist/templates/storefront/svelte/tsconfig.json +23 -0
  346. package/dist/templates/storefront/svelte/vite.config.ts +36 -0
  347. package/dist/templates/storefront/svelte/wrangler.jsonc +8 -0
  348. package/dist/templates/storefront/tanstack-start/.env.example +15 -0
  349. package/dist/templates/storefront/tanstack-start/ASSETS.md +1 -0
  350. package/dist/templates/storefront/tanstack-start/DEPLOY.md +23 -0
  351. package/dist/templates/storefront/tanstack-start/LICENSE +21 -0
  352. package/dist/templates/storefront/tanstack-start/README.md +36 -0
  353. package/dist/templates/storefront/tanstack-start/_gitignore +11 -0
  354. package/dist/templates/storefront/tanstack-start/linguana.json +10 -0
  355. package/dist/templates/storefront/tanstack-start/nitro.config.ts +2 -0
  356. package/dist/templates/storefront/tanstack-start/package.json +42 -0
  357. package/dist/templates/storefront/tanstack-start/public/assets/collection.svg +1 -0
  358. package/dist/templates/storefront/tanstack-start/public/assets/product-1.svg +1 -0
  359. package/dist/templates/storefront/tanstack-start/public/assets/product-2.svg +1 -0
  360. package/dist/templates/storefront/tanstack-start/public/assets/product-3.svg +1 -0
  361. package/dist/templates/storefront/tanstack-start/public/assets/product-4.svg +1 -0
  362. package/dist/templates/storefront/tanstack-start/public/assets/product-5.svg +1 -0
  363. package/dist/templates/storefront/tanstack-start/public/assets/product-6.svg +1 -0
  364. package/dist/templates/storefront/tanstack-start/public/assets/product-7.svg +1 -0
  365. package/dist/templates/storefront/tanstack-start/public/assets/product-8.svg +1 -0
  366. package/dist/templates/storefront/tanstack-start/src/App.tsx +601 -0
  367. package/dist/templates/storefront/tanstack-start/src/Copy.tsx +304 -0
  368. package/dist/templates/storefront/tanstack-start/src/demo-messages.ts +205 -0
  369. package/dist/templates/storefront/tanstack-start/src/i18n.ts +64 -0
  370. package/dist/templates/storefront/tanstack-start/src/locale-server.ts +54 -0
  371. package/dist/templates/storefront/tanstack-start/src/messages.ts +71 -0
  372. package/dist/templates/storefront/tanstack-start/src/model.ts +146 -0
  373. package/dist/templates/storefront/tanstack-start/src/router.tsx +10 -0
  374. package/dist/templates/storefront/tanstack-start/src/routes/$.tsx +7 -0
  375. package/dist/templates/storefront/tanstack-start/src/routes/__root.tsx +50 -0
  376. package/dist/templates/storefront/tanstack-start/src/routes/index.tsx +5 -0
  377. package/dist/templates/storefront/tanstack-start/src/styles.css +1159 -0
  378. package/dist/templates/storefront/tanstack-start/src/vite-env.d.ts +1 -0
  379. package/dist/templates/storefront/tanstack-start/tsconfig.json +23 -0
  380. package/dist/templates/storefront/tanstack-start/vite.config.ts +50 -0
  381. package/dist/templates/storefront/tanstack-start/wrangler.jsonc +12 -0
  382. package/dist/templates/storefront/vue/.env.example +15 -0
  383. package/dist/templates/storefront/vue/ASSETS.md +1 -0
  384. package/dist/templates/storefront/vue/DEPLOY.md +23 -0
  385. package/dist/templates/storefront/vue/LICENSE +21 -0
  386. package/dist/templates/storefront/vue/README.md +36 -0
  387. package/dist/templates/storefront/vue/_gitignore +11 -0
  388. package/dist/templates/storefront/vue/index.html +2 -0
  389. package/dist/templates/storefront/vue/linguana.json +10 -0
  390. package/dist/templates/storefront/vue/package.json +34 -0
  391. package/dist/templates/storefront/vue/public/assets/collection.svg +1 -0
  392. package/dist/templates/storefront/vue/public/assets/product-1.svg +1 -0
  393. package/dist/templates/storefront/vue/public/assets/product-2.svg +1 -0
  394. package/dist/templates/storefront/vue/public/assets/product-3.svg +1 -0
  395. package/dist/templates/storefront/vue/public/assets/product-4.svg +1 -0
  396. package/dist/templates/storefront/vue/public/assets/product-5.svg +1 -0
  397. package/dist/templates/storefront/vue/public/assets/product-6.svg +1 -0
  398. package/dist/templates/storefront/vue/public/assets/product-7.svg +1 -0
  399. package/dist/templates/storefront/vue/public/assets/product-8.svg +1 -0
  400. package/dist/templates/storefront/vue/src/App.vue +210 -0
  401. package/dist/templates/storefront/vue/src/Copy.vue +65 -0
  402. package/dist/templates/storefront/vue/src/demo-messages.ts +205 -0
  403. package/dist/templates/storefront/vue/src/i18n.ts +64 -0
  404. package/dist/templates/storefront/vue/src/main.ts +7 -0
  405. package/dist/templates/storefront/vue/src/messages.ts +71 -0
  406. package/dist/templates/storefront/vue/src/model.ts +146 -0
  407. package/dist/templates/storefront/vue/src/styles.css +1159 -0
  408. package/dist/templates/storefront/vue/src/vite-env.d.ts +1 -0
  409. package/dist/templates/storefront/vue/tsconfig.json +23 -0
  410. package/dist/templates/storefront/vue/vite.config.ts +36 -0
  411. package/dist/templates/storefront/vue/wrangler.jsonc +8 -0
  412. package/package.json +38 -0
@@ -0,0 +1,1159 @@
1
+ * {
2
+ box-sizing: border-box;
3
+ }
4
+ html {
5
+ scroll-behavior: smooth;
6
+ scroll-padding-top: 6rem;
7
+ }
8
+ body {
9
+ margin: 0;
10
+ background: #f7f8f9;
11
+ color: #203d4c;
12
+ font-family: Arial, Helvetica, sans-serif;
13
+ font-size: 16px;
14
+ line-height: 1.6;
15
+ }
16
+ button,
17
+ input,
18
+ select {
19
+ font: inherit;
20
+ }
21
+ button,
22
+ a,
23
+ input,
24
+ select,
25
+ summary {
26
+ -webkit-tap-highlight-color: transparent;
27
+ }
28
+ button,
29
+ a,
30
+ summary {
31
+ touch-action: manipulation;
32
+ }
33
+ button {
34
+ cursor: pointer;
35
+ }
36
+ a {
37
+ color: inherit;
38
+ text-decoration: none;
39
+ }
40
+ a:hover {
41
+ text-decoration: underline;
42
+ text-underline-offset: 5px;
43
+ }
44
+ button:hover {
45
+ filter: brightness(0.94);
46
+ }
47
+ :focus-visible {
48
+ outline: 3px solid #dd684e;
49
+ outline-offset: 5px;
50
+ }
51
+ img {
52
+ display: block;
53
+ max-width: 100%;
54
+ height: auto;
55
+ }
56
+ h1,
57
+ h2,
58
+ h3,
59
+ p {
60
+ margin: 0;
61
+ }
62
+ h1,
63
+ h2,
64
+ h3 {
65
+ line-height: 1.12;
66
+ letter-spacing: -0.045em;
67
+ }
68
+ h1 {
69
+ font-size: clamp(2.8rem, 5.7vw, 5.4rem);
70
+ font-weight: 500;
71
+ }
72
+ h2 {
73
+ font-size: clamp(2rem, 3.4vw, 3rem);
74
+ font-weight: 500;
75
+ }
76
+ h3 {
77
+ font-size: 1.55rem;
78
+ }
79
+ p {
80
+ max-width: 65ch;
81
+ }
82
+ button {
83
+ color: inherit;
84
+ }
85
+ input,
86
+ select {
87
+ border: 1px solid #c6cdd0;
88
+ background: transparent;
89
+ border-radius: 5px;
90
+ color: inherit;
91
+ padding: 0.7rem 0.85rem;
92
+ min-width: 0;
93
+ }
94
+ select {
95
+ max-width: 100%;
96
+ }
97
+ .site {
98
+ --accent: #254e65;
99
+ --paper: #eff3f5;
100
+ --ink: #203d4c;
101
+ --line: #d5dfe4;
102
+ --warm: #de7658;
103
+ max-width: 1600px;
104
+ margin: auto;
105
+ min-height: 100vh;
106
+ color: var(--ink);
107
+ }
108
+ .site-header,
109
+ .site-footer,
110
+ .section,
111
+ .hero {
112
+ padding-inline: clamp(1.2rem, 5.5vw, 6rem);
113
+ }
114
+ .site-header {
115
+ min-height: 98px;
116
+ display: flex;
117
+ align-items: center;
118
+ justify-content: space-between;
119
+ border-bottom: 1px solid var(--line);
120
+ gap: 2rem;
121
+ }
122
+ .brand {
123
+ font-size: 1.55rem;
124
+ font-weight: 700;
125
+ letter-spacing: -0.065em;
126
+ display: inline-flex;
127
+ align-items: center;
128
+ gap: 0.55rem;
129
+ white-space: nowrap;
130
+ }
131
+ .brand-mark {
132
+ color: var(--warm);
133
+ font-size: 2rem;
134
+ font-family: Georgia, serif;
135
+ }
136
+ .site-header nav {
137
+ display: flex;
138
+ align-items: center;
139
+ gap: 2rem;
140
+ font-size: 0.85rem;
141
+ font-weight: 500;
142
+ }
143
+ .locale-picker select {
144
+ border: 0;
145
+ padding: 0.5rem 0.2rem;
146
+ max-width: 120px;
147
+ font-size: 0.85rem;
148
+ }
149
+ .hero {
150
+ padding-block: 4.5rem 5rem;
151
+ display: grid;
152
+ grid-template-columns: 1fr 1fr;
153
+ align-items: center;
154
+ gap: 5rem;
155
+ }
156
+ .hero-copy h1 {
157
+ margin-block: 1.1rem 1.8rem;
158
+ }
159
+ .eyebrow {
160
+ text-transform: uppercase;
161
+ letter-spacing: 0.17em;
162
+ font-size: 0.69rem;
163
+ font-weight: 700;
164
+ color: var(--accent);
165
+ margin-bottom: 1rem;
166
+ }
167
+ .intro {
168
+ font-size: 1.07rem;
169
+ line-height: 1.8;
170
+ color: #586d77;
171
+ margin-bottom: 2rem;
172
+ }
173
+ .hero-image {
174
+ width: 100%;
175
+ height: 510px;
176
+ object-fit: cover;
177
+ }
178
+ .image-caption {
179
+ display: flex;
180
+ justify-content: space-between;
181
+ font-size: 0.68rem;
182
+ font-weight: 600;
183
+ letter-spacing: 0.13em;
184
+ padding-top: 1rem;
185
+ }
186
+ .text-link {
187
+ font-weight: 600;
188
+ font-size: 0.88rem;
189
+ border-bottom: 1px solid;
190
+ padding-bottom: 0.3rem;
191
+ }
192
+ .button {
193
+ background: var(--accent);
194
+ color: white;
195
+ border: 1px solid var(--accent);
196
+ border-radius: 4px;
197
+ padding: 0.95rem 1.5rem;
198
+ display: inline-flex;
199
+ gap: 1rem;
200
+ align-items: center;
201
+ justify-content: center;
202
+ line-height: 1.4;
203
+ font-size: 0.86rem;
204
+ font-weight: 600;
205
+ text-align: center;
206
+ }
207
+ .button:hover {
208
+ text-decoration: none;
209
+ }
210
+ .small {
211
+ padding: 0.65rem 1rem;
212
+ }
213
+ .section {
214
+ padding-block: 4.5rem;
215
+ }
216
+ .section-heading {
217
+ display: flex;
218
+ justify-content: space-between;
219
+ gap: 2rem;
220
+ align-items: baseline;
221
+ margin-bottom: 2rem;
222
+ }
223
+ .section-heading .muted {
224
+ font-size: 0.78rem;
225
+ }
226
+ .muted {
227
+ color: #647570;
228
+ }
229
+ .fine {
230
+ font-size: 0.75rem;
231
+ }
232
+ .filters {
233
+ display: flex;
234
+ gap: 1rem;
235
+ flex-wrap: wrap;
236
+ align-items: center;
237
+ margin-bottom: 2.5rem;
238
+ padding-bottom: 1.3rem;
239
+ border-bottom: 1px solid var(--line);
240
+ }
241
+ .filter-buttons {
242
+ display: flex;
243
+ gap: 0.35rem;
244
+ flex-wrap: wrap;
245
+ flex: 1;
246
+ }
247
+ .chip {
248
+ border: 0;
249
+ background: transparent;
250
+ font-size: 0.8rem;
251
+ padding: 0.6rem 0.9rem;
252
+ border-radius: 3px;
253
+ }
254
+ .chip.active {
255
+ background: var(--accent);
256
+ color: white;
257
+ }
258
+ .search input {
259
+ width: 190px;
260
+ }
261
+ .article-grid {
262
+ display: grid;
263
+ grid-template-columns: repeat(3, 1fr);
264
+ gap: 3.5rem 2rem;
265
+ }
266
+ .article-card img {
267
+ aspect-ratio: 4 / 3;
268
+ width: 100%;
269
+ object-fit: cover;
270
+ }
271
+ .article-card .meta {
272
+ margin-block: 1.2rem 0.8rem;
273
+ }
274
+ .meta {
275
+ display: flex;
276
+ gap: 1rem;
277
+ align-items: center;
278
+ font-size: 0.68rem;
279
+ color: #697b84;
280
+ text-transform: uppercase;
281
+ letter-spacing: 0.08em;
282
+ }
283
+ .article-card h3 {
284
+ font-size: 1.85rem;
285
+ font-weight: 500;
286
+ }
287
+ .article-card p {
288
+ font-size: 0.86rem;
289
+ color: #5e717c;
290
+ margin-block: 1rem;
291
+ }
292
+ .article-card > a:last-child {
293
+ font-size: 0.77rem;
294
+ font-weight: 600;
295
+ }
296
+ .site-footer {
297
+ border-top: 1px solid var(--line);
298
+ padding-block: 3rem;
299
+ display: flex;
300
+ justify-content: space-between;
301
+ align-items: flex-end;
302
+ gap: 3rem;
303
+ }
304
+ .site-footer p {
305
+ font-size: 0.82rem;
306
+ color: #61716e;
307
+ margin-top: 1rem;
308
+ max-width: 390px;
309
+ }
310
+ .site-footer > .fine {
311
+ font-size: 0.7rem;
312
+ max-width: 220px;
313
+ }
314
+ .site-footer .fine a {
315
+ display: block;
316
+ margin-top: 0.65rem;
317
+ }
318
+ .empty {
319
+ padding-block: 4rem;
320
+ text-align: center;
321
+ max-width: 800px;
322
+ margin: auto;
323
+ }
324
+ .empty h1 {
325
+ font-size: 3rem;
326
+ }
327
+ .empty h3,
328
+ .empty p {
329
+ margin: 1rem auto;
330
+ }
331
+ .empty > a {
332
+ display: inline-block;
333
+ margin-top: 1rem;
334
+ text-decoration: underline;
335
+ }
336
+ .article-detail {
337
+ max-width: 1100px;
338
+ margin: auto;
339
+ }
340
+ .article-detail > .eyebrow {
341
+ margin-top: 2rem;
342
+ }
343
+ .article-detail > h1 {
344
+ max-width: 850px;
345
+ margin-bottom: 1.5rem;
346
+ }
347
+ .detail-image {
348
+ margin-block: 2rem;
349
+ aspect-ratio: 16 / 10;
350
+ object-fit: cover;
351
+ width: 100%;
352
+ }
353
+ .prose {
354
+ max-width: 680px;
355
+ margin: 3rem auto;
356
+ line-height: 1.9;
357
+ }
358
+ .prose p {
359
+ margin-bottom: 1.7rem;
360
+ font-size: 1.05rem;
361
+ }
362
+ .prose .lead {
363
+ font-size: 1.35rem;
364
+ color: #526d7b;
365
+ }
366
+ .blog h1,
367
+ .blog h2,
368
+ .blog h3 {
369
+ font-family: Georgia, "Times New Roman", serif;
370
+ }
371
+ .blog .brand {
372
+ font-family: Georgia, serif;
373
+ font-style: italic;
374
+ font-size: 1.85rem;
375
+ }
376
+ .blog #journal {
377
+ background: #eff3f5;
378
+ }
379
+ .storefront {
380
+ --accent: #285144;
381
+ --ink: #223e33;
382
+ --line: #d9ddd2;
383
+ --warm: #b89460;
384
+ background: #f7f7f1;
385
+ }
386
+ .storefront h1,
387
+ .storefront h2 {
388
+ font-family: Georgia, serif;
389
+ }
390
+ .store-hero {
391
+ background: #edf0e5;
392
+ gap: 2rem;
393
+ }
394
+ .store-hero .hero-image {
395
+ object-fit: contain;
396
+ }
397
+ .product-grid {
398
+ display: grid;
399
+ grid-template-columns: repeat(4, 1fr);
400
+ gap: 3rem 1.3rem;
401
+ }
402
+ .product-card img {
403
+ width: 100%;
404
+ aspect-ratio: 1;
405
+ object-fit: cover;
406
+ background: #eeeede;
407
+ transition: transform 0.2s;
408
+ }
409
+ .product-card > a {
410
+ display: block;
411
+ overflow: hidden;
412
+ }
413
+ .product-card > a:hover img {
414
+ transform: scale(1.025);
415
+ }
416
+ .product-heading {
417
+ display: flex;
418
+ justify-content: space-between;
419
+ gap: 0.5rem;
420
+ align-items: baseline;
421
+ margin-top: 1.1rem;
422
+ }
423
+ .product-heading h3 {
424
+ font-size: 0.95rem;
425
+ font-weight: 600;
426
+ letter-spacing: -0.02em;
427
+ }
428
+ .product-heading > span {
429
+ font-size: 0.85rem;
430
+ white-space: nowrap;
431
+ }
432
+ .product-card p {
433
+ font-size: 0.73rem;
434
+ margin-top: 0.4rem;
435
+ }
436
+ .add-button {
437
+ border: 0;
438
+ border-bottom: 1px solid #819787;
439
+ background: transparent;
440
+ padding: 0.45rem 0;
441
+ font-size: 0.76rem;
442
+ margin-top: 0.5rem;
443
+ }
444
+ .cart-count {
445
+ display: inline-grid;
446
+ place-items: center;
447
+ background: var(--accent);
448
+ color: white;
449
+ width: 23px;
450
+ height: 23px;
451
+ border-radius: 50%;
452
+ font-size: 0.66rem;
453
+ margin-inline-start: 0.4rem;
454
+ }
455
+ .product-detail {
456
+ display: grid;
457
+ grid-template-columns: 1fr 1fr;
458
+ gap: 5rem;
459
+ align-items: center;
460
+ }
461
+ .product-detail h1 {
462
+ font-size: 3.2rem;
463
+ }
464
+ .product-detail .eyebrow {
465
+ margin-top: 2rem;
466
+ }
467
+ .product-detail .price {
468
+ font-size: 1.4rem;
469
+ margin-block: 1rem;
470
+ }
471
+ .quantity {
472
+ display: flex;
473
+ gap: 1rem;
474
+ align-items: center;
475
+ margin-block: 1.5rem;
476
+ }
477
+ .quantity input {
478
+ width: 75px;
479
+ }
480
+ .product-detail .fine {
481
+ margin-top: 1.5rem;
482
+ }
483
+ .basket {
484
+ max-width: 1150px;
485
+ margin: auto;
486
+ min-height: 65vh;
487
+ }
488
+ .cart-row {
489
+ display: flex;
490
+ align-items: center;
491
+ gap: 2rem;
492
+ border-bottom: 1px solid var(--line);
493
+ padding-block: 1.5rem;
494
+ }
495
+ .cart-row > img {
496
+ width: 100px;
497
+ }
498
+ .cart-row > div {
499
+ flex: 1;
500
+ }
501
+ .cart-row h2 {
502
+ font-family: Arial, sans-serif;
503
+ font-size: 1.2rem;
504
+ letter-spacing: -0.02em;
505
+ margin-bottom: 0.4rem;
506
+ }
507
+ .text-button {
508
+ border: 0;
509
+ background: none;
510
+ text-decoration: underline;
511
+ font-size: 0.85rem;
512
+ }
513
+ .cart-total {
514
+ display: flex;
515
+ justify-content: space-between;
516
+ font-size: 1.5rem;
517
+ margin-block: 2rem;
518
+ }
519
+ .basket > p {
520
+ margin-top: 1.3rem;
521
+ }
522
+ .toast {
523
+ position: fixed;
524
+ inset-inline: 1rem;
525
+ bottom: 1.5rem;
526
+ margin: auto;
527
+ width: fit-content;
528
+ max-width: calc(100% - 2rem);
529
+ padding: 1rem 1.4rem;
530
+ background: var(--accent);
531
+ color: white;
532
+ box-shadow: 0 8px 35px #0002;
533
+ font-size: 0.85rem;
534
+ z-index: 5;
535
+ display: flex;
536
+ gap: 2rem;
537
+ flex-wrap: wrap;
538
+ }
539
+ .toast a {
540
+ text-decoration: underline;
541
+ }
542
+ .saas {
543
+ --accent: #494fbd;
544
+ --ink: #222544;
545
+ --line: #dddeeb;
546
+ --warm: #5a60cc;
547
+ background: #fafafd;
548
+ }
549
+ .saas h1,
550
+ .saas h2 {
551
+ font-weight: 600;
552
+ letter-spacing: -0.065em;
553
+ }
554
+ .saas-hero {
555
+ padding-block: 6rem;
556
+ gap: 4rem;
557
+ }
558
+ .saas-hero h1 {
559
+ font-size: clamp(2.7rem, 4.8vw, 4.8rem);
560
+ }
561
+ .saas .intro {
562
+ color: #71718b;
563
+ }
564
+ .hero-actions {
565
+ display: flex;
566
+ gap: 2rem;
567
+ align-items: center;
568
+ }
569
+ .handover-art {
570
+ height: 410px;
571
+ background: #e9e9fa;
572
+ border-radius: 8px;
573
+ position: relative;
574
+ display: grid;
575
+ place-items: center;
576
+ overflow: hidden;
577
+ }
578
+ .handover-art:before {
579
+ content: "";
580
+ position: absolute;
581
+ inset: 3rem;
582
+ border: 1px solid #c1c2e1;
583
+ border-radius: 50%;
584
+ transform: rotate(-25deg) scaleX(1.4);
585
+ }
586
+ .orbit-label {
587
+ position: absolute;
588
+ top: 2rem;
589
+ inset-inline-start: 2rem;
590
+ font-size: 0.75rem;
591
+ color: var(--accent);
592
+ letter-spacing: 0.1em;
593
+ }
594
+ .paper {
595
+ position: relative;
596
+ transform: rotate(-6deg);
597
+ padding: 2rem;
598
+ background: white;
599
+ width: 75%;
600
+ box-shadow: 0 15px 35px #3b39821a;
601
+ border: 1px solid #d9d9ed;
602
+ border-radius: 8px;
603
+ }
604
+ .paper strong {
605
+ display: block;
606
+ margin-top: 1.5rem;
607
+ font-size: 0.85rem;
608
+ }
609
+ .avatar,
610
+ .avatars span {
611
+ width: 34px;
612
+ height: 34px;
613
+ background: #e4dbcc;
614
+ border-radius: 50%;
615
+ display: inline-grid;
616
+ place-items: center;
617
+ font-size: 0.7rem;
618
+ font-weight: 600;
619
+ }
620
+ .paper-line {
621
+ height: 7px;
622
+ border-radius: 4px;
623
+ background: #ebebf4;
624
+ margin-top: 1rem;
625
+ }
626
+ .paper-line.short {
627
+ width: 70%;
628
+ margin-top: 0.5rem;
629
+ }
630
+ .avatars {
631
+ margin-top: 2rem;
632
+ display: flex;
633
+ }
634
+ .avatars span + span {
635
+ margin-inline-start: -7px;
636
+ border: 2px solid white;
637
+ background: #dae6e1;
638
+ }
639
+ .avatars span:last-child {
640
+ background: #dcd5ef;
641
+ }
642
+ .art-stamp {
643
+ position: absolute;
644
+ bottom: 2rem;
645
+ inset-inline-end: 2rem;
646
+ display: grid;
647
+ place-items: center;
648
+ background: var(--accent);
649
+ color: white;
650
+ font-size: 3rem;
651
+ width: 80px;
652
+ height: 80px;
653
+ border-radius: 12px;
654
+ transform: rotate(9deg);
655
+ }
656
+ .workflow {
657
+ background: #f0f0f8;
658
+ display: grid;
659
+ grid-template-columns: 1fr 1fr;
660
+ gap: 5rem;
661
+ align-items: center;
662
+ }
663
+ .workflow h2 {
664
+ font-size: 2.6rem;
665
+ }
666
+ .workflow-steps {
667
+ display: grid;
668
+ gap: 0.8rem;
669
+ margin-top: 2rem;
670
+ }
671
+ .workflow-step {
672
+ display: flex;
673
+ gap: 1rem;
674
+ border: 1px solid transparent;
675
+ background: transparent;
676
+ padding: 1rem;
677
+ border-radius: 6px;
678
+ text-align: start;
679
+ }
680
+ .workflow-step.selected {
681
+ background: white;
682
+ border-color: #dedfed;
683
+ }
684
+ .step-number {
685
+ font-size: 0.75rem;
686
+ color: var(--accent);
687
+ padding-top: 0.1rem;
688
+ }
689
+ .workflow-step strong {
690
+ display: block;
691
+ font-size: 0.92rem;
692
+ }
693
+ .workflow-step span span {
694
+ display: block;
695
+ font-size: 0.81rem;
696
+ color: #73768a;
697
+ margin-top: 0.4rem;
698
+ line-height: 1.7;
699
+ }
700
+ .preview-board {
701
+ background: white;
702
+ border: 1px solid #dadbea;
703
+ box-shadow: 0 18px 35px #3632630a;
704
+ border-radius: 7px;
705
+ min-height: 340px;
706
+ }
707
+ .board-header {
708
+ border-bottom: 1px solid #e7e7ef;
709
+ padding: 1rem;
710
+ font-size: 0.66rem;
711
+ display: flex;
712
+ gap: 0.5rem;
713
+ align-items: center;
714
+ }
715
+ .dot {
716
+ width: 6px;
717
+ height: 6px;
718
+ background: var(--accent);
719
+ border-radius: 50%;
720
+ }
721
+ .board-content {
722
+ padding: 2rem;
723
+ }
724
+ .board-content h3 {
725
+ font-size: 1.25rem;
726
+ font-weight: 500;
727
+ letter-spacing: -0.025em;
728
+ line-height: 1.5;
729
+ }
730
+ .owner {
731
+ display: flex;
732
+ gap: 0.6rem;
733
+ align-items: center;
734
+ font-size: 0.8rem;
735
+ margin-block: 1.5rem;
736
+ }
737
+ .features {
738
+ display: grid;
739
+ grid-template-columns: 1fr 1fr;
740
+ gap: 6rem;
741
+ }
742
+ .features h2 {
743
+ font-size: 2.3rem;
744
+ margin-block: 1.3rem;
745
+ }
746
+ .features p {
747
+ font-size: 0.94rem;
748
+ color: #73738a;
749
+ }
750
+ .feature-icon {
751
+ display: inline-block;
752
+ color: var(--accent);
753
+ font-size: 2rem;
754
+ }
755
+ .pricing {
756
+ text-align: center;
757
+ background: #f2f2fa;
758
+ }
759
+ .pricing > .eyebrow {
760
+ margin-inline: auto;
761
+ }
762
+ .pricing h2 {
763
+ margin-bottom: 1.8rem;
764
+ }
765
+ .billing-toggle {
766
+ display: inline-flex;
767
+ background: #e1e2ef;
768
+ border-radius: 5px;
769
+ padding: 4px;
770
+ margin-bottom: 2.5rem;
771
+ }
772
+ .billing-toggle button {
773
+ background: none;
774
+ border: 0;
775
+ border-radius: 3px;
776
+ padding: 0.65rem 1rem;
777
+ font-size: 0.8rem;
778
+ }
779
+ .billing-toggle button[aria-pressed="true"] {
780
+ background: white;
781
+ box-shadow: 0 1px 3px #2221;
782
+ }
783
+ .pricing-grid {
784
+ display: grid;
785
+ grid-template-columns: repeat(3, 1fr);
786
+ gap: 1.2rem;
787
+ text-align: start;
788
+ }
789
+ .plan {
790
+ background: white;
791
+ border: 1px solid #dcdceb;
792
+ padding: 2rem;
793
+ border-radius: 6px;
794
+ position: relative;
795
+ }
796
+ .plan.popular {
797
+ border: 2px solid var(--accent);
798
+ }
799
+ .plan h3 {
800
+ font-size: 1.2rem;
801
+ letter-spacing: -0.03em;
802
+ margin-bottom: 1rem;
803
+ }
804
+ .plan p {
805
+ font-size: 0.82rem;
806
+ color: #6b6e82;
807
+ }
808
+ .plan .plan-price {
809
+ font-size: 3rem;
810
+ letter-spacing: -0.05em;
811
+ color: var(--ink);
812
+ margin-top: 1.5rem;
813
+ }
814
+ .plan .billing-note {
815
+ height: 1.8rem;
816
+ margin-bottom: 1rem;
817
+ }
818
+ .plan .button {
819
+ width: 100%;
820
+ }
821
+ .plan ul {
822
+ list-style: none;
823
+ padding: 0;
824
+ font-size: 0.78rem;
825
+ line-height: 2.5;
826
+ margin-top: 1.5rem;
827
+ }
828
+ .plan li:before {
829
+ content: "✓";
830
+ color: var(--accent);
831
+ margin-inline-end: 0.6rem;
832
+ }
833
+ .plan-badge {
834
+ position: absolute;
835
+ top: -0.85rem;
836
+ inset-inline: 1.5rem;
837
+ background: var(--accent);
838
+ color: white;
839
+ font-size: 0.65rem;
840
+ padding: 0.2rem 0.8rem;
841
+ border-radius: 4px;
842
+ width: fit-content;
843
+ }
844
+ .faq {
845
+ max-width: 1100px;
846
+ margin: auto;
847
+ }
848
+ .faq h2 {
849
+ margin-bottom: 2rem;
850
+ }
851
+ .faq details {
852
+ border-bottom: 1px solid var(--line);
853
+ padding-block: 1.4rem;
854
+ }
855
+ .faq summary {
856
+ cursor: pointer;
857
+ font-weight: 600;
858
+ font-size: 0.95rem;
859
+ }
860
+ .faq p {
861
+ margin-top: 1rem;
862
+ font-size: 0.9rem;
863
+ color: #6b6e82;
864
+ }
865
+ .contact {
866
+ display: grid;
867
+ grid-template-columns: 1fr 1fr;
868
+ gap: 6rem;
869
+ background: #ececf8;
870
+ }
871
+ .demo-form {
872
+ display: grid;
873
+ gap: 1rem;
874
+ }
875
+ .demo-form label {
876
+ display: grid;
877
+ gap: 0.4rem;
878
+ font-size: 0.8rem;
879
+ }
880
+ .demo-form input {
881
+ background: #fff8;
882
+ }
883
+ .demo-form .button {
884
+ justify-self: start;
885
+ }
886
+ .success {
887
+ color: #26674b;
888
+ background: #e4f3e9;
889
+ padding: 1rem;
890
+ margin-block: 1rem;
891
+ font-size: 0.85rem;
892
+ border-radius: 4px;
893
+ }
894
+ .sr-only {
895
+ position: absolute;
896
+ width: 1px;
897
+ height: 1px;
898
+ padding: 0;
899
+ margin: -1px;
900
+ overflow: hidden;
901
+ clip: rect(0, 0, 0, 0);
902
+ white-space: nowrap;
903
+ border: 0;
904
+ }
905
+ .skip-link {
906
+ position: fixed;
907
+ top: -6rem;
908
+ inset-inline-start: 1rem;
909
+ z-index: 20;
910
+ background: white;
911
+ color: #203d4c;
912
+ padding: 1rem;
913
+ }
914
+ .skip-link:focus {
915
+ top: 1rem;
916
+ }
917
+ [dir="rtl"] .blog h1,
918
+ [dir="rtl"] .blog h2,
919
+ [dir="rtl"] .blog h3,
920
+ [dir="rtl"] .storefront h1,
921
+ [dir="rtl"] .storefront h2 {
922
+ font-family: Tahoma, Arial, sans-serif;
923
+ line-height: 1.4;
924
+ letter-spacing: 0;
925
+ }
926
+ [dir="rtl"] .eyebrow {
927
+ letter-spacing: 0;
928
+ }
929
+ [dir="rtl"] h1,
930
+ [dir="rtl"] h2,
931
+ [dir="rtl"] h3 {
932
+ letter-spacing: 0;
933
+ line-height: 1.5;
934
+ }
935
+ @media (max-width: 1000px) {
936
+ .hero {
937
+ gap: 2rem;
938
+ }
939
+ .hero-image {
940
+ height: 420px;
941
+ }
942
+ .site-header nav {
943
+ gap: 1rem;
944
+ }
945
+ .article-grid {
946
+ gap: 2rem 1.4rem;
947
+ }
948
+ .product-grid {
949
+ grid-template-columns: repeat(3, 1fr);
950
+ }
951
+ .workflow,
952
+ .features,
953
+ .contact {
954
+ gap: 2.5rem;
955
+ }
956
+ .plan {
957
+ padding: 1.5rem;
958
+ }
959
+ .product-detail {
960
+ gap: 2rem;
961
+ }
962
+ }
963
+ @media (max-width: 760px) {
964
+ .site-header {
965
+ min-height: 85px;
966
+ gap: 0.8rem;
967
+ flex-wrap: wrap;
968
+ padding-block: 1rem;
969
+ }
970
+ .brand {
971
+ font-size: 1.25rem;
972
+ }
973
+ .site-header nav {
974
+ gap: 0.8rem;
975
+ }
976
+ .site-header nav > a {
977
+ font-size: 0.72rem;
978
+ }
979
+ .site-header nav > .small {
980
+ display: none;
981
+ }
982
+ .hero {
983
+ grid-template-columns: 1fr;
984
+ padding-block: 3rem;
985
+ gap: 2.5rem;
986
+ }
987
+ .hero h1 {
988
+ max-width: 12ch;
989
+ }
990
+ .hero-image {
991
+ height: auto;
992
+ max-height: 470px;
993
+ object-fit: cover;
994
+ }
995
+ .blog-hero > a {
996
+ display: block;
997
+ }
998
+ .intro {
999
+ font-size: 0.95rem;
1000
+ }
1001
+ .section {
1002
+ padding-block: 3rem;
1003
+ }
1004
+ .section-heading {
1005
+ display: block;
1006
+ }
1007
+ .section-heading .muted {
1008
+ display: block;
1009
+ margin-top: 0.7rem;
1010
+ }
1011
+ .article-grid {
1012
+ grid-template-columns: repeat(2, 1fr);
1013
+ }
1014
+ .article-card h3 {
1015
+ font-size: 1.5rem;
1016
+ }
1017
+ .meta {
1018
+ flex-wrap: wrap;
1019
+ gap: 0.3rem 0.7rem;
1020
+ font-size: 0.6rem;
1021
+ }
1022
+ .filters {
1023
+ gap: 0.8rem;
1024
+ }
1025
+ .filter-buttons {
1026
+ flex-basis: 100%;
1027
+ }
1028
+ .search {
1029
+ flex: 1;
1030
+ }
1031
+ .search input {
1032
+ width: 100%;
1033
+ }
1034
+ .product-grid {
1035
+ grid-template-columns: repeat(2, 1fr);
1036
+ gap: 2rem 1rem;
1037
+ }
1038
+ .product-heading {
1039
+ display: block;
1040
+ }
1041
+ .product-heading > span {
1042
+ display: block;
1043
+ margin-top: 0.3rem;
1044
+ }
1045
+ .site-footer {
1046
+ display: block;
1047
+ }
1048
+ .site-footer > .fine {
1049
+ margin-top: 2rem;
1050
+ }
1051
+ .product-detail {
1052
+ grid-template-columns: 1fr;
1053
+ }
1054
+ .product-detail h1 {
1055
+ font-size: 2.5rem;
1056
+ }
1057
+ .cart-row {
1058
+ gap: 0.8rem;
1059
+ flex-wrap: wrap;
1060
+ }
1061
+ .cart-row > img {
1062
+ width: 65px;
1063
+ }
1064
+ .cart-row h2 {
1065
+ font-size: 1rem;
1066
+ }
1067
+ .cart-row .quantity {
1068
+ margin: 0;
1069
+ }
1070
+ .cart-row .quantity input {
1071
+ width: 55px;
1072
+ padding: 0.5rem;
1073
+ }
1074
+ .cart-row > button {
1075
+ margin-inline-start: auto;
1076
+ }
1077
+ .workflow,
1078
+ .features,
1079
+ .contact {
1080
+ grid-template-columns: 1fr;
1081
+ }
1082
+ .handover-art {
1083
+ height: 330px;
1084
+ }
1085
+ .pricing-grid {
1086
+ grid-template-columns: 1fr;
1087
+ gap: 2rem;
1088
+ }
1089
+ .plan {
1090
+ max-width: 440px;
1091
+ width: 100%;
1092
+ margin: auto;
1093
+ }
1094
+ .plan .plan-price {
1095
+ font-size: 2.5rem;
1096
+ }
1097
+ .contact h2 {
1098
+ font-size: 2.4rem;
1099
+ }
1100
+ .article-detail h1 {
1101
+ font-size: 2.8rem;
1102
+ }
1103
+ .article-detail .detail-image {
1104
+ aspect-ratio: 4 / 3;
1105
+ }
1106
+ .prose p {
1107
+ font-size: 1rem;
1108
+ }
1109
+ .locale-picker select {
1110
+ max-width: 90px;
1111
+ }
1112
+ .saas .site-header nav > a {
1113
+ display: none;
1114
+ }
1115
+ .saas .brand {
1116
+ font-size: 1.5rem;
1117
+ }
1118
+ }
1119
+ @media (max-width: 430px) {
1120
+ .blog .site-header nav > a {
1121
+ display: none;
1122
+ }
1123
+ .article-grid {
1124
+ grid-template-columns: 1fr;
1125
+ }
1126
+ .article-card img {
1127
+ aspect-ratio: 16 / 10;
1128
+ }
1129
+ .site-header {
1130
+ gap: 0.5rem;
1131
+ }
1132
+ .site-header nav {
1133
+ gap: 0.6rem;
1134
+ }
1135
+ .storefront .site-header nav > a:first-child {
1136
+ display: none;
1137
+ }
1138
+ .product-card .product-heading h3 {
1139
+ font-size: 0.86rem;
1140
+ }
1141
+ .hero-actions {
1142
+ gap: 1.2rem;
1143
+ }
1144
+ }
1145
+ @media (prefers-reduced-motion: reduce) {
1146
+ html {
1147
+ scroll-behavior: auto;
1148
+ }
1149
+ * {
1150
+ transition: none;
1151
+ }
1152
+ }
1153
+
1154
+ fieldset {
1155
+ border: 0;
1156
+ padding: 0;
1157
+ margin: 0;
1158
+ min-width: 0;
1159
+ }