astro-tractstack 2.0.0-rc.9 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +8 -97
- package/README.md +7 -5
- package/bin/create-tractstack.js +31 -8
- package/dist/index.js +106 -29
- package/package.json +10 -5
- package/templates/css/frontend.css +1 -1
- package/templates/custom/minimal/CodeHook.astro +13 -12
- package/templates/custom/minimal/CustomRoutes.astro +25 -31
- package/templates/custom/with-examples/CodeHook.astro +22 -11
- package/templates/custom/with-examples/CustomRoutes.astro +4 -8
- package/templates/custom/with-examples/ProductCard.astro +29 -0
- package/templates/custom/with-examples/ProductCardWrapper.astro +43 -0
- package/templates/custom/with-examples/ProductGrid.astro +64 -0
- package/templates/custom/with-examples/pages/Collections.astro +58 -98
- package/templates/gitignore +42 -0
- package/templates/prettierignore +5 -0
- package/templates/prettierrc +19 -0
- package/templates/src/client/app.js +127 -0
- package/templates/src/client/htmx.min.js +3519 -0
- package/templates/src/client/view.js +429 -0
- package/templates/src/components/Footer.astro +4 -9
- package/templates/src/components/Header.astro +67 -60
- package/templates/src/components/Menu.tsx +188 -52
- package/templates/src/components/codehooks/BunnyVideoSetup.tsx +2 -2
- package/templates/src/components/codehooks/EpinetDurationSelector.tsx +9 -13
- package/templates/src/components/codehooks/EpinetTableView.tsx +11 -7
- package/templates/src/components/codehooks/EpinetWrapper.tsx +1 -0
- package/templates/src/components/codehooks/FeaturedArticle.astro +105 -0
- package/templates/src/components/codehooks/FeaturedArticleSetup.tsx +318 -0
- package/templates/src/components/codehooks/ListContent.astro +32 -162
- package/templates/src/components/codehooks/ListContentSetup.tsx +43 -138
- package/templates/src/components/codehooks/ProductCardSetup.tsx +152 -0
- package/templates/src/components/codehooks/ProductGridSetup.tsx +274 -0
- package/templates/src/components/codehooks/SearchWidget.tsx +453 -0
- package/templates/src/components/compositor/Node.tsx +3 -6
- package/templates/src/components/compositor/PanelVisibilityWrapper.tsx +21 -11
- package/templates/src/components/compositor/elements/BunnyVideo.tsx +21 -20
- package/templates/src/components/compositor/nodes/Pane.tsx +51 -21
- package/templates/src/components/compositor/nodes/RenderChildren.tsx +6 -1
- package/templates/src/components/compositor/nodes/Widget.tsx +16 -2
- package/templates/src/components/compositor/preview/FeaturedArticlePreview.tsx +155 -0
- package/templates/src/components/compositor/preview/PaneSnapshotGenerator.tsx +20 -1
- package/templates/src/components/edit/Header.tsx +10 -4
- package/templates/src/components/edit/PanelSwitch.tsx +11 -7
- package/templates/src/components/edit/SettingsPanel.tsx +29 -18
- package/templates/src/components/edit/ToolBar.tsx +1 -28
- package/templates/src/components/edit/ToolMode.tsx +45 -32
- package/templates/src/components/edit/pane/AddPanePanel_break.tsx +12 -2
- package/templates/src/components/edit/pane/AddPanePanel_codehook.tsx +8 -2
- package/templates/src/components/edit/pane/AddPanePanel_newAICopy_modal.tsx +1 -1
- package/templates/src/components/edit/pane/ConfigPanePanel.tsx +17 -27
- package/templates/src/components/edit/pane/PageGenSelector.tsx +16 -16
- package/templates/src/components/edit/pane/PageGenSpecial.tsx +26 -49
- package/templates/src/components/edit/pane/PageGen_preview.tsx +17 -2
- package/templates/src/components/edit/pane/PanePanel_path.tsx +2 -4
- package/templates/src/components/edit/pane/PanePanel_title.tsx +243 -76
- package/templates/src/components/edit/panels/StyleBreakPanel.tsx +17 -19
- package/templates/src/components/edit/panels/StyleCodeHookPanel.tsx +48 -37
- package/templates/src/components/edit/panels/StyleElementPanel_add.tsx +60 -55
- package/templates/src/components/edit/panels/StyleImagePanel_add.tsx +56 -50
- package/templates/src/components/edit/panels/StyleLiElementPanel_add.tsx +54 -47
- package/templates/src/components/edit/panels/StyleLinkPanel_add.tsx +54 -44
- package/templates/src/components/edit/panels/StyleLinkPanel_config.tsx +113 -138
- package/templates/src/components/edit/panels/StyleParentPanel_add.tsx +54 -40
- package/templates/src/components/edit/panels/StyleWidgetPanel.tsx +3 -3
- package/templates/src/components/edit/panels/StyleWidgetPanel_add.tsx +56 -49
- package/templates/src/components/edit/panels/StyleWidgetPanel_config.tsx +14 -5
- package/templates/src/components/edit/state/SaveModal.tsx +316 -169
- package/templates/src/components/edit/storyfragment/StoryFragmentPanel_og.tsx +1 -1
- package/templates/src/components/edit/storyfragment/StoryFragmentPanel_slug.tsx +56 -55
- package/templates/src/components/edit/widgets/BunnyWidget.tsx +538 -59
- package/templates/src/components/edit/widgets/InteractiveDisclosureWidget.tsx +656 -0
- package/templates/src/components/edit/widgets/ToggleWidget.tsx +9 -16
- package/templates/src/components/fields/ArtpackImage.tsx +4 -1
- package/templates/src/components/fields/BackgroundImage.tsx +1 -1
- package/templates/src/components/fields/BackgroundImageWrapper.tsx +127 -35
- package/templates/src/components/fields/ColorPickerCombo.tsx +66 -62
- package/templates/src/components/fields/ImageUpload.tsx +1 -1
- package/templates/src/components/fields/ViewportComboBox.tsx +59 -42
- package/templates/src/components/form/ActionBuilderBeliefSelector.tsx +117 -0
- package/templates/src/components/form/ActionBuilderField.tsx +306 -87
- package/templates/src/components/search/SearchModal.tsx +420 -0
- package/templates/src/components/search/SearchResults.tsx +367 -0
- package/templates/src/components/search/SearchWrapper.tsx +46 -0
- package/templates/src/components/storykeep/Dashboard_Advanced.tsx +1 -1
- package/templates/src/components/storykeep/Dashboard_Analytics.tsx +34 -8
- package/templates/src/components/storykeep/Dashboard_Branding.tsx +1 -1
- package/templates/src/components/storykeep/Dashboard_Content.tsx +6 -0
- package/templates/src/components/storykeep/StoryKeepBackdrop.astro +87 -0
- package/templates/src/components/storykeep/controls/content/BeliefForm.tsx +38 -34
- package/templates/src/components/storykeep/controls/content/KnownResourceForm.tsx +1 -1
- package/templates/src/components/storykeep/controls/content/MenuForm.tsx +56 -8
- package/templates/src/components/storykeep/controls/content/ResourceForm.tsx +18 -3
- package/templates/src/components/storykeep/controls/content/StoryFragmentTable.tsx +5 -8
- package/templates/src/components/storykeep/state/FetchAnalytics.tsx +274 -228
- package/templates/src/components/storykeep/widgets/Wizard.tsx +14 -7
- package/templates/src/components/widgets/ImpressionWrapper.tsx +0 -1
- package/templates/src/constants/shapes.ts +9 -0
- package/templates/src/constants.ts +2121 -16
- package/templates/src/hooks/useSearch.ts +228 -0
- package/templates/src/layouts/Layout.astro +213 -104
- package/templates/src/lib/storyData.ts +4 -1
- package/templates/src/pages/[...slug]/edit.astro +14 -14
- package/templates/src/pages/[...slug].astro +82 -21
- package/templates/src/pages/api/orphan-analysis.ts +0 -1
- package/templates/src/pages/api/tailwind.ts +23 -21
- package/templates/src/pages/context/[...contextSlug]/edit.astro +14 -14
- package/templates/src/pages/context/[...contextSlug].astro +7 -2
- package/templates/src/pages/storykeep/advanced.astro +5 -4
- package/templates/src/pages/storykeep/branding.astro +5 -4
- package/templates/src/pages/storykeep/content.astro +5 -4
- package/templates/src/pages/storykeep/init.astro +40 -1
- package/templates/src/pages/storykeep/login.astro +1 -1
- package/templates/src/pages/storykeep.astro +5 -4
- package/templates/src/stores/nodes.ts +59 -88
- package/templates/src/stores/orphanAnalysis.ts +19 -21
- package/templates/src/stores/storykeep.ts +7 -0
- package/templates/src/types/compositorTypes.ts +6 -0
- package/templates/src/types/tractstack.ts +17 -0
- package/templates/src/utils/actions/lispLexer.ts +2 -2
- package/templates/src/utils/actions/preParse_Action.ts +3 -0
- package/templates/src/utils/api/beliefHelpers.ts +12 -36
- package/templates/src/utils/api/menuHelpers.ts +2 -2
- package/templates/src/utils/api.ts +26 -0
- package/templates/src/utils/compositor/TemplateNodes.ts +7 -0
- package/templates/src/utils/compositor/allowInsert.ts +5 -3
- package/templates/src/utils/compositor/nodesHelper.ts +4 -0
- package/templates/src/utils/compositor/processMarkdown.ts +16 -2
- package/templates/src/utils/compositor/reduceNodesClassNames.ts +4 -0
- package/templates/src/utils/compositor/templateMarkdownStyles.ts +13 -13
- package/templates/src/utils/compositor/typeGuards.ts +1 -0
- package/templates/src/utils/customHelpers.ts +38 -0
- package/templates/src/utils/helpers.ts +2 -2
- package/templates/src/utils/layout.ts +65 -144
- package/utils/inject-files.ts +95 -18
- package/templates/src/client/analytics-events.js +0 -207
- package/templates/src/client/belief-events.js +0 -191
- package/templates/src/client/sse.js +0 -613
- package/templates/src/components/codehooks/FeaturedContent.astro +0 -273
- package/templates/src/components/codehooks/FeaturedContentSetup.tsx +0 -738
- package/templates/src/components/compositor/preview/FeaturedContentPreview.tsx +0 -128
- package/templates/src/components/edit/pane/PanePanel_slug.tsx +0 -219
|
@@ -780,7 +780,7 @@ const StoryFragmentOpenGraphPanel = ({
|
|
|
780
780
|
<div className="mb-3 flex space-x-1">
|
|
781
781
|
<input
|
|
782
782
|
type="text"
|
|
783
|
-
className="flex-grow rounded-l-md border border-gray-300 p-2 shadow-sm focus:border-cyan-600 focus:ring-cyan-600"
|
|
783
|
+
className="w-full flex-grow rounded-l-md border border-gray-300 p-2 shadow-sm focus:border-cyan-600 focus:ring-cyan-600"
|
|
784
784
|
placeholder="Add a new tag..."
|
|
785
785
|
value={newTopicTitle}
|
|
786
786
|
onChange={(e) => setNewTopicTitle(e.target.value)}
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import { useState, useEffect, type ChangeEvent } from 'react';
|
|
2
|
+
import { useStore } from '@nanostores/react';
|
|
2
3
|
import ExclamationTriangleIcon from '@heroicons/react/24/outline/ExclamationTriangleIcon';
|
|
3
4
|
import CheckIcon from '@heroicons/react/24/outline/CheckIcon';
|
|
4
5
|
import LockClosedIcon from '@heroicons/react/24/outline/LockClosedIcon';
|
|
6
|
+
import { Switch } from '@ark-ui/react/switch';
|
|
5
7
|
import { getCtx } from '@/stores/nodes';
|
|
8
|
+
import { pendingHomePageSlugStore } from '@/stores/storykeep';
|
|
6
9
|
import { cloneDeep } from '@/utils/helpers';
|
|
7
10
|
import type { BrandConfig } from '@/types/tractstack';
|
|
8
11
|
import {
|
|
@@ -28,6 +31,8 @@ const StoryFragmentSlugPanel = ({
|
|
|
28
31
|
const [validationError, setValidationError] = useState<string | null>(null);
|
|
29
32
|
const [canSave, setCanSave] = useState(false);
|
|
30
33
|
const isHomeSlug = slug === config.HOME_SLUG;
|
|
34
|
+
const pendingHomePageSlug = useStore(pendingHomePageSlugStore);
|
|
35
|
+
const isSetAsHomePage = pendingHomePageSlug === slug;
|
|
31
36
|
|
|
32
37
|
const ctx = getCtx();
|
|
33
38
|
const allNodes = ctx.allNodes.get();
|
|
@@ -129,6 +134,14 @@ const StoryFragmentSlugPanel = ({
|
|
|
129
134
|
}
|
|
130
135
|
};
|
|
131
136
|
|
|
137
|
+
const handleSetAsHomePageChange = (details: { checked: boolean }) => {
|
|
138
|
+
if (details.checked) {
|
|
139
|
+
pendingHomePageSlugStore.set(slug);
|
|
140
|
+
} else {
|
|
141
|
+
pendingHomePageSlugStore.set(null);
|
|
142
|
+
}
|
|
143
|
+
};
|
|
144
|
+
|
|
132
145
|
return (
|
|
133
146
|
<div className="group mb-4 w-full rounded-b-md bg-white px-1.5 py-6">
|
|
134
147
|
<div className="px-3.5">
|
|
@@ -194,72 +207,60 @@ const StoryFragmentSlugPanel = ({
|
|
|
194
207
|
</span>
|
|
195
208
|
</div>
|
|
196
209
|
</div>
|
|
210
|
+
|
|
197
211
|
{validationError && (
|
|
198
212
|
<div className="mt-2 text-sm text-red-600">
|
|
199
213
|
<ExclamationTriangleIcon className="mr-1 inline h-4 w-4" />
|
|
200
214
|
{validationError}
|
|
201
215
|
</div>
|
|
202
216
|
)}
|
|
217
|
+
|
|
203
218
|
{isHomeSlug && (
|
|
204
|
-
<div className="mt-
|
|
205
|
-
<
|
|
206
|
-
|
|
219
|
+
<div className="mt-4">
|
|
220
|
+
<div className="inline-flex items-center rounded-full bg-blue-100 px-3 py-1.5 text-sm font-bold text-blue-800">
|
|
221
|
+
<LockClosedIcon className="mr-1.5 h-4 w-4" />
|
|
222
|
+
Home Page
|
|
223
|
+
</div>
|
|
224
|
+
<div className="mt-2 text-sm text-gray-600">
|
|
225
|
+
This is your current home page
|
|
226
|
+
</div>
|
|
207
227
|
</div>
|
|
208
228
|
)}
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
{
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
Slug must be at least 3 characters
|
|
238
|
-
</span>
|
|
239
|
-
)}
|
|
240
|
-
{charCount >= 3 && charCount < 5 && !validationError && (
|
|
241
|
-
<span className="text-gray-500">
|
|
242
|
-
Consider adding more characters for better description
|
|
243
|
-
</span>
|
|
244
|
-
)}
|
|
245
|
-
{warning && !validationError && (
|
|
246
|
-
<span className="text-yellow-500">
|
|
247
|
-
Slug is getting long - consider shortening it
|
|
248
|
-
</span>
|
|
249
|
-
)}
|
|
250
|
-
{isValid && canSave && charCount >= 5 && !validationError && (
|
|
251
|
-
<span className="text-green-500">
|
|
252
|
-
Good URL length and format!
|
|
253
|
-
</span>
|
|
254
|
-
)}
|
|
255
|
-
{isValid && !canSave && !validationError && (
|
|
256
|
-
<span className="text-gray-500">
|
|
257
|
-
Valid characters but needs proper formatting to save
|
|
258
|
-
</span>
|
|
259
|
-
)}
|
|
260
|
-
</>
|
|
229
|
+
|
|
230
|
+
{!isHomeSlug && isValid && canSave && (
|
|
231
|
+
<div className="mt-4">
|
|
232
|
+
<div className="flex items-center space-x-3">
|
|
233
|
+
<Switch.Root
|
|
234
|
+
checked={isSetAsHomePage}
|
|
235
|
+
onCheckedChange={handleSetAsHomePageChange}
|
|
236
|
+
className="flex items-center"
|
|
237
|
+
>
|
|
238
|
+
<Switch.Control
|
|
239
|
+
className={`relative inline-flex h-6 w-11 shrink-0 cursor-pointer rounded-full border-2 border-transparent transition-colors duration-200 ease-in-out focus:outline-none ${
|
|
240
|
+
isSetAsHomePage ? 'bg-cyan-600' : 'bg-gray-200'
|
|
241
|
+
}`}
|
|
242
|
+
>
|
|
243
|
+
<Switch.Thumb
|
|
244
|
+
className={`pointer-events-none inline-block h-5 w-5 transform rounded-full bg-white shadow-lg ring-0 transition duration-200 ease-in-out ${
|
|
245
|
+
isSetAsHomePage ? 'translate-x-5' : 'translate-x-0'
|
|
246
|
+
}`}
|
|
247
|
+
/>
|
|
248
|
+
</Switch.Control>
|
|
249
|
+
<Switch.HiddenInput />
|
|
250
|
+
</Switch.Root>
|
|
251
|
+
<span className="text-sm text-gray-700">Set as Home Page</span>
|
|
252
|
+
</div>
|
|
253
|
+
{isSetAsHomePage && (
|
|
254
|
+
<div className="mt-2 text-sm text-cyan-600">
|
|
255
|
+
✓ Will be set as home page when saved
|
|
256
|
+
</div>
|
|
261
257
|
)}
|
|
262
258
|
</div>
|
|
259
|
+
)}
|
|
260
|
+
|
|
261
|
+
<div className="mt-4 text-sm text-gray-600">
|
|
262
|
+
Create a clean, descriptive URL slug that helps users and search
|
|
263
|
+
engines understand the page content.
|
|
263
264
|
</div>
|
|
264
265
|
</div>
|
|
265
266
|
</div>
|