astro-tractstack 2.0.0-rc.0 → 2.0.0-rc.2

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 (426) hide show
  1. package/LICENSE +0 -0
  2. package/README.md +133 -13
  3. package/astro.d.ts +0 -0
  4. package/bin/create-tractstack.js +91 -15
  5. package/dist/index.js +6 -6
  6. package/package.json +3 -3
  7. package/templates/artpacks/kCz/captainBreakfast_1080px.webp +0 -0
  8. package/templates/artpacks/kCz/captainBreakfast_1920px.webp +0 -0
  9. package/templates/artpacks/kCz/captainBreakfast_600px.webp +0 -0
  10. package/templates/artpacks/kCz/cleanDrips_1080px.webp +0 -0
  11. package/templates/artpacks/kCz/cleanDrips_1920px.webp +0 -0
  12. package/templates/artpacks/kCz/cleanDrips_600px.webp +0 -0
  13. package/templates/artpacks/kCz/crispwaves_1080px.webp +0 -0
  14. package/templates/artpacks/kCz/crispwaves_1920px.webp +0 -0
  15. package/templates/artpacks/kCz/crispwaves_600px.webp +0 -0
  16. package/templates/artpacks/kCz/dragonSkin_1080px.webp +0 -0
  17. package/templates/artpacks/kCz/dragonSkin_1920px.webp +0 -0
  18. package/templates/artpacks/kCz/dragonSkin_600px.webp +0 -0
  19. package/templates/artpacks/kCz/dragon_1080px.webp +0 -0
  20. package/templates/artpacks/kCz/dragon_1920px.webp +0 -0
  21. package/templates/artpacks/kCz/dragon_600px.webp +0 -0
  22. package/templates/artpacks/kCz/nightcity_1080px.webp +0 -0
  23. package/templates/artpacks/kCz/nightcity_1920px.webp +0 -0
  24. package/templates/artpacks/kCz/nightcity_600px.webp +0 -0
  25. package/templates/artpacks/kCz/pattern1_1080px.webp +0 -0
  26. package/templates/artpacks/kCz/pattern1_1920px.webp +0 -0
  27. package/templates/artpacks/kCz/pattern1_600px.webp +0 -0
  28. package/templates/artpacks/kCz/pattern2_1080px.webp +0 -0
  29. package/templates/artpacks/kCz/pattern2_1920px.webp +0 -0
  30. package/templates/artpacks/kCz/pattern2_600px.webp +0 -0
  31. package/templates/artpacks/kCz/skindrips_1080px.webp +0 -0
  32. package/templates/artpacks/kCz/skindrips_1920px.webp +0 -0
  33. package/templates/artpacks/kCz/skindrips_600px.webp +0 -0
  34. package/templates/artpacks/kCz/slimetime_1080px.webp +0 -0
  35. package/templates/artpacks/kCz/slimetime_1920px.webp +0 -0
  36. package/templates/artpacks/kCz/slimetime_600px.webp +0 -0
  37. package/templates/artpacks/kCz/snake_1080px.webp +0 -0
  38. package/templates/artpacks/kCz/snake_1920px.webp +0 -0
  39. package/templates/artpacks/kCz/snake_600px.webp +0 -0
  40. package/templates/artpacks/kCz/toxicshock_1080px.webp +0 -0
  41. package/templates/artpacks/kCz/toxicshock_1920px.webp +0 -0
  42. package/templates/artpacks/kCz/toxicshock_600px.webp +0 -0
  43. package/templates/artpacks/kCz/tractstack_1080px.webp +0 -0
  44. package/templates/artpacks/kCz/tractstack_1920px.webp +0 -0
  45. package/templates/artpacks/kCz/tractstack_600px.webp +0 -0
  46. package/templates/artpacks/kCz/tripdrips_1080px.webp +0 -0
  47. package/templates/artpacks/kCz/tripdrips_1920px.webp +0 -0
  48. package/templates/artpacks/kCz/tripdrips_600px.webp +0 -0
  49. package/templates/artpacks/kCz/wavedrips_1080px.webp +0 -0
  50. package/templates/artpacks/kCz/wavedrips_1920px.webp +0 -0
  51. package/templates/artpacks/kCz/wavedrips_600px.webp +0 -0
  52. package/templates/artpacks/t8k/beach_1080px.webp +0 -0
  53. package/templates/artpacks/t8k/beach_1920px.webp +0 -0
  54. package/templates/artpacks/t8k/beach_600px.webp +0 -0
  55. package/templates/artpacks/t8k/blast_1080px.webp +0 -0
  56. package/templates/artpacks/t8k/blast_1920px.webp +0 -0
  57. package/templates/artpacks/t8k/blast_600px.webp +0 -0
  58. package/templates/artpacks/t8k/bokeh_1080px.webp +0 -0
  59. package/templates/artpacks/t8k/bokeh_1920px.webp +0 -0
  60. package/templates/artpacks/t8k/bokeh_600px.webp +0 -0
  61. package/templates/artpacks/t8k/cartoon_1080px.webp +0 -0
  62. package/templates/artpacks/t8k/cartoon_1920px.webp +0 -0
  63. package/templates/artpacks/t8k/cartoon_600px.webp +0 -0
  64. package/templates/artpacks/t8k/darkeggshell_1080px.webp +0 -0
  65. package/templates/artpacks/t8k/darkeggshell_1920px.webp +0 -0
  66. package/templates/artpacks/t8k/darkeggshell_600px.webp +0 -0
  67. package/templates/artpacks/t8k/explosion_1080px.webp +0 -0
  68. package/templates/artpacks/t8k/explosion_1920px.webp +0 -0
  69. package/templates/artpacks/t8k/explosion_600px.webp +0 -0
  70. package/templates/artpacks/t8k/floral_1080px.webp +0 -0
  71. package/templates/artpacks/t8k/floral_1920px.webp +0 -0
  72. package/templates/artpacks/t8k/floral_600px.webp +0 -0
  73. package/templates/artpacks/t8k/flower_1080px.webp +0 -0
  74. package/templates/artpacks/t8k/flower_1920px.webp +0 -0
  75. package/templates/artpacks/t8k/flower_600px.webp +0 -0
  76. package/templates/artpacks/t8k/foliage_1080px.webp +0 -0
  77. package/templates/artpacks/t8k/foliage_1920px.webp +0 -0
  78. package/templates/artpacks/t8k/foliage_600px.webp +0 -0
  79. package/templates/artpacks/t8k/mist_1080px.webp +0 -0
  80. package/templates/artpacks/t8k/mist_1920px.webp +0 -0
  81. package/templates/artpacks/t8k/mist_600px.webp +0 -0
  82. package/templates/artpacks/t8k/portal_1080px.webp +0 -0
  83. package/templates/artpacks/t8k/portal_1920px.webp +0 -0
  84. package/templates/artpacks/t8k/portal_600px.webp +0 -0
  85. package/templates/artpacks/t8k/storytime_1080px.webp +0 -0
  86. package/templates/artpacks/t8k/storytime_1920px.webp +0 -0
  87. package/templates/artpacks/t8k/storytime_600px.webp +0 -0
  88. package/templates/artpacks/t8k/tacky_1080px.webp +0 -0
  89. package/templates/artpacks/t8k/tacky_1920px.webp +0 -0
  90. package/templates/artpacks/t8k/tacky_600px.webp +0 -0
  91. package/templates/artpacks/t8k/wallpaper_1080px.webp +0 -0
  92. package/templates/artpacks/t8k/wallpaper_1920px.webp +0 -0
  93. package/templates/artpacks/t8k/wallpaper_600px.webp +0 -0
  94. package/templates/brand/favicon.ico +0 -0
  95. package/templates/brand/logo.svg +0 -0
  96. package/templates/brand/static.jpg +0 -0
  97. package/templates/brand/wordmark.svg +0 -0
  98. package/templates/css/custom.css +0 -0
  99. package/templates/css/frontend.css +0 -0
  100. package/templates/css/storykeep.css +0 -0
  101. package/templates/custom/minimal/CodeHook.astro +0 -0
  102. package/templates/custom/minimal/CustomRoutes.astro +0 -0
  103. package/templates/custom/with-examples/CodeHook.astro +0 -0
  104. package/templates/custom/with-examples/CustomHero.astro +0 -0
  105. package/templates/custom/with-examples/CustomRoutes.astro +0 -0
  106. package/templates/custom/with-examples/pages/Collections.astro +0 -0
  107. package/templates/env.example +0 -0
  108. package/templates/fonts/Inter-Black.woff2 +0 -0
  109. package/templates/fonts/Inter-Bold.woff2 +0 -0
  110. package/templates/fonts/Inter-Regular.woff2 +0 -0
  111. package/templates/icons/h2.svg +0 -0
  112. package/templates/icons/h3.svg +0 -0
  113. package/templates/icons/h4.svg +0 -0
  114. package/templates/icons/h5.svg +0 -0
  115. package/templates/icons/image.svg +0 -0
  116. package/templates/icons/text.svg +0 -0
  117. package/templates/socials/codepen.svg +0 -0
  118. package/templates/socials/discord.svg +0 -0
  119. package/templates/socials/facebook.svg +0 -0
  120. package/templates/socials/github.svg +0 -0
  121. package/templates/socials/instagram.svg +0 -0
  122. package/templates/socials/linkedin.svg +0 -0
  123. package/templates/socials/mail.svg +0 -0
  124. package/templates/socials/rumble.svg +0 -0
  125. package/templates/socials/tiktok.svg +0 -0
  126. package/templates/socials/twitch.svg +0 -0
  127. package/templates/socials/twitter.svg +0 -0
  128. package/templates/socials/x.svg +0 -0
  129. package/templates/socials/youtube.svg +0 -0
  130. package/templates/src/client/{analytics-events.ts → analytics-events.js} +16 -22
  131. package/templates/src/client/{belief-events.ts → belief-events.js} +15 -29
  132. package/templates/src/client/{sse.ts → sse.js} +20 -74
  133. package/templates/src/components/Footer.astro +5 -1
  134. package/templates/src/components/Fragment.astro +0 -0
  135. package/templates/src/components/Header.astro +0 -0
  136. package/templates/src/components/Menu.tsx +0 -0
  137. package/templates/src/components/codehooks/BunnyVideoSetup.tsx +0 -0
  138. package/templates/src/components/codehooks/BunnyVideoWrapper.astro +0 -0
  139. package/templates/src/components/codehooks/EpinetDurationSelector.tsx +0 -0
  140. package/templates/src/components/codehooks/EpinetTableView.tsx +0 -0
  141. package/templates/src/components/codehooks/EpinetWrapper.tsx +0 -0
  142. package/templates/src/components/codehooks/FeaturedContent.astro +0 -0
  143. package/templates/src/components/codehooks/FeaturedContentSetup.tsx +0 -0
  144. package/templates/src/components/codehooks/ListContent.astro +0 -0
  145. package/templates/src/components/codehooks/ListContentSetup.tsx +0 -0
  146. package/templates/src/components/codehooks/SankeyDiagram.tsx +0 -0
  147. package/templates/src/components/compositor/Compositor.tsx +0 -0
  148. package/templates/src/components/compositor/Node.tsx +0 -0
  149. package/templates/src/components/compositor/NodeWithGuid.tsx +0 -0
  150. package/templates/src/components/compositor/PanelVisibilityWrapper.tsx +0 -0
  151. package/templates/src/components/compositor/elements/Belief.tsx +0 -0
  152. package/templates/src/components/compositor/elements/BgImage.tsx +0 -0
  153. package/templates/src/components/compositor/elements/BgVisualBreak.tsx +0 -0
  154. package/templates/src/components/compositor/elements/BunnyVideo.tsx +0 -0
  155. package/templates/src/components/compositor/elements/IdentifyAs.tsx +0 -0
  156. package/templates/src/components/compositor/elements/PlayButton.tsx +0 -0
  157. package/templates/src/components/compositor/elements/SignUp.tsx +0 -0
  158. package/templates/src/components/compositor/elements/Svg.tsx +0 -0
  159. package/templates/src/components/compositor/elements/ToggleBelief.tsx +0 -0
  160. package/templates/src/components/compositor/elements/YouTubeWrapper.tsx +0 -0
  161. package/templates/src/components/compositor/nodes/BgPaneWrapper.tsx +0 -0
  162. package/templates/src/components/compositor/nodes/GhostInsertBlock.tsx +0 -0
  163. package/templates/src/components/compositor/nodes/Markdown.tsx +0 -0
  164. package/templates/src/components/compositor/nodes/Pane.tsx +0 -0
  165. package/templates/src/components/compositor/nodes/Pane_eraser.tsx +0 -0
  166. package/templates/src/components/compositor/nodes/Pane_layout.tsx +0 -0
  167. package/templates/src/components/compositor/nodes/RenderChildren.tsx +0 -0
  168. package/templates/src/components/compositor/nodes/StoryFragment.tsx +0 -0
  169. package/templates/src/components/compositor/nodes/TagElement.tsx +0 -0
  170. package/templates/src/components/compositor/nodes/Widget.tsx +0 -0
  171. package/templates/src/components/compositor/nodes/tagElements/NodeA.tsx +0 -0
  172. package/templates/src/components/compositor/nodes/tagElements/NodeA_eraser.tsx +0 -0
  173. package/templates/src/components/compositor/nodes/tagElements/NodeAnchorComponent.tsx +0 -0
  174. package/templates/src/components/compositor/nodes/tagElements/NodeBasicTag.tsx +0 -0
  175. package/templates/src/components/compositor/nodes/tagElements/NodeBasicTag_eraser.tsx +0 -0
  176. package/templates/src/components/compositor/nodes/tagElements/NodeBasicTag_insert.tsx +0 -0
  177. package/templates/src/components/compositor/nodes/tagElements/NodeBasicTag_settings.tsx +0 -0
  178. package/templates/src/components/compositor/nodes/tagElements/NodeButton.tsx +0 -0
  179. package/templates/src/components/compositor/nodes/tagElements/NodeButton_eraser.tsx +0 -0
  180. package/templates/src/components/compositor/nodes/tagElements/NodeImg.tsx +0 -0
  181. package/templates/src/components/compositor/nodes/tagElements/NodeText.tsx +0 -0
  182. package/templates/src/components/compositor/nodes/tagElements/TabIndicator.tsx +0 -0
  183. package/templates/src/components/compositor/preview/FeaturedContentPreview.tsx +0 -0
  184. package/templates/src/components/compositor/preview/ListContentPreview.tsx +0 -0
  185. package/templates/src/components/compositor/preview/OgImagePreview.tsx +0 -0
  186. package/templates/src/components/compositor/preview/PaneSnapshotGenerator.tsx +0 -0
  187. package/templates/src/components/compositor/preview/PanesPreviewGenerator.tsx +0 -0
  188. package/templates/src/components/compositor/preview/VisualBreakPreview.tsx +0 -0
  189. package/templates/src/components/edit/Header.tsx +0 -0
  190. package/templates/src/components/edit/PanelSwitch.tsx +0 -0
  191. package/templates/src/components/edit/SettingsPanel.tsx +0 -0
  192. package/templates/src/components/edit/ToolBar.tsx +0 -0
  193. package/templates/src/components/edit/ToolMode.tsx +0 -0
  194. package/templates/src/components/edit/context/ContextPaneConfig.tsx +0 -0
  195. package/templates/src/components/edit/context/ContextPaneConfig_slug.tsx +0 -0
  196. package/templates/src/components/edit/context/ContextPaneConfig_title.tsx +0 -0
  197. package/templates/src/components/edit/pane/AddPanePanel.tsx +0 -0
  198. package/templates/src/components/edit/pane/AddPanePanel_break.tsx +0 -0
  199. package/templates/src/components/edit/pane/AddPanePanel_codehook.tsx +0 -0
  200. package/templates/src/components/edit/pane/AddPanePanel_new.tsx +0 -0
  201. package/templates/src/components/edit/pane/AddPanePanel_newAICopy.tsx +0 -0
  202. package/templates/src/components/edit/pane/AddPanePanel_newAICopy_modal.tsx +0 -0
  203. package/templates/src/components/edit/pane/AddPanePanel_newCopyMode.tsx +0 -0
  204. package/templates/src/components/edit/pane/AddPanePanel_newCustomCopy.tsx +0 -0
  205. package/templates/src/components/edit/pane/AddPanePanel_reuse.tsx +0 -0
  206. package/templates/src/components/edit/pane/ConfigPanePanel.tsx +0 -0
  207. package/templates/src/components/edit/pane/PageGen.tsx +0 -0
  208. package/templates/src/components/edit/pane/PageGenSelector.tsx +0 -0
  209. package/templates/src/components/edit/pane/PageGenSpecial.tsx +0 -0
  210. package/templates/src/components/edit/pane/PageGen_preview.tsx +0 -0
  211. package/templates/src/components/edit/pane/PanePanel_impression.tsx +0 -0
  212. package/templates/src/components/edit/pane/PanePanel_path.tsx +0 -0
  213. package/templates/src/components/edit/pane/PanePanel_slug.tsx +0 -0
  214. package/templates/src/components/edit/pane/PanePanel_title.tsx +0 -0
  215. package/templates/src/components/edit/panels/StyleBreakPanel.tsx +0 -0
  216. package/templates/src/components/edit/panels/StyleCodeHookPanel.tsx +0 -0
  217. package/templates/src/components/edit/panels/StyleElementPanel.tsx +0 -0
  218. package/templates/src/components/edit/panels/StyleElementPanel_add.tsx +0 -0
  219. package/templates/src/components/edit/panels/StyleElementPanel_remove.tsx +0 -0
  220. package/templates/src/components/edit/panels/StyleElementPanel_update.tsx +0 -0
  221. package/templates/src/components/edit/panels/StyleImagePanel.tsx +0 -0
  222. package/templates/src/components/edit/panels/StyleImagePanel_add.tsx +0 -0
  223. package/templates/src/components/edit/panels/StyleImagePanel_remove.tsx +0 -0
  224. package/templates/src/components/edit/panels/StyleImagePanel_update.tsx +0 -0
  225. package/templates/src/components/edit/panels/StyleLiElementPanel.tsx +0 -0
  226. package/templates/src/components/edit/panels/StyleLiElementPanel_add.tsx +0 -0
  227. package/templates/src/components/edit/panels/StyleLiElementPanel_remove.tsx +0 -0
  228. package/templates/src/components/edit/panels/StyleLiElementPanel_update.tsx +0 -0
  229. package/templates/src/components/edit/panels/StyleLinkPanel.tsx +0 -0
  230. package/templates/src/components/edit/panels/StyleLinkPanel_add.tsx +0 -0
  231. package/templates/src/components/edit/panels/StyleLinkPanel_config.tsx +0 -0
  232. package/templates/src/components/edit/panels/StyleLinkPanel_remove.tsx +0 -0
  233. package/templates/src/components/edit/panels/StyleLinkPanel_update.tsx +0 -0
  234. package/templates/src/components/edit/panels/StyleParentPanel.tsx +0 -0
  235. package/templates/src/components/edit/panels/StyleParentPanel_add.tsx +0 -0
  236. package/templates/src/components/edit/panels/StyleParentPanel_deleteLayer.tsx +0 -0
  237. package/templates/src/components/edit/panels/StyleParentPanel_remove.tsx +0 -0
  238. package/templates/src/components/edit/panels/StyleParentPanel_update.tsx +0 -0
  239. package/templates/src/components/edit/panels/StyleWidgetPanel.tsx +0 -0
  240. package/templates/src/components/edit/panels/StyleWidgetPanel_add.tsx +0 -0
  241. package/templates/src/components/edit/panels/StyleWidgetPanel_config.tsx +0 -0
  242. package/templates/src/components/edit/panels/StyleWidgetPanel_remove.tsx +0 -0
  243. package/templates/src/components/edit/panels/StyleWidgetPanel_update.tsx +0 -0
  244. package/templates/src/components/edit/state/SaveModal.tsx +0 -0
  245. package/templates/src/components/edit/state/StylesMemory.tsx +0 -0
  246. package/templates/src/components/edit/storyfragment/StoryFragmentConfigPanel.tsx +0 -0
  247. package/templates/src/components/edit/storyfragment/StoryFragmentPanel_menu.tsx +0 -0
  248. package/templates/src/components/edit/storyfragment/StoryFragmentPanel_og.tsx +0 -0
  249. package/templates/src/components/edit/storyfragment/StoryFragmentPanel_slug.tsx +0 -0
  250. package/templates/src/components/edit/storyfragment/StoryFragmentPanel_title.tsx +0 -0
  251. package/templates/src/components/edit/widgets/BeliefWidget.tsx +0 -0
  252. package/templates/src/components/edit/widgets/BunnyWidget.tsx +0 -0
  253. package/templates/src/components/edit/widgets/IdentifyAsWidget.tsx +0 -0
  254. package/templates/src/components/edit/widgets/SignupWidget.tsx +0 -0
  255. package/templates/src/components/edit/widgets/ToggleWidget.tsx +0 -0
  256. package/templates/src/components/edit/widgets/YouTubeWidget.tsx +0 -0
  257. package/templates/src/components/fields/ActionBuilderTimeSelector.tsx +0 -0
  258. package/templates/src/components/fields/ArtpackImage.tsx +0 -0
  259. package/templates/src/components/fields/BackgroundImage.tsx +0 -0
  260. package/templates/src/components/fields/BackgroundImageWrapper.tsx +0 -0
  261. package/templates/src/components/fields/BooleanParam.tsx +0 -0
  262. package/templates/src/components/fields/BunnyMomentSelector.tsx +0 -0
  263. package/templates/src/components/fields/ColorPickerCombo.tsx +0 -0
  264. package/templates/src/components/fields/ImageUpload.tsx +0 -0
  265. package/templates/src/components/fields/MultiParam.tsx +0 -0
  266. package/templates/src/components/fields/PaneBreakCollectionSelector.tsx +0 -0
  267. package/templates/src/components/fields/PaneBreakShapeSelector.tsx +0 -0
  268. package/templates/src/components/fields/SelectedTailwindClass.tsx +0 -0
  269. package/templates/src/components/fields/SingleParam.tsx +0 -0
  270. package/templates/src/components/fields/ViewportComboBox.tsx +0 -0
  271. package/templates/src/components/form/ActionBuilderField.tsx +0 -0
  272. package/templates/src/components/form/ActionBuilderSlugSelector.tsx +0 -0
  273. package/templates/src/components/form/BooleanToggle.tsx +0 -0
  274. package/templates/src/components/form/ColorPicker.tsx +0 -0
  275. package/templates/src/components/form/DateTimeInput.tsx +0 -0
  276. package/templates/src/components/form/EnumSelect.tsx +0 -0
  277. package/templates/src/components/form/FileUpload.tsx +0 -0
  278. package/templates/src/components/form/MagicPathBuilder.tsx +0 -0
  279. package/templates/src/components/form/NumberInput.tsx +0 -0
  280. package/templates/src/components/form/ParagraphArrayInput.tsx +0 -0
  281. package/templates/src/components/form/StringArrayInput.tsx +0 -0
  282. package/templates/src/components/form/StringInput.tsx +0 -0
  283. package/templates/src/components/form/UnsavedChangesBar.tsx +0 -0
  284. package/templates/src/components/form/advanced/APIConfigSection.tsx +0 -0
  285. package/templates/src/components/form/advanced/AuthConfigSection.tsx +0 -0
  286. package/templates/src/components/form/brand/BrandAssetsSection.tsx +0 -0
  287. package/templates/src/components/form/brand/BrandColorsSection.tsx +0 -0
  288. package/templates/src/components/form/brand/SEOSection.tsx +0 -0
  289. package/templates/src/components/form/brand/SiteConfigSection.tsx +0 -0
  290. package/templates/src/components/form/brand/SocialLinksSection.tsx +0 -0
  291. package/templates/src/components/profile/ProfileConsent.tsx +0 -0
  292. package/templates/src/components/profile/ProfileCreate.tsx +0 -0
  293. package/templates/src/components/profile/ProfileEdit.tsx +0 -0
  294. package/templates/src/components/profile/ProfileSwitch.tsx +0 -0
  295. package/templates/src/components/profile/ProfileUnlock.tsx +0 -0
  296. package/templates/src/components/storykeep/Dashboard.tsx +0 -0
  297. package/templates/src/components/storykeep/Dashboard_Activity.tsx +0 -0
  298. package/templates/src/components/storykeep/Dashboard_Advanced.tsx +0 -0
  299. package/templates/src/components/storykeep/Dashboard_Analytics.tsx +0 -0
  300. package/templates/src/components/storykeep/Dashboard_Branding.tsx +0 -0
  301. package/templates/src/components/storykeep/Dashboard_Content.tsx +0 -0
  302. package/templates/src/components/storykeep/controls/UsageCell.tsx +0 -0
  303. package/templates/src/components/storykeep/controls/content/BeliefForm.tsx +0 -0
  304. package/templates/src/components/storykeep/controls/content/BeliefTable.tsx +0 -0
  305. package/templates/src/components/storykeep/controls/content/ContentBrowser.tsx +0 -0
  306. package/templates/src/components/storykeep/controls/content/ContentSummary.tsx +0 -0
  307. package/templates/src/components/storykeep/controls/content/KnownResourceForm.tsx +0 -0
  308. package/templates/src/components/storykeep/controls/content/KnownResourceTable.tsx +0 -0
  309. package/templates/src/components/storykeep/controls/content/ManageContent.tsx +0 -0
  310. package/templates/src/components/storykeep/controls/content/MenuForm.tsx +0 -0
  311. package/templates/src/components/storykeep/controls/content/MenuTable.tsx +0 -0
  312. package/templates/src/components/storykeep/controls/content/ResourceBulkIngest.tsx +0 -0
  313. package/templates/src/components/storykeep/controls/content/ResourceForm.tsx +0 -0
  314. package/templates/src/components/storykeep/controls/content/ResourceTable.tsx +0 -0
  315. package/templates/src/components/storykeep/controls/content/StoryFragmentTable.tsx +0 -0
  316. package/templates/src/components/storykeep/state/BrandingWrapper.tsx +0 -0
  317. package/templates/src/components/storykeep/state/FetchAnalytics.tsx +0 -0
  318. package/templates/src/components/storykeep/widgets/ResponsiveLine.tsx +0 -0
  319. package/templates/src/components/storykeep/widgets/Wizard.tsx +0 -0
  320. package/templates/src/components/tenant/RegistrationForm.tsx +0 -0
  321. package/templates/src/components/widgets/BunnyVideoHero.astro +0 -0
  322. package/templates/src/components/widgets/Impression.tsx +0 -0
  323. package/templates/src/components/widgets/ImpressionWrapper.tsx +0 -0
  324. package/templates/src/constants/beliefs.ts +0 -0
  325. package/templates/src/constants/brandThemes.ts +0 -0
  326. package/templates/src/constants/prompts.json +0 -0
  327. package/templates/src/constants/shapes.ts +0 -0
  328. package/templates/src/constants/stopWords.ts +0 -0
  329. package/templates/src/constants/tailwindColors.json +0 -0
  330. package/templates/src/constants.ts +0 -2
  331. package/templates/src/hooks/useFormState.ts +0 -0
  332. package/templates/src/layouts/Layout.astro +4 -4
  333. package/templates/src/lib/session.ts +0 -0
  334. package/templates/src/lib/storyData.ts +0 -0
  335. package/templates/src/middleware.ts +0 -0
  336. package/templates/src/pages/404.astro +0 -0
  337. package/templates/src/pages/[...slug]/edit.astro +1 -0
  338. package/templates/src/pages/[...slug].astro +0 -0
  339. package/templates/src/pages/api/auth/decode.ts +0 -0
  340. package/templates/src/pages/api/auth/login.ts +0 -0
  341. package/templates/src/pages/api/auth/logout.ts +0 -0
  342. package/templates/src/pages/api/auth/profile.ts +0 -0
  343. package/templates/src/pages/api/orphan-analysis.ts +0 -0
  344. package/templates/src/pages/api/tailwind.ts +5 -21
  345. package/templates/src/pages/collections/[param1].astro +0 -0
  346. package/templates/src/pages/context/[...contextSlug]/edit.astro +1 -0
  347. package/templates/src/pages/context/[...contextSlug].astro +0 -0
  348. package/templates/src/pages/llms.txt.ts +0 -0
  349. package/templates/src/pages/maint.astro +0 -0
  350. package/templates/src/pages/media/[...slug].astro +0 -0
  351. package/templates/src/pages/robots.txt.ts +0 -0
  352. package/templates/src/pages/sandbox/activate.astro +0 -0
  353. package/templates/src/pages/sandbox/register.astro +0 -0
  354. package/templates/src/pages/sandbox/success.astro +0 -0
  355. package/templates/src/pages/sitemap.xml.ts +0 -0
  356. package/templates/src/pages/storykeep/advanced.astro +1 -1
  357. package/templates/src/pages/storykeep/branding.astro +1 -1
  358. package/templates/src/pages/storykeep/content.astro +1 -1
  359. package/templates/src/pages/storykeep/init.astro +0 -0
  360. package/templates/src/pages/storykeep/login.astro +0 -0
  361. package/templates/src/pages/storykeep/logout.astro +0 -0
  362. package/templates/src/pages/storykeep/profile.astro +1 -1
  363. package/templates/src/pages/storykeep.astro +0 -0
  364. package/templates/src/stores/analytics.ts +0 -0
  365. package/templates/src/stores/backend.ts +0 -0
  366. package/templates/src/stores/navigation.ts +0 -0
  367. package/templates/src/stores/nodes.ts +0 -0
  368. package/templates/src/stores/nodesHistory.ts +0 -0
  369. package/templates/src/stores/notificationSystem.ts +0 -0
  370. package/templates/src/stores/orphanAnalysis.ts +0 -0
  371. package/templates/src/stores/storykeep.ts +0 -0
  372. package/templates/src/types/astro.ts +0 -0
  373. package/templates/src/types/compositorTypes.ts +0 -0
  374. package/templates/src/types/formTypes.ts +0 -0
  375. package/templates/src/types/multiTenant.ts +0 -0
  376. package/templates/src/types/nodeProps.ts +0 -0
  377. package/templates/src/types/tractstack.ts +0 -0
  378. package/templates/src/utils/aai/getTitleSlug.ts +0 -0
  379. package/templates/src/utils/actions/actionButton.ts +0 -0
  380. package/templates/src/utils/actions/lispLexer.ts +0 -0
  381. package/templates/src/utils/actions/preParse_Action.ts +0 -0
  382. package/templates/src/utils/actions/preParse_Bunny.ts +0 -0
  383. package/templates/src/utils/actions/preParse_Clicked.ts +0 -0
  384. package/templates/src/utils/actions/preParse_Impression.ts +0 -0
  385. package/templates/src/utils/api/advancedConfig.ts +0 -0
  386. package/templates/src/utils/api/advancedHelpers.ts +0 -0
  387. package/templates/src/utils/api/beliefConfig.ts +0 -0
  388. package/templates/src/utils/api/beliefHelpers.ts +0 -0
  389. package/templates/src/utils/api/brandConfig.ts +0 -0
  390. package/templates/src/utils/api/brandHelpers.ts +0 -0
  391. package/templates/src/utils/api/fileHelpers.ts +0 -0
  392. package/templates/src/utils/api/menuConfig.ts +0 -0
  393. package/templates/src/utils/api/menuHelpers.ts +0 -0
  394. package/templates/src/utils/api/resourceConfig.ts +0 -0
  395. package/templates/src/utils/api/resourceHelpers.ts +0 -0
  396. package/templates/src/utils/api/tenantConfig.ts +0 -0
  397. package/templates/src/utils/api/tenantHelpers.ts +0 -0
  398. package/templates/src/utils/api.ts +0 -0
  399. package/templates/src/utils/auth.ts +0 -0
  400. package/templates/src/utils/backend.ts +0 -0
  401. package/templates/src/utils/compositor/TemplateMarkdowns.ts +0 -0
  402. package/templates/src/utils/compositor/TemplateNodes.ts +0 -0
  403. package/templates/src/utils/compositor/TemplatePanes.ts +0 -0
  404. package/templates/src/utils/compositor/allowInsert.ts +0 -0
  405. package/templates/src/utils/compositor/domHelpers.ts +0 -0
  406. package/templates/src/utils/compositor/handleClickEvent.ts +0 -0
  407. package/templates/src/utils/compositor/nodesHelper.ts +0 -0
  408. package/templates/src/utils/compositor/nodesMarkdownGenerator.ts +0 -0
  409. package/templates/src/utils/compositor/processMarkdown.ts +0 -0
  410. package/templates/src/utils/compositor/reduceNodesClassNames.ts +0 -0
  411. package/templates/src/utils/compositor/tailwindClasses.ts +0 -0
  412. package/templates/src/utils/compositor/tailwindColors.ts +0 -0
  413. package/templates/src/utils/compositor/templateMarkdownStyles.ts +0 -0
  414. package/templates/src/utils/compositor/typeGuards.ts +0 -0
  415. package/templates/src/utils/etl/extractor.ts +0 -0
  416. package/templates/src/utils/etl/index.ts +0 -0
  417. package/templates/src/utils/etl/loader.ts +0 -0
  418. package/templates/src/utils/etl/transformer.ts +0 -0
  419. package/templates/src/utils/helpers.ts +0 -0
  420. package/templates/src/utils/layout.ts +0 -0
  421. package/templates/src/utils/profileStorage.ts +0 -0
  422. package/templates/src/utils/useInterval.ts +0 -0
  423. package/templates/tailwind.config.cjs +0 -0
  424. package/utils/create-resolver.ts +0 -0
  425. package/utils/inject-files.ts +6 -6
  426. package/utils/validate-config.ts +0 -0
package/LICENSE CHANGED
File without changes
package/README.md CHANGED
@@ -1,9 +1,6 @@
1
1
  # Tract Stack
2
2
 
3
- create your own adaptive website or newsletter
4
-
5
- the "free web press"
6
- no-code community engine
3
+ websites that adapt to the visitor
7
4
 
8
5
  by [At Risk Media](https://atriskmedia.com)
9
6
 
@@ -15,7 +12,7 @@ The `tractstack-go` package provides a backend server for the `astro-tractstack`
15
12
 
16
13
  Tract Stack makes it easy for non-technical people to build and grow adaptive websites that are fast, beautiful, SEO-ready, and accessible.
17
14
 
18
- Tract Stack is built on [Astro](https://astro.build/) with [HTMX](https://htmx.org/) and a [Golang](https://go.dev/) backend -- we recommend [Turso](https://app.turso.tech/) as database
15
+ Tract Stack is built on [Astro](https://astro.build/) with [HTMX](https://htmx.org/) and a [Golang](https://go.dev/) backend -- uses SQLite by default with optional [Turso](https://app.turso.tech/) cloud database
19
16
 
20
17
  ## Documentation
21
18
 
@@ -23,30 +20,153 @@ Please visit [our docs](https://tractstack.org)
23
20
 
24
21
  For production deployment you'll need to prepare your server.
25
22
 
26
- _Quick Install_ in two steps:
23
+ ## Quick Install
27
24
 
28
- First install and run the go backend. It runs on port 8080 by default.
25
+ **One-line installer (recommended for Linux):**
29
26
 
27
+ ```bash
28
+ curl -fsSL https://install.tractstack.org | sh
30
29
  ```
31
- mkdir -p ~/src
32
- cd ~/src
30
+
31
+ This will automatically install both the Go backend and create a new Astro project with TractStack.
32
+
33
+ ## Manual Installation
34
+
35
+ **Prerequisites:**
36
+
37
+ - Node.js 18
38
+ - pnpm 9+ (recommended) or npm/yarn
39
+ - Go 1.21+
40
+ - Git
41
+
42
+ ### Platform Support
43
+
44
+ **Linux:** Full native support - follow the steps below exactly as written.
45
+
46
+ **macOS:** Full native support - follow the steps below exactly as written. The installation works the same as Linux.
47
+
48
+ ### Step 1: Install and run the Go backend
49
+
50
+ **Linux/macOS:**
51
+
52
+ ```bash
53
+ mkdir -p ~/t8k/src
54
+ cd ~/t8k/src
33
55
  git clone https://github.com/AtRiskMedia/tractstack-go.git
34
56
  cd tractstack-go
35
- go build cmd/tractstack-go/main.go
57
+ echo "GO_BACKEND_PATH=$HOME/t8k/t8k-go-server/" > .env
58
+ echo "GIN_MODE=release" >> .env
59
+ go build -o tractstack-go ./cmd/tractstack-go
36
60
  ./tractstack-go
37
61
  ```
38
62
 
39
- Next create an Astro starter then install Tract Stack as an integration:
63
+ The backend runs on port 8080 by default.
40
64
 
41
- ```
42
- cd ~/src
65
+ ### Step 2: Create your Astro frontend
66
+
67
+ **Linux/macOS:**
68
+
69
+ ```bash
70
+ cd ~/t8k
43
71
  pnpm create astro@latest my-tractstack --template minimal --typescript strict --install
44
72
  cd my-tractstack
45
73
  pnpm add astro-tractstack@latest
74
+ echo "PRIVATE_GO_BACKEND_PATH=$HOME/t8k/t8k-go-server/" > .env
46
75
  npx create-tractstack
47
76
  pnpm dev
48
77
  ```
49
78
 
79
+ ### Step 3: Activate your Story Keep
80
+
81
+ Visit https://127.0.0.1:4321 in your browser.
82
+
83
+ TractStack works out of the box with local SQLite3 - no database setup required.
84
+
85
+ **Optional:** You can choose to use [Turso](https://app.turso.tech/) cloud database:
86
+
87
+ 1. Create a database at [turso.tech](https://app.turso.tech/)
88
+ 2. Get your database URL and auth token
89
+ 3. Activate your database during site init
90
+
91
+ ## Development Workflow
92
+
93
+ 1. **Start the Go backend:**
94
+
95
+ ```bash
96
+ cd ~/t8k/src/tractstack-go
97
+ ./tractstack-go
98
+ ```
99
+
100
+ 2. **Start the Astro dev server:**
101
+
102
+ ```bash
103
+ cd ~/t8k/src/my-tractstack
104
+ pnpm dev
105
+ ```
106
+
107
+ 3. **Access your site:**
108
+ - Frontend: http://localhost:4321
109
+ - StoryKeep (CMS): http://localhost:4321/storykeep
110
+
111
+ ## Production Deployment
112
+
113
+ For production, you'll need:
114
+
115
+ 1. **Deploy the Go backend** with proper environment variables
116
+ 2. **Build and deploy the Astro frontend** with `pnpm build`
117
+ 3. **Configure your database** connection
118
+ 4. **Set up SSL/TLS** for your domain
119
+
120
+ See our [deployment guide](https://tractstack.org/docs/deployment) for detailed instructions.
121
+
122
+ ## Multi-Tenant Features
123
+
124
+ TractStack supports multi-tenancy!
125
+
126
+ ## Project Structure
127
+
128
+ ```
129
+ ## Project Structure
130
+
131
+ Installs in ~/t8k and scopes to tenantId=`default` when ENABLE_MULTI_TENANT=false
132
+
133
+ For multiple Tract Stack sites on a single server see our production install recipes.
134
+
135
+ ```
136
+
137
+ ~/t8k/
138
+ ├── src/
139
+ │ ├── tractstack-go/ # Go backend source
140
+ │ │ ├── tractstack-go # Compiled binary
141
+ │ │ └── ...
142
+ │ └── my-tractstack/ # Astro frontend
143
+ │ ├── src/
144
+ │ │ ├── custom/ # Your custom components
145
+ │ │ ├── pages/
146
+ │ │ └── ...
147
+ └── t8k-go-server/ # Backend data storage
148
+ ├── config/
149
+ │ ├── t8k/
150
+ │ │ └── tenants.json # Source of truth
151
+ │ └── default/ # Default tenant config
152
+ │ └── env.json # Critical config
153
+ │ └── brand.json # Personalization
154
+ │ └── media/ # Tenant media files
155
+ ├── db/
156
+ │ └── default/
157
+ │ └── tractstack.db # SQLite database
158
+ └── log/
159
+ ├── system.log
160
+ ├── tenant.log
161
+ ├── database.log
162
+ └── ...
163
+
164
+ ```
165
+
166
+ ```
167
+
168
+ The Go backend stores data in `~/t8k/t8k-go-server/` by default (quick install).
169
+
50
170
  ## Queries?
51
171
 
52
172
  Reach out at hello -at- tractstack -dot- com
package/astro.d.ts CHANGED
File without changes
@@ -28,6 +28,56 @@ function detectPackageManager() {
28
28
  return 'pnpm';
29
29
  }
30
30
 
31
+ // Parse existing .env file
32
+ function parseExistingEnv() {
33
+ const defaults = {
34
+ goBackend: 'http://localhost:8080',
35
+ tenantId: 'default',
36
+ goBackendPath: `${homedir()}/t8k-go-server/`,
37
+ enableMultiTenant: false,
38
+ };
39
+
40
+ if (!existsSync('.env')) {
41
+ return defaults;
42
+ }
43
+
44
+ try {
45
+ const envContent = readFileSync('.env', 'utf-8');
46
+ const envVars = {};
47
+
48
+ envContent.split('\n').forEach((line) => {
49
+ line = line.trim();
50
+ if (line && !line.startsWith('#')) {
51
+ const [key, ...valueParts] = line.split('=');
52
+ if (key && valueParts.length > 0) {
53
+ // Remove surrounding quotes and trim
54
+ let value = valueParts.join('=').trim();
55
+ if (
56
+ (value.startsWith('"') && value.endsWith('"')) ||
57
+ (value.startsWith("'") && value.endsWith("'"))
58
+ ) {
59
+ value = value.slice(1, -1);
60
+ }
61
+ envVars[key.trim()] = value;
62
+ }
63
+ }
64
+ });
65
+
66
+ return {
67
+ goBackend: envVars.PUBLIC_GO_BACKEND || defaults.goBackend,
68
+ tenantId: envVars.PUBLIC_TENANTID || defaults.tenantId,
69
+ goBackendPath: envVars.PRIVATE_GO_BACKEND_PATH || defaults.goBackendPath,
70
+ enableMultiTenant:
71
+ envVars.ENABLE_MULTI_TENANT === 'true' || defaults.enableMultiTenant,
72
+ };
73
+ } catch (error) {
74
+ console.log(
75
+ kleur.yellow('⚠️ Found .env file but could not parse it, using defaults')
76
+ );
77
+ return defaults;
78
+ }
79
+ }
80
+
31
81
  async function main() {
32
82
  // ASCII art
33
83
  console.log(
@@ -89,13 +139,25 @@ ${kleur.bold('Examples:')}
89
139
  process.exit(1);
90
140
  }
91
141
 
92
- // Prompt for configuration
142
+ // Parse existing .env values
143
+ const envDefaults = parseExistingEnv();
144
+ const hasExistingEnv = existsSync('.env');
145
+
146
+ if (hasExistingEnv) {
147
+ console.log(
148
+ kleur.yellow(
149
+ '📁 Found existing .env file, using current values as defaults\n'
150
+ )
151
+ );
152
+ }
153
+
154
+ // Prompt for configuration with existing values as defaults
93
155
  const responses = await prompts([
94
156
  {
95
157
  type: 'text',
96
158
  name: 'goBackend',
97
159
  message: 'TractStack Go backend URL:',
98
- initial: 'http://localhost:8080',
160
+ initial: envDefaults.goBackend,
99
161
  validate: (value) => {
100
162
  try {
101
163
  new URL(value);
@@ -106,22 +168,27 @@ ${kleur.bold('Examples:')}
106
168
  },
107
169
  },
108
170
  {
109
- type: 'text',
171
+ type: 'confirm',
172
+ name: 'enableMultiTenant',
173
+ message: 'Enable multi-tenant functionality?',
174
+ initial: enableMultiTenant || envDefaults.enableMultiTenant,
175
+ },
176
+ {
177
+ type: (prev, values) => (values.enableMultiTenant ? 'text' : null),
110
178
  name: 'tenantId',
111
179
  message: 'Tenant ID:',
112
- initial: 'default',
180
+ initial: envDefaults.tenantId,
113
181
  validate: (value) => value.length > 0 || 'Tenant ID is required',
114
182
  },
115
183
  {
116
184
  type: 'text',
117
185
  name: 'goBackendPath',
118
186
  message: 'TractStack Go backend path:',
119
- initial: `${homedir()}/t8k-go-server/`,
187
+ initial: envDefaults.goBackendPath,
120
188
  validate: (value) => {
121
189
  if (!value || value.trim().length === 0) {
122
190
  return 'Backend path is required';
123
191
  }
124
- // Ensure it ends with trailing slash for consistency
125
192
  return true;
126
193
  },
127
194
  },
@@ -132,29 +199,38 @@ ${kleur.bold('Examples:')}
132
199
  'Include CodeHook examples? (custom components, collections route)',
133
200
  initial: includeExamples,
134
201
  },
135
- {
136
- type: 'confirm',
137
- name: 'enableMultiTenant',
138
- message: 'Enable multi-tenant functionality?',
139
- initial: enableMultiTenant,
140
- },
141
202
  ]);
142
203
 
143
- if (!responses.goBackend || !responses.tenantId) {
204
+ if (!responses.goBackend) {
144
205
  console.log(kleur.red('\n❌ Setup cancelled.'));
145
206
  process.exit(1);
146
207
  }
147
208
 
209
+ // Use existing tenantId if multi-tenant is disabled
210
+ const finalTenantId = responses.enableMultiTenant
211
+ ? responses.tenantId
212
+ : envDefaults.tenantId;
213
+
214
+ if (!finalTenantId) {
215
+ console.log(kleur.red('\n❌ Setup cancelled - Tenant ID is required.'));
216
+ process.exit(1);
217
+ }
218
+
148
219
  // Create .env file
149
220
  const envContent = `# TractStack Configuration
150
221
  PUBLIC_GO_BACKEND="${responses.goBackend}"
151
- PUBLIC_TENANTID="${responses.tenantId}"
222
+ PUBLIC_TENANTID="${finalTenantId}"
152
223
  PRIVATE_GO_BACKEND_PATH="${responses.goBackendPath.endsWith('/') ? responses.goBackendPath : responses.goBackendPath + '/'}"
224
+ ${responses.enableMultiTenant ? 'ENABLE_MULTI_TENANT="true"' : ''}
153
225
  `;
154
226
 
155
227
  try {
156
228
  writeFileSync('.env', envContent);
157
- console.log(kleur.green('✅ Created .env file'));
229
+ if (hasExistingEnv) {
230
+ console.log(kleur.green('✅ Updated .env file with new configuration'));
231
+ } else {
232
+ console.log(kleur.green('✅ Created .env file'));
233
+ }
158
234
  } catch (error) {
159
235
  console.log(kleur.red('❌ Failed to create .env file:', error.message));
160
236
  process.exit(1);
package/dist/index.js CHANGED
@@ -1245,16 +1245,16 @@ async function w(t, e, c) {
1245
1245
  },
1246
1246
  // Client Scripts
1247
1247
  {
1248
- src: t("../templates/src/client/sse.ts"),
1249
- dest: "src/client/sse.ts"
1248
+ src: t("../templates/src/client/sse.js"),
1249
+ dest: "public/client/sse.js"
1250
1250
  },
1251
1251
  {
1252
- src: t("../templates/src/client/belief-events.ts"),
1253
- dest: "src/client/belief-events.ts"
1252
+ src: t("../templates/src/client/belief-events.js"),
1253
+ dest: "public/client/belief-events.js"
1254
1254
  },
1255
1255
  {
1256
- src: t("../templates/src/client/analytics-events.ts"),
1257
- dest: "src/client/analytics-events.ts"
1256
+ src: t("../templates/src/client/analytics-events.js"),
1257
+ dest: "public/client/analytics-events.js"
1258
1258
  },
1259
1259
  // StoryKeep Editor (add new section)
1260
1260
  {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "astro-tractstack",
3
- "version": "2.0.0-rc.0",
3
+ "version": "2.0.0-rc.2",
4
4
  "description": "Astro integration for TractStack - build adaptive websites with HTMX and Go",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -18,7 +18,7 @@
18
18
  "README.md"
19
19
  ],
20
20
  "bin": {
21
- "create-tractstack": "./bin/create-tractstack.js"
21
+ "create-tractstack": "bin/create-tractstack.js"
22
22
  },
23
23
  "scripts": {
24
24
  "build": "vite build && tsc -p tsconfig.dts.json",
@@ -37,7 +37,7 @@
37
37
  "license": "FSL-1.1-MIT",
38
38
  "repository": {
39
39
  "type": "git",
40
- "url": "https://github.com/AtRiskMedia/astro-tractstack.git"
40
+ "url": "git+https://github.com/AtRiskMedia/astro-tractstack.git"
41
41
  },
42
42
  "publishConfig": {
43
43
  "access": "public",
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes