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

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 (428) hide show
  1. package/LICENSE +0 -0
  2. package/README.md +227 -98
  3. package/astro.d.ts +0 -0
  4. package/bin/create-tractstack.js +103 -45
  5. package/dist/index.js +17 -1
  6. package/package.json +8 -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/og.png +0 -0
  97. package/templates/brand/oglogo.png +0 -0
  98. package/templates/brand/static.jpg +0 -0
  99. package/templates/brand/wordmark.svg +0 -0
  100. package/templates/css/custom.css +0 -0
  101. package/templates/css/frontend.css +1 -3519
  102. package/templates/css/storykeep.css +0 -0
  103. package/templates/custom/minimal/CodeHook.astro +3 -4
  104. package/templates/custom/minimal/CustomRoutes.astro +0 -6
  105. package/templates/custom/with-examples/CodeHook.astro +3 -4
  106. package/templates/custom/with-examples/CustomHero.astro +0 -0
  107. package/templates/custom/with-examples/CustomRoutes.astro +0 -4
  108. package/templates/custom/with-examples/pages/Collections.astro +0 -0
  109. package/templates/env.example +0 -0
  110. package/templates/fonts/Inter-Black.woff2 +0 -0
  111. package/templates/fonts/Inter-Bold.woff2 +0 -0
  112. package/templates/fonts/Inter-Regular.woff2 +0 -0
  113. package/templates/gitignore +42 -0
  114. package/templates/icons/h2.svg +0 -0
  115. package/templates/icons/h3.svg +0 -0
  116. package/templates/icons/h4.svg +0 -0
  117. package/templates/icons/h5.svg +0 -0
  118. package/templates/icons/image.svg +0 -0
  119. package/templates/icons/text.svg +0 -0
  120. package/templates/prettierignore +5 -0
  121. package/templates/prettierrc +19 -0
  122. package/templates/socials/codepen.svg +0 -0
  123. package/templates/socials/discord.svg +0 -0
  124. package/templates/socials/facebook.svg +0 -0
  125. package/templates/socials/github.svg +0 -0
  126. package/templates/socials/instagram.svg +0 -0
  127. package/templates/socials/linkedin.svg +0 -0
  128. package/templates/socials/mail.svg +0 -0
  129. package/templates/socials/rumble.svg +0 -0
  130. package/templates/socials/tiktok.svg +0 -0
  131. package/templates/socials/twitch.svg +0 -0
  132. package/templates/socials/twitter.svg +0 -0
  133. package/templates/socials/x.svg +0 -0
  134. package/templates/socials/youtube.svg +0 -0
  135. package/templates/src/components/Footer.astro +1 -1
  136. package/templates/src/components/Fragment.astro +0 -0
  137. package/templates/src/components/Header.astro +55 -52
  138. package/templates/src/components/Menu.tsx +0 -0
  139. package/templates/src/components/codehooks/BunnyVideoSetup.tsx +0 -0
  140. package/templates/src/components/codehooks/BunnyVideoWrapper.astro +0 -0
  141. package/templates/src/components/codehooks/EpinetDurationSelector.tsx +6 -3
  142. package/templates/src/components/codehooks/EpinetTableView.tsx +0 -0
  143. package/templates/src/components/codehooks/EpinetWrapper.tsx +0 -0
  144. package/templates/src/components/codehooks/FeaturedContent.astro +0 -0
  145. package/templates/src/components/codehooks/FeaturedContentSetup.tsx +0 -0
  146. package/templates/src/components/codehooks/ListContent.astro +0 -0
  147. package/templates/src/components/codehooks/ListContentSetup.tsx +0 -0
  148. package/templates/src/components/codehooks/SankeyDiagram.tsx +4 -3
  149. package/templates/src/components/compositor/Compositor.tsx +0 -0
  150. package/templates/src/components/compositor/Node.tsx +0 -0
  151. package/templates/src/components/compositor/NodeWithGuid.tsx +0 -0
  152. package/templates/src/components/compositor/PanelVisibilityWrapper.tsx +25 -11
  153. package/templates/src/components/compositor/elements/Belief.tsx +0 -0
  154. package/templates/src/components/compositor/elements/BgImage.tsx +0 -0
  155. package/templates/src/components/compositor/elements/BgVisualBreak.tsx +0 -0
  156. package/templates/src/components/compositor/elements/BunnyVideo.tsx +0 -0
  157. package/templates/src/components/compositor/elements/IdentifyAs.tsx +0 -0
  158. package/templates/src/components/compositor/elements/PlayButton.tsx +0 -0
  159. package/templates/src/components/compositor/elements/SignUp.tsx +0 -0
  160. package/templates/src/components/compositor/elements/Svg.tsx +0 -0
  161. package/templates/src/components/compositor/elements/ToggleBelief.tsx +0 -0
  162. package/templates/src/components/compositor/elements/YouTubeWrapper.tsx +0 -0
  163. package/templates/src/components/compositor/nodes/BgPaneWrapper.tsx +0 -0
  164. package/templates/src/components/compositor/nodes/GhostInsertBlock.tsx +0 -0
  165. package/templates/src/components/compositor/nodes/Markdown.tsx +0 -0
  166. package/templates/src/components/compositor/nodes/Pane.tsx +1 -1
  167. package/templates/src/components/compositor/nodes/Pane_eraser.tsx +0 -0
  168. package/templates/src/components/compositor/nodes/Pane_layout.tsx +0 -0
  169. package/templates/src/components/compositor/nodes/RenderChildren.tsx +0 -0
  170. package/templates/src/components/compositor/nodes/StoryFragment.tsx +0 -0
  171. package/templates/src/components/compositor/nodes/TagElement.tsx +0 -0
  172. package/templates/src/components/compositor/nodes/Widget.tsx +0 -0
  173. package/templates/src/components/compositor/nodes/tagElements/NodeA.tsx +0 -0
  174. package/templates/src/components/compositor/nodes/tagElements/NodeA_eraser.tsx +0 -0
  175. package/templates/src/components/compositor/nodes/tagElements/NodeAnchorComponent.tsx +0 -0
  176. package/templates/src/components/compositor/nodes/tagElements/NodeBasicTag.tsx +0 -0
  177. package/templates/src/components/compositor/nodes/tagElements/NodeBasicTag_eraser.tsx +0 -0
  178. package/templates/src/components/compositor/nodes/tagElements/NodeBasicTag_insert.tsx +0 -0
  179. package/templates/src/components/compositor/nodes/tagElements/NodeBasicTag_settings.tsx +0 -0
  180. package/templates/src/components/compositor/nodes/tagElements/NodeButton.tsx +0 -0
  181. package/templates/src/components/compositor/nodes/tagElements/NodeButton_eraser.tsx +0 -0
  182. package/templates/src/components/compositor/nodes/tagElements/NodeImg.tsx +0 -0
  183. package/templates/src/components/compositor/nodes/tagElements/NodeText.tsx +0 -0
  184. package/templates/src/components/compositor/nodes/tagElements/TabIndicator.tsx +0 -0
  185. package/templates/src/components/compositor/preview/FeaturedContentPreview.tsx +0 -0
  186. package/templates/src/components/compositor/preview/ListContentPreview.tsx +0 -0
  187. package/templates/src/components/compositor/preview/OgImagePreview.tsx +0 -0
  188. package/templates/src/components/compositor/preview/PaneSnapshotGenerator.tsx +0 -0
  189. package/templates/src/components/compositor/preview/PanesPreviewGenerator.tsx +0 -0
  190. package/templates/src/components/compositor/preview/VisualBreakPreview.tsx +0 -0
  191. package/templates/src/components/edit/Header.tsx +0 -0
  192. package/templates/src/components/edit/PanelSwitch.tsx +4 -8
  193. package/templates/src/components/edit/SettingsPanel.tsx +4 -1
  194. package/templates/src/components/edit/ToolBar.tsx +0 -0
  195. package/templates/src/components/edit/ToolMode.tsx +0 -0
  196. package/templates/src/components/edit/context/ContextPaneConfig.tsx +0 -0
  197. package/templates/src/components/edit/context/ContextPaneConfig_slug.tsx +0 -0
  198. package/templates/src/components/edit/context/ContextPaneConfig_title.tsx +0 -0
  199. package/templates/src/components/edit/pane/AddPanePanel.tsx +0 -0
  200. package/templates/src/components/edit/pane/AddPanePanel_break.tsx +0 -0
  201. package/templates/src/components/edit/pane/AddPanePanel_codehook.tsx +2 -1
  202. package/templates/src/components/edit/pane/AddPanePanel_new.tsx +1 -1
  203. package/templates/src/components/edit/pane/AddPanePanel_newAICopy.tsx +0 -0
  204. package/templates/src/components/edit/pane/AddPanePanel_newAICopy_modal.tsx +1 -1
  205. package/templates/src/components/edit/pane/AddPanePanel_newCopyMode.tsx +0 -0
  206. package/templates/src/components/edit/pane/AddPanePanel_newCustomCopy.tsx +0 -0
  207. package/templates/src/components/edit/pane/AddPanePanel_reuse.tsx +0 -0
  208. package/templates/src/components/edit/pane/ConfigPanePanel.tsx +1 -0
  209. package/templates/src/components/edit/pane/PageGen.tsx +0 -0
  210. package/templates/src/components/edit/pane/PageGenSelector.tsx +0 -0
  211. package/templates/src/components/edit/pane/PageGenSpecial.tsx +0 -0
  212. package/templates/src/components/edit/pane/PageGen_preview.tsx +0 -0
  213. package/templates/src/components/edit/pane/PanePanel_impression.tsx +0 -0
  214. package/templates/src/components/edit/pane/PanePanel_path.tsx +2 -2
  215. package/templates/src/components/edit/pane/PanePanel_slug.tsx +0 -0
  216. package/templates/src/components/edit/pane/PanePanel_title.tsx +0 -0
  217. package/templates/src/components/edit/panels/StyleBreakPanel.tsx +0 -0
  218. package/templates/src/components/edit/panels/StyleCodeHookPanel.tsx +0 -0
  219. package/templates/src/components/edit/panels/StyleElementPanel.tsx +0 -0
  220. package/templates/src/components/edit/panels/StyleElementPanel_add.tsx +1 -1
  221. package/templates/src/components/edit/panels/StyleElementPanel_remove.tsx +0 -0
  222. package/templates/src/components/edit/panels/StyleElementPanel_update.tsx +0 -0
  223. package/templates/src/components/edit/panels/StyleImagePanel.tsx +0 -0
  224. package/templates/src/components/edit/panels/StyleImagePanel_add.tsx +1 -1
  225. package/templates/src/components/edit/panels/StyleImagePanel_remove.tsx +0 -0
  226. package/templates/src/components/edit/panels/StyleImagePanel_update.tsx +0 -0
  227. package/templates/src/components/edit/panels/StyleLiElementPanel.tsx +0 -0
  228. package/templates/src/components/edit/panels/StyleLiElementPanel_add.tsx +1 -1
  229. package/templates/src/components/edit/panels/StyleLiElementPanel_remove.tsx +0 -0
  230. package/templates/src/components/edit/panels/StyleLiElementPanel_update.tsx +0 -0
  231. package/templates/src/components/edit/panels/StyleLinkPanel.tsx +0 -0
  232. package/templates/src/components/edit/panels/StyleLinkPanel_add.tsx +1 -1
  233. package/templates/src/components/edit/panels/StyleLinkPanel_config.tsx +1 -1
  234. package/templates/src/components/edit/panels/StyleLinkPanel_remove.tsx +0 -0
  235. package/templates/src/components/edit/panels/StyleLinkPanel_update.tsx +0 -0
  236. package/templates/src/components/edit/panels/StyleParentPanel.tsx +0 -0
  237. package/templates/src/components/edit/panels/StyleParentPanel_add.tsx +1 -1
  238. package/templates/src/components/edit/panels/StyleParentPanel_deleteLayer.tsx +0 -0
  239. package/templates/src/components/edit/panels/StyleParentPanel_remove.tsx +0 -0
  240. package/templates/src/components/edit/panels/StyleParentPanel_update.tsx +0 -0
  241. package/templates/src/components/edit/panels/StyleWidgetPanel.tsx +2 -0
  242. package/templates/src/components/edit/panels/StyleWidgetPanel_add.tsx +1 -1
  243. package/templates/src/components/edit/panels/StyleWidgetPanel_config.tsx +0 -0
  244. package/templates/src/components/edit/panels/StyleWidgetPanel_remove.tsx +0 -0
  245. package/templates/src/components/edit/panels/StyleWidgetPanel_update.tsx +0 -0
  246. package/templates/src/components/edit/state/SaveModal.tsx +43 -49
  247. package/templates/src/components/edit/state/StylesMemory.tsx +0 -0
  248. package/templates/src/components/edit/storyfragment/StoryFragmentConfigPanel.tsx +0 -0
  249. package/templates/src/components/edit/storyfragment/StoryFragmentPanel_menu.tsx +0 -0
  250. package/templates/src/components/edit/storyfragment/StoryFragmentPanel_og.tsx +0 -0
  251. package/templates/src/components/edit/storyfragment/StoryFragmentPanel_slug.tsx +0 -0
  252. package/templates/src/components/edit/storyfragment/StoryFragmentPanel_title.tsx +0 -0
  253. package/templates/src/components/edit/widgets/BeliefWidget.tsx +0 -0
  254. package/templates/src/components/edit/widgets/BunnyWidget.tsx +0 -0
  255. package/templates/src/components/edit/widgets/IdentifyAsWidget.tsx +0 -0
  256. package/templates/src/components/edit/widgets/SignupWidget.tsx +0 -0
  257. package/templates/src/components/edit/widgets/ToggleWidget.tsx +0 -0
  258. package/templates/src/components/edit/widgets/YouTubeWidget.tsx +0 -0
  259. package/templates/src/components/fields/ActionBuilderTimeSelector.tsx +0 -0
  260. package/templates/src/components/fields/ArtpackImage.tsx +0 -0
  261. package/templates/src/components/fields/BackgroundImage.tsx +0 -0
  262. package/templates/src/components/fields/BackgroundImageWrapper.tsx +1 -1
  263. package/templates/src/components/fields/BooleanParam.tsx +0 -0
  264. package/templates/src/components/fields/BunnyMomentSelector.tsx +0 -0
  265. package/templates/src/components/fields/ColorPickerCombo.tsx +0 -0
  266. package/templates/src/components/fields/ImageUpload.tsx +0 -0
  267. package/templates/src/components/fields/MultiParam.tsx +0 -0
  268. package/templates/src/components/fields/PaneBreakCollectionSelector.tsx +0 -0
  269. package/templates/src/components/fields/PaneBreakShapeSelector.tsx +0 -0
  270. package/templates/src/components/fields/SelectedTailwindClass.tsx +0 -0
  271. package/templates/src/components/fields/SingleParam.tsx +0 -0
  272. package/templates/src/components/fields/ViewportComboBox.tsx +10 -3
  273. package/templates/src/components/form/ActionBuilderField.tsx +0 -0
  274. package/templates/src/components/form/ActionBuilderSlugSelector.tsx +0 -0
  275. package/templates/src/components/form/BooleanToggle.tsx +0 -0
  276. package/templates/src/components/form/ColorPicker.tsx +0 -0
  277. package/templates/src/components/form/DateTimeInput.tsx +0 -0
  278. package/templates/src/components/form/EnumSelect.tsx +0 -0
  279. package/templates/src/components/form/FileUpload.tsx +0 -0
  280. package/templates/src/components/form/MagicPathBuilder.tsx +0 -0
  281. package/templates/src/components/form/NumberInput.tsx +0 -0
  282. package/templates/src/components/form/ParagraphArrayInput.tsx +0 -0
  283. package/templates/src/components/form/StringArrayInput.tsx +0 -0
  284. package/templates/src/components/form/StringInput.tsx +0 -0
  285. package/templates/src/components/form/UnsavedChangesBar.tsx +0 -0
  286. package/templates/src/components/form/advanced/APIConfigSection.tsx +0 -0
  287. package/templates/src/components/form/advanced/AuthConfigSection.tsx +0 -0
  288. package/templates/src/components/form/brand/BrandAssetsSection.tsx +0 -0
  289. package/templates/src/components/form/brand/BrandColorsSection.tsx +0 -0
  290. package/templates/src/components/form/brand/SEOSection.tsx +0 -0
  291. package/templates/src/components/form/brand/SiteConfigSection.tsx +0 -0
  292. package/templates/src/components/form/brand/SocialLinksSection.tsx +0 -0
  293. package/templates/src/components/profile/ProfileConsent.tsx +0 -0
  294. package/templates/src/components/profile/ProfileCreate.tsx +0 -0
  295. package/templates/src/components/profile/ProfileEdit.tsx +0 -0
  296. package/templates/src/components/profile/ProfileSwitch.tsx +0 -0
  297. package/templates/src/components/profile/ProfileUnlock.tsx +0 -0
  298. package/templates/src/components/storykeep/Dashboard.tsx +0 -0
  299. package/templates/src/components/storykeep/Dashboard_Activity.tsx +0 -0
  300. package/templates/src/components/storykeep/Dashboard_Advanced.tsx +1 -1
  301. package/templates/src/components/storykeep/Dashboard_Analytics.tsx +30 -7
  302. package/templates/src/components/storykeep/Dashboard_Branding.tsx +0 -0
  303. package/templates/src/components/storykeep/Dashboard_Content.tsx +6 -0
  304. package/templates/src/components/storykeep/controls/UsageCell.tsx +0 -0
  305. package/templates/src/components/storykeep/controls/content/BeliefForm.tsx +0 -0
  306. package/templates/src/components/storykeep/controls/content/BeliefTable.tsx +0 -0
  307. package/templates/src/components/storykeep/controls/content/ContentBrowser.tsx +0 -0
  308. package/templates/src/components/storykeep/controls/content/ContentSummary.tsx +0 -0
  309. package/templates/src/components/storykeep/controls/content/KnownResourceForm.tsx +0 -0
  310. package/templates/src/components/storykeep/controls/content/KnownResourceTable.tsx +0 -0
  311. package/templates/src/components/storykeep/controls/content/ManageContent.tsx +0 -0
  312. package/templates/src/components/storykeep/controls/content/MenuForm.tsx +0 -0
  313. package/templates/src/components/storykeep/controls/content/MenuTable.tsx +0 -0
  314. package/templates/src/components/storykeep/controls/content/ResourceBulkIngest.tsx +0 -0
  315. package/templates/src/components/storykeep/controls/content/ResourceForm.tsx +0 -0
  316. package/templates/src/components/storykeep/controls/content/ResourceTable.tsx +0 -0
  317. package/templates/src/components/storykeep/controls/content/StoryFragmentTable.tsx +0 -0
  318. package/templates/src/components/storykeep/state/BrandingWrapper.tsx +0 -0
  319. package/templates/src/components/storykeep/state/FetchAnalytics.tsx +0 -0
  320. package/templates/src/components/storykeep/widgets/ResponsiveLine.tsx +0 -0
  321. package/templates/src/components/storykeep/widgets/Wizard.tsx +13 -6
  322. package/templates/src/components/tenant/RegistrationForm.tsx +5 -3
  323. package/templates/src/components/widgets/BunnyVideoHero.astro +0 -0
  324. package/templates/src/components/widgets/Impression.tsx +0 -0
  325. package/templates/src/components/widgets/ImpressionWrapper.tsx +0 -0
  326. package/templates/src/constants/beliefs.ts +0 -0
  327. package/templates/src/constants/brandThemes.ts +0 -0
  328. package/templates/src/constants/prompts.json +0 -0
  329. package/templates/src/constants/shapes.ts +0 -0
  330. package/templates/src/constants/stopWords.ts +0 -0
  331. package/templates/src/constants/tailwindColors.json +0 -0
  332. package/templates/src/constants.ts +0 -0
  333. package/templates/src/hooks/useFormState.ts +0 -0
  334. package/templates/src/layouts/Layout.astro +120 -11
  335. package/templates/src/lib/session.ts +0 -0
  336. package/templates/src/lib/storyData.ts +2 -1
  337. package/templates/src/middleware.ts +0 -0
  338. package/templates/src/pages/404.astro +0 -0
  339. package/templates/src/pages/[...slug]/edit.astro +9 -3
  340. package/templates/src/pages/[...slug].astro +3 -1
  341. package/templates/src/pages/api/auth/decode.ts +0 -0
  342. package/templates/src/pages/api/auth/login.ts +0 -0
  343. package/templates/src/pages/api/auth/logout.ts +0 -0
  344. package/templates/src/pages/api/auth/profile.ts +0 -0
  345. package/templates/src/pages/api/orphan-analysis.ts +0 -0
  346. package/templates/src/pages/api/tailwind.ts +10 -1
  347. package/templates/src/pages/collections/[param1].astro +0 -0
  348. package/templates/src/pages/context/[...contextSlug]/edit.astro +8 -2
  349. package/templates/src/pages/context/[...contextSlug].astro +7 -2
  350. package/templates/src/pages/llms.txt.ts +0 -0
  351. package/templates/src/pages/maint.astro +0 -0
  352. package/templates/src/pages/media/[...slug].astro +0 -0
  353. package/templates/src/pages/robots.txt.ts +0 -0
  354. package/templates/src/pages/sandbox/activate.astro +0 -0
  355. package/templates/src/pages/sandbox/register.astro +0 -0
  356. package/templates/src/pages/sandbox/success.astro +0 -0
  357. package/templates/src/pages/sitemap.xml.ts +0 -0
  358. package/templates/src/pages/storykeep/advanced.astro +1 -1
  359. package/templates/src/pages/storykeep/branding.astro +1 -1
  360. package/templates/src/pages/storykeep/content.astro +1 -1
  361. package/templates/src/pages/storykeep/init.astro +40 -1
  362. package/templates/src/pages/storykeep/login.astro +0 -0
  363. package/templates/src/pages/storykeep/logout.astro +0 -0
  364. package/templates/src/pages/storykeep/profile.astro +0 -0
  365. package/templates/src/pages/storykeep.astro +1 -1
  366. package/templates/src/stores/analytics.ts +0 -0
  367. package/templates/src/stores/backend.ts +0 -0
  368. package/templates/src/stores/navigation.ts +0 -0
  369. package/templates/src/stores/nodes.ts +32 -1
  370. package/templates/src/stores/nodesHistory.ts +0 -0
  371. package/templates/src/stores/notificationSystem.ts +0 -0
  372. package/templates/src/stores/orphanAnalysis.ts +0 -0
  373. package/templates/src/stores/storykeep.ts +5 -0
  374. package/templates/src/types/astro.ts +0 -0
  375. package/templates/src/types/compositorTypes.ts +0 -0
  376. package/templates/src/types/formTypes.ts +0 -0
  377. package/templates/src/types/multiTenant.ts +0 -0
  378. package/templates/src/types/nodeProps.ts +0 -0
  379. package/templates/src/types/tractstack.ts +0 -0
  380. package/templates/src/utils/aai/getTitleSlug.ts +0 -0
  381. package/templates/src/utils/actions/actionButton.ts +0 -0
  382. package/templates/src/utils/actions/lispLexer.ts +0 -0
  383. package/templates/src/utils/actions/preParse_Action.ts +0 -0
  384. package/templates/src/utils/actions/preParse_Bunny.ts +0 -0
  385. package/templates/src/utils/actions/preParse_Clicked.ts +0 -0
  386. package/templates/src/utils/actions/preParse_Impression.ts +0 -0
  387. package/templates/src/utils/api/advancedConfig.ts +0 -0
  388. package/templates/src/utils/api/advancedHelpers.ts +0 -0
  389. package/templates/src/utils/api/beliefConfig.ts +0 -0
  390. package/templates/src/utils/api/beliefHelpers.ts +0 -0
  391. package/templates/src/utils/api/brandConfig.ts +0 -0
  392. package/templates/src/utils/api/brandHelpers.ts +0 -0
  393. package/templates/src/utils/api/fileHelpers.ts +0 -0
  394. package/templates/src/utils/api/menuConfig.ts +0 -0
  395. package/templates/src/utils/api/menuHelpers.ts +0 -0
  396. package/templates/src/utils/api/resourceConfig.ts +0 -0
  397. package/templates/src/utils/api/resourceHelpers.ts +0 -0
  398. package/templates/src/utils/api/tenantConfig.ts +0 -0
  399. package/templates/src/utils/api/tenantHelpers.ts +0 -0
  400. package/templates/src/utils/api.ts +0 -0
  401. package/templates/src/utils/auth.ts +0 -0
  402. package/templates/src/utils/backend.ts +0 -0
  403. package/templates/src/utils/compositor/TemplateMarkdowns.ts +0 -0
  404. package/templates/src/utils/compositor/TemplateNodes.ts +0 -0
  405. package/templates/src/utils/compositor/TemplatePanes.ts +0 -0
  406. package/templates/src/utils/compositor/allowInsert.ts +0 -0
  407. package/templates/src/utils/compositor/domHelpers.ts +0 -0
  408. package/templates/src/utils/compositor/handleClickEvent.ts +0 -0
  409. package/templates/src/utils/compositor/nodesHelper.ts +0 -0
  410. package/templates/src/utils/compositor/nodesMarkdownGenerator.ts +0 -0
  411. package/templates/src/utils/compositor/processMarkdown.ts +0 -0
  412. package/templates/src/utils/compositor/reduceNodesClassNames.ts +0 -0
  413. package/templates/src/utils/compositor/tailwindClasses.ts +0 -0
  414. package/templates/src/utils/compositor/tailwindColors.ts +0 -0
  415. package/templates/src/utils/compositor/templateMarkdownStyles.ts +8 -0
  416. package/templates/src/utils/compositor/typeGuards.ts +0 -0
  417. package/templates/src/utils/etl/extractor.ts +0 -0
  418. package/templates/src/utils/etl/index.ts +0 -0
  419. package/templates/src/utils/etl/loader.ts +0 -0
  420. package/templates/src/utils/etl/transformer.ts +0 -0
  421. package/templates/src/utils/helpers.ts +1 -0
  422. package/templates/src/utils/layout.ts +6 -6
  423. package/templates/src/utils/profileStorage.ts +0 -0
  424. package/templates/src/utils/useInterval.ts +0 -0
  425. package/templates/tailwind.config.cjs +0 -0
  426. package/utils/create-resolver.ts +0 -0
  427. package/utils/inject-files.ts +17 -1
  428. package/utils/validate-config.ts +0 -0
@@ -238,7 +238,7 @@ export default function StoryKeepDashboard_Analytics({
238
238
  )}
239
239
 
240
240
  {/* Stats Cards Grid */}
241
- <div className="mb-6 grid grid-cols-1 gap-4 md:grid-cols-3">
241
+ <div className="mb-6 grid grid-cols-3 gap-4">
242
242
  {stats.map((item) => {
243
243
  const period = item.period;
244
244
  let firstTimeValue = 0,
@@ -261,11 +261,11 @@ export default function StoryKeepDashboard_Analytics({
261
261
  return (
262
262
  <div
263
263
  key={item.period}
264
- className="rounded-lg border border-gray-100 bg-white px-4 py-3 shadow-sm transition-colors hover:border-cyan-100"
264
+ className="rounded-lg border border-gray-100 bg-white px-2 py-2.5 shadow-sm transition-colors hover:border-cyan-100 md:px-4 md:py-3"
265
265
  >
266
266
  <dt className="text-sm font-bold text-gray-800">{item.name}</dt>
267
267
 
268
- <dd className="mt-2">
268
+ <dd className="mt-1 md:mt-2">
269
269
  <div className="flex items-end justify-between">
270
270
  <div className="flex-1">
271
271
  <div className="text-sm text-gray-600">Events</div>
@@ -276,10 +276,11 @@ export default function StoryKeepDashboard_Analytics({
276
276
  </div>
277
277
  </dd>
278
278
 
279
- <hr className="my-3.5 border-gray-100" />
279
+ <hr className="my-1.5 border-gray-100 md:my-3.5" />
280
280
 
281
281
  <dd>
282
- <div className="flex items-end justify-between">
282
+ {/* Desktop: side-by-side layout */}
283
+ <div className="hidden items-end justify-between md:flex">
283
284
  <div className="flex-1">
284
285
  <div className="text-sm text-gray-600">
285
286
  Anonymous Visitors
@@ -299,13 +300,35 @@ export default function StoryKeepDashboard_Analytics({
299
300
  </div>
300
301
  </div>
301
302
  </div>
303
+
304
+ {/* Mobile: stacked layout */}
305
+ <div className="md:hidden">
306
+ <div className="mb-1.5">
307
+ <div className="text-sm text-gray-600">
308
+ Anonymous Visitors
309
+ </div>
310
+ <div className="text-2xl font-bold tracking-tight text-cyan-700">
311
+ {firstTimeValue === 0
312
+ ? '-'
313
+ : formatNumber(firstTimeValue)}
314
+ </div>
315
+ </div>
316
+ <div>
317
+ <div className="text-sm text-gray-600">Known Leads</div>
318
+ <div className="text-2xl font-bold tracking-tight text-cyan-700">
319
+ {returningValue === 0
320
+ ? '-'
321
+ : formatNumber(returningValue)}
322
+ </div>
323
+ </div>
324
+ </div>
302
325
  </dd>
303
326
  </div>
304
327
  );
305
328
  })}
306
329
 
307
330
  {/* Total Leads Card */}
308
- <div className="rounded-lg border border-gray-100 bg-white px-4 py-3 shadow-sm transition-colors hover:border-cyan-100 md:col-span-3">
331
+ <div className="col-span-3 rounded-lg border border-gray-100 bg-white px-4 py-3 shadow-sm transition-colors hover:border-cyan-100">
309
332
  <div className="flex items-center justify-between">
310
333
  <dt className="text-sm font-bold text-gray-800">Total Leads</dt>
311
334
  <div className="flex items-center gap-2">
@@ -369,7 +392,7 @@ export default function StoryKeepDashboard_Analytics({
369
392
  </div>
370
393
 
371
394
  {/* User Journey Section */}
372
- <div className="mb-6 overflow-hidden">
395
+ <div className="mb-6 overflow-visible">
373
396
  <h3 className="mb-4 text-lg font-bold text-gray-900">
374
397
  User Journey Analytics
375
398
  </h3>
@@ -64,6 +64,12 @@ const StoryKeepDashboard_Content = ({
64
64
  handleContentSubtabChange(tabId as any, setActiveContentTab);
65
65
  };
66
66
 
67
+ useEffect(() => {
68
+ if (createMenu) {
69
+ setActiveContentTab('manage');
70
+ }
71
+ }, [createMenu]);
72
+
67
73
  // Lightweight content summary fetch with retry logic
68
74
  useEffect(() => {
69
75
  let retryCount = 0;
@@ -1,12 +1,13 @@
1
1
  import { useState, useEffect } from 'react';
2
2
  import { useStore } from '@nanostores/react';
3
3
  import { skipWizard } from '@/stores/navigation';
4
+ import { fullContentMapStore } from '@/stores/analytics';
4
5
  import type { FullContentMapItem, BrandConfig } from '@/types/tractstack';
5
6
 
6
7
  interface StoryKeepWizardProps {
7
8
  fullContentMap: FullContentMapItem[];
8
9
  homeSlug: string;
9
- brandConfig: BrandConfig; // Now received as prop instead of fetched
10
+ brandConfig: BrandConfig;
10
11
  }
11
12
 
12
13
  interface WizardData {
@@ -50,7 +51,7 @@ const wizardSteps: WizardStep[] = [
50
51
  key: 'hasAnyMenu',
51
52
  message: "A menu helps visitors navigate. Let's create one now.",
52
53
  buttonText: 'Create a Menu',
53
- href: '/storykeep/content/menus/create',
54
+ href: '/storykeep/content?create-menu',
54
55
  },
55
56
  {
56
57
  key: 'hasMenu',
@@ -128,11 +129,18 @@ export default function Wizard({
128
129
  const [wizardData, setWizardData] = useState<WizardData | null>(null);
129
130
  const [loading, setLoading] = useState(true);
130
131
  const $skipWizard = useStore(skipWizard);
132
+ const $clientContentMap = useStore(fullContentMapStore);
133
+ const activeContentMap =
134
+ $clientContentMap?.data?.length > 0
135
+ ? $clientContentMap.data
136
+ : fullContentMap;
131
137
 
132
138
  useEffect(() => {
133
139
  const buildWizardData = async () => {
134
140
  try {
135
- const homePage = fullContentMap.find((item) => item.slug === homeSlug);
141
+ const homePage = activeContentMap.find(
142
+ (item) => item.slug === homeSlug
143
+ );
136
144
 
137
145
  let homeData = null;
138
146
  if (homePage) {
@@ -165,7 +173,7 @@ export default function Wizard({
165
173
  hasPanes: !!homePage?.panes?.length,
166
174
  hasSeo: !!homePage?.description,
167
175
  hasMenu: !!homeData?.menuId,
168
- hasAnyMenu: fullContentMap.some((item) => item.type === 'Menu'),
176
+ hasAnyMenu: activeContentMap.some((item) => item.type === 'Menu'),
169
177
  };
170
178
 
171
179
  setWizardData(data);
@@ -176,11 +184,10 @@ export default function Wizard({
176
184
  }
177
185
  };
178
186
 
179
- // Only build wizard data if we have brandConfig
180
187
  if (brandConfig) {
181
188
  buildWizardData();
182
189
  }
183
- }, [fullContentMap, homeSlug, brandConfig]); // Added brandConfig to dependencies
190
+ }, [activeContentMap, homeSlug, brandConfig]);
184
191
 
185
192
  if (loading || !wizardData || !brandConfig || $skipWizard) {
186
193
  return null;
@@ -175,7 +175,7 @@ export default function RegistrationForm({
175
175
 
176
176
  return (
177
177
  <>
178
- <div className="mx-auto max-w-2xl p-6">
178
+ <div className="mx-auto max-w-2xl p-6" style={{ paddingBottom: '112px' }}>
179
179
  <div className="rounded-lg bg-white p-8 shadow-lg">
180
180
  <div className="mb-8">
181
181
  <div className="h-16">
@@ -291,11 +291,13 @@ export default function RegistrationForm({
291
291
  value={state.email}
292
292
  onChange={(value) => updateField('email', value)}
293
293
  type="email"
294
- placeholder="john@example.com"
294
+ placeholder="susie@amazing.com"
295
295
  error={errors.email}
296
296
  />
297
297
  <p className="mt-1 text-sm text-gray-500">
298
- You'll receive an activation email at this address
298
+ {isInitMode
299
+ ? `Used for password reset, etc.`
300
+ : `You'll receive an activation email at this address`}
299
301
  </p>
300
302
  </div>
301
303
 
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
@@ -50,22 +50,33 @@ const isDev = import.meta.env.DEV;
50
50
  // Get site status from the store
51
51
  const isInitialized = !freshInstallStore.get().needsSetup;
52
52
 
53
- // Conditionally set asset paths based on initialization status
54
- const cssBasePath = isInitialized ? '/media/css' : '/styles';
55
- const fontBasePath = isInitialized ? '/media/fonts' : '/fonts';
56
- const mainStylesUrl =
57
- isStoryKeep || isDev
58
- ? `${cssBasePath}/storykeep.css`
59
- : `${cssBasePath}/frontend.css`;
53
+ // ensure we have brand config!
60
54
  const goBackend = import.meta.env.PUBLIC_GO_BACKEND || 'http://localhost:8080';
61
55
  const tenantId =
62
56
  Astro.locals.tenant?.id || import.meta.env.PUBLIC_TENANTID || 'default';
57
+ const brandConfig = propBrandConfig || (await getBrandConfig(tenantId));
58
+
59
+ // Conditionally set asset paths based on initialization status
60
+ const cssBasePath = isInitialized ? '/media/css' : '/styles';
61
+ const fontBasePath = isInitialized ? '/media/fonts' : '/fonts';
62
+ const mainStylesUrl = (() => {
63
+ const baseUrl =
64
+ isStoryKeep || isDev
65
+ ? `${cssBasePath}/storykeep.css`
66
+ : `${cssBasePath}/frontend.css`;
67
+
68
+ // Only add version for frontend.css (the dynamic one)
69
+ if (!isStoryKeep && !isDev && brandConfig?.STYLES_VER) {
70
+ return `${baseUrl}?v=${brandConfig.STYLES_VER}`;
71
+ }
72
+
73
+ return baseUrl;
74
+ })();
63
75
 
64
76
  // Social media and SEO setup
65
- const brandConfig = propBrandConfig || (await getBrandConfig(tenantId));
66
- const defaultFavIcon = brandConfig.FAVICON || `/favicon.ico`;
67
- const defaultSocialImageURL = ogImage || brandConfig.OG || `/og.png`;
68
- const defaultSocialLogoURL = brandConfig.OGLOGO || `/oglogo.png`;
77
+ const defaultFavIcon = brandConfig.FAVICON || `/brand/favicon.ico`;
78
+ const defaultSocialImageURL = ogImage || brandConfig.OG || `/brand/og.png`;
79
+ const defaultSocialLogoURL = brandConfig.OGLOGO || `/brand/oglogo.png`;
69
80
  const defaultSocialTitle =
70
81
  typeof title === `string` && title
71
82
  ? title
@@ -264,8 +275,10 @@ const fullCanonicalUrl = brandConfig?.SITE_URL
264
275
  <div
265
276
  id="loading-indicator"
266
277
  class="bg-myorange fixed left-0 top-0 z-50 h-1 w-full scale-x-0 transform transition-transform duration-300 ease-out"
278
+ style="opacity: 0.5; filter: blur(0.5px);"
267
279
  >
268
280
  </div>
281
+
269
282
  <div id="content" class="transition-opacity duration-300">
270
283
  <slot />
271
284
  </div>
@@ -286,5 +299,101 @@ const fullCanonicalUrl = brandConfig?.SITE_URL
286
299
  import '/client/belief-events.js';
287
300
  import '/client/analytics-events.js';
288
301
  </script>
302
+
303
+ <script is:inline is:persist>
304
+ // Navigation loading animation - exact copy of helpers.ts implementation
305
+ let navProgressInterval = null;
306
+ let navSafetyTimeout = null;
307
+
308
+ function startNavLoadingAnimation() {
309
+ const loadingIndicator = document.getElementById('loading-indicator');
310
+
311
+ if (
312
+ window.matchMedia('(prefers-reduced-motion: no-preference)')
313
+ .matches &&
314
+ loadingIndicator
315
+ ) {
316
+ // Clear any existing safety timeout
317
+ if (navSafetyTimeout !== null) {
318
+ clearTimeout(navSafetyTimeout);
319
+ navSafetyTimeout = null;
320
+ }
321
+
322
+ loadingIndicator.style.transform = 'scaleX(0)';
323
+ loadingIndicator.style.display = 'block';
324
+
325
+ let progress = 0;
326
+ navProgressInterval = setInterval(() => {
327
+ progress += 2;
328
+ if (progress > 90) {
329
+ if (navProgressInterval !== null) {
330
+ clearInterval(navProgressInterval);
331
+ }
332
+ return;
333
+ }
334
+ loadingIndicator.style.transform = `scaleX(${progress / 100})`;
335
+ }, 20);
336
+
337
+ // AUTOMATIC SHUTOFF: Always stop after 10 seconds
338
+ navSafetyTimeout = setTimeout(() => {
339
+ stopNavLoadingAnimation();
340
+ }, 10000);
341
+ }
342
+ }
343
+
344
+ function stopNavLoadingAnimation() {
345
+ const loadingIndicator = document.getElementById('loading-indicator');
346
+ const content = document.getElementById('content');
347
+
348
+ // Clear safety timeout
349
+ if (navSafetyTimeout !== null) {
350
+ clearTimeout(navSafetyTimeout);
351
+ navSafetyTimeout = null;
352
+ }
353
+
354
+ if (
355
+ window.matchMedia('(prefers-reduced-motion: no-preference)')
356
+ .matches &&
357
+ loadingIndicator
358
+ ) {
359
+ if (navProgressInterval !== null) {
360
+ clearInterval(navProgressInterval);
361
+ navProgressInterval = null;
362
+ }
363
+ loadingIndicator.style.transform = 'scaleX(1)';
364
+ content.style.opacity = '1';
365
+
366
+ setTimeout(() => {
367
+ loadingIndicator.style.display = 'none';
368
+ loadingIndicator.style.transform = 'scaleX(0)';
369
+ }, 300);
370
+ }
371
+ }
372
+
373
+ // Set up navigation loading
374
+ function setupNavigationLoading() {
375
+ document.addEventListener('astro:before-preparation', () => {
376
+ startNavLoadingAnimation();
377
+ });
378
+
379
+ document.addEventListener('astro:page-load', () => {
380
+ stopNavLoadingAnimation();
381
+ });
382
+
383
+ document.addEventListener('astro:after-swap', () => {
384
+ stopNavLoadingAnimation();
385
+ });
386
+ }
387
+
388
+ // Initialize
389
+ if (document.readyState === 'loading') {
390
+ document.addEventListener('DOMContentLoaded', setupNavigationLoading);
391
+ } else {
392
+ setupNavigationLoading();
393
+ }
394
+
395
+ // Re-setup after navigation
396
+ document.addEventListener('astro:page-load', setupNavigationLoading);
397
+ </script>
289
398
  </body>
290
399
  </html>
File without changes
@@ -1,5 +1,5 @@
1
1
  import { handleFailedResponse } from '@/utils/backend';
2
- import type { ImpressionNode } from '@/types/compositorTypes';
2
+ import type { ImpressionNode, ResourceNode } from '@/types/compositorTypes';
3
3
 
4
4
  export interface StoryData {
5
5
  id: string;
@@ -7,6 +7,7 @@ export interface StoryData {
7
7
  slug: string;
8
8
  paneIds: string[];
9
9
  codeHookTargets: Record<string, string>;
10
+ resourcesPayload: Record<string, ResourceNode[]>;
10
11
  impressions: ImpressionNode[];
11
12
  fragments: Record<string, string>;
12
13
  menu: any;
File without changes
File without changes
@@ -168,7 +168,13 @@ for (const [key, value] of Astro.url.searchParams) {
168
168
  <StoryKeepToolMode isContext={false} client:only="react" />
169
169
 
170
170
  <!-- Main Content Area -->
171
- <main id="mainContent" class="relative flex-1">
171
+ <main
172
+ id="mainContent"
173
+ class="relative flex-1"
174
+ style={{
175
+ paddingBottom: 'var(--bottom-right-controls-bottom-offset, 16px)',
176
+ }}
177
+ >
172
178
  <div class="bg-myblue/20 bg-mylightgrey h-full p-1.5">
173
179
  <div
174
180
  class="h-fit min-h-screen"
@@ -195,7 +201,7 @@ for (const [key, value] of Astro.url.searchParams) {
195
201
  <!-- Floating Controls (Settings Panel & HUD OR ToolBar) -->
196
202
  <aside
197
203
  id="settingsControls"
198
- class="z-101 pointer-events-none fixed bottom-24 right-0 flex max-h-screen flex-col items-end gap-2 overflow-y-auto p-4 md:bottom-0"
204
+ class="z-101 pointer-events-none fixed bottom-24 right-0 flex max-h-screen flex-col items-end gap-2 overflow-visible p-4 md:bottom-0"
199
205
  >
200
206
  <div class="pointer-events-auto">
201
207
  <StoryKeepToolBar client:only="react" />
@@ -203,7 +209,7 @@ for (const [key, value] of Astro.url.searchParams) {
203
209
  <div class="pointer-events-auto">
204
210
  <SettingsPanel
205
211
  config={brandConfig}
206
- availableCodeHooks={['featured-content', 'list-content', 'bunny-video']}
212
+ availableCodeHooks={Object.keys(codeHookComponents)}
207
213
  client:only="react"
208
214
  />
209
215
  </div>
@@ -43,6 +43,7 @@ const storyfragmentId = storyData.id;
43
43
  const storyfragmentTitle = storyData.title || 'Untitled Story';
44
44
  const paneIds = storyData.paneIds || [];
45
45
  const codeHookTargets = storyData.codeHookTargets || {};
46
+ const resourcesPayload = storyData.resourcesPayload || {};
46
47
 
47
48
  if (paneIds.length === 0) {
48
49
  console.log(`Empty Story Fragment. Redirecting to /storykeep`);
@@ -116,7 +117,7 @@ if (!brandConfig.SITE_INIT) {
116
117
  impressions={storyData.impressions || []}
117
118
  storyfragmentId={storyfragmentId}
118
119
  >
119
- <main id="main-content" class="min-h-screen w-full">
120
+ <main id="main-content" class="w-full">
120
121
  <div class="panes-container">
121
122
  {
122
123
  paneIds.map((paneId: string) => (
@@ -134,6 +135,7 @@ if (!brandConfig.SITE_INIT) {
134
135
  target={codeHookTargets[paneId]}
135
136
  paneId={paneId}
136
137
  fullContentMap={fullContentMap}
138
+ resourcesPayload={resourcesPayload}
137
139
  noPaneId={true}
138
140
  />
139
141
  </div>
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -65,7 +65,16 @@ export const POST: APIRoute = async ({ request }) => {
65
65
 
66
66
  // Generate CSS using JIT
67
67
  const tailwindCss = createTailwindcss({ tailwindConfig });
68
- const htmlContent = [`<span class="${allClasses.join(' ')}"></span>`];
68
+ const baseClasses = allClasses.filter(
69
+ (c) => !c.startsWith('md:') && !c.startsWith('xl:')
70
+ );
71
+ const mdClasses = allClasses.filter((c) => c.startsWith('md:'));
72
+ const xlClasses = allClasses.filter((c) => c.startsWith('xl:'));
73
+ const htmlContent = [
74
+ `<div class="${baseClasses.join(' ')}"></div>`,
75
+ `<div class="md:block ${mdClasses.join(' ')}"></div>`,
76
+ `<div class="xl:block ${xlClasses.join(' ')}"></div>`,
77
+ ];
69
78
  const generatedCss = await tailwindCss.generateStylesFromContent(
70
79
  `@tailwind base; @tailwind utilities;`,
71
80
  htmlContent
File without changes
@@ -159,7 +159,13 @@ for (const [key, value] of Astro.url.searchParams) {
159
159
  <StoryKeepToolMode isContext={true} client:only="react" />
160
160
 
161
161
  <!-- Main Content Area -->
162
- <main id="mainContent" class="relative flex-1">
162
+ <main
163
+ id="mainContent"
164
+ class="relative flex-1"
165
+ style={{
166
+ paddingBottom: 'var(--bottom-right-controls-bottom-offset, 16px)',
167
+ }}
168
+ >
163
169
  <div class="bg-myblue/20 bg-mylightgrey h-full p-1.5">
164
170
  <div
165
171
  class="h-fit min-h-screen"
@@ -194,7 +200,7 @@ for (const [key, value] of Astro.url.searchParams) {
194
200
  <div class="pointer-events-auto">
195
201
  <SettingsPanel
196
202
  config={brandConfig}
197
- availableCodeHooks={['featured-content', 'list-content', 'bunny-video']}
203
+ availableCodeHooks={Object.keys(codeHookComponents)}
198
204
  client:only="react"
199
205
  />
200
206
  </div>
@@ -59,6 +59,7 @@ try {
59
59
  const paneId = contextPaneData.id;
60
60
  const paneTitle = contextPaneData.title || 'Context';
61
61
  const codeHookTarget = contextPaneData.codeHookTarget || null;
62
+ const resourcesPayload = storyData.resourcesPayload || {};
62
63
 
63
64
  // Get rendered fragment for the context pane
64
65
  let fragmentData = '';
@@ -112,7 +113,7 @@ if (!brandConfig.SITE_INIT) {
112
113
  brandConfig={brandConfig}
113
114
  storyfragmentId={paneId}
114
115
  >
115
- <main id="main-content" class="min-h-screen w-full">
116
+ <main id="main-content" class="w-full">
116
117
  <div
117
118
  id={`pane-${paneId}`}
118
119
  data-pane-id={paneId}
@@ -123,7 +124,11 @@ if (!brandConfig.SITE_INIT) {
123
124
  >
124
125
  {
125
126
  codeHookTarget ? (
126
- <CodeHook target={codeHookTarget} fullContentMap={fullContentMap} />
127
+ <CodeHook
128
+ target={codeHookTarget}
129
+ resourcesPayload={resourcesPayload}
130
+ fullContentMap={fullContentMap}
131
+ />
127
132
  ) : (
128
133
  <Fragment set:html={fragmentData} />
129
134
  )
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -54,7 +54,7 @@ try {
54
54
 
55
55
  <Layout title={title} slug="storykeep" isStoryKeep={true}>
56
56
  <main id="main-content" class="min-h-screen w-full">
57
- <div class="p-8">
57
+ <div class="max-w-5xl p-3.5 md:p-8">
58
58
  <StoryKeepDashboard
59
59
  client:only="react"
60
60
  fullContentMap={fullContentMap}
@@ -43,7 +43,7 @@ try {
43
43
 
44
44
  <Layout title={title} slug="storykeep" isStoryKeep={true}>
45
45
  <main id="main-content" class="min-h-screen w-full">
46
- <div class="p-8">
46
+ <div class="max-w-5xl p-3.5 md:p-8">
47
47
  <BrandingPageWrapper
48
48
  client:only="react"
49
49
  fullContentMap={fullContentMap}
@@ -50,7 +50,7 @@ try {
50
50
 
51
51
  <Layout title={title} slug="storykeep" isStoryKeep={true}>
52
52
  <main id="main-content" class="min-h-screen w-full">
53
- <div class="p-8">
53
+ <div class="max-w-5xl p-3.5 md:p-8">
54
54
  <StoryKeepDashboard
55
55
  client:only="react"
56
56
  fullContentMap={fullContentMap}