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.
- package/LICENSE +0 -0
- package/README.md +227 -98
- package/astro.d.ts +0 -0
- package/bin/create-tractstack.js +103 -45
- package/dist/index.js +17 -1
- package/package.json +8 -3
- package/templates/artpacks/kCz/captainBreakfast_1080px.webp +0 -0
- package/templates/artpacks/kCz/captainBreakfast_1920px.webp +0 -0
- package/templates/artpacks/kCz/captainBreakfast_600px.webp +0 -0
- package/templates/artpacks/kCz/cleanDrips_1080px.webp +0 -0
- package/templates/artpacks/kCz/cleanDrips_1920px.webp +0 -0
- package/templates/artpacks/kCz/cleanDrips_600px.webp +0 -0
- package/templates/artpacks/kCz/crispwaves_1080px.webp +0 -0
- package/templates/artpacks/kCz/crispwaves_1920px.webp +0 -0
- package/templates/artpacks/kCz/crispwaves_600px.webp +0 -0
- package/templates/artpacks/kCz/dragonSkin_1080px.webp +0 -0
- package/templates/artpacks/kCz/dragonSkin_1920px.webp +0 -0
- package/templates/artpacks/kCz/dragonSkin_600px.webp +0 -0
- package/templates/artpacks/kCz/dragon_1080px.webp +0 -0
- package/templates/artpacks/kCz/dragon_1920px.webp +0 -0
- package/templates/artpacks/kCz/dragon_600px.webp +0 -0
- package/templates/artpacks/kCz/nightcity_1080px.webp +0 -0
- package/templates/artpacks/kCz/nightcity_1920px.webp +0 -0
- package/templates/artpacks/kCz/nightcity_600px.webp +0 -0
- package/templates/artpacks/kCz/pattern1_1080px.webp +0 -0
- package/templates/artpacks/kCz/pattern1_1920px.webp +0 -0
- package/templates/artpacks/kCz/pattern1_600px.webp +0 -0
- package/templates/artpacks/kCz/pattern2_1080px.webp +0 -0
- package/templates/artpacks/kCz/pattern2_1920px.webp +0 -0
- package/templates/artpacks/kCz/pattern2_600px.webp +0 -0
- package/templates/artpacks/kCz/skindrips_1080px.webp +0 -0
- package/templates/artpacks/kCz/skindrips_1920px.webp +0 -0
- package/templates/artpacks/kCz/skindrips_600px.webp +0 -0
- package/templates/artpacks/kCz/slimetime_1080px.webp +0 -0
- package/templates/artpacks/kCz/slimetime_1920px.webp +0 -0
- package/templates/artpacks/kCz/slimetime_600px.webp +0 -0
- package/templates/artpacks/kCz/snake_1080px.webp +0 -0
- package/templates/artpacks/kCz/snake_1920px.webp +0 -0
- package/templates/artpacks/kCz/snake_600px.webp +0 -0
- package/templates/artpacks/kCz/toxicshock_1080px.webp +0 -0
- package/templates/artpacks/kCz/toxicshock_1920px.webp +0 -0
- package/templates/artpacks/kCz/toxicshock_600px.webp +0 -0
- package/templates/artpacks/kCz/tractstack_1080px.webp +0 -0
- package/templates/artpacks/kCz/tractstack_1920px.webp +0 -0
- package/templates/artpacks/kCz/tractstack_600px.webp +0 -0
- package/templates/artpacks/kCz/tripdrips_1080px.webp +0 -0
- package/templates/artpacks/kCz/tripdrips_1920px.webp +0 -0
- package/templates/artpacks/kCz/tripdrips_600px.webp +0 -0
- package/templates/artpacks/kCz/wavedrips_1080px.webp +0 -0
- package/templates/artpacks/kCz/wavedrips_1920px.webp +0 -0
- package/templates/artpacks/kCz/wavedrips_600px.webp +0 -0
- package/templates/artpacks/t8k/beach_1080px.webp +0 -0
- package/templates/artpacks/t8k/beach_1920px.webp +0 -0
- package/templates/artpacks/t8k/beach_600px.webp +0 -0
- package/templates/artpacks/t8k/blast_1080px.webp +0 -0
- package/templates/artpacks/t8k/blast_1920px.webp +0 -0
- package/templates/artpacks/t8k/blast_600px.webp +0 -0
- package/templates/artpacks/t8k/bokeh_1080px.webp +0 -0
- package/templates/artpacks/t8k/bokeh_1920px.webp +0 -0
- package/templates/artpacks/t8k/bokeh_600px.webp +0 -0
- package/templates/artpacks/t8k/cartoon_1080px.webp +0 -0
- package/templates/artpacks/t8k/cartoon_1920px.webp +0 -0
- package/templates/artpacks/t8k/cartoon_600px.webp +0 -0
- package/templates/artpacks/t8k/darkeggshell_1080px.webp +0 -0
- package/templates/artpacks/t8k/darkeggshell_1920px.webp +0 -0
- package/templates/artpacks/t8k/darkeggshell_600px.webp +0 -0
- package/templates/artpacks/t8k/explosion_1080px.webp +0 -0
- package/templates/artpacks/t8k/explosion_1920px.webp +0 -0
- package/templates/artpacks/t8k/explosion_600px.webp +0 -0
- package/templates/artpacks/t8k/floral_1080px.webp +0 -0
- package/templates/artpacks/t8k/floral_1920px.webp +0 -0
- package/templates/artpacks/t8k/floral_600px.webp +0 -0
- package/templates/artpacks/t8k/flower_1080px.webp +0 -0
- package/templates/artpacks/t8k/flower_1920px.webp +0 -0
- package/templates/artpacks/t8k/flower_600px.webp +0 -0
- package/templates/artpacks/t8k/foliage_1080px.webp +0 -0
- package/templates/artpacks/t8k/foliage_1920px.webp +0 -0
- package/templates/artpacks/t8k/foliage_600px.webp +0 -0
- package/templates/artpacks/t8k/mist_1080px.webp +0 -0
- package/templates/artpacks/t8k/mist_1920px.webp +0 -0
- package/templates/artpacks/t8k/mist_600px.webp +0 -0
- package/templates/artpacks/t8k/portal_1080px.webp +0 -0
- package/templates/artpacks/t8k/portal_1920px.webp +0 -0
- package/templates/artpacks/t8k/portal_600px.webp +0 -0
- package/templates/artpacks/t8k/storytime_1080px.webp +0 -0
- package/templates/artpacks/t8k/storytime_1920px.webp +0 -0
- package/templates/artpacks/t8k/storytime_600px.webp +0 -0
- package/templates/artpacks/t8k/tacky_1080px.webp +0 -0
- package/templates/artpacks/t8k/tacky_1920px.webp +0 -0
- package/templates/artpacks/t8k/tacky_600px.webp +0 -0
- package/templates/artpacks/t8k/wallpaper_1080px.webp +0 -0
- package/templates/artpacks/t8k/wallpaper_1920px.webp +0 -0
- package/templates/artpacks/t8k/wallpaper_600px.webp +0 -0
- package/templates/brand/favicon.ico +0 -0
- package/templates/brand/logo.svg +0 -0
- package/templates/brand/og.png +0 -0
- package/templates/brand/oglogo.png +0 -0
- package/templates/brand/static.jpg +0 -0
- package/templates/brand/wordmark.svg +0 -0
- package/templates/css/custom.css +0 -0
- package/templates/css/frontend.css +1 -3519
- package/templates/css/storykeep.css +0 -0
- package/templates/custom/minimal/CodeHook.astro +3 -4
- package/templates/custom/minimal/CustomRoutes.astro +0 -6
- package/templates/custom/with-examples/CodeHook.astro +3 -4
- package/templates/custom/with-examples/CustomHero.astro +0 -0
- package/templates/custom/with-examples/CustomRoutes.astro +0 -4
- package/templates/custom/with-examples/pages/Collections.astro +0 -0
- package/templates/env.example +0 -0
- package/templates/fonts/Inter-Black.woff2 +0 -0
- package/templates/fonts/Inter-Bold.woff2 +0 -0
- package/templates/fonts/Inter-Regular.woff2 +0 -0
- package/templates/gitignore +42 -0
- package/templates/icons/h2.svg +0 -0
- package/templates/icons/h3.svg +0 -0
- package/templates/icons/h4.svg +0 -0
- package/templates/icons/h5.svg +0 -0
- package/templates/icons/image.svg +0 -0
- package/templates/icons/text.svg +0 -0
- package/templates/prettierignore +5 -0
- package/templates/prettierrc +19 -0
- package/templates/socials/codepen.svg +0 -0
- package/templates/socials/discord.svg +0 -0
- package/templates/socials/facebook.svg +0 -0
- package/templates/socials/github.svg +0 -0
- package/templates/socials/instagram.svg +0 -0
- package/templates/socials/linkedin.svg +0 -0
- package/templates/socials/mail.svg +0 -0
- package/templates/socials/rumble.svg +0 -0
- package/templates/socials/tiktok.svg +0 -0
- package/templates/socials/twitch.svg +0 -0
- package/templates/socials/twitter.svg +0 -0
- package/templates/socials/x.svg +0 -0
- package/templates/socials/youtube.svg +0 -0
- package/templates/src/components/Footer.astro +1 -1
- package/templates/src/components/Fragment.astro +0 -0
- package/templates/src/components/Header.astro +55 -52
- package/templates/src/components/Menu.tsx +0 -0
- package/templates/src/components/codehooks/BunnyVideoSetup.tsx +0 -0
- package/templates/src/components/codehooks/BunnyVideoWrapper.astro +0 -0
- package/templates/src/components/codehooks/EpinetDurationSelector.tsx +6 -3
- package/templates/src/components/codehooks/EpinetTableView.tsx +0 -0
- package/templates/src/components/codehooks/EpinetWrapper.tsx +0 -0
- package/templates/src/components/codehooks/FeaturedContent.astro +0 -0
- package/templates/src/components/codehooks/FeaturedContentSetup.tsx +0 -0
- package/templates/src/components/codehooks/ListContent.astro +0 -0
- package/templates/src/components/codehooks/ListContentSetup.tsx +0 -0
- package/templates/src/components/codehooks/SankeyDiagram.tsx +4 -3
- package/templates/src/components/compositor/Compositor.tsx +0 -0
- package/templates/src/components/compositor/Node.tsx +0 -0
- package/templates/src/components/compositor/NodeWithGuid.tsx +0 -0
- package/templates/src/components/compositor/PanelVisibilityWrapper.tsx +25 -11
- package/templates/src/components/compositor/elements/Belief.tsx +0 -0
- package/templates/src/components/compositor/elements/BgImage.tsx +0 -0
- package/templates/src/components/compositor/elements/BgVisualBreak.tsx +0 -0
- package/templates/src/components/compositor/elements/BunnyVideo.tsx +0 -0
- package/templates/src/components/compositor/elements/IdentifyAs.tsx +0 -0
- package/templates/src/components/compositor/elements/PlayButton.tsx +0 -0
- package/templates/src/components/compositor/elements/SignUp.tsx +0 -0
- package/templates/src/components/compositor/elements/Svg.tsx +0 -0
- package/templates/src/components/compositor/elements/ToggleBelief.tsx +0 -0
- package/templates/src/components/compositor/elements/YouTubeWrapper.tsx +0 -0
- package/templates/src/components/compositor/nodes/BgPaneWrapper.tsx +0 -0
- package/templates/src/components/compositor/nodes/GhostInsertBlock.tsx +0 -0
- package/templates/src/components/compositor/nodes/Markdown.tsx +0 -0
- package/templates/src/components/compositor/nodes/Pane.tsx +1 -1
- package/templates/src/components/compositor/nodes/Pane_eraser.tsx +0 -0
- package/templates/src/components/compositor/nodes/Pane_layout.tsx +0 -0
- package/templates/src/components/compositor/nodes/RenderChildren.tsx +0 -0
- package/templates/src/components/compositor/nodes/StoryFragment.tsx +0 -0
- package/templates/src/components/compositor/nodes/TagElement.tsx +0 -0
- package/templates/src/components/compositor/nodes/Widget.tsx +0 -0
- package/templates/src/components/compositor/nodes/tagElements/NodeA.tsx +0 -0
- package/templates/src/components/compositor/nodes/tagElements/NodeA_eraser.tsx +0 -0
- package/templates/src/components/compositor/nodes/tagElements/NodeAnchorComponent.tsx +0 -0
- package/templates/src/components/compositor/nodes/tagElements/NodeBasicTag.tsx +0 -0
- package/templates/src/components/compositor/nodes/tagElements/NodeBasicTag_eraser.tsx +0 -0
- package/templates/src/components/compositor/nodes/tagElements/NodeBasicTag_insert.tsx +0 -0
- package/templates/src/components/compositor/nodes/tagElements/NodeBasicTag_settings.tsx +0 -0
- package/templates/src/components/compositor/nodes/tagElements/NodeButton.tsx +0 -0
- package/templates/src/components/compositor/nodes/tagElements/NodeButton_eraser.tsx +0 -0
- package/templates/src/components/compositor/nodes/tagElements/NodeImg.tsx +0 -0
- package/templates/src/components/compositor/nodes/tagElements/NodeText.tsx +0 -0
- package/templates/src/components/compositor/nodes/tagElements/TabIndicator.tsx +0 -0
- package/templates/src/components/compositor/preview/FeaturedContentPreview.tsx +0 -0
- package/templates/src/components/compositor/preview/ListContentPreview.tsx +0 -0
- package/templates/src/components/compositor/preview/OgImagePreview.tsx +0 -0
- package/templates/src/components/compositor/preview/PaneSnapshotGenerator.tsx +0 -0
- package/templates/src/components/compositor/preview/PanesPreviewGenerator.tsx +0 -0
- package/templates/src/components/compositor/preview/VisualBreakPreview.tsx +0 -0
- package/templates/src/components/edit/Header.tsx +0 -0
- package/templates/src/components/edit/PanelSwitch.tsx +4 -8
- package/templates/src/components/edit/SettingsPanel.tsx +4 -1
- package/templates/src/components/edit/ToolBar.tsx +0 -0
- package/templates/src/components/edit/ToolMode.tsx +0 -0
- package/templates/src/components/edit/context/ContextPaneConfig.tsx +0 -0
- package/templates/src/components/edit/context/ContextPaneConfig_slug.tsx +0 -0
- package/templates/src/components/edit/context/ContextPaneConfig_title.tsx +0 -0
- package/templates/src/components/edit/pane/AddPanePanel.tsx +0 -0
- package/templates/src/components/edit/pane/AddPanePanel_break.tsx +0 -0
- package/templates/src/components/edit/pane/AddPanePanel_codehook.tsx +2 -1
- package/templates/src/components/edit/pane/AddPanePanel_new.tsx +1 -1
- package/templates/src/components/edit/pane/AddPanePanel_newAICopy.tsx +0 -0
- package/templates/src/components/edit/pane/AddPanePanel_newAICopy_modal.tsx +1 -1
- package/templates/src/components/edit/pane/AddPanePanel_newCopyMode.tsx +0 -0
- package/templates/src/components/edit/pane/AddPanePanel_newCustomCopy.tsx +0 -0
- package/templates/src/components/edit/pane/AddPanePanel_reuse.tsx +0 -0
- package/templates/src/components/edit/pane/ConfigPanePanel.tsx +1 -0
- package/templates/src/components/edit/pane/PageGen.tsx +0 -0
- package/templates/src/components/edit/pane/PageGenSelector.tsx +0 -0
- package/templates/src/components/edit/pane/PageGenSpecial.tsx +0 -0
- package/templates/src/components/edit/pane/PageGen_preview.tsx +0 -0
- package/templates/src/components/edit/pane/PanePanel_impression.tsx +0 -0
- package/templates/src/components/edit/pane/PanePanel_path.tsx +2 -2
- package/templates/src/components/edit/pane/PanePanel_slug.tsx +0 -0
- package/templates/src/components/edit/pane/PanePanel_title.tsx +0 -0
- package/templates/src/components/edit/panels/StyleBreakPanel.tsx +0 -0
- package/templates/src/components/edit/panels/StyleCodeHookPanel.tsx +0 -0
- package/templates/src/components/edit/panels/StyleElementPanel.tsx +0 -0
- package/templates/src/components/edit/panels/StyleElementPanel_add.tsx +1 -1
- package/templates/src/components/edit/panels/StyleElementPanel_remove.tsx +0 -0
- package/templates/src/components/edit/panels/StyleElementPanel_update.tsx +0 -0
- package/templates/src/components/edit/panels/StyleImagePanel.tsx +0 -0
- package/templates/src/components/edit/panels/StyleImagePanel_add.tsx +1 -1
- package/templates/src/components/edit/panels/StyleImagePanel_remove.tsx +0 -0
- package/templates/src/components/edit/panels/StyleImagePanel_update.tsx +0 -0
- package/templates/src/components/edit/panels/StyleLiElementPanel.tsx +0 -0
- package/templates/src/components/edit/panels/StyleLiElementPanel_add.tsx +1 -1
- package/templates/src/components/edit/panels/StyleLiElementPanel_remove.tsx +0 -0
- package/templates/src/components/edit/panels/StyleLiElementPanel_update.tsx +0 -0
- package/templates/src/components/edit/panels/StyleLinkPanel.tsx +0 -0
- package/templates/src/components/edit/panels/StyleLinkPanel_add.tsx +1 -1
- package/templates/src/components/edit/panels/StyleLinkPanel_config.tsx +1 -1
- package/templates/src/components/edit/panels/StyleLinkPanel_remove.tsx +0 -0
- package/templates/src/components/edit/panels/StyleLinkPanel_update.tsx +0 -0
- package/templates/src/components/edit/panels/StyleParentPanel.tsx +0 -0
- package/templates/src/components/edit/panels/StyleParentPanel_add.tsx +1 -1
- package/templates/src/components/edit/panels/StyleParentPanel_deleteLayer.tsx +0 -0
- package/templates/src/components/edit/panels/StyleParentPanel_remove.tsx +0 -0
- package/templates/src/components/edit/panels/StyleParentPanel_update.tsx +0 -0
- package/templates/src/components/edit/panels/StyleWidgetPanel.tsx +2 -0
- package/templates/src/components/edit/panels/StyleWidgetPanel_add.tsx +1 -1
- package/templates/src/components/edit/panels/StyleWidgetPanel_config.tsx +0 -0
- package/templates/src/components/edit/panels/StyleWidgetPanel_remove.tsx +0 -0
- package/templates/src/components/edit/panels/StyleWidgetPanel_update.tsx +0 -0
- package/templates/src/components/edit/state/SaveModal.tsx +43 -49
- package/templates/src/components/edit/state/StylesMemory.tsx +0 -0
- package/templates/src/components/edit/storyfragment/StoryFragmentConfigPanel.tsx +0 -0
- package/templates/src/components/edit/storyfragment/StoryFragmentPanel_menu.tsx +0 -0
- package/templates/src/components/edit/storyfragment/StoryFragmentPanel_og.tsx +0 -0
- package/templates/src/components/edit/storyfragment/StoryFragmentPanel_slug.tsx +0 -0
- package/templates/src/components/edit/storyfragment/StoryFragmentPanel_title.tsx +0 -0
- package/templates/src/components/edit/widgets/BeliefWidget.tsx +0 -0
- package/templates/src/components/edit/widgets/BunnyWidget.tsx +0 -0
- package/templates/src/components/edit/widgets/IdentifyAsWidget.tsx +0 -0
- package/templates/src/components/edit/widgets/SignupWidget.tsx +0 -0
- package/templates/src/components/edit/widgets/ToggleWidget.tsx +0 -0
- package/templates/src/components/edit/widgets/YouTubeWidget.tsx +0 -0
- package/templates/src/components/fields/ActionBuilderTimeSelector.tsx +0 -0
- package/templates/src/components/fields/ArtpackImage.tsx +0 -0
- package/templates/src/components/fields/BackgroundImage.tsx +0 -0
- package/templates/src/components/fields/BackgroundImageWrapper.tsx +1 -1
- package/templates/src/components/fields/BooleanParam.tsx +0 -0
- package/templates/src/components/fields/BunnyMomentSelector.tsx +0 -0
- package/templates/src/components/fields/ColorPickerCombo.tsx +0 -0
- package/templates/src/components/fields/ImageUpload.tsx +0 -0
- package/templates/src/components/fields/MultiParam.tsx +0 -0
- package/templates/src/components/fields/PaneBreakCollectionSelector.tsx +0 -0
- package/templates/src/components/fields/PaneBreakShapeSelector.tsx +0 -0
- package/templates/src/components/fields/SelectedTailwindClass.tsx +0 -0
- package/templates/src/components/fields/SingleParam.tsx +0 -0
- package/templates/src/components/fields/ViewportComboBox.tsx +10 -3
- package/templates/src/components/form/ActionBuilderField.tsx +0 -0
- package/templates/src/components/form/ActionBuilderSlugSelector.tsx +0 -0
- package/templates/src/components/form/BooleanToggle.tsx +0 -0
- package/templates/src/components/form/ColorPicker.tsx +0 -0
- package/templates/src/components/form/DateTimeInput.tsx +0 -0
- package/templates/src/components/form/EnumSelect.tsx +0 -0
- package/templates/src/components/form/FileUpload.tsx +0 -0
- package/templates/src/components/form/MagicPathBuilder.tsx +0 -0
- package/templates/src/components/form/NumberInput.tsx +0 -0
- package/templates/src/components/form/ParagraphArrayInput.tsx +0 -0
- package/templates/src/components/form/StringArrayInput.tsx +0 -0
- package/templates/src/components/form/StringInput.tsx +0 -0
- package/templates/src/components/form/UnsavedChangesBar.tsx +0 -0
- package/templates/src/components/form/advanced/APIConfigSection.tsx +0 -0
- package/templates/src/components/form/advanced/AuthConfigSection.tsx +0 -0
- package/templates/src/components/form/brand/BrandAssetsSection.tsx +0 -0
- package/templates/src/components/form/brand/BrandColorsSection.tsx +0 -0
- package/templates/src/components/form/brand/SEOSection.tsx +0 -0
- package/templates/src/components/form/brand/SiteConfigSection.tsx +0 -0
- package/templates/src/components/form/brand/SocialLinksSection.tsx +0 -0
- package/templates/src/components/profile/ProfileConsent.tsx +0 -0
- package/templates/src/components/profile/ProfileCreate.tsx +0 -0
- package/templates/src/components/profile/ProfileEdit.tsx +0 -0
- package/templates/src/components/profile/ProfileSwitch.tsx +0 -0
- package/templates/src/components/profile/ProfileUnlock.tsx +0 -0
- package/templates/src/components/storykeep/Dashboard.tsx +0 -0
- package/templates/src/components/storykeep/Dashboard_Activity.tsx +0 -0
- package/templates/src/components/storykeep/Dashboard_Advanced.tsx +1 -1
- package/templates/src/components/storykeep/Dashboard_Analytics.tsx +30 -7
- package/templates/src/components/storykeep/Dashboard_Branding.tsx +0 -0
- package/templates/src/components/storykeep/Dashboard_Content.tsx +6 -0
- package/templates/src/components/storykeep/controls/UsageCell.tsx +0 -0
- package/templates/src/components/storykeep/controls/content/BeliefForm.tsx +0 -0
- package/templates/src/components/storykeep/controls/content/BeliefTable.tsx +0 -0
- package/templates/src/components/storykeep/controls/content/ContentBrowser.tsx +0 -0
- package/templates/src/components/storykeep/controls/content/ContentSummary.tsx +0 -0
- package/templates/src/components/storykeep/controls/content/KnownResourceForm.tsx +0 -0
- package/templates/src/components/storykeep/controls/content/KnownResourceTable.tsx +0 -0
- package/templates/src/components/storykeep/controls/content/ManageContent.tsx +0 -0
- package/templates/src/components/storykeep/controls/content/MenuForm.tsx +0 -0
- package/templates/src/components/storykeep/controls/content/MenuTable.tsx +0 -0
- package/templates/src/components/storykeep/controls/content/ResourceBulkIngest.tsx +0 -0
- package/templates/src/components/storykeep/controls/content/ResourceForm.tsx +0 -0
- package/templates/src/components/storykeep/controls/content/ResourceTable.tsx +0 -0
- package/templates/src/components/storykeep/controls/content/StoryFragmentTable.tsx +0 -0
- package/templates/src/components/storykeep/state/BrandingWrapper.tsx +0 -0
- package/templates/src/components/storykeep/state/FetchAnalytics.tsx +0 -0
- package/templates/src/components/storykeep/widgets/ResponsiveLine.tsx +0 -0
- package/templates/src/components/storykeep/widgets/Wizard.tsx +13 -6
- package/templates/src/components/tenant/RegistrationForm.tsx +5 -3
- package/templates/src/components/widgets/BunnyVideoHero.astro +0 -0
- package/templates/src/components/widgets/Impression.tsx +0 -0
- package/templates/src/components/widgets/ImpressionWrapper.tsx +0 -0
- package/templates/src/constants/beliefs.ts +0 -0
- package/templates/src/constants/brandThemes.ts +0 -0
- package/templates/src/constants/prompts.json +0 -0
- package/templates/src/constants/shapes.ts +0 -0
- package/templates/src/constants/stopWords.ts +0 -0
- package/templates/src/constants/tailwindColors.json +0 -0
- package/templates/src/constants.ts +0 -0
- package/templates/src/hooks/useFormState.ts +0 -0
- package/templates/src/layouts/Layout.astro +120 -11
- package/templates/src/lib/session.ts +0 -0
- package/templates/src/lib/storyData.ts +2 -1
- package/templates/src/middleware.ts +0 -0
- package/templates/src/pages/404.astro +0 -0
- package/templates/src/pages/[...slug]/edit.astro +9 -3
- package/templates/src/pages/[...slug].astro +3 -1
- package/templates/src/pages/api/auth/decode.ts +0 -0
- package/templates/src/pages/api/auth/login.ts +0 -0
- package/templates/src/pages/api/auth/logout.ts +0 -0
- package/templates/src/pages/api/auth/profile.ts +0 -0
- package/templates/src/pages/api/orphan-analysis.ts +0 -0
- package/templates/src/pages/api/tailwind.ts +10 -1
- package/templates/src/pages/collections/[param1].astro +0 -0
- package/templates/src/pages/context/[...contextSlug]/edit.astro +8 -2
- package/templates/src/pages/context/[...contextSlug].astro +7 -2
- package/templates/src/pages/llms.txt.ts +0 -0
- package/templates/src/pages/maint.astro +0 -0
- package/templates/src/pages/media/[...slug].astro +0 -0
- package/templates/src/pages/robots.txt.ts +0 -0
- package/templates/src/pages/sandbox/activate.astro +0 -0
- package/templates/src/pages/sandbox/register.astro +0 -0
- package/templates/src/pages/sandbox/success.astro +0 -0
- package/templates/src/pages/sitemap.xml.ts +0 -0
- package/templates/src/pages/storykeep/advanced.astro +1 -1
- package/templates/src/pages/storykeep/branding.astro +1 -1
- package/templates/src/pages/storykeep/content.astro +1 -1
- package/templates/src/pages/storykeep/init.astro +40 -1
- package/templates/src/pages/storykeep/login.astro +0 -0
- package/templates/src/pages/storykeep/logout.astro +0 -0
- package/templates/src/pages/storykeep/profile.astro +0 -0
- package/templates/src/pages/storykeep.astro +1 -1
- package/templates/src/stores/analytics.ts +0 -0
- package/templates/src/stores/backend.ts +0 -0
- package/templates/src/stores/navigation.ts +0 -0
- package/templates/src/stores/nodes.ts +32 -1
- package/templates/src/stores/nodesHistory.ts +0 -0
- package/templates/src/stores/notificationSystem.ts +0 -0
- package/templates/src/stores/orphanAnalysis.ts +0 -0
- package/templates/src/stores/storykeep.ts +5 -0
- package/templates/src/types/astro.ts +0 -0
- package/templates/src/types/compositorTypes.ts +0 -0
- package/templates/src/types/formTypes.ts +0 -0
- package/templates/src/types/multiTenant.ts +0 -0
- package/templates/src/types/nodeProps.ts +0 -0
- package/templates/src/types/tractstack.ts +0 -0
- package/templates/src/utils/aai/getTitleSlug.ts +0 -0
- package/templates/src/utils/actions/actionButton.ts +0 -0
- package/templates/src/utils/actions/lispLexer.ts +0 -0
- package/templates/src/utils/actions/preParse_Action.ts +0 -0
- package/templates/src/utils/actions/preParse_Bunny.ts +0 -0
- package/templates/src/utils/actions/preParse_Clicked.ts +0 -0
- package/templates/src/utils/actions/preParse_Impression.ts +0 -0
- package/templates/src/utils/api/advancedConfig.ts +0 -0
- package/templates/src/utils/api/advancedHelpers.ts +0 -0
- package/templates/src/utils/api/beliefConfig.ts +0 -0
- package/templates/src/utils/api/beliefHelpers.ts +0 -0
- package/templates/src/utils/api/brandConfig.ts +0 -0
- package/templates/src/utils/api/brandHelpers.ts +0 -0
- package/templates/src/utils/api/fileHelpers.ts +0 -0
- package/templates/src/utils/api/menuConfig.ts +0 -0
- package/templates/src/utils/api/menuHelpers.ts +0 -0
- package/templates/src/utils/api/resourceConfig.ts +0 -0
- package/templates/src/utils/api/resourceHelpers.ts +0 -0
- package/templates/src/utils/api/tenantConfig.ts +0 -0
- package/templates/src/utils/api/tenantHelpers.ts +0 -0
- package/templates/src/utils/api.ts +0 -0
- package/templates/src/utils/auth.ts +0 -0
- package/templates/src/utils/backend.ts +0 -0
- package/templates/src/utils/compositor/TemplateMarkdowns.ts +0 -0
- package/templates/src/utils/compositor/TemplateNodes.ts +0 -0
- package/templates/src/utils/compositor/TemplatePanes.ts +0 -0
- package/templates/src/utils/compositor/allowInsert.ts +0 -0
- package/templates/src/utils/compositor/domHelpers.ts +0 -0
- package/templates/src/utils/compositor/handleClickEvent.ts +0 -0
- package/templates/src/utils/compositor/nodesHelper.ts +0 -0
- package/templates/src/utils/compositor/nodesMarkdownGenerator.ts +0 -0
- package/templates/src/utils/compositor/processMarkdown.ts +0 -0
- package/templates/src/utils/compositor/reduceNodesClassNames.ts +0 -0
- package/templates/src/utils/compositor/tailwindClasses.ts +0 -0
- package/templates/src/utils/compositor/tailwindColors.ts +0 -0
- package/templates/src/utils/compositor/templateMarkdownStyles.ts +8 -0
- package/templates/src/utils/compositor/typeGuards.ts +0 -0
- package/templates/src/utils/etl/extractor.ts +0 -0
- package/templates/src/utils/etl/index.ts +0 -0
- package/templates/src/utils/etl/loader.ts +0 -0
- package/templates/src/utils/etl/transformer.ts +0 -0
- package/templates/src/utils/helpers.ts +1 -0
- package/templates/src/utils/layout.ts +6 -6
- package/templates/src/utils/profileStorage.ts +0 -0
- package/templates/src/utils/useInterval.ts +0 -0
- package/templates/tailwind.config.cjs +0 -0
- package/utils/create-resolver.ts +0 -0
- package/utils/inject-files.ts +17 -1
- 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-
|
|
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-
|
|
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-
|
|
279
|
+
<hr className="my-1.5 border-gray-100 md:my-3.5" />
|
|
280
280
|
|
|
281
281
|
<dd>
|
|
282
|
-
|
|
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
|
|
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-
|
|
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>
|
|
File without changes
|
|
@@ -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;
|
|
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
|
|
@@ -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;
|
|
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
|
|
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 =
|
|
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:
|
|
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
|
-
}, [
|
|
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="
|
|
294
|
+
placeholder="susie@amazing.com"
|
|
295
295
|
error={errors.email}
|
|
296
296
|
/>
|
|
297
297
|
<p className="mt-1 text-sm text-gray-500">
|
|
298
|
-
|
|
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
|
|
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
|
-
//
|
|
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
|
|
66
|
-
const
|
|
67
|
-
const
|
|
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
|
|
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-
|
|
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={
|
|
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="
|
|
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
|
|
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
|
|
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={
|
|
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="
|
|
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
|
|
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}
|