@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,380 @@
1
+ import { T } from "@linguanahq/react";
2
+ export default function Copy(props: {
3
+ name: string;
4
+ values?: Record<string, string | number>;
5
+ }) {
6
+ return (
7
+ <>
8
+ {props.name === "language" && (
9
+ <T id="language" defaultMessage="Language" values={props.values} />
10
+ )}
11
+ {props.name === "skip" && (
12
+ <T id="skip" defaultMessage="Skip to content" values={props.values} />
13
+ )}
14
+ {props.name === "home" && (
15
+ <T id="home" defaultMessage="Home" values={props.values} />
16
+ )}
17
+ {props.name === "search" && (
18
+ <T id="search" defaultMessage="Search" values={props.values} />
19
+ )}
20
+ {props.name === "all" && (
21
+ <T id="all" defaultMessage="All" values={props.values} />
22
+ )}
23
+ {props.name === "empty" && (
24
+ <T
25
+ id="empty"
26
+ defaultMessage="Nothing here yet."
27
+ values={props.values}
28
+ />
29
+ )}
30
+ {props.name === "emptyHint" && (
31
+ <T
32
+ id="emptyHint"
33
+ defaultMessage="Try another search or clear your filters."
34
+ values={props.values}
35
+ />
36
+ )}
37
+ {props.name === "clear" && (
38
+ <T id="clear" defaultMessage="Clear filters" values={props.values} />
39
+ )}
40
+ {props.name === "missing" && (
41
+ <T
42
+ id="missing"
43
+ defaultMessage="This page took a different path."
44
+ values={props.values}
45
+ />
46
+ )}
47
+ {props.name === "missingHint" && (
48
+ <T
49
+ id="missingHint"
50
+ defaultMessage="We could not find that page. There is plenty to discover back home."
51
+ values={props.values}
52
+ />
53
+ )}
54
+ {props.name === "back" && (
55
+ <T id="back" defaultMessage="Back to home" values={props.values} />
56
+ )}
57
+ {props.name === "demo" && (
58
+ <T
59
+ id="demo"
60
+ defaultMessage="A multilingual demo, made with Linguana."
61
+ values={props.values}
62
+ />
63
+ )}
64
+ {props.name === "email" && (
65
+ <T id="email" defaultMessage="Email address" values={props.values} />
66
+ )}
67
+ {props.name === "name" && (
68
+ <T id="name" defaultMessage="Your name" values={props.values} />
69
+ )}
70
+ {props.name === "simulated" && (
71
+ <T
72
+ id="simulated"
73
+ defaultMessage="Demo only. Your information stays in this browser."
74
+ values={props.values}
75
+ />
76
+ )}
77
+ {props.name === "sent" && (
78
+ <T
79
+ id="sent"
80
+ defaultMessage="Thank you, {name}! This was a demo; nothing was sent."
81
+ values={props.values}
82
+ />
83
+ )}
84
+ {props.name === "formError" && (
85
+ <T
86
+ id="formError"
87
+ defaultMessage="Please enter your name and a valid email address."
88
+ values={props.values}
89
+ />
90
+ )}
91
+ {props.name === "eyebrow" && (
92
+ <T
93
+ id="eyebrow"
94
+ defaultMessage="For teams that keep moving"
95
+ values={props.values}
96
+ />
97
+ )}
98
+ {props.name === "headline" && (
99
+ <T
100
+ id="headline"
101
+ defaultMessage="Great work deserves a better handover."
102
+ values={props.values}
103
+ />
104
+ )}
105
+ {props.name === "intro" && (
106
+ <T
107
+ id="intro"
108
+ defaultMessage="Give your next shift the context they need. One clear update, every decision, nothing lost between teams."
109
+ values={props.values}
110
+ />
111
+ )}
112
+ {props.name === "try" && (
113
+ <T id="try" defaultMessage="Try the handover" values={props.values} />
114
+ )}
115
+ {props.name === "pricing" && (
116
+ <T id="pricing" defaultMessage="Pricing" values={props.values} />
117
+ )}
118
+ {props.name === "product" && (
119
+ <T id="product" defaultMessage="How it works" values={props.values} />
120
+ )}
121
+ {props.name === "demoCta" && (
122
+ <T id="demoCta" defaultMessage="Book a demo" values={props.values} />
123
+ )}
124
+ {props.name === "preview" && (
125
+ <T
126
+ id="preview"
127
+ defaultMessage="Your next shift starts here"
128
+ values={props.values}
129
+ />
130
+ )}
131
+ {props.name === "live" && (
132
+ <T
133
+ id="live"
134
+ defaultMessage="Interactive preview"
135
+ values={props.values}
136
+ />
137
+ )}
138
+ {props.name === "step0" && (
139
+ <T id="step0" defaultMessage="Write the update" values={props.values} />
140
+ )}
141
+ {props.name === "step1" && (
142
+ <T id="step1" defaultMessage="Add the context" values={props.values} />
143
+ )}
144
+ {props.name === "step2" && (
145
+ <T id="step2" defaultMessage="Pass it on" values={props.values} />
146
+ )}
147
+ {props.name === "step0Body" && (
148
+ <T
149
+ id="step0Body"
150
+ defaultMessage="Capture what changed while it is still fresh. A short note is all it takes."
151
+ values={props.values}
152
+ />
153
+ )}
154
+ {props.name === "step1Body" && (
155
+ <T
156
+ id="step1Body"
157
+ defaultMessage="Attach decisions, owners, and next steps so nobody has to piece things together."
158
+ values={props.values}
159
+ />
160
+ )}
161
+ {props.name === "step2Body" && (
162
+ <T
163
+ id="step2Body"
164
+ defaultMessage="Your teammates arrive with a clear picture and can get straight to meaningful work."
165
+ values={props.values}
166
+ />
167
+ )}
168
+ {props.name === "boardTitle" && (
169
+ <T
170
+ id="boardTitle"
171
+ defaultMessage="Customer success · Morning shift"
172
+ values={props.values}
173
+ />
174
+ )}
175
+ {props.name === "boardNote" && (
176
+ <T
177
+ id="boardNote"
178
+ defaultMessage="The new onboarding guide is ready. Two accounts need a follow-up before noon."
179
+ values={props.values}
180
+ />
181
+ )}
182
+ {props.name === "owner" && (
183
+ <T id="owner" defaultMessage="Owner: Alex" values={props.values} />
184
+ )}
185
+ {props.name === "acknowledged" && (
186
+ <T
187
+ id="acknowledged"
188
+ defaultMessage="Handover acknowledged"
189
+ values={props.values}
190
+ />
191
+ )}
192
+ {props.name === "acknowledge" && (
193
+ <T
194
+ id="acknowledge"
195
+ defaultMessage="Acknowledge handover"
196
+ values={props.values}
197
+ />
198
+ )}
199
+ {props.name === "feature1" && (
200
+ <T
201
+ id="feature1"
202
+ defaultMessage="A little structure. A lot less chasing."
203
+ values={props.values}
204
+ />
205
+ )}
206
+ {props.name === "feature1Body" && (
207
+ <T
208
+ id="feature1Body"
209
+ defaultMessage="Keep the important details in one place. Every handover has a clear owner and a next step."
210
+ values={props.values}
211
+ />
212
+ )}
213
+ {props.name === "feature2" && (
214
+ <T
215
+ id="feature2"
216
+ defaultMessage="Made for the people doing the work."
217
+ values={props.values}
218
+ />
219
+ )}
220
+ {props.name === "feature2Body" && (
221
+ <T
222
+ id="feature2Body"
223
+ defaultMessage="A calm workspace across time zones and languages. Less catching up, more moving forward."
224
+ values={props.values}
225
+ />
226
+ )}
227
+ {props.name === "priceHeading" && (
228
+ <T
229
+ id="priceHeading"
230
+ defaultMessage="Simple plans. Room to grow."
231
+ values={props.values}
232
+ />
233
+ )}
234
+ {props.name === "monthly" && (
235
+ <T id="monthly" defaultMessage="Monthly" values={props.values} />
236
+ )}
237
+ {props.name === "yearly" && (
238
+ <T
239
+ id="yearly"
240
+ defaultMessage="Yearly · save 20%"
241
+ values={props.values}
242
+ />
243
+ )}
244
+ {props.name === "perMonth" && (
245
+ <T
246
+ id="perMonth"
247
+ defaultMessage="per seat / month"
248
+ values={props.values}
249
+ />
250
+ )}
251
+ {props.name === "billed" && (
252
+ <T id="billed" defaultMessage="Billed annually" values={props.values} />
253
+ )}
254
+ {props.name === "starter" && (
255
+ <T id="starter" defaultMessage="Starter" values={props.values} />
256
+ )}
257
+ {props.name === "team" && (
258
+ <T id="team" defaultMessage="Team" values={props.values} />
259
+ )}
260
+ {props.name === "scale" && (
261
+ <T id="scale" defaultMessage="Scale" values={props.values} />
262
+ )}
263
+ {props.name === "starterDesc" && (
264
+ <T
265
+ id="starterDesc"
266
+ defaultMessage="A thoughtful start for small teams."
267
+ values={props.values}
268
+ />
269
+ )}
270
+ {props.name === "teamDesc" && (
271
+ <T
272
+ id="teamDesc"
273
+ defaultMessage="Everything a growing team needs."
274
+ values={props.values}
275
+ />
276
+ )}
277
+ {props.name === "scaleDesc" && (
278
+ <T
279
+ id="scaleDesc"
280
+ defaultMessage="Coordination across your whole company."
281
+ values={props.values}
282
+ />
283
+ )}
284
+ {props.name === "planFeature1" && (
285
+ <T
286
+ id="planFeature1"
287
+ defaultMessage="Unlimited handovers"
288
+ values={props.values}
289
+ />
290
+ )}
291
+ {props.name === "planFeature2" && (
292
+ <T
293
+ id="planFeature2"
294
+ defaultMessage="Searchable team history"
295
+ values={props.values}
296
+ />
297
+ )}
298
+ {props.name === "planFeature3" && (
299
+ <T
300
+ id="planFeature3"
301
+ defaultMessage="Shared workflows and insights"
302
+ values={props.values}
303
+ />
304
+ )}
305
+ {props.name === "popular" && (
306
+ <T id="popular" defaultMessage="Most popular" values={props.values} />
307
+ )}
308
+ {props.name === "select" && (
309
+ <T
310
+ id="select"
311
+ defaultMessage="Explore this plan"
312
+ values={props.values}
313
+ />
314
+ )}
315
+ {props.name === "faq" && (
316
+ <T
317
+ id="faq"
318
+ defaultMessage="A few things you might be wondering"
319
+ values={props.values}
320
+ />
321
+ )}
322
+ {props.name === "q1" && (
323
+ <T
324
+ id="q1"
325
+ defaultMessage="Can I try Relay before committing?"
326
+ values={props.values}
327
+ />
328
+ )}
329
+ {props.name === "a1" && (
330
+ <T
331
+ id="a1"
332
+ defaultMessage="This is a fully interactive frontend demo. Explore the preview and pricing without an account or payment details."
333
+ values={props.values}
334
+ />
335
+ )}
336
+ {props.name === "q2" && (
337
+ <T
338
+ id="q2"
339
+ defaultMessage="Does this template include a backend?"
340
+ values={props.values}
341
+ />
342
+ )}
343
+ {props.name === "a2" && (
344
+ <T
345
+ id="a2"
346
+ defaultMessage="The template includes the complete landing page. Connect your own backend when you are ready; demo forms stay local."
347
+ values={props.values}
348
+ />
349
+ )}
350
+ {props.name === "q3" && (
351
+ <T
352
+ id="q3"
353
+ defaultMessage="Can our team work in different languages?"
354
+ values={props.values}
355
+ />
356
+ )}
357
+ {props.name === "a3" && (
358
+ <T
359
+ id="a3"
360
+ defaultMessage="Yes. Switch between English, French, Spanish, and Arabic in this demo. Connect Linguana to publish your own translations."
361
+ values={props.values}
362
+ />
363
+ )}
364
+ {props.name === "formTitle" && (
365
+ <T
366
+ id="formTitle"
367
+ defaultMessage="See what a calmer handover feels like."
368
+ values={props.values}
369
+ />
370
+ )}
371
+ {props.name === "about" && (
372
+ <T
373
+ id="about"
374
+ defaultMessage="A clear next step for every team."
375
+ values={props.values}
376
+ />
377
+ )}
378
+ </>
379
+ );
380
+ }
@@ -0,0 +1,228 @@
1
+ // These catalogs are only used when linguana.json selects demo mode.
2
+ export const demoMessages = {
3
+ fr: {
4
+ language: "Langue",
5
+ skip: "Aller au contenu",
6
+ home: "Accueil",
7
+ search: "Rechercher",
8
+ all: "Tout",
9
+ empty: "Aucun résultat pour le moment.",
10
+ emptyHint: "Essayez une autre recherche ou effacez les filtres.",
11
+ clear: "Effacer les filtres",
12
+ missing: "Cette page a pris un autre chemin.",
13
+ missingHint:
14
+ "Cette page est introuvable. Il reste beaucoup à découvrir à l’accueil.",
15
+ back: "Retour à l’accueil",
16
+ demo: "Une démo multilingue, créée avec Linguana.",
17
+ email: "Adresse e-mail",
18
+ name: "Votre nom",
19
+ simulated:
20
+ "Démonstration uniquement. Vos informations restent dans ce navigateur.",
21
+ sent: "Merci, {name} ! C’était une démo ; rien n’a été envoyé.",
22
+ formError: "Veuillez saisir votre nom et une adresse e-mail valide.",
23
+ eyebrow: "Pour les équipes en mouvement",
24
+ headline: "Le bon travail mérite une meilleure passation.",
25
+ intro:
26
+ "Donnez à la prochaine équipe le contexte nécessaire. Une mise à jour claire, chaque décision, sans rien perdre.",
27
+ try: "Essayer la passation",
28
+ pricing: "Tarifs",
29
+ product: "Comment ça marche",
30
+ demoCta: "Réserver une démo",
31
+ preview: "Votre prochaine équipe commence ici",
32
+ live: "Aperçu interactif",
33
+ step0: "Rédigez la mise à jour",
34
+ step1: "Ajoutez le contexte",
35
+ step2: "Transmettez",
36
+ step0Body:
37
+ "Notez les changements tant qu’ils sont frais. Quelques lignes suffisent.",
38
+ step1Body:
39
+ "Ajoutez les décisions, responsables et prochaines étapes pour éviter les devinettes.",
40
+ step2Body:
41
+ "Vos collègues arrivent avec une vision claire et peuvent se mettre au travail.",
42
+ boardTitle: "Relation client · Équipe du matin",
43
+ boardNote:
44
+ "Le guide d’accueil est prêt. Deux comptes nécessitent un suivi avant midi.",
45
+ owner: "Responsable : Alex",
46
+ acknowledged: "Passation confirmée",
47
+ acknowledge: "Confirmer la passation",
48
+ feature1: "Un peu de structure. Beaucoup moins de relances.",
49
+ feature1Body:
50
+ "Gardez les détails importants au même endroit. Chaque passation a un responsable et une suite.",
51
+ feature2: "Conçu pour ceux qui font le travail.",
52
+ feature2Body:
53
+ "Un espace serein entre fuseaux horaires et langues. Moins de rattrapage, plus de progrès.",
54
+ priceHeading: "Des offres simples. De la place pour grandir.",
55
+ monthly: "Mensuel",
56
+ yearly: "Annuel · économisez 20 %",
57
+ perMonth: "par personne / mois",
58
+ billed: "Facturé annuellement",
59
+ starter: "Essentiel",
60
+ team: "Équipe",
61
+ scale: "Croissance",
62
+ starterDesc: "Un bon départ pour les petites équipes.",
63
+ teamDesc: "Tout pour une équipe qui grandit.",
64
+ scaleDesc: "La coordination de toute votre entreprise.",
65
+ planFeature1: "Passations illimitées",
66
+ planFeature2: "Historique d’équipe consultable",
67
+ planFeature3: "Processus et analyses partagés",
68
+ popular: "Le plus choisi",
69
+ select: "Découvrir cette offre",
70
+ faq: "Quelques questions que vous vous posez",
71
+ q1: "Puis-je essayer Relay avant de m’engager ?",
72
+ a1: "Ceci est une démo interactive. Explorez l’aperçu et les tarifs sans compte ni paiement.",
73
+ q2: "Ce modèle comprend-il un serveur ?",
74
+ a2: "Le modèle comprend la page complète. Connectez votre serveur quand vous le souhaitez ; les formulaires restent locaux.",
75
+ q3: "L’équipe peut-elle travailler en plusieurs langues ?",
76
+ a3: "Oui. Essayez l’anglais, le français, l’espagnol et l’arabe. Connectez Linguana pour publier vos traductions.",
77
+ formTitle: "Découvrez une passation plus sereine.",
78
+ about: "Une prochaine étape claire pour chaque équipe.",
79
+ },
80
+ es: {
81
+ language: "Idioma",
82
+ skip: "Saltar al contenido",
83
+ home: "Inicio",
84
+ search: "Buscar",
85
+ all: "Todo",
86
+ empty: "Todavía no hay resultados.",
87
+ emptyHint: "Prueba otra búsqueda o borra los filtros.",
88
+ clear: "Borrar filtros",
89
+ missing: "Esta página tomó otro camino.",
90
+ missingHint:
91
+ "No encontramos esta página. Hay mucho por descubrir en el inicio.",
92
+ back: "Volver al inicio",
93
+ demo: "Una demo multilingüe, creada con Linguana.",
94
+ email: "Correo electrónico",
95
+ name: "Tu nombre",
96
+ simulated: "Solo una demo. Tu información permanece en este navegador.",
97
+ sent: "¡Gracias, {name}! Era una demo; no se envió nada.",
98
+ formError: "Introduce tu nombre y un correo válido.",
99
+ eyebrow: "Para equipos en movimiento",
100
+ headline: "Un gran trabajo merece un buen relevo.",
101
+ intro:
102
+ "Dale al próximo turno el contexto que necesita. Una actualización clara, cada decisión, sin perder nada.",
103
+ try: "Probar el relevo",
104
+ pricing: "Precios",
105
+ product: "Cómo funciona",
106
+ demoCta: "Pedir una demo",
107
+ preview: "Tu próximo turno empieza aquí",
108
+ live: "Vista interactiva",
109
+ step0: "Escribe la actualización",
110
+ step1: "Añade el contexto",
111
+ step2: "Pasa el relevo",
112
+ step0Body:
113
+ "Recoge los cambios mientras están frescos. Basta una nota breve.",
114
+ step1Body:
115
+ "Añade decisiones, responsables y próximos pasos para que nadie tenga que adivinar.",
116
+ step2Body:
117
+ "Tus compañeros llegan con una visión clara y pueden empezar a trabajar.",
118
+ boardTitle: "Atención al cliente · Turno de mañana",
119
+ boardNote:
120
+ "La nueva guía de bienvenida está lista. Dos cuentas necesitan seguimiento antes del mediodía.",
121
+ owner: "Responsable: Alex",
122
+ acknowledged: "Relevo confirmado",
123
+ acknowledge: "Confirmar relevo",
124
+ feature1: "Un poco de estructura. Mucho menos perseguir.",
125
+ feature1Body:
126
+ "Guarda lo importante en un lugar. Cada relevo tiene un responsable y un próximo paso.",
127
+ feature2: "Hecho para quienes hacen el trabajo.",
128
+ feature2Body:
129
+ "Un espacio tranquilo entre husos horarios e idiomas. Menos ponerse al día, más avanzar.",
130
+ priceHeading: "Planes sencillos. Espacio para crecer.",
131
+ monthly: "Mensual",
132
+ yearly: "Anual · ahorra un 20 %",
133
+ perMonth: "por persona / mes",
134
+ billed: "Facturación anual",
135
+ starter: "Inicial",
136
+ team: "Equipo",
137
+ scale: "Escala",
138
+ starterDesc: "Un buen comienzo para equipos pequeños.",
139
+ teamDesc: "Todo para un equipo en crecimiento.",
140
+ scaleDesc: "Coordinación en toda tu empresa.",
141
+ planFeature1: "Relevos ilimitados",
142
+ planFeature2: "Historial del equipo con búsqueda",
143
+ planFeature3: "Flujos y análisis compartidos",
144
+ popular: "Más popular",
145
+ select: "Explorar este plan",
146
+ faq: "Quizá te estés preguntando",
147
+ q1: "¿Puedo probar Relay antes de decidir?",
148
+ a1: "Esta es una demo interactiva. Explora la vista y los precios sin cuenta ni datos de pago.",
149
+ q2: "¿Esta plantilla incluye un backend?",
150
+ a2: "La plantilla incluye la página completa. Conecta tu backend cuando quieras; los formularios son locales.",
151
+ q3: "¿Podemos trabajar en varios idiomas?",
152
+ a3: "Sí. Cambia entre inglés, francés, español y árabe. Conecta Linguana para publicar tus traducciones.",
153
+ formTitle: "Descubre un relevo más tranquilo.",
154
+ about: "Un próximo paso claro para cada equipo.",
155
+ },
156
+ ar: {
157
+ language: "اللغة",
158
+ skip: "انتقل إلى المحتوى",
159
+ home: "الرئيسية",
160
+ search: "بحث",
161
+ all: "الكل",
162
+ empty: "لا توجد نتائج بعد.",
163
+ emptyHint: "جرّب بحثًا آخر أو امسح عوامل التصفية.",
164
+ clear: "مسح عوامل التصفية",
165
+ missing: "سلكت هذه الصفحة طريقًا آخر.",
166
+ missingHint: "لم نجد هذه الصفحة. هناك الكثير لاكتشافه في الصفحة الرئيسية.",
167
+ back: "العودة إلى الرئيسية",
168
+ demo: "تجربة متعددة اللغات، صُنعت باستخدام Linguana.",
169
+ email: "البريد الإلكتروني",
170
+ name: "اسمك",
171
+ simulated: "تجربة فقط. تبقى معلوماتك في هذا المتصفح.",
172
+ sent: "شكرًا لك يا {name}! هذه تجربة؛ لم يُرسل أي شيء.",
173
+ formError: "أدخل اسمك وبريدًا إلكترونيًا صالحًا.",
174
+ eyebrow: "للفرق التي تواصل التقدم",
175
+ headline: "العمل الرائع يستحق تسليمًا أفضل.",
176
+ intro:
177
+ "امنح الوردية التالية السياق الذي تحتاجه. تحديث واضح وكل قرار، دون ضياع بين الفرق.",
178
+ try: "جرّب التسليم",
179
+ pricing: "الأسعار",
180
+ product: "كيف يعمل",
181
+ demoCta: "احجز تجربة",
182
+ preview: "تبدأ ورديتك التالية هنا",
183
+ live: "معاينة تفاعلية",
184
+ step0: "اكتب التحديث",
185
+ step1: "أضف السياق",
186
+ step2: "سلّم المهمة",
187
+ step0Body: "سجّل ما تغيّر قبل أن تنساه. ملاحظة قصيرة تكفي.",
188
+ step1Body:
189
+ "أرفق القرارات والمسؤولين والخطوات التالية حتى لا يضطر أحد للتخمين.",
190
+ step2Body: "يصل زملاؤك بصورة واضحة ويبدؤون العمل المهم مباشرة.",
191
+ boardTitle: "نجاح العملاء · الوردية الصباحية",
192
+ boardNote: "دليل الانضمام الجديد جاهز. يحتاج حسابان إلى متابعة قبل الظهر.",
193
+ owner: "المسؤول: أليكس",
194
+ acknowledged: "تم تأكيد الاستلام",
195
+ acknowledge: "تأكيد الاستلام",
196
+ feature1: "قليل من التنظيم. أقل بكثير من المتابعة.",
197
+ feature1Body:
198
+ "اجمع التفاصيل المهمة في مكان واحد. لكل تسليم مسؤول واضح وخطوة تالية.",
199
+ feature2: "صُمّم لمن ينجزون العمل.",
200
+ feature2Body:
201
+ "مساحة هادئة عبر المناطق الزمنية واللغات. وقت أقل للحاق بالمستجدات، وأكثر للتقدم.",
202
+ priceHeading: "خطط بسيطة. مساحة للنمو.",
203
+ monthly: "شهري",
204
+ yearly: "سنوي · وفّر ٢٠٪",
205
+ perMonth: "لكل مستخدم / شهر",
206
+ billed: "تُدفع سنويًا",
207
+ starter: "البداية",
208
+ team: "الفريق",
209
+ scale: "التوسع",
210
+ starterDesc: "بداية مدروسة للفرق الصغيرة.",
211
+ teamDesc: "كل ما يحتاجه فريق ينمو.",
212
+ scaleDesc: "تنسيق على مستوى شركتك بأكملها.",
213
+ planFeature1: "عمليات تسليم غير محدودة",
214
+ planFeature2: "سجل فريق قابل للبحث",
215
+ planFeature3: "سير عمل وتحليلات مشتركة",
216
+ popular: "الأكثر اختيارًا",
217
+ select: "استكشف هذه الخطة",
218
+ faq: "أسئلة قد تدور في بالك",
219
+ q1: "هل يمكنني تجربة Relay قبل الالتزام؟",
220
+ a1: "هذه تجربة تفاعلية للواجهة. استكشف المعاينة والأسعار دون حساب أو بيانات دفع.",
221
+ q2: "هل يتضمن هذا القالب خادمًا؟",
222
+ a2: "يتضمن القالب صفحة كاملة. صِل خادمك عندما تكون جاهزًا؛ نماذج التجربة تبقى محلية.",
223
+ q3: "هل يمكن لفريقنا العمل بلغات مختلفة؟",
224
+ a3: "نعم. بدّل بين الإنجليزية والفرنسية والإسبانية والعربية. صِل Linguana لنشر ترجماتك.",
225
+ formTitle: "اكتشف تجربة تسليم أكثر هدوءًا.",
226
+ about: "خطوة تالية واضحة لكل فريق.",
227
+ },
228
+ };
@@ -0,0 +1,62 @@
1
+ import { createCatalog } from "@linguanahq/catalog";
2
+ import config from "../linguana.json";
3
+ import { demoMessages } from "./demo-messages";
4
+ export const demoLocales = [
5
+ { code: "en", displayName: "English", nativeName: "English" },
6
+ { code: "fr", displayName: "French", nativeName: "Français" },
7
+ { code: "es", displayName: "Spanish", nativeName: "Español" },
8
+ { code: "ar", displayName: "Arabic", nativeName: "العربية" },
9
+ ];
10
+ export const demo = config.mode === "demo";
11
+ export function cookieLocale(
12
+ cookie = typeof document === "undefined" ? "" : document.cookie,
13
+ ) {
14
+ try {
15
+ const value = decodeURIComponent(
16
+ cookie
17
+ .split(";")
18
+ .find((item) => item.trim().startsWith("linguana_locale="))
19
+ ?.split("=")[1] ?? "en",
20
+ );
21
+ return /^[a-z]{2,3}(?:-[A-Za-z0-9]{2,8})*$/.test(value) &&
22
+ (!demo || demoLocales.some((item) => item.code === value))
23
+ ? value
24
+ : "en";
25
+ } catch {
26
+ return "en";
27
+ }
28
+ }
29
+ export const demoCatalogs = demo
30
+ ? Object.entries(demoMessages).map(([locale, messages]) =>
31
+ createCatalog({
32
+ schemaVersion: "1.0",
33
+ projectId: "demo-saas",
34
+ environment: "development",
35
+ sourceLocale: "en",
36
+ locale,
37
+ manifestHash: "0".repeat(64),
38
+ version: 1,
39
+ messages,
40
+ }),
41
+ )
42
+ : [];
43
+ export function optionsFor(
44
+ locale = cookieLocale(),
45
+ ): import("@linguanahq/core").LinguanaClientOptions {
46
+ return {
47
+ projectId: demo ? "demo-saas" : import.meta.env.VITE_LINGUANA_PROJECT_ID,
48
+ environment: demo
49
+ ? "development"
50
+ : import.meta.env.VITE_LINGUANA_ENVIRONMENT,
51
+ initialLocale: locale,
52
+ fallbackLocale: config.sourceLocale,
53
+ catalogs: demoCatalogs,
54
+ ...(demo
55
+ ? { availableLocales: demoLocales }
56
+ : {
57
+ publishableKey: import.meta.env.VITE_LINGUANA_PUBLISHABLE_KEY,
58
+ catalogEndpoint: import.meta.env.VITE_LINGUANA_API_URL,
59
+ configEndpoint: import.meta.env.VITE_LINGUANA_API_URL,
60
+ }),
61
+ };
62
+ }