astro-tractstack 2.0.47 → 2.1.1
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/README.md +35 -39
- package/package.json +25 -20
- package/templates/src/components/Footer.astro +4 -4
- package/templates/src/components/Header.astro +6 -6
- package/templates/src/components/Menu.tsx +15 -15
- package/templates/src/components/codehooks/BunnyVideoSetup.tsx +6 -6
- package/templates/src/components/codehooks/EpinetDurationSelector.tsx +3 -3
- package/templates/src/components/codehooks/FeaturedArticle.astro +1 -1
- package/templates/src/components/codehooks/FeaturedArticleSetup.tsx +3 -3
- package/templates/src/components/codehooks/ListContentSetup.tsx +2 -2
- package/templates/src/components/codehooks/ProductCardSetup.tsx +1 -1
- package/templates/src/components/codehooks/ProductGridSetup.tsx +2 -2
- package/templates/src/components/codehooks/SandboxRegisterForm.tsx +3 -3
- package/templates/src/components/compositor/Compositor.tsx +1 -1
- package/templates/src/components/compositor/elements/Belief.tsx +1 -1
- package/templates/src/components/compositor/elements/BunnyVideo.tsx +2 -2
- package/templates/src/components/compositor/elements/SignUp.tsx +1 -1
- package/templates/src/components/compositor/elements/ToggleBelief.tsx +1 -1
- package/templates/src/components/compositor/nodes/GhostInsertBlock.tsx +1 -1
- package/templates/src/components/compositor/nodes/GridLayout.tsx +1 -1
- package/templates/src/components/compositor/nodes/tagElements/TabIndicator.tsx +1 -1
- package/templates/src/components/compositor/preview/ListContentPreview.tsx +8 -8
- package/templates/src/components/edit/Header.tsx +1 -1
- package/templates/src/components/edit/SettingsPanel.tsx +3 -3
- package/templates/src/components/edit/ToolBar.tsx +3 -3
- package/templates/src/components/edit/ToolMode.tsx +5 -5
- package/templates/src/components/edit/pane/AddPanePanel.tsx +5 -5
- package/templates/src/components/edit/pane/AddPanePanel_break.tsx +6 -6
- package/templates/src/components/edit/pane/AddPanePanel_codehook.tsx +2 -2
- package/templates/src/components/edit/pane/AddPanePanel_new.tsx +2 -2
- package/templates/src/components/edit/pane/AddPanePanel_reuse.tsx +4 -4
- package/templates/src/components/edit/pane/AiRestylePaneModal.tsx +2 -2
- package/templates/src/components/edit/pane/ConfigPanePanel.tsx +1 -1
- package/templates/src/components/edit/pane/PanePanel_impression.tsx +4 -4
- package/templates/src/components/edit/pane/RestylePaneModal.tsx +3 -3
- package/templates/src/components/edit/pane/steps/AiDesignStep.tsx +2 -2
- package/templates/src/components/edit/pane/steps/CopyInputStep.tsx +5 -5
- package/templates/src/components/edit/panels/StyleBreakPanel.tsx +2 -2
- package/templates/src/components/edit/panels/StyleCodeHookPanel.tsx +6 -6
- package/templates/src/components/edit/panels/StyleElementPanel.tsx +5 -5
- package/templates/src/components/edit/panels/StyleElementPanel_add.tsx +6 -6
- package/templates/src/components/edit/panels/StyleElementPanel_remove.tsx +1 -1
- package/templates/src/components/edit/panels/StyleElementPanel_update.tsx +3 -3
- package/templates/src/components/edit/panels/StyleImagePanel.tsx +8 -8
- package/templates/src/components/edit/panels/StyleImagePanel_add.tsx +6 -6
- package/templates/src/components/edit/panels/StyleImagePanel_remove.tsx +1 -1
- package/templates/src/components/edit/panels/StyleImagePanel_update.tsx +3 -3
- package/templates/src/components/edit/panels/StyleLiElementPanel.tsx +4 -4
- package/templates/src/components/edit/panels/StyleLiElementPanel_add.tsx +6 -6
- package/templates/src/components/edit/panels/StyleLiElementPanel_remove.tsx +1 -1
- package/templates/src/components/edit/panels/StyleLiElementPanel_update.tsx +3 -3
- package/templates/src/components/edit/panels/StyleLinkPanel.tsx +5 -5
- package/templates/src/components/edit/panels/StyleLinkPanel_add.tsx +6 -6
- package/templates/src/components/edit/panels/StyleLinkPanel_remove.tsx +1 -1
- package/templates/src/components/edit/panels/StyleLinkPanel_update.tsx +1 -1
- package/templates/src/components/edit/panels/StyleParentPanel.tsx +9 -9
- package/templates/src/components/edit/panels/StyleParentPanel_add.tsx +6 -6
- package/templates/src/components/edit/panels/StyleParentPanel_deleteLayer.tsx +2 -2
- package/templates/src/components/edit/panels/StyleParentPanel_remove.tsx +1 -1
- package/templates/src/components/edit/panels/StyleParentPanel_update.tsx +1 -1
- package/templates/src/components/edit/panels/StyleWidgetPanel.tsx +7 -7
- package/templates/src/components/edit/panels/StyleWidgetPanel_add.tsx +6 -6
- package/templates/src/components/edit/panels/StyleWidgetPanel_remove.tsx +1 -1
- package/templates/src/components/edit/panels/StyleWidgetPanel_update.tsx +3 -3
- package/templates/src/components/edit/panels/StyleWordCarouselPanel.tsx +1 -1
- package/templates/src/components/edit/state/SaveModal.tsx +1 -1
- package/templates/src/components/edit/state/SaveToLibraryModal.tsx +2 -2
- package/templates/src/components/edit/state/StylesMemory.tsx +1 -1
- package/templates/src/components/edit/storyfragment/StoryFragmentConfigPanel.tsx +1 -1
- package/templates/src/components/edit/storyfragment/StoryFragmentPanel_menu.tsx +5 -5
- package/templates/src/components/edit/widgets/BunnyWidget.tsx +5 -5
- package/templates/src/components/edit/widgets/InteractiveDisclosureWidget.tsx +1 -1
- package/templates/src/components/edit/widgets/SignupWidget.tsx +3 -3
- package/templates/src/components/fields/ActionBuilderTimeSelector.tsx +7 -7
- package/templates/src/components/fields/ArtpackImage.tsx +15 -15
- package/templates/src/components/fields/BackgroundImage.tsx +13 -13
- package/templates/src/components/fields/BackgroundImageWrapper.tsx +3 -3
- package/templates/src/components/fields/ColorPickerCombo.tsx +8 -8
- package/templates/src/components/fields/ImageUpload.tsx +8 -8
- package/templates/src/components/fields/PaneBreakCollectionSelector.tsx +3 -3
- package/templates/src/components/fields/PaneBreakShapeSelector.tsx +4 -4
- package/templates/src/components/fields/SelectedTailwindClass.tsx +2 -2
- package/templates/src/components/fields/ViewportComboBox.tsx +4 -4
- package/templates/src/components/form/ActionBuilderField.tsx +1 -1
- package/templates/src/components/form/ActionBuilderSlugSelector.tsx +1 -1
- package/templates/src/components/form/UnsavedChangesBar.tsx +1 -1
- package/templates/src/components/form/advanced/APIConfigSection.tsx +2 -2
- package/templates/src/components/form/advanced/AuthConfigSection.tsx +2 -2
- package/templates/src/components/form/brand/BrandColorsSection.tsx +1 -1
- package/templates/src/components/profile/ProfileCreate.tsx +4 -4
- package/templates/src/components/profile/ProfileEdit.tsx +4 -4
- package/templates/src/components/profile/ProfileSwitch.tsx +2 -2
- package/templates/src/components/profile/ProfileUnlock.tsx +3 -3
- package/templates/src/components/search/SearchModal.tsx +10 -10
- package/templates/src/components/search/SearchResults.tsx +10 -10
- package/templates/src/components/search/SearchWrapper.tsx +1 -1
- package/templates/src/components/storykeep/Dashboard.tsx +1 -1
- package/templates/src/components/storykeep/Dashboard_Advanced.tsx +2 -2
- package/templates/src/components/storykeep/controls/content/BeliefForm.tsx +1 -1
- package/templates/src/components/storykeep/controls/content/ContentSummary.tsx +2 -2
- package/templates/src/components/storykeep/controls/content/KnownResourceTable.tsx +1 -1
- package/templates/src/components/storykeep/controls/content/ManageContent.tsx +2 -2
- package/templates/src/components/storykeep/controls/content/MenuForm.tsx +1 -1
- package/templates/src/components/storykeep/controls/content/ResourceTable.tsx +1 -1
- package/templates/src/components/widgets/Impression.tsx +2 -2
- package/templates/src/components/widgets/ImpressionWrapper.tsx +2 -2
- package/templates/src/hooks/useSearch.ts +1 -1
- package/templates/src/layouts/Layout.astro +2 -2
- package/templates/src/pages/[...slug]/edit.astro +3 -3
- package/templates/src/pages/[...slug].astro +1 -1
- package/templates/src/pages/context/[...contextSlug]/edit.astro +3 -3
- package/templates/src/pages/maint.astro +9 -9
- package/templates/src/pages/sandbox.astro +50 -61
- package/templates/src/pages/storykeep/login.astro +6 -6
- package/templates/src/types/formTypes.ts +6 -4
- package/templates/src/types/nodeProps.ts +1 -1
- package/templates/src/types/tractstack.ts +1 -2
- package/templates/src/utils/compositor/nodesHelper.ts +1 -1
- package/templates/src/utils/compositor/typeGuards.ts +3 -3
|
@@ -156,12 +156,12 @@ const ColorPickerCombo = ({
|
|
|
156
156
|
return (
|
|
157
157
|
<div>
|
|
158
158
|
{title && (
|
|
159
|
-
<span className="
|
|
159
|
+
<span className="block py-2 text-sm text-mydarkgrey">{title}</span>
|
|
160
160
|
)}
|
|
161
161
|
<div className="flex items-center space-x-2">
|
|
162
162
|
{allowNull && !hexColor ? (
|
|
163
163
|
// Show empty state with angled stripes pattern when allowNull is true and no color is set
|
|
164
|
-
<div className="
|
|
164
|
+
<div className="relative h-9 w-12 overflow-hidden rounded border-mydarkgrey">
|
|
165
165
|
{/* Angled stripes pattern to represent transparency */}
|
|
166
166
|
<div
|
|
167
167
|
className="absolute inset-0"
|
|
@@ -189,15 +189,15 @@ const ColorPickerCombo = ({
|
|
|
189
189
|
type="color"
|
|
190
190
|
value={hexColor || '#ffffff'}
|
|
191
191
|
onChange={(e) => handleHexColorChange(e.target.value)}
|
|
192
|
-
className="
|
|
192
|
+
className="h-9 w-12 rounded border-mydarkgrey"
|
|
193
193
|
/>
|
|
194
194
|
)}
|
|
195
195
|
{allowNull && (
|
|
196
196
|
<button
|
|
197
197
|
onClick={handleRemoveColor}
|
|
198
|
-
className="
|
|
198
|
+
className="flex h-9 w-9 items-center justify-center rounded border-mydarkgrey"
|
|
199
199
|
>
|
|
200
|
-
<XMarkIcon className="
|
|
200
|
+
<XMarkIcon className="h-5 w-5 text-mydarkgrey" aria-hidden="true" />
|
|
201
201
|
</button>
|
|
202
202
|
)}
|
|
203
203
|
{!skipTailwind && (
|
|
@@ -222,13 +222,13 @@ const ColorPickerCombo = ({
|
|
|
222
222
|
<Combobox.Control ref={comboboxRef}>
|
|
223
223
|
<div className="relative">
|
|
224
224
|
<Combobox.Input
|
|
225
|
-
className="
|
|
225
|
+
className="w-full max-w-xl rounded-md border-mydarkgrey py-2 pl-3 pr-10 shadow-sm focus:border-myblue focus:ring-myblue xs:text-sm"
|
|
226
226
|
placeholder="Search Tailwind colors..."
|
|
227
227
|
autoComplete="off"
|
|
228
228
|
/>
|
|
229
229
|
<Combobox.Trigger className="absolute inset-y-0 right-0 flex items-center pr-2">
|
|
230
230
|
<ChevronUpDownIcon
|
|
231
|
-
className="
|
|
231
|
+
className="h-5 w-5 text-mydarkgrey"
|
|
232
232
|
aria-hidden="true"
|
|
233
233
|
/>
|
|
234
234
|
</Combobox.Trigger>
|
|
@@ -237,7 +237,7 @@ const ColorPickerCombo = ({
|
|
|
237
237
|
|
|
238
238
|
<Portal>
|
|
239
239
|
<Combobox.Positioner style={{ zIndex: 1002 }}>
|
|
240
|
-
<Combobox.Content className="
|
|
240
|
+
<Combobox.Content className="max-h-64 w-full overflow-auto rounded-md bg-white py-1 text-base shadow-lg ring-1 ring-black ring-opacity-5 focus:outline-none xs:text-sm">
|
|
241
241
|
{filteredColors.length === 0 ? (
|
|
242
242
|
<div className="relative cursor-default select-none py-2 pl-3 pr-4 text-black">
|
|
243
243
|
Nothing found.
|
|
@@ -197,7 +197,7 @@ export const ImageUpload = ({
|
|
|
197
197
|
// Update the node with base64Data
|
|
198
198
|
if (currentImageNode) {
|
|
199
199
|
const updatedNode = cloneDeep(currentImageNode);
|
|
200
|
-
(updatedNode.fileId = ulid()), (updatedNode.src = base64); // Set src to base64 for immediate display
|
|
200
|
+
((updatedNode.fileId = ulid()), (updatedNode.src = base64)); // Set src to base64 for immediate display
|
|
201
201
|
updatedNode.base64Data = base64;
|
|
202
202
|
updatedNode.alt = defaultAlt;
|
|
203
203
|
updatedNode.isChanged = true;
|
|
@@ -303,7 +303,7 @@ export const ImageUpload = ({
|
|
|
303
303
|
</button>
|
|
304
304
|
<button
|
|
305
305
|
onClick={() => setIsSelectingFile(true)}
|
|
306
|
-
className="
|
|
306
|
+
className="flex items-center text-sm text-myblue hover:text-cyan-600"
|
|
307
307
|
>
|
|
308
308
|
<FolderIcon className="mr-1 h-4 w-4" />
|
|
309
309
|
Select Existing
|
|
@@ -326,7 +326,7 @@ export const ImageUpload = ({
|
|
|
326
326
|
{isSelectingFile && (
|
|
327
327
|
<div className="fixed inset-0 z-50 flex items-center justify-center bg-black bg-opacity-50">
|
|
328
328
|
<div className="w-full max-w-md rounded-lg bg-white p-6 shadow-lg">
|
|
329
|
-
<h3 className="
|
|
329
|
+
<h3 className="mb-4 text-lg font-bold text-mydarkgrey">
|
|
330
330
|
Select an Image
|
|
331
331
|
</h3>
|
|
332
332
|
|
|
@@ -343,11 +343,11 @@ export const ImageUpload = ({
|
|
|
343
343
|
<div ref={comboboxRef} className="relative">
|
|
344
344
|
<Combobox.Control className="relative">
|
|
345
345
|
<Combobox.Input
|
|
346
|
-
className="
|
|
346
|
+
className="w-full rounded-md border-mydarkgrey py-2 pl-3 pr-10 text-myblack"
|
|
347
347
|
placeholder="Search files..."
|
|
348
348
|
/>
|
|
349
349
|
<Combobox.Trigger className="absolute inset-y-0 right-0 flex items-center pr-2">
|
|
350
|
-
<ChevronUpDownIcon className="
|
|
350
|
+
<ChevronUpDownIcon className="h-5 w-5 text-mydarkgrey" />
|
|
351
351
|
</Combobox.Trigger>
|
|
352
352
|
</Combobox.Control>
|
|
353
353
|
|
|
@@ -359,7 +359,7 @@ export const ImageUpload = ({
|
|
|
359
359
|
style={{ maxHeight: `${maxHeight}px` }}
|
|
360
360
|
>
|
|
361
361
|
{collection.items.length === 0 ? (
|
|
362
|
-
<div className="
|
|
362
|
+
<div className="relative cursor-default select-none px-4 py-2 text-mydarkgrey">
|
|
363
363
|
Nothing found.
|
|
364
364
|
</div>
|
|
365
365
|
) : (
|
|
@@ -367,7 +367,7 @@ export const ImageUpload = ({
|
|
|
367
367
|
<Combobox.Item
|
|
368
368
|
key={file.id}
|
|
369
369
|
item={file}
|
|
370
|
-
className="file-item
|
|
370
|
+
className="file-item relative cursor-default select-none py-2 pl-10 pr-4 text-myblack"
|
|
371
371
|
>
|
|
372
372
|
<div className="flex items-center space-x-3">
|
|
373
373
|
<img
|
|
@@ -391,7 +391,7 @@ export const ImageUpload = ({
|
|
|
391
391
|
</Combobox.Root>
|
|
392
392
|
|
|
393
393
|
<button
|
|
394
|
-
className="
|
|
394
|
+
className="mt-4 rounded-md bg-mylightgrey px-4 py-2 text-sm text-myblack hover:bg-cyan-600 hover:text-white"
|
|
395
395
|
onClick={() => setIsSelectingFile(false)}
|
|
396
396
|
>
|
|
397
397
|
Cancel
|
|
@@ -67,17 +67,17 @@ export default function PaneBreakCollectionSelector({
|
|
|
67
67
|
>
|
|
68
68
|
<div className="relative mt-1">
|
|
69
69
|
<Combobox.Input
|
|
70
|
-
className="
|
|
70
|
+
className="w-full rounded-md border-mydarkgrey py-2 pl-3 pr-10 shadow-sm focus:border-myblue focus:ring-myblue xs:text-sm"
|
|
71
71
|
autoComplete="off"
|
|
72
72
|
/>
|
|
73
73
|
<Combobox.Trigger className="absolute inset-y-0 right-0 flex items-center pr-2">
|
|
74
74
|
<ChevronUpDownIcon
|
|
75
|
-
className="
|
|
75
|
+
className="h-5 w-5 text-mydarkgrey"
|
|
76
76
|
aria-hidden="true"
|
|
77
77
|
/>
|
|
78
78
|
</Combobox.Trigger>
|
|
79
79
|
</div>
|
|
80
|
-
<Combobox.Content className="
|
|
80
|
+
<Combobox.Content className="absolute z-10 mt-1 max-h-60 w-full overflow-auto rounded-md bg-white py-1 text-base shadow-lg ring-1 ring-black ring-opacity-5 focus:outline-none xs:text-sm">
|
|
81
81
|
{collection.items.map((item) => (
|
|
82
82
|
<Combobox.Item
|
|
83
83
|
key={item}
|
|
@@ -98,22 +98,22 @@ export default function PaneBreakShapeSelector({
|
|
|
98
98
|
composite={true}
|
|
99
99
|
>
|
|
100
100
|
<div className="relative mt-1 flex-grow">
|
|
101
|
-
<div className="border-mydarkgrey focus-within:border-myblue focus-within:ring-myblue
|
|
101
|
+
<div className="flex w-full items-center rounded-md border border-mydarkgrey shadow-sm focus-within:border-myblue focus-within:ring-myblue">
|
|
102
102
|
<Combobox.Input
|
|
103
|
-
className="
|
|
103
|
+
className="w-full rounded-l-md border-0 py-2 pl-3 pr-0 focus:ring-0 xs:text-sm"
|
|
104
104
|
autoComplete="off"
|
|
105
105
|
/>
|
|
106
106
|
<div className="py-2 pr-8">{renderShapePreview(selectedImage)}</div>
|
|
107
107
|
<Combobox.Trigger className="absolute inset-y-0 right-0 flex items-center pr-2">
|
|
108
108
|
<ChevronUpDownIcon
|
|
109
|
-
className="
|
|
109
|
+
className="h-5 w-5 text-mydarkgrey"
|
|
110
110
|
aria-hidden="true"
|
|
111
111
|
/>
|
|
112
112
|
</Combobox.Trigger>
|
|
113
113
|
</div>
|
|
114
114
|
</div>
|
|
115
115
|
|
|
116
|
-
<Combobox.Content className="
|
|
116
|
+
<Combobox.Content className="absolute z-10 mt-1 max-h-60 w-full overflow-auto rounded-md bg-white py-1 text-base shadow-lg ring-1 ring-black ring-opacity-5 focus:outline-none xs:text-sm">
|
|
117
117
|
{collection.items.map((shape) => (
|
|
118
118
|
<Combobox.Item
|
|
119
119
|
key={shape}
|
|
@@ -23,7 +23,7 @@ const SelectedTailwindClass = ({ name, values, onRemove, onUpdate }: Props) => {
|
|
|
23
23
|
.join(', ');
|
|
24
24
|
|
|
25
25
|
return (
|
|
26
|
-
<div className="
|
|
26
|
+
<div className="w-fit rounded border border-slate-200 p-2 text-sm text-myblack hover:bg-mygreen/20">
|
|
27
27
|
<div title={title} className="flex items-center gap-2 font-bold">
|
|
28
28
|
<button onClick={() => onUpdate(name)}>
|
|
29
29
|
{tailwindClasses[name]?.title || name}
|
|
@@ -34,7 +34,7 @@ const SelectedTailwindClass = ({ name, values, onRemove, onUpdate }: Props) => {
|
|
|
34
34
|
aria-label={`Remove ${name} class`}
|
|
35
35
|
title={`Remove ${tailwindClasses[name]?.title || name} class`}
|
|
36
36
|
>
|
|
37
|
-
<XMarkIcon className="
|
|
37
|
+
<XMarkIcon className="h-4 w-4 text-mydarkgrey hover:font-bold hover:text-black" />
|
|
38
38
|
</button>
|
|
39
39
|
</div>
|
|
40
40
|
</div>
|
|
@@ -183,7 +183,7 @@ const ViewportComboBox = ({
|
|
|
183
183
|
)}
|
|
184
184
|
<Combobox.Input
|
|
185
185
|
className={classNames(
|
|
186
|
-
'
|
|
186
|
+
'w-full rounded-md border border-mydarkgrey py-2 text-xl leading-5 focus:border-cyan-600 focus:ring-1 focus:ring-cyan-600',
|
|
187
187
|
isInferred ? 'text-black/20' : 'text-black',
|
|
188
188
|
isColorValue ? 'pl-12' : 'pl-3',
|
|
189
189
|
'pr-16'
|
|
@@ -193,7 +193,7 @@ const ViewportComboBox = ({
|
|
|
193
193
|
/>
|
|
194
194
|
<Combobox.Trigger className="absolute inset-y-0 right-0 flex items-center pl-2 pr-2">
|
|
195
195
|
<ChevronUpDownIcon
|
|
196
|
-
className="
|
|
196
|
+
className="h-5 w-5 text-mydarkgrey"
|
|
197
197
|
aria-hidden="true"
|
|
198
198
|
/>
|
|
199
199
|
</Combobox.Trigger>
|
|
@@ -203,7 +203,7 @@ const ViewportComboBox = ({
|
|
|
203
203
|
<Combobox.Positioner style={{ zIndex: 1002 }}>
|
|
204
204
|
<Combobox.Content className="max-h-64 w-full overflow-auto rounded-md bg-white py-1 text-xl shadow-lg ring-1 ring-black ring-opacity-5 focus:outline-none">
|
|
205
205
|
{collection.items.length === 0 ? (
|
|
206
|
-
<div className="
|
|
206
|
+
<div className="relative cursor-default select-none px-4 py-2 text-mydarkgrey">
|
|
207
207
|
Nothing found.
|
|
208
208
|
</div>
|
|
209
209
|
) : (
|
|
@@ -252,7 +252,7 @@ const ViewportComboBox = ({
|
|
|
252
252
|
id={`negative-${viewport}`}
|
|
253
253
|
checked={isNowNegative}
|
|
254
254
|
onChange={handleNegativeChange}
|
|
255
|
-
className="
|
|
255
|
+
className="h-4 w-4 rounded border-mydarkgrey text-cyan-600 focus:ring-cyan-600"
|
|
256
256
|
/>
|
|
257
257
|
<label
|
|
258
258
|
htmlFor={`negative-${viewport}`}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { useState, useEffect, useMemo } from 'react';
|
|
1
|
+
import { useState, useEffect, useMemo, type JSX } from 'react';
|
|
2
2
|
import { TractStackAPI } from '@/utils/api';
|
|
3
3
|
import { GOTO_TARGETS, ACTION_COMMANDS, type ActionCommand } from '@/constants';
|
|
4
4
|
import XMarkIcon from '@heroicons/react/24/outline/XMarkIcon';
|
|
@@ -151,7 +151,7 @@ const ActionBuilderSlugSelector = ({
|
|
|
151
151
|
</Combobox.Trigger>
|
|
152
152
|
</div>
|
|
153
153
|
|
|
154
|
-
<Combobox.Content className="absolute z-10 mt-1 max-h-60 w-full max-w-md overflow-auto rounded-md bg-white py-1 text-base shadow-lg ring-1 ring-black ring-opacity-5 focus:outline-none
|
|
154
|
+
<Combobox.Content className="sm:text-sm absolute z-10 mt-1 max-h-60 w-full max-w-md overflow-auto rounded-md bg-white py-1 text-base shadow-lg ring-1 ring-black ring-opacity-5 focus:outline-none">
|
|
155
155
|
{filteredItems.length === 0 ? (
|
|
156
156
|
<div className="relative cursor-default select-none px-4 py-2 text-gray-700">
|
|
157
157
|
{query ? 'No matching items found' : 'No items available'}
|
|
@@ -147,7 +147,7 @@ export default function UnsavedChangesBar<T>({
|
|
|
147
147
|
<div className="absolute inset-0 bg-black/10 backdrop-blur-sm" />
|
|
148
148
|
|
|
149
149
|
{/* Main content bar */}
|
|
150
|
-
<div className="relative mx-auto max-w-7xl px-4 py-4
|
|
150
|
+
<div className="sm:px-6 lg:px-8 relative mx-auto max-w-7xl px-4 py-4">
|
|
151
151
|
<div
|
|
152
152
|
className={`flex items-center justify-between rounded-lg border px-4 py-3 shadow-lg ${styling.bgColor} ${styling.borderColor}`}
|
|
153
153
|
>
|
|
@@ -19,8 +19,8 @@ export default function APIConfigSection({
|
|
|
19
19
|
const aaiConfigured = status?.aaiAPIKeySet;
|
|
20
20
|
|
|
21
21
|
return (
|
|
22
|
-
<div className="bg-white shadow
|
|
23
|
-
<div className="px-4 py-5
|
|
22
|
+
<div className="sm:rounded-lg bg-white shadow">
|
|
23
|
+
<div className="sm:p-6 px-4 py-5">
|
|
24
24
|
<div className="flex items-center justify-between">
|
|
25
25
|
<h3 className="text-base font-bold leading-6 text-gray-900">
|
|
26
26
|
API Configuration
|
|
@@ -20,8 +20,8 @@ export default function AuthConfigSection({
|
|
|
20
20
|
const editorConfigured = status?.editorPasswordSet;
|
|
21
21
|
|
|
22
22
|
return (
|
|
23
|
-
<div className="bg-white shadow
|
|
24
|
-
<div className="px-4 py-5
|
|
23
|
+
<div className="sm:rounded-lg bg-white shadow">
|
|
24
|
+
<div className="sm:p-6 px-4 py-5">
|
|
25
25
|
<h3 className="text-base font-bold leading-6 text-gray-900">
|
|
26
26
|
Authentication Configuration
|
|
27
27
|
</h3>
|
|
@@ -188,7 +188,7 @@ export default function BrandColorsSection({
|
|
|
188
188
|
) : (
|
|
189
189
|
<div className="space-y-1">
|
|
190
190
|
{contrastIssues.map((issue, index) => (
|
|
191
|
-
<p key={index} className="text-
|
|
191
|
+
<p key={index} className="text-sm text-mydarkgrey">
|
|
192
192
|
{issue}
|
|
193
193
|
</p>
|
|
194
194
|
))}
|
|
@@ -226,7 +226,7 @@ export const ProfileCreate = ({ onSuccess, onError }: ProfileCreateProps) => {
|
|
|
226
226
|
return (
|
|
227
227
|
<>
|
|
228
228
|
<style>{selectItemStyles}</style>
|
|
229
|
-
<h3 className="font-action
|
|
229
|
+
<h3 className="py-6 font-action text-xl text-blue-600">
|
|
230
230
|
Feel free to introduce yourself
|
|
231
231
|
</h3>
|
|
232
232
|
<p className="text-md pb-6">
|
|
@@ -332,7 +332,7 @@ export const ProfileCreate = ({ onSuccess, onError }: ProfileCreateProps) => {
|
|
|
332
332
|
|
|
333
333
|
<Portal>
|
|
334
334
|
<Select.Positioner>
|
|
335
|
-
<Select.Content className="relative z-10 mt-1 max-h-56 w-full overflow-auto rounded-md bg-white py-1 text-base shadow-lg ring-1 ring-black ring-opacity-5 focus:outline-none
|
|
335
|
+
<Select.Content className="sm:text-sm relative z-10 mt-1 max-h-56 w-full overflow-auto rounded-md bg-white py-1 text-base shadow-lg ring-1 ring-black ring-opacity-5 focus:outline-none">
|
|
336
336
|
{contactPersona.map((item) => (
|
|
337
337
|
<Select.Item
|
|
338
338
|
key={item.id}
|
|
@@ -434,7 +434,7 @@ export const ProfileCreate = ({ onSuccess, onError }: ProfileCreateProps) => {
|
|
|
434
434
|
)}
|
|
435
435
|
|
|
436
436
|
{badSave ? (
|
|
437
|
-
<div className="align-center
|
|
437
|
+
<div className="align-center col-span-3 flex justify-center py-12 font-action text-red-500">
|
|
438
438
|
Profile could not be saved. Email already registered.
|
|
439
439
|
</div>
|
|
440
440
|
) : null}
|
|
@@ -445,7 +445,7 @@ export const ProfileCreate = ({ onSuccess, onError }: ProfileCreateProps) => {
|
|
|
445
445
|
type="submit"
|
|
446
446
|
disabled={isLoading}
|
|
447
447
|
className={classNames(
|
|
448
|
-
`
|
|
448
|
+
`rounded-lg px-3.5 py-2.5 font-action text-white transition-all duration-200 hover:rotate-1`,
|
|
449
449
|
isLoading
|
|
450
450
|
? `cursor-not-allowed bg-gray-400`
|
|
451
451
|
: `bg-black hover:bg-orange-500`
|
|
@@ -213,7 +213,7 @@ export const ProfileEdit = ({ onSuccess, onError }: ProfileEditProps) => {
|
|
|
213
213
|
return (
|
|
214
214
|
<>
|
|
215
215
|
<style>{selectItemStyles}</style>
|
|
216
|
-
<h3 className="font-action
|
|
216
|
+
<h3 className="py-6 font-action text-xl text-blue-600">
|
|
217
217
|
Update your profile
|
|
218
218
|
</h3>
|
|
219
219
|
|
|
@@ -294,7 +294,7 @@ export const ProfileEdit = ({ onSuccess, onError }: ProfileEditProps) => {
|
|
|
294
294
|
|
|
295
295
|
<Portal>
|
|
296
296
|
<Select.Positioner>
|
|
297
|
-
<Select.Content className="relative z-10 mt-1 max-h-56 w-full overflow-auto rounded-md bg-white py-1 text-base shadow-lg ring-1 ring-black ring-opacity-5 focus:outline-none
|
|
297
|
+
<Select.Content className="sm:text-sm relative z-10 mt-1 max-h-56 w-full overflow-auto rounded-md bg-white py-1 text-base shadow-lg ring-1 ring-black ring-opacity-5 focus:outline-none">
|
|
298
298
|
{contactPersona.map((item) => (
|
|
299
299
|
<Select.Item
|
|
300
300
|
key={item.id}
|
|
@@ -383,7 +383,7 @@ export const ProfileEdit = ({ onSuccess, onError }: ProfileEditProps) => {
|
|
|
383
383
|
</div>
|
|
384
384
|
|
|
385
385
|
{saved ? (
|
|
386
|
-
<div className="align-center
|
|
386
|
+
<div className="align-center col-span-3 flex justify-center py-12 font-action text-green-600">
|
|
387
387
|
Profile updated successfully!
|
|
388
388
|
</div>
|
|
389
389
|
) : null}
|
|
@@ -393,7 +393,7 @@ export const ProfileEdit = ({ onSuccess, onError }: ProfileEditProps) => {
|
|
|
393
393
|
type="submit"
|
|
394
394
|
disabled={isLoading}
|
|
395
395
|
className={classNames(
|
|
396
|
-
`
|
|
396
|
+
`rounded-lg px-3.5 py-2.5 font-action text-white transition-all duration-200 hover:rotate-1`,
|
|
397
397
|
isLoading
|
|
398
398
|
? `cursor-not-allowed bg-gray-400`
|
|
399
399
|
: `bg-black hover:bg-orange-500`
|
|
@@ -213,7 +213,7 @@ export const ProfileSwitch = () => {
|
|
|
213
213
|
if (isLoading) {
|
|
214
214
|
return (
|
|
215
215
|
<div className="py-12">
|
|
216
|
-
<div className="border-myblue/20 bg-mywhite
|
|
216
|
+
<div className="border border-dashed border-myblue/20 bg-mywhite">
|
|
217
217
|
<div className="p-6">
|
|
218
218
|
<div className="flex items-center justify-center py-12">
|
|
219
219
|
<div className="text-mydarkgrey">Loading profile...</div>
|
|
@@ -236,7 +236,7 @@ export const ProfileSwitch = () => {
|
|
|
236
236
|
|
|
237
237
|
return (
|
|
238
238
|
<div className="py-12">
|
|
239
|
-
<div className="border-myblue/20 bg-mywhite
|
|
239
|
+
<div className="border border-dashed border-myblue/20 bg-mywhite">
|
|
240
240
|
<div className="p-6">
|
|
241
241
|
{mode === 'create' && (
|
|
242
242
|
<ProfileCreate onSuccess={handleProfileSuccess} />
|
|
@@ -128,7 +128,7 @@ export const ProfileUnlock = ({
|
|
|
128
128
|
|
|
129
129
|
return (
|
|
130
130
|
<>
|
|
131
|
-
<h3 className="font-action
|
|
131
|
+
<h3 className="py-6 font-action text-xl text-blue-600">
|
|
132
132
|
Welcome back! Please unlock your profile
|
|
133
133
|
</h3>
|
|
134
134
|
|
|
@@ -181,7 +181,7 @@ export const ProfileUnlock = ({
|
|
|
181
181
|
</div>
|
|
182
182
|
|
|
183
183
|
{badLogin ? (
|
|
184
|
-
<div className="align-center
|
|
184
|
+
<div className="align-center col-span-1 flex justify-center py-6 font-action text-red-500">
|
|
185
185
|
Invalid credentials. Please try again.
|
|
186
186
|
</div>
|
|
187
187
|
) : null}
|
|
@@ -191,7 +191,7 @@ export const ProfileUnlock = ({
|
|
|
191
191
|
type="submit"
|
|
192
192
|
disabled={isLoading}
|
|
193
193
|
className={classNames(
|
|
194
|
-
`
|
|
194
|
+
`rounded-lg px-3.5 py-2.5 font-action text-white transition-all duration-200 hover:rotate-1`,
|
|
195
195
|
isLoading
|
|
196
196
|
? `cursor-not-allowed bg-gray-400`
|
|
197
197
|
: `bg-black hover:bg-orange-500`
|
|
@@ -221,7 +221,7 @@ export default function SearchModal({
|
|
|
221
221
|
<Dialog.Backdrop className="fixed inset-0 z-50 bg-black bg-opacity-50 backdrop-blur-sm" />
|
|
222
222
|
<Dialog.Positioner className="fixed inset-0 z-50 mx-auto max-w-3xl p-2 pt-16 md:p-4">
|
|
223
223
|
<Dialog.Content
|
|
224
|
-
className="
|
|
224
|
+
className="mx-auto w-full overflow-hidden rounded-lg bg-mywhite shadow-2xl"
|
|
225
225
|
style={{ height: '80vh' }}
|
|
226
226
|
>
|
|
227
227
|
<div className="relative w-full border-b border-gray-200 p-4">
|
|
@@ -269,7 +269,7 @@ export default function SearchModal({
|
|
|
269
269
|
onChange={handleInputChange}
|
|
270
270
|
onKeyDown={handleKeyDown}
|
|
271
271
|
placeholder="Search content..."
|
|
272
|
-
className="
|
|
272
|
+
className="relative z-10 w-full border-none bg-transparent text-xl text-mydarkgrey placeholder-gray-500 outline-none"
|
|
273
273
|
style={{ background: 'transparent', padding: '0' }}
|
|
274
274
|
/>
|
|
275
275
|
</div>
|
|
@@ -277,7 +277,7 @@ export default function SearchModal({
|
|
|
277
277
|
|
|
278
278
|
<button
|
|
279
279
|
onClick={handleClose}
|
|
280
|
-
className="
|
|
280
|
+
className="absolute right-4 top-6 rounded-lg p-2 text-mydarkgrey transition-colors hover:bg-gray-100 hover:text-myblue"
|
|
281
281
|
aria-label="Close search"
|
|
282
282
|
>
|
|
283
283
|
<XMarkIcon className="h-6 w-6" />
|
|
@@ -310,8 +310,8 @@ export default function SearchModal({
|
|
|
310
310
|
|
|
311
311
|
{query.trim().length >= 3 && isDiscovering && (
|
|
312
312
|
<div className="w-full p-8 text-center">
|
|
313
|
-
<div className="
|
|
314
|
-
<p className="text-mydarkgrey
|
|
313
|
+
<div className="inline-block h-8 w-8 animate-spin rounded-full border-b-2 border-myblue"></div>
|
|
314
|
+
<p className="mt-4 text-mydarkgrey">Discovering...</p>
|
|
315
315
|
</div>
|
|
316
316
|
)}
|
|
317
317
|
|
|
@@ -320,7 +320,7 @@ export default function SearchModal({
|
|
|
320
320
|
<p>Discovery failed: {discoverError}</p>
|
|
321
321
|
<button
|
|
322
322
|
onClick={() => discoverTerms(query.trim())}
|
|
323
|
-
className="text-myblue
|
|
323
|
+
className="mt-2 text-myblue hover:underline"
|
|
324
324
|
>
|
|
325
325
|
Try again
|
|
326
326
|
</button>
|
|
@@ -329,7 +329,7 @@ export default function SearchModal({
|
|
|
329
329
|
|
|
330
330
|
{showSuggestions && (
|
|
331
331
|
<div className="w-full p-6">
|
|
332
|
-
<p className="
|
|
332
|
+
<p className="mb-4 text-sm font-bold text-mydarkgrey">
|
|
333
333
|
Suggestions ({suggestions.length})
|
|
334
334
|
</p>
|
|
335
335
|
<div className="flex flex-wrap gap-2">
|
|
@@ -345,7 +345,7 @@ export default function SearchModal({
|
|
|
345
345
|
</button>
|
|
346
346
|
))}
|
|
347
347
|
</div>
|
|
348
|
-
<p className="
|
|
348
|
+
<p className="mt-4 text-xs text-mydarkgrey">
|
|
349
349
|
Click a suggestion or press Enter to search
|
|
350
350
|
</p>
|
|
351
351
|
<div className="mt-6 border-t border-gray-200 pt-4">
|
|
@@ -379,8 +379,8 @@ export default function SearchModal({
|
|
|
379
379
|
|
|
380
380
|
{isRetrieving && (
|
|
381
381
|
<div className="w-full p-8 text-center">
|
|
382
|
-
<div className="
|
|
383
|
-
<p className="text-mydarkgrey
|
|
382
|
+
<div className="inline-block h-8 w-8 animate-spin rounded-full border-b-2 border-myblue"></div>
|
|
383
|
+
<p className="mt-4 text-mydarkgrey">Searching...</p>
|
|
384
384
|
</div>
|
|
385
385
|
)}
|
|
386
386
|
|
|
@@ -226,7 +226,7 @@ export default function SearchResults({
|
|
|
226
226
|
return (
|
|
227
227
|
<div className="p-6">
|
|
228
228
|
<div className="mb-6">
|
|
229
|
-
<h2 className="text-
|
|
229
|
+
<h2 className="text-lg font-bold text-mydarkgrey">
|
|
230
230
|
{totalResults} result{totalResults !== 1 ? 's' : ''} found
|
|
231
231
|
</h2>
|
|
232
232
|
<p className="mt-1 text-sm text-gray-600">
|
|
@@ -246,7 +246,7 @@ export default function SearchResults({
|
|
|
246
246
|
<div className="flex flex-col md:flex-row md:items-start md:gap-4">
|
|
247
247
|
{/* Mobile: Full width image without overlay badge */}
|
|
248
248
|
<div
|
|
249
|
-
className="
|
|
249
|
+
className="relative w-full overflow-hidden rounded-lg bg-mydarkgrey md:hidden"
|
|
250
250
|
style={{ aspectRatio: '1200/630' }}
|
|
251
251
|
>
|
|
252
252
|
<img
|
|
@@ -258,7 +258,7 @@ export default function SearchResults({
|
|
|
258
258
|
|
|
259
259
|
{/* Desktop: Side image without overlay badge */}
|
|
260
260
|
<div
|
|
261
|
-
className="
|
|
261
|
+
className="relative hidden flex-shrink-0 overflow-hidden rounded-lg bg-mydarkgrey md:block"
|
|
262
262
|
style={{ width: '240px', height: '135px' }}
|
|
263
263
|
>
|
|
264
264
|
<img
|
|
@@ -271,11 +271,11 @@ export default function SearchResults({
|
|
|
271
271
|
<div className="mt-3 min-w-0 flex-1 md:mt-0">
|
|
272
272
|
<div className="flex items-start justify-between gap-4">
|
|
273
273
|
<div className="flex-1">
|
|
274
|
-
<h3 className="
|
|
274
|
+
<h3 className="mb-2 text-lg font-bold text-mydarkgrey transition-colors group-hover:text-myblue">
|
|
275
275
|
{item.title}
|
|
276
276
|
</h3>
|
|
277
277
|
{item.description && (
|
|
278
|
-
<p className="
|
|
278
|
+
<p className="mb-2 text-sm text-mydarkgrey">
|
|
279
279
|
{item.description}
|
|
280
280
|
</p>
|
|
281
281
|
)}
|
|
@@ -291,13 +291,13 @@ export default function SearchResults({
|
|
|
291
291
|
{item.topics.slice(0, 3).map((topic, idx) => (
|
|
292
292
|
<span
|
|
293
293
|
key={idx}
|
|
294
|
-
className="bg-myoffwhite
|
|
294
|
+
className="rounded bg-myoffwhite px-2 py-1 text-xs text-mydarkgrey"
|
|
295
295
|
>
|
|
296
296
|
{topic}
|
|
297
297
|
</span>
|
|
298
298
|
))}
|
|
299
299
|
{item.topics.length > 3 && (
|
|
300
|
-
<span className="text-
|
|
300
|
+
<span className="text-xs text-mydarkgrey">
|
|
301
301
|
+{item.topics.length - 3} more
|
|
302
302
|
</span>
|
|
303
303
|
)}
|
|
@@ -321,7 +321,7 @@ export default function SearchResults({
|
|
|
321
321
|
page={currentPage}
|
|
322
322
|
onPageChange={(details) => handlePageChange(details.page)}
|
|
323
323
|
>
|
|
324
|
-
<Pagination.PrevTrigger className="
|
|
324
|
+
<Pagination.PrevTrigger className="mr-2 flex items-center gap-1 rounded px-3 py-2 text-sm font-bold text-mydarkgrey transition-colors hover:text-myblue disabled:opacity-50">
|
|
325
325
|
<ChevronLeftIcon className="h-4 w-4" />
|
|
326
326
|
Previous
|
|
327
327
|
</Pagination.PrevTrigger>
|
|
@@ -346,7 +346,7 @@ export default function SearchResults({
|
|
|
346
346
|
) : (
|
|
347
347
|
<span
|
|
348
348
|
key={index}
|
|
349
|
-
className="
|
|
349
|
+
className="px-2 text-sm text-mydarkgrey"
|
|
350
350
|
>
|
|
351
351
|
{page.type === 'ellipsis' ? '...' : ''}
|
|
352
352
|
</span>
|
|
@@ -356,7 +356,7 @@ export default function SearchResults({
|
|
|
356
356
|
</Pagination.Context>
|
|
357
357
|
</div>
|
|
358
358
|
|
|
359
|
-
<Pagination.NextTrigger className="
|
|
359
|
+
<Pagination.NextTrigger className="ml-2 flex items-center gap-1 rounded px-3 py-2 text-sm font-bold text-mydarkgrey transition-colors hover:text-myblue disabled:opacity-50">
|
|
360
360
|
Next
|
|
361
361
|
<ChevronRightIcon className="h-4 w-4" />
|
|
362
362
|
</Pagination.NextTrigger>
|
|
@@ -27,7 +27,7 @@ export default function SearchWrapper({ contentMap }: SearchWrapperProps) {
|
|
|
27
27
|
<>
|
|
28
28
|
<button
|
|
29
29
|
onClick={handleSearchOpen}
|
|
30
|
-
className="text-myblue/80 hover:
|
|
30
|
+
className="text-myblue/80 hover:rotate-6 hover:text-myblue"
|
|
31
31
|
title="Search content"
|
|
32
32
|
aria-label="Search content"
|
|
33
33
|
>
|
|
@@ -113,7 +113,7 @@ export default function StoryKeepDashboard({
|
|
|
113
113
|
<h3 className="text-lg font-bold text-black">
|
|
114
114
|
Welcome to your StoryKeep
|
|
115
115
|
</h3>
|
|
116
|
-
<div className="
|
|
116
|
+
<div className="mt-2 text-sm text-mydarkgrey">
|
|
117
117
|
<p>
|
|
118
118
|
Complete your site's branding configuration to get started.
|
|
119
119
|
(And update as often as you like!)
|
|
@@ -100,8 +100,8 @@ export default function StoryKeepDashboard_Advanced({
|
|
|
100
100
|
const icon = status?.tursoEnabled ? '☁️' : '📁';
|
|
101
101
|
|
|
102
102
|
return (
|
|
103
|
-
<div className="bg-white shadow
|
|
104
|
-
<div className="px-4 py-5
|
|
103
|
+
<div className="sm:rounded-lg bg-white shadow">
|
|
104
|
+
<div className="sm:p-6 px-4 py-5">
|
|
105
105
|
<h3 className="text-base font-bold leading-6 text-gray-900">
|
|
106
106
|
Database Configuration
|
|
107
107
|
</h3>
|
|
@@ -288,7 +288,7 @@ export default function BeliefForm({
|
|
|
288
288
|
onChange={(e) => handleCustomValueChange(e.target.value)}
|
|
289
289
|
onKeyDown={handleKeyDown}
|
|
290
290
|
placeholder="Enter custom value"
|
|
291
|
-
className={`block w-full rounded-md border-0 px-3 py-1.5 text-gray-900 shadow-sm ring-1 ring-inset placeholder:text-gray-400 focus:ring-2 focus:ring-inset
|
|
291
|
+
className={`sm:text-sm sm:leading-6 block w-full rounded-md border-0 px-3 py-1.5 text-gray-900 shadow-sm ring-1 ring-inset placeholder:text-gray-400 focus:ring-2 focus:ring-inset ${
|
|
292
292
|
customValueError
|
|
293
293
|
? 'ring-red-500 focus:ring-red-600'
|
|
294
294
|
: 'ring-gray-300 focus:ring-cyan-600'
|