@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,71 @@
1
+ // Source fallbacks; matching extractable literals live in Copy.tsx.
2
+ export const messages: Record<string, string> = {
3
+ language: "Language",
4
+ skip: "Skip to content",
5
+ home: "Home",
6
+ search: "Search",
7
+ all: "All",
8
+ empty: "Nothing here yet.",
9
+ emptyHint: "Try another search or clear your filters.",
10
+ clear: "Clear filters",
11
+ missing: "This page took a different path.",
12
+ missingHint:
13
+ "We could not find that page. There is plenty to discover back home.",
14
+ back: "Back to home",
15
+ demo: "A multilingual demo, made with Linguana.",
16
+ email: "Email address",
17
+ name: "Your name",
18
+ simulated: "Demo only. Your information stays in this browser.",
19
+ sent: "Thank you, {name}! This was a demo; nothing was sent.",
20
+ formError: "Please enter your name and a valid email address.",
21
+ eyebrow: "A journal of slower journeys",
22
+ headline: "Somewhere new. A little more you.",
23
+ intro:
24
+ "Stories from the long way round. Good coffee, unfamiliar streets, and the people who make a place.",
25
+ latest: "The latest field notes",
26
+ read: "Read the story",
27
+ cities: "City walks",
28
+ nature: "In the wild",
29
+ coast: "By the water",
30
+ minutes: "{count, plural, one {# minute read} other {# minutes read}}",
31
+ notes: "Small observations. Lasting memories.",
32
+ about:
33
+ "Elsewhere is an independent journal about travelling with curiosity and leaving room for the unexpected.",
34
+ p1Title: "Lisbon, before the city wakes",
35
+ p1Summary:
36
+ "A morning of tiled doorways, warm pastries, and no particular destination.",
37
+ p1Body:
38
+ "At seven, the tram tracks are still quiet. We follow them uphill, past a florist arranging buckets on the pavement. A baker opens his window and the smell of cinnamon settles over the street. We order two coffees and a pastry, then another pastry. There is no reason to hurry.",
39
+ p1End:
40
+ "By the river the light turns silver. An older couple share a newspaper on a bench, folding it between stories. We take the long route home through streets we cannot name. The best thing we found today was an hour with no plans. Come early, wear comfortable shoes, and let the hills choose your route.",
41
+ p2Title: "A quieter side of Kyoto",
42
+ p2Summary: "Beyond the busy gates, a walking route lined with small gardens.",
43
+ p2Body:
44
+ "Rain softens the sound of our footsteps along the canal. We pass a gardener sweeping leaves into a careful pile. She points us towards a small tea room with room for four people. Inside, a kettle sings and the windows fog at the edges. We warm our hands around the cups and watch the garden change colour.",
45
+ p2End:
46
+ "We leave with a hand-drawn map and a recommendation to return in autumn. The canal is easy to follow, so put your phone away for a while. Keep your voice low near the houses and give the narrow paths to the people who live here. A good journey also makes room for someone else’s ordinary day.",
47
+ p3Title: "The coastal road to nowhere",
48
+ p3Summary: "Salt air and a picnic on the Atlantic edge of Portugal.",
49
+ p3Body:
50
+ "We stop the car whenever the sea disappears, just to find it again. A narrow track leads through rosemary to a beach without a sign. The sand is cool beneath our feet. Lunch is bread, tomatoes, and cheese from the last village, eaten from the paper they came wrapped in.",
51
+ p3End:
52
+ "The tide comes in slowly. We pack every scrap of paper and follow our own footprints back. Check the tide before you explore, keep clear of the cliff edges, and bring more water than you think you need. The road will still be there when you are ready to leave.",
53
+ p4Title: "Walking into the Dolomites",
54
+ p4Summary: "A simple mountain hut, a shared table, and an early start.",
55
+ p4Body:
56
+ "The path begins behind a wooden barn and climbs steadily through the trees. We walk in the cool morning, stopping to hear the cowbells below. Above the tree line the mountains seem impossibly close. At the hut, soup arrives in deep bowls and strangers slide along the bench to make room.",
57
+ p4End:
58
+ "Clouds gather after lunch, so we take the shorter path down. Knowing when to turn around is part of being outdoors. Ask the hut keeper about the weather, carry a proper map, and choose a trail that matches your experience. We reach the village tired, happy, and already talking about next time.",
59
+ p5Title: "Copenhagen by bicycle",
60
+ p5Summary: "Harbour dips, generous bakeries, and the city at cycling speed.",
61
+ p5Body:
62
+ "Our rented bicycles have baskets large enough for a day’s supplies. We follow the harbour, keeping to the right and letting commuters pass. The city feels different at this pace: close enough to notice a painted doorway, quick enough to follow a sudden idea across a bridge.",
63
+ p5End:
64
+ "At a waterside bakery we share a cinnamon bun and mark our favourite places on a paper map. Signal before turning, lock your bicycle even for a quick stop, and leave the cycle lane clear when you pause. The best souvenir is a route you could happily ride again.",
65
+ p6Title: "A cabin beside the lake",
66
+ p6Summary: "Three days in Finland with very little on the itinerary.",
67
+ p6Body:
68
+ "The cabin key waits beneath a flowerpot. Inside there is a stove, a small shelf of books, and a window facing the lake. We fill the kettle and unpack slowly. The first afternoon passes without an event worth recording, which turns out to be exactly what we needed.",
69
+ p6End:
70
+ "On the last morning we sweep the floor and leave dry wood beside the stove. There are no recommendations to collect here, just a little space to think. Bring groceries before you arrive, respect the quiet, and leave the cabin ready for the next visitor. Some places ask for less, not more.",
71
+ };
@@ -0,0 +1,128 @@
1
+ export type Item = {
2
+ id: string;
3
+ slug: string;
4
+ category: string;
5
+ image: string;
6
+ date: string;
7
+ minutes: number;
8
+ price: number;
9
+ };
10
+ export const items: Item[] = [
11
+ {
12
+ id: "p1",
13
+ slug: "lisbon",
14
+ category: "cities",
15
+ image: "/assets/scene-1.svg",
16
+ date: "2026-06-22",
17
+ minutes: 2,
18
+ price: 0,
19
+ },
20
+ {
21
+ id: "p2",
22
+ slug: "kyoto",
23
+ category: "cities",
24
+ image: "/assets/scene-2.svg",
25
+ date: "2026-06-14",
26
+ minutes: 3,
27
+ price: 0,
28
+ },
29
+ {
30
+ id: "p3",
31
+ slug: "portugal-coast",
32
+ category: "coast",
33
+ image: "/assets/scene-3.svg",
34
+ date: "2026-05-22",
35
+ minutes: 4,
36
+ price: 0,
37
+ },
38
+ {
39
+ id: "p4",
40
+ slug: "dolomites",
41
+ category: "nature",
42
+ image: "/assets/scene-4.svg",
43
+ date: "2026-05-14",
44
+ minutes: 2,
45
+ price: 0,
46
+ },
47
+ {
48
+ id: "p5",
49
+ slug: "copenhagen",
50
+ category: "cities",
51
+ image: "/assets/scene-5.svg",
52
+ date: "2026-04-22",
53
+ minutes: 3,
54
+ price: 0,
55
+ },
56
+ {
57
+ id: "p6",
58
+ slug: "finland",
59
+ category: "nature",
60
+ image: "/assets/scene-6.svg",
61
+ date: "2026-04-14",
62
+ minutes: 4,
63
+ price: 0,
64
+ },
65
+ ];
66
+ export type State = {
67
+ path: string;
68
+ query: string;
69
+ category: string;
70
+ sort: string;
71
+ cart: Record<string, number>;
72
+ quantity: number;
73
+ annual: boolean;
74
+ step: number;
75
+ acknowledged: boolean;
76
+ name: string;
77
+ email: string;
78
+ error: boolean;
79
+ sent: boolean;
80
+ added: boolean;
81
+ checkout: boolean;
82
+ };
83
+ export const initialState = (path?: string): State => ({
84
+ path:
85
+ path ?? (typeof window === "undefined" ? "/" : window.location.pathname),
86
+ query: "",
87
+ category: "all",
88
+ sort: "featured",
89
+ cart: {},
90
+ quantity: 1,
91
+ annual: false,
92
+ step: 0,
93
+ acknowledged: false,
94
+ name: "",
95
+ email: "",
96
+ error: false,
97
+ sent: false,
98
+ added: false,
99
+ checkout: false,
100
+ });
101
+ export const quantity = (input: unknown) =>
102
+ Math.max(1, Math.min(99, Math.floor(Number(input) || 1)));
103
+ const cartKey = "common-goods-cart-v1";
104
+ export function readCart(): Record<string, number> {
105
+ try {
106
+ const parsed: unknown = JSON.parse(localStorage.getItem(cartKey) ?? "{}");
107
+ if (!parsed || typeof parsed !== "object" || Array.isArray(parsed))
108
+ return {};
109
+ return Object.fromEntries(
110
+ Object.entries(parsed).filter(
111
+ ([id, count]) =>
112
+ items.some((item) => item.id === id) &&
113
+ Number.isInteger(count) &&
114
+ count > 0 &&
115
+ count <= 99,
116
+ ),
117
+ );
118
+ } catch {
119
+ return {};
120
+ }
121
+ }
122
+ export function saveCart(cart: Record<string, number>) {
123
+ try {
124
+ localStorage.setItem(cartKey, JSON.stringify(cart));
125
+ } catch {
126
+ /* Browsers may disable persistence; the in-memory cart still works. */
127
+ }
128
+ }
@@ -0,0 +1,10 @@
1
+ import { createRouter } from "@tanstack/react-router";
2
+ import { routeTree } from "./routeTree.gen";
3
+ export function getRouter() {
4
+ return createRouter({ routeTree, scrollRestoration: true });
5
+ }
6
+ declare module "@tanstack/react-router" {
7
+ interface Register {
8
+ router: ReturnType<typeof getRouter>;
9
+ }
10
+ }
@@ -0,0 +1,7 @@
1
+ import { createFileRoute, useLocation } from "@tanstack/react-router";
2
+ import App from "../App";
3
+ export const Route = createFileRoute("/$")({ component: Page });
4
+ function Page() {
5
+ const { pathname } = useLocation();
6
+ return <App key={pathname} path={pathname} />;
7
+ }
@@ -0,0 +1,50 @@
1
+ import { LocaleProvider } from "@linguanahq/react";
2
+ import {
3
+ createRootRoute,
4
+ HeadContent,
5
+ Outlet,
6
+ Scripts,
7
+ } from "@tanstack/react-router";
8
+ import { optionsFor } from "../i18n";
9
+ import { localeState } from "../locale-server";
10
+ import styles from "../styles.css?url";
11
+ export const Route = createRootRoute({
12
+ loader: () => localeState(),
13
+ head: () => ({
14
+ meta: [
15
+ { charSet: "utf-8" },
16
+ { name: "viewport", content: "width=device-width, initial-scale=1" },
17
+ { title: "Elsewhere" },
18
+ {
19
+ name: "description",
20
+ content:
21
+ "A journal for the places worth taking your time in. Articles, search, and thoughtful reading layouts.",
22
+ },
23
+ ],
24
+ links: [{ rel: "stylesheet", href: styles }],
25
+ }),
26
+ component: Root,
27
+ });
28
+ function Root() {
29
+ const { hydrationState, locales } = Route.useLoaderData();
30
+ return (
31
+ <html
32
+ lang={hydrationState.locale}
33
+ dir={hydrationState.locale.startsWith("ar") ? "rtl" : "ltr"}
34
+ >
35
+ <head>
36
+ <HeadContent />
37
+ </head>
38
+ <body>
39
+ <LocaleProvider
40
+ {...optionsFor(hydrationState.locale)}
41
+ hydrationState={hydrationState}
42
+ availableLocales={locales}
43
+ >
44
+ <Outlet />
45
+ </LocaleProvider>
46
+ <Scripts />
47
+ </body>
48
+ </html>
49
+ );
50
+ }
@@ -0,0 +1,5 @@
1
+ import { createFileRoute } from "@tanstack/react-router";
2
+ import App from "../App";
3
+ export const Route = createFileRoute("/")({
4
+ component: () => <App path="/" />,
5
+ });