astro-tractstack 2.0.46 → 2.1.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.
Files changed (121) hide show
  1. package/README.md +35 -39
  2. package/package.json +25 -20
  3. package/templates/src/components/Footer.astro +4 -4
  4. package/templates/src/components/Header.astro +6 -6
  5. package/templates/src/components/Menu.tsx +15 -15
  6. package/templates/src/components/codehooks/BunnyVideoSetup.tsx +6 -6
  7. package/templates/src/components/codehooks/EpinetDurationSelector.tsx +3 -3
  8. package/templates/src/components/codehooks/FeaturedArticle.astro +1 -1
  9. package/templates/src/components/codehooks/FeaturedArticleSetup.tsx +3 -3
  10. package/templates/src/components/codehooks/ListContentSetup.tsx +2 -2
  11. package/templates/src/components/codehooks/ProductCardSetup.tsx +1 -1
  12. package/templates/src/components/codehooks/ProductGridSetup.tsx +2 -2
  13. package/templates/src/components/codehooks/SandboxRegisterForm.tsx +3 -3
  14. package/templates/src/components/compositor/Compositor.tsx +1 -1
  15. package/templates/src/components/compositor/elements/Belief.tsx +1 -1
  16. package/templates/src/components/compositor/elements/BunnyVideo.tsx +2 -2
  17. package/templates/src/components/compositor/elements/SignUp.tsx +1 -1
  18. package/templates/src/components/compositor/elements/ToggleBelief.tsx +1 -1
  19. package/templates/src/components/compositor/nodes/GhostInsertBlock.tsx +1 -1
  20. package/templates/src/components/compositor/nodes/GridLayout.tsx +1 -1
  21. package/templates/src/components/compositor/nodes/tagElements/TabIndicator.tsx +1 -1
  22. package/templates/src/components/compositor/preview/ListContentPreview.tsx +8 -8
  23. package/templates/src/components/edit/Header.tsx +1 -1
  24. package/templates/src/components/edit/SettingsPanel.tsx +3 -3
  25. package/templates/src/components/edit/ToolBar.tsx +3 -3
  26. package/templates/src/components/edit/ToolMode.tsx +5 -5
  27. package/templates/src/components/edit/pane/AddPanePanel.tsx +5 -5
  28. package/templates/src/components/edit/pane/AddPanePanel_break.tsx +6 -6
  29. package/templates/src/components/edit/pane/AddPanePanel_codehook.tsx +2 -2
  30. package/templates/src/components/edit/pane/AddPanePanel_new.tsx +2 -2
  31. package/templates/src/components/edit/pane/AddPanePanel_reuse.tsx +4 -4
  32. package/templates/src/components/edit/pane/AiRestylePaneModal.tsx +2 -2
  33. package/templates/src/components/edit/pane/ConfigPanePanel.tsx +1 -1
  34. package/templates/src/components/edit/pane/PanePanel_impression.tsx +4 -4
  35. package/templates/src/components/edit/pane/RestylePaneModal.tsx +3 -3
  36. package/templates/src/components/edit/pane/steps/AiDesignStep.tsx +2 -2
  37. package/templates/src/components/edit/pane/steps/CopyInputStep.tsx +5 -5
  38. package/templates/src/components/edit/panels/StyleBreakPanel.tsx +2 -2
  39. package/templates/src/components/edit/panels/StyleCodeHookPanel.tsx +6 -6
  40. package/templates/src/components/edit/panels/StyleElementPanel.tsx +5 -5
  41. package/templates/src/components/edit/panels/StyleElementPanel_add.tsx +6 -6
  42. package/templates/src/components/edit/panels/StyleElementPanel_remove.tsx +1 -1
  43. package/templates/src/components/edit/panels/StyleElementPanel_update.tsx +3 -3
  44. package/templates/src/components/edit/panels/StyleImagePanel.tsx +8 -8
  45. package/templates/src/components/edit/panels/StyleImagePanel_add.tsx +6 -6
  46. package/templates/src/components/edit/panels/StyleImagePanel_remove.tsx +1 -1
  47. package/templates/src/components/edit/panels/StyleImagePanel_update.tsx +3 -3
  48. package/templates/src/components/edit/panels/StyleLiElementPanel.tsx +4 -4
  49. package/templates/src/components/edit/panels/StyleLiElementPanel_add.tsx +6 -6
  50. package/templates/src/components/edit/panels/StyleLiElementPanel_remove.tsx +1 -1
  51. package/templates/src/components/edit/panels/StyleLiElementPanel_update.tsx +3 -3
  52. package/templates/src/components/edit/panels/StyleLinkPanel.tsx +5 -9
  53. package/templates/src/components/edit/panels/StyleLinkPanel_add.tsx +6 -6
  54. package/templates/src/components/edit/panels/StyleLinkPanel_remove.tsx +1 -1
  55. package/templates/src/components/edit/panels/StyleLinkPanel_update.tsx +1 -1
  56. package/templates/src/components/edit/panels/StyleParentPanel.tsx +9 -9
  57. package/templates/src/components/edit/panels/StyleParentPanel_add.tsx +6 -6
  58. package/templates/src/components/edit/panels/StyleParentPanel_deleteLayer.tsx +2 -2
  59. package/templates/src/components/edit/panels/StyleParentPanel_remove.tsx +1 -1
  60. package/templates/src/components/edit/panels/StyleParentPanel_update.tsx +1 -1
  61. package/templates/src/components/edit/panels/StyleWidgetPanel.tsx +7 -7
  62. package/templates/src/components/edit/panels/StyleWidgetPanel_add.tsx +6 -6
  63. package/templates/src/components/edit/panels/StyleWidgetPanel_remove.tsx +1 -1
  64. package/templates/src/components/edit/panels/StyleWidgetPanel_update.tsx +3 -3
  65. package/templates/src/components/edit/panels/StyleWordCarouselPanel.tsx +1 -1
  66. package/templates/src/components/edit/state/SaveModal.tsx +1 -1
  67. package/templates/src/components/edit/state/SaveToLibraryModal.tsx +2 -2
  68. package/templates/src/components/edit/state/StylesMemory.tsx +1 -1
  69. package/templates/src/components/edit/storyfragment/StoryFragmentConfigPanel.tsx +1 -1
  70. package/templates/src/components/edit/storyfragment/StoryFragmentPanel_menu.tsx +5 -5
  71. package/templates/src/components/edit/widgets/BunnyWidget.tsx +5 -5
  72. package/templates/src/components/edit/widgets/InteractiveDisclosureWidget.tsx +1 -1
  73. package/templates/src/components/edit/widgets/SignupWidget.tsx +3 -3
  74. package/templates/src/components/fields/ActionBuilderTimeSelector.tsx +7 -7
  75. package/templates/src/components/fields/ArtpackImage.tsx +15 -15
  76. package/templates/src/components/fields/BackgroundImage.tsx +13 -13
  77. package/templates/src/components/fields/BackgroundImageWrapper.tsx +3 -3
  78. package/templates/src/components/fields/ColorPickerCombo.tsx +8 -8
  79. package/templates/src/components/fields/ImageUpload.tsx +8 -8
  80. package/templates/src/components/fields/PaneBreakCollectionSelector.tsx +3 -3
  81. package/templates/src/components/fields/PaneBreakShapeSelector.tsx +4 -4
  82. package/templates/src/components/fields/SelectedTailwindClass.tsx +2 -2
  83. package/templates/src/components/fields/ViewportComboBox.tsx +4 -4
  84. package/templates/src/components/form/ActionBuilderField.tsx +1 -1
  85. package/templates/src/components/form/ActionBuilderSlugSelector.tsx +1 -1
  86. package/templates/src/components/form/UnsavedChangesBar.tsx +1 -1
  87. package/templates/src/components/form/advanced/APIConfigSection.tsx +2 -2
  88. package/templates/src/components/form/advanced/AuthConfigSection.tsx +2 -2
  89. package/templates/src/components/form/brand/BrandColorsSection.tsx +1 -1
  90. package/templates/src/components/profile/ProfileCreate.tsx +4 -4
  91. package/templates/src/components/profile/ProfileEdit.tsx +4 -4
  92. package/templates/src/components/profile/ProfileSwitch.tsx +2 -2
  93. package/templates/src/components/profile/ProfileUnlock.tsx +3 -3
  94. package/templates/src/components/search/SearchModal.tsx +10 -10
  95. package/templates/src/components/search/SearchResults.tsx +10 -10
  96. package/templates/src/components/search/SearchWrapper.tsx +1 -1
  97. package/templates/src/components/storykeep/Dashboard.tsx +1 -1
  98. package/templates/src/components/storykeep/Dashboard_Advanced.tsx +2 -2
  99. package/templates/src/components/storykeep/controls/content/BeliefForm.tsx +1 -1
  100. package/templates/src/components/storykeep/controls/content/ContentSummary.tsx +2 -2
  101. package/templates/src/components/storykeep/controls/content/KnownResourceTable.tsx +1 -1
  102. package/templates/src/components/storykeep/controls/content/ManageContent.tsx +2 -2
  103. package/templates/src/components/storykeep/controls/content/MenuForm.tsx +1 -1
  104. package/templates/src/components/storykeep/controls/content/ResourceTable.tsx +1 -1
  105. package/templates/src/components/widgets/Impression.tsx +2 -2
  106. package/templates/src/components/widgets/ImpressionWrapper.tsx +2 -2
  107. package/templates/src/constants.ts +4 -0
  108. package/templates/src/hooks/useSearch.ts +1 -1
  109. package/templates/src/layouts/Layout.astro +2 -2
  110. package/templates/src/pages/[...slug]/edit.astro +3 -3
  111. package/templates/src/pages/[...slug].astro +1 -1
  112. package/templates/src/pages/context/[...contextSlug]/edit.astro +3 -3
  113. package/templates/src/pages/maint.astro +9 -9
  114. package/templates/src/pages/sandbox.astro +3 -3
  115. package/templates/src/pages/storykeep/login.astro +6 -6
  116. package/templates/src/types/formTypes.ts +6 -4
  117. package/templates/src/types/nodeProps.ts +1 -1
  118. package/templates/src/types/tractstack.ts +1 -2
  119. package/templates/src/utils/actions/preParse_Action.ts +2 -8
  120. package/templates/src/utils/compositor/nodesHelper.ts +1 -1
  121. package/templates/src/utils/compositor/typeGuards.ts +3 -3
@@ -135,7 +135,7 @@ export const SignUp = ({
135
135
  </Select.Control>
136
136
  <Portal>
137
137
  <Select.Positioner>
138
- <Select.Content className="z-50 max-h-56 w-full overflow-auto rounded-md bg-white py-1 text-base shadow-lg ring-1 ring-black/5 focus:outline-none sm:text-sm">
138
+ <Select.Content className="sm:text-sm z-50 max-h-56 w-full overflow-auto rounded-md bg-white py-1 text-base shadow-lg ring-1 ring-black/5 focus:outline-none">
139
139
  {personaCollection.items.map((option) => (
140
140
  <Select.Item
141
141
  key={option.id}
@@ -19,7 +19,7 @@ export const ToggleBelief = ({ prompt }: { prompt: string }) => {
19
19
  >
20
20
  <Switch.Thumb
21
21
  className={classNames(
22
- `motion-safe:animate-wig translate-x-0`,
22
+ `translate-x-0 motion-safe:animate-wig`,
23
23
  `pointer-events-none inline-block h-5 w-5 rounded-full bg-white shadow ring-0 transition-transform duration-200 ease-in-out`
24
24
  )}
25
25
  />
@@ -108,7 +108,7 @@ export const GhostInsertBlock = memo((props: GhostInsertBlockProps) => {
108
108
  );
109
109
 
110
110
  const ElementButtons = () => (
111
- <div className="grid grid-cols-2 gap-2 p-2 sm:grid-cols-3">
111
+ <div className="sm:grid-cols-3 grid grid-cols-2 gap-2 p-2">
112
112
  {$toolAddModes
113
113
  .filter((mode) => !['p', 'h2', 'h3', 'h4'].includes(mode))
114
114
  .filter((mode) => allowedModes.includes(mode as ToolAddMode))
@@ -1,4 +1,4 @@
1
- import { useState, useEffect } from 'react';
1
+ import { useState, useEffect, type JSX } from 'react';
2
2
  import { useStore } from '@nanostores/react';
3
3
  import { getCtx } from '@/stores/nodes';
4
4
  import { RenderChildren } from './RenderChildren';
@@ -25,7 +25,7 @@ export default function TabIndicator({
25
25
 
26
26
  return (
27
27
  <div
28
- className="animate-fadeIn mt-1.5 flex cursor-pointer items-center border-t border-dashed border-cyan-500 py-1 text-sm hover:bg-cyan-50/20"
28
+ className="mt-1.5 flex animate-fadeIn cursor-pointer items-center border-t border-dashed border-cyan-500 py-1 text-sm hover:bg-cyan-50/20"
29
29
  onClick={handleClick}
30
30
  onKeyDown={handleKeyDown}
31
31
  tabIndex={0}
@@ -58,7 +58,7 @@ const StoryItem = ({
58
58
  <div className="flex-1">
59
59
  <h3 className="text-lg font-bold text-black">{story.title}</h3>
60
60
  {story.description && (
61
- <p className="text-myblack line-clamp-2 text-sm">{story.description}</p>
61
+ <p className="line-clamp-2 text-sm text-myblack">{story.description}</p>
62
62
  )}
63
63
  {showTopics && story.topics && story.topics.length > 0 && (
64
64
  <div className="mt-1 flex flex-wrap gap-1">
@@ -72,7 +72,7 @@ const StoryItem = ({
72
72
  ))}
73
73
  </div>
74
74
  )}
75
- <p className="text-mydarkgrey mt-1 text-xs">
75
+ <p className="mt-1 text-xs text-mydarkgrey">
76
76
  {formatDate(story.changed)}
77
77
  </p>
78
78
  </div>
@@ -136,8 +136,8 @@ const ListContentPreview = ({
136
136
  className={`px-4 py-2 text-sm font-bold ${
137
137
  currentMode === 'recent'
138
138
  ? 'bg-myblue text-white'
139
- : 'text-myblack bg-white hover:bg-gray-100'
140
- } border-myblue rounded-l-md border transition-colors`}
139
+ : 'bg-white text-myblack hover:bg-gray-100'
140
+ } rounded-l-md border border-myblue transition-colors`}
141
141
  onClick={() => {
142
142
  setCurrentMode('recent');
143
143
  setCurrentPage(1);
@@ -149,8 +149,8 @@ const ListContentPreview = ({
149
149
  className={`px-4 py-2 text-sm font-bold ${
150
150
  currentMode === 'popular'
151
151
  ? 'bg-myblue text-white'
152
- : 'text-myblack bg-white hover:bg-gray-100'
153
- } border-myblue rounded-r-md border transition-colors`}
152
+ : 'bg-white text-myblack hover:bg-gray-100'
153
+ } rounded-r-md border border-myblue transition-colors`}
154
154
  onClick={() => {
155
155
  setCurrentMode('popular');
156
156
  setCurrentPage(1);
@@ -190,14 +190,14 @@ const ListContentPreview = ({
190
190
  aria-label="Pagination"
191
191
  >
192
192
  <button
193
- className="text-myblack rounded-l-md border border-gray-300 bg-white px-4 py-2 text-sm font-bold hover:bg-gray-100 disabled:cursor-not-allowed disabled:opacity-50"
193
+ className="rounded-l-md border border-gray-300 bg-white px-4 py-2 text-sm font-bold text-myblack hover:bg-gray-100 disabled:cursor-not-allowed disabled:opacity-50"
194
194
  disabled={currentPage <= 1}
195
195
  onClick={() => setCurrentPage((prev) => prev - 1)}
196
196
  >
197
197
  Previous
198
198
  </button>
199
199
  <button
200
- className="hover:bg-myblue-dark border-myblue bg-myblue rounded-r-md border px-4 py-2 text-sm font-bold text-white disabled:cursor-not-allowed disabled:opacity-50"
200
+ className="hover:bg-myblue-dark rounded-r-md border border-myblue bg-myblue px-4 py-2 text-sm font-bold text-white disabled:cursor-not-allowed disabled:opacity-50"
201
201
  disabled={currentPage >= totalPages}
202
202
  onClick={() => setCurrentPage((prev) => prev + 1)}
203
203
  >
@@ -176,7 +176,7 @@ const StoryKeepHeader = ({
176
176
  <div className="flex flex-wrap items-center justify-center gap-2 text-sm">
177
177
  <button
178
178
  onClick={handleSave}
179
- className="bg-myblue font-action hover:bg-myorange rounded-md px-3.5 py-1.5 font-bold text-white"
179
+ className="rounded-md bg-myblue px-3.5 py-1.5 font-action font-bold text-white hover:bg-myorange"
180
180
  >
181
181
  Save
182
182
  </button>
@@ -24,7 +24,7 @@ const SettingsPanel = ({ availableCodeHooks }: SettingsPanelProps) => {
24
24
 
25
25
  return (
26
26
  <div
27
- className="bg-mydarkgrey flex h-full min-w-96 max-w-sm flex-col rounded-xl bg-opacity-20 p-0.5 backdrop-blur-sm"
27
+ className="flex h-full min-w-96 max-w-sm flex-col rounded-xl bg-mydarkgrey bg-opacity-20 p-0.5 backdrop-blur-sm"
28
28
  style={
29
29
  {
30
30
  animation: window.matchMedia(
@@ -50,10 +50,10 @@ const SettingsPanel = ({ availableCodeHooks }: SettingsPanelProps) => {
50
50
  {/* Header Section (fixed height) */}
51
51
  <div className="flex-shrink-0 p-1.5 md:p-2.5">
52
52
  <div className="mb-4 flex items-center justify-between">
53
- <h3 className="text-myblue text-lg font-bold">{panelTitle}</h3>
53
+ <h3 className="text-lg font-bold text-myblue">{panelTitle}</h3>
54
54
  <button
55
55
  onClick={() => settingsPanelStore.set(null)}
56
- className="hover:text-myblue text-gray-500"
56
+ className="text-gray-500 hover:text-myblue"
57
57
  >
58
58
  <XMarkIcon className="h-5 w-5" />
59
59
  </button>
@@ -27,7 +27,7 @@ const AddElementsPanel = ({
27
27
  className={`rounded px-3 py-1.5 text-sm font-bold transition-colors ${
28
28
  currentToolAddMode === mode
29
29
  ? 'bg-myblue text-white'
30
- : 'text-myblue hover:bg-myblue/10 border border-gray-200 bg-white'
30
+ : 'border border-gray-200 bg-white text-myblue hover:bg-myblue/10'
31
31
  }`}
32
32
  >
33
33
  {toolAddModeTitles[mode]}
@@ -52,13 +52,13 @@ const StoryKeepToolBar = () => {
52
52
  return (
53
53
  <div className="w-full max-w-lg rounded-lg border border-gray-200 bg-white p-4 shadow-xl">
54
54
  <div className="mb-4 flex items-center justify-between">
55
- <h3 className="text-myblue text-lg font-bold">Add Elements</h3>
55
+ <h3 className="text-lg font-bold text-myblue">Add Elements</h3>
56
56
  <button
57
57
  onClick={() => {
58
58
  ctx.toolModeValStore.set({ value: `text` });
59
59
  toggleSettingsPanel;
60
60
  }}
61
- className="hover:text-myblue text-gray-500"
61
+ className="text-gray-500 hover:text-myblue"
62
62
  >
63
63
  <XMarkIcon className="h-5 w-5" />
64
64
  </button>
@@ -135,15 +135,15 @@ const StoryKeepToolMode = ({ isContext }: StoryKeepToolModeProps) => {
135
135
  id="mainNav"
136
136
  ref={navRef}
137
137
  className={classNames(
138
- 'z-102 bg-mywhite md:bg-mywhite/70 fixed bottom-0 left-0 right-0 p-1.5 md:bottom-2 md:right-auto md:h-auto md:w-auto md:rounded-r-xl md:border md:border-black/5 md:p-2 md:shadow-lg md:backdrop-blur-sm',
138
+ 'fixed bottom-0 left-0 right-0 z-102 bg-mywhite p-1.5 md:bottom-2 md:right-auto md:h-auto md:w-auto md:rounded-r-xl md:border md:border-black/5 md:bg-mywhite/70 md:p-2 md:shadow-lg md:backdrop-blur-sm',
139
139
  isSelectionActive ? `outline-dashed outline-4 outline-red-600` : ``
140
140
  )}
141
141
  >
142
142
  {!isSelectionActive && (
143
143
  <div className="flex flex-wrap justify-around gap-4 py-0.5 md:flex-nowrap md:justify-start md:gap-4 md:p-0">
144
- <div className="text-mydarkgrey text-center text-sm font-bold">
144
+ <div className="text-center text-sm font-bold text-mydarkgrey">
145
145
  mode:
146
- <div className="font-action text-myblue pt-1.5 text-center text-xs">
146
+ <div className="pt-1.5 text-center font-action text-xs text-myblue">
147
147
  {currentToolMode.title}
148
148
  </div>
149
149
  </div>
@@ -164,9 +164,9 @@ const StoryKeepToolMode = ({ isContext }: StoryKeepToolModeProps) => {
164
164
 
165
165
  {isSelectionActive && (
166
166
  <div className="flex items-center justify-around gap-x-2 py-0.5 md:justify-start md:p-0">
167
- <div className="text-mydarkgrey text-center text-sm font-bold">
167
+ <div className="text-center text-sm font-bold text-mydarkgrey">
168
168
  mode:
169
- <div className="font-action text-myblue pt-1.5 text-center text-xs">
169
+ <div className="pt-1.5 text-center font-action text-xs text-myblue">
170
170
  Action Pending
171
171
  </div>
172
172
  </div>
@@ -58,9 +58,9 @@ const AddPanePanel = ({
58
58
  };
59
59
 
60
60
  return (
61
- <div className="add-pane-panel-wrapper border-mydarkgrey border-b-2 border-t-2 border-dotted">
61
+ <div className="add-pane-panel-wrapper border-b-2 border-t-2 border-dotted border-mydarkgrey">
62
62
  {isExpanded && (
63
- <div className="border-mylightgrey border-t border-dotted">
63
+ <div className="border-t border-dotted border-mylightgrey">
64
64
  <div className="group flex w-full flex-wrap items-center gap-2 px-1.5 pb-0.5 pt-1.5">
65
65
  <button
66
66
  onClick={() => {
@@ -112,7 +112,7 @@ const AddPanePanel = ({
112
112
  isContextPane={isContextPane}
113
113
  />
114
114
  ) : isExpanded ? (
115
- <div className="border-mylightgrey border-t border-dotted">
115
+ <div className="border-t border-dotted border-mylightgrey">
116
116
  <div className="group flex w-full flex-wrap items-center gap-2 px-1.5 pb-0.5 pt-1.5">
117
117
  <div className={`flex flex-wrap gap-1 transition-opacity`}>
118
118
  <button
@@ -157,13 +157,13 @@ const AddPanePanel = ({
157
157
  </div>
158
158
  </div>
159
159
  ) : (
160
- <div className="border-mylightgrey flex border-t border-dotted p-0.5">
160
+ <div className="flex border-t border-dotted border-mylightgrey p-0.5">
161
161
  <button
162
162
  onClick={() => setIsExpanded(true)}
163
163
  title="Insert Pane here"
164
164
  className="group w-full text-gray-500"
165
165
  >
166
- <div className="text-mydarkgrey hover:bg-myoffwhite rounded-md transition-colors duration-150 ease-in-out hover:bg-opacity-50 hover:mix-blend-difference">
166
+ <div className="rounded-md text-mydarkgrey transition-colors duration-150 ease-in-out hover:bg-myoffwhite hover:bg-opacity-50 hover:mix-blend-difference">
167
167
  <PlusCircleIcon className="mx-auto h-8 w-8" />
168
168
  </div>
169
169
  </button>
@@ -307,7 +307,7 @@ const AddPaneBreakPanel = ({
307
307
  </button>
308
308
 
309
309
  <div className="ml-4 flex flex-wrap items-center gap-x-6 gap-y-2 py-2">
310
- <div className="font-action flex-none rounded px-2 py-2.5 text-sm font-bold text-cyan-700 shadow-sm">
310
+ <div className="flex-none rounded px-2 py-2.5 font-action text-sm font-bold text-cyan-700 shadow-sm">
311
311
  + Visual Break
312
312
  </div>
313
313
 
@@ -327,7 +327,7 @@ const AddPaneBreakPanel = ({
327
327
  composite={true}
328
328
  >
329
329
  <div className="relative">
330
- <div className="relative w-full cursor-default overflow-hidden rounded-lg bg-white text-left shadow-md focus:outline-none focus-visible:ring-2 focus-visible:ring-white/75 focus-visible:ring-offset-2 focus-visible:ring-offset-teal-300 sm:text-sm">
330
+ <div className="sm:text-sm relative w-full cursor-default overflow-hidden rounded-lg bg-white text-left shadow-md focus:outline-none focus-visible:ring-2 focus-visible:ring-white/75 focus-visible:ring-offset-2 focus-visible:ring-offset-teal-300">
331
331
  <Combobox.Input
332
332
  autoComplete="off"
333
333
  className="w-full border-none py-2 pl-3 pr-10 text-sm leading-5 text-gray-900 focus:ring-0"
@@ -341,7 +341,7 @@ const AddPaneBreakPanel = ({
341
341
  </Combobox.Trigger>
342
342
  </div>
343
343
 
344
- <Combobox.Content className="absolute z-50 mt-1 max-h-60 w-full overflow-auto rounded-md bg-white py-1 text-base shadow-lg ring-1 ring-black/5 focus:outline-none sm:text-sm">
344
+ <Combobox.Content className="sm:text-sm absolute z-50 mt-1 max-h-60 w-full overflow-auto rounded-md bg-white py-1 text-base shadow-lg ring-1 ring-black/5 focus:outline-none">
345
345
  {collection.items.length === 0 ? (
346
346
  <div className="relative cursor-default select-none px-4 py-2 text-gray-700">
347
347
  Nothing found.
@@ -369,7 +369,7 @@ const AddPaneBreakPanel = ({
369
369
  </div>
370
370
  </div>
371
371
 
372
- <h3 className="font-action px-3.5 pb-1.5 pt-4 text-xl font-bold text-black">
372
+ <h3 className="px-3.5 pb-1.5 pt-4 font-action text-xl font-bold text-black">
373
373
  Click on a break design to use:
374
374
  </h3>
375
375
 
@@ -390,7 +390,7 @@ const AddPaneBreakPanel = ({
390
390
  onClick={() =>
391
391
  handleVisualBreakInsert(preview.variant, nodeId, first)
392
392
  }
393
- className={`bg-mywhite group relative w-full cursor-pointer rounded-sm shadow-inner transition-all duration-200 ${
393
+ className={`group relative w-full cursor-pointer rounded-sm bg-mywhite shadow-inner transition-all duration-200 ${
394
394
  preview.snapshot
395
395
  ? 'hover:outline-solid hover:outline hover:outline-4'
396
396
  : ''
@@ -434,7 +434,7 @@ const AddPaneBreakPanel = ({
434
434
  className="w-full"
435
435
  />
436
436
  </div>
437
- <div className="bg-mydarkgrey group-hover:bg-myblack absolute bottom-0 left-0 right-0 rounded-t-md px-2 py-1 text-sm text-white">
437
+ <div className="absolute bottom-0 left-0 right-0 rounded-t-md bg-mydarkgrey px-2 py-1 text-sm text-white group-hover:bg-myblack">
438
438
  {preview.variant}
439
439
  </div>
440
440
  </>
@@ -182,7 +182,7 @@ const AddPaneCodeHookPanel = ({
182
182
  ← Go Back
183
183
  </button>
184
184
 
185
- <div className="font-action flex-none rounded px-2 py-2.5 text-sm font-bold text-cyan-700 shadow-sm">
185
+ <div className="flex-none rounded px-2 py-2.5 font-action text-sm font-bold text-cyan-700 shadow-sm">
186
186
  Add Code Hook
187
187
  </div>
188
188
  </div>
@@ -212,7 +212,7 @@ const AddPaneCodeHookPanel = ({
212
212
  </Combobox.Trigger>
213
213
  </div>
214
214
 
215
- <Combobox.Content className="absolute z-50 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 sm:text-sm">
215
+ <Combobox.Content className="sm:text-sm absolute z-50 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">
216
216
  {collection.items.length === 0 ? (
217
217
  <div className="relative cursor-default select-none px-4 py-2 text-gray-700">
218
218
  Nothing found.
@@ -621,7 +621,7 @@ const AddPaneNewPanel = ({
621
621
 
622
622
  const renderInitialStep = () => (
623
623
  <div className="p-4">
624
- <h3 className="font-action mb-4 text-center text-xl font-bold text-gray-800">
624
+ <h3 className="mb-4 text-center font-action text-xl font-bold text-gray-800">
625
625
  How would you like to design your new pane?
626
626
  </h3>
627
627
  <div className="grid grid-cols-1 gap-4 md:grid-cols-3">
@@ -854,7 +854,7 @@ const AddPaneNewPanel = ({
854
854
  >
855
855
  ← Go Back
856
856
  </button>
857
- <div className="font-action ml-4 flex-none rounded px-2 py-2.5 text-sm font-bold text-cyan-700 shadow-sm">
857
+ <div className="ml-4 flex-none rounded px-2 py-2.5 font-action text-sm font-bold text-cyan-700 shadow-sm">
858
858
  + Design New Pane
859
859
  </div>
860
860
  </div>
@@ -309,7 +309,7 @@ const AddPaneReUsePanel = ({
309
309
  ← Go Back
310
310
  </button>
311
311
 
312
- <div className="font-action flex-none rounded px-2 py-2.5 text-sm font-bold text-cyan-700 shadow-sm">
312
+ <div className="flex-none rounded px-2 py-2.5 font-action text-sm font-bold text-cyan-700 shadow-sm">
313
313
  Re-use Existing Pane
314
314
  </div>
315
315
  </div>
@@ -340,7 +340,7 @@ const AddPaneReUsePanel = ({
340
340
  </div>
341
341
  </div>
342
342
 
343
- <h3 className="font-action px-3.5 pb-1.5 pt-4 text-xl font-bold text-black">
343
+ <h3 className="px-3.5 pb-1.5 pt-4 font-action text-xl font-bold text-black">
344
344
  Click on a pane to reuse:
345
345
  </h3>
346
346
 
@@ -349,7 +349,7 @@ const AddPaneReUsePanel = ({
349
349
  <div key={preview.pane.id} className="flex flex-col items-center">
350
350
  <div
351
351
  onClick={() => handlePaneReuse(preview.pane.id, nodeId, first)}
352
- className="hover:outline-solid bg-mywhite group relative w-full cursor-pointer rounded-sm shadow-inner transition-all duration-200 hover:outline hover:outline-4"
352
+ className="hover:outline-solid group relative w-full cursor-pointer rounded-sm bg-mywhite shadow-inner transition-all duration-200 hover:outline hover:outline-4"
353
353
  style={{
354
354
  ...(!preview.snapshot ? { minHeight: '75px' } : {}),
355
355
  }}
@@ -391,7 +391,7 @@ const AddPaneReUsePanel = ({
391
391
  </div>
392
392
  )}
393
393
  </div>
394
- <p className="bg-mydarkgrey mt-2 w-full break-words p-2 text-center text-sm text-white">
394
+ <p className="mt-2 w-full break-words bg-mydarkgrey p-2 text-center text-sm text-white">
395
395
  {preview.pane.title}
396
396
  </p>
397
397
  </div>
@@ -163,8 +163,8 @@ export const AiRestylePaneModal = ({
163
163
  open={isAiRestyleModalOpen}
164
164
  onOpenChange={(e) => !e.open && handleClose()}
165
165
  >
166
- <Dialog.Backdrop className="z-103 fixed inset-0 bg-black bg-opacity-75" />
167
- <Dialog.Positioner className="z-104 fixed inset-0 flex items-center justify-center p-4">
166
+ <Dialog.Backdrop className="fixed inset-0 z-103 bg-black bg-opacity-75" />
167
+ <Dialog.Positioner className="fixed inset-0 z-104 flex items-center justify-center p-4">
168
168
  <Dialog.Content className="flex max-w-2xl flex-col rounded-lg bg-white shadow-2xl">
169
169
  <div className="flex items-center justify-between border-b p-4">
170
170
  <h3 className="flex items-center gap-2 text-lg font-bold">
@@ -109,7 +109,7 @@ const ConfigPanePanel = ({ nodeId }: ConfigPanePanelProps) => {
109
109
 
110
110
  return (
111
111
  <div
112
- className="border-mylightgrey bg-myoffwhite border-t border-dotted"
112
+ className="border-t border-dotted border-mylightgrey bg-myoffwhite"
113
113
  style={bgColorStyles}
114
114
  >
115
115
  <div className="group w-full rounded-t-md px-1.5 pb-0.5 pt-1.5">
@@ -182,7 +182,7 @@ const PaneImpressionPanel = ({ nodeId, setMode }: PaneImpressionPanelProps) => {
182
182
 
183
183
  <div className="space-y-4">
184
184
  <div>
185
- <label className="text-mydarkgrey block text-sm">Title</label>
185
+ <label className="block text-sm text-mydarkgrey">Title</label>
186
186
  <input
187
187
  type="text"
188
188
  value={formData.title}
@@ -194,7 +194,7 @@ const PaneImpressionPanel = ({ nodeId, setMode }: PaneImpressionPanelProps) => {
194
194
  </div>
195
195
 
196
196
  <div>
197
- <label className="text-mydarkgrey block text-sm">Body</label>
197
+ <label className="block text-sm text-mydarkgrey">Body</label>
198
198
  <textarea
199
199
  value={formData.body}
200
200
  onChange={(e) => handleInputChange('body', e.target.value)}
@@ -205,7 +205,7 @@ const PaneImpressionPanel = ({ nodeId, setMode }: PaneImpressionPanelProps) => {
205
205
  </div>
206
206
 
207
207
  <div>
208
- <label className="text-mydarkgrey block text-sm">Button Text</label>
208
+ <label className="block text-sm text-mydarkgrey">Button Text</label>
209
209
  <input
210
210
  type="text"
211
211
  value={formData.buttonText}
@@ -217,7 +217,7 @@ const PaneImpressionPanel = ({ nodeId, setMode }: PaneImpressionPanelProps) => {
217
217
  </div>
218
218
 
219
219
  <div className="relative">
220
- <label className="text-mydarkgrey block text-sm">Actions</label>
220
+ <label className="block text-sm text-mydarkgrey">Actions</label>
221
221
  <ActionBuilderField
222
222
  value={formData.actionsLisp}
223
223
  onChange={(value) => handleInputChange('actionsLisp', value)}
@@ -354,8 +354,8 @@ export const RestylePaneModal = () => {
354
354
  modal={true}
355
355
  preventScroll={true}
356
356
  >
357
- <Dialog.Backdrop className="z-103 fixed inset-0 bg-black bg-opacity-75" />
358
- <Dialog.Positioner className="z-104 fixed inset-0 flex items-center justify-center">
357
+ <Dialog.Backdrop className="fixed inset-0 z-103 bg-black bg-opacity-75" />
358
+ <Dialog.Positioner className="fixed inset-0 z-104 flex items-center justify-center">
359
359
  <Dialog.Content
360
360
  ref={contentRef}
361
361
  className="flex max-w-5xl flex-col rounded-lg bg-white shadow-2xl xl:max-w-7xl"
@@ -450,7 +450,7 @@ export const RestylePaneModal = () => {
450
450
  <p className="text-gray-500">No designs found.</p>
451
451
  </div>
452
452
  ) : (
453
- <div className="grid grid-cols-1 gap-6 md:grid-cols-2 lg:grid-cols-3">
453
+ <div className="lg:grid-cols-3 grid grid-cols-1 gap-6 md:grid-cols-2">
454
454
  {mergedTemplates.map(({ template }) => (
455
455
  <TemplatePreviewItem
456
456
  key={template.id}
@@ -78,7 +78,7 @@ export const AiDesignStep = ({
78
78
  </div>
79
79
  </div>
80
80
 
81
- <div className="grid grid-cols-1 gap-4 sm:grid-cols-2">
81
+ <div className="sm:grid-cols-2 grid grid-cols-1 gap-4">
82
82
  <div>
83
83
  <ColorPickerCombo
84
84
  title="Base Color (Optional)"
@@ -141,7 +141,7 @@ export const AiDesignStep = ({
141
141
  onChange={(e) => updateField('additionalNotes', e.target.value)}
142
142
  placeholder="Enter additional notes..."
143
143
  rows={3}
144
- className="block w-full rounded-md border-gray-300 p-2 shadow-sm focus:border-cyan-500 focus:ring-cyan-500 sm:text-sm"
144
+ className="sm:text-sm block w-full rounded-md border-gray-300 p-2 shadow-sm focus:border-cyan-500 focus:ring-cyan-500"
145
145
  />
146
146
  </div>
147
147
  </div>
@@ -154,7 +154,7 @@ export const CopyInputStep = ({
154
154
  onChange={(e) => onTopicChange(e.target.value)}
155
155
  placeholder="e.g. a SaaS product for team collaboration"
156
156
  rows={2}
157
- className="block w-full rounded-md border-gray-300 p-2 shadow-sm focus:border-cyan-500 focus:ring-cyan-500 sm:text-sm"
157
+ className="sm:text-sm block w-full rounded-md border-gray-300 p-2 shadow-sm focus:border-cyan-500 focus:ring-cyan-500"
158
158
  />
159
159
  </div>
160
160
 
@@ -178,7 +178,7 @@ export const CopyInputStep = ({
178
178
  value={promptValue}
179
179
  onChange={(e) => onPromptValueChange(e.target.value)}
180
180
  rows={4}
181
- className="block w-full rounded-md border-gray-300 p-2 shadow-sm focus:border-cyan-500 focus:ring-cyan-500 sm:text-sm"
181
+ className="sm:text-sm block w-full rounded-md border-gray-300 p-2 shadow-sm focus:border-cyan-500 focus:ring-cyan-500"
182
182
  />
183
183
  <p className="mt-1 text-xs text-gray-500">
184
184
  Leave [topic] as it will be replaced with your prompt.
@@ -194,7 +194,7 @@ export const CopyInputStep = ({
194
194
  value={overallPrompt}
195
195
  onChange={(e) => onOverallPromptChange(e.target.value)}
196
196
  rows={3}
197
- className="block w-full rounded-md border-gray-300 p-2 shadow-sm focus:border-cyan-500 focus:ring-cyan-500 sm:text-sm"
197
+ className="sm:text-sm block w-full rounded-md border-gray-300 p-2 shadow-sm focus:border-cyan-500 focus:ring-cyan-500"
198
198
  />
199
199
  </div>
200
200
  <div className="grid grid-cols-1 gap-6 md:grid-cols-2">
@@ -206,7 +206,7 @@ export const CopyInputStep = ({
206
206
  value={promptValueCol1}
207
207
  onChange={(e) => onPromptValueCol1Change(e.target.value)}
208
208
  rows={4}
209
- className="block w-full rounded-md border-gray-300 p-2 shadow-sm focus:border-cyan-500 focus:ring-cyan-500 sm:text-sm"
209
+ className="sm:text-sm block w-full rounded-md border-gray-300 p-2 shadow-sm focus:border-cyan-500 focus:ring-cyan-500"
210
210
  />
211
211
  </div>
212
212
  <div>
@@ -217,7 +217,7 @@ export const CopyInputStep = ({
217
217
  value={promptValueCol2}
218
218
  onChange={(e) => onPromptValueCol2Change(e.target.value)}
219
219
  rows={4}
220
- className="block w-full rounded-md border-gray-300 p-2 shadow-sm focus:border-cyan-500 focus:ring-cyan-500 sm:text-sm"
220
+ className="sm:text-sm block w-full rounded-md border-gray-300 p-2 shadow-sm focus:border-cyan-500 focus:ring-cyan-500"
221
221
  />
222
222
  </div>
223
223
  </div>
@@ -115,7 +115,7 @@ const StyleBreakPanel = ({ node, parentNode }: BasePanelProps) => {
115
115
  <div className="space-y-4">
116
116
  {collections.length > 1 && (
117
117
  <div className="space-y-2">
118
- <span className="text-mydarkgrey block text-sm">Collection</span>
118
+ <span className="block text-sm text-mydarkgrey">Collection</span>
119
119
  <PaneBreakCollectionSelector
120
120
  selectedCollection={settings.collection}
121
121
  onChange={(collection) =>
@@ -126,7 +126,7 @@ const StyleBreakPanel = ({ node, parentNode }: BasePanelProps) => {
126
126
  )}
127
127
 
128
128
  <div className="space-y-2">
129
- <span className="text-mydarkgrey block text-sm">
129
+ <span className="block text-sm text-mydarkgrey">
130
130
  Shapes (for each screen size)
131
131
  </span>
132
132
  <div className="space-y-1">
@@ -310,7 +310,7 @@ const StyleCodeHookPanel = ({
310
310
  <div className="space-y-4">
311
311
  {/* Target ComboBox */}
312
312
  <div className="max-w-md">
313
- <label className="text-mydarkgrey block text-sm">Target</label>
313
+ <label className="block text-sm text-mydarkgrey">Target</label>
314
314
  <div className="relative mt-1">
315
315
  <Combobox.Root
316
316
  collection={collection}
@@ -336,7 +336,7 @@ const StyleCodeHookPanel = ({
336
336
  />
337
337
  <Combobox.Trigger className="absolute inset-y-0 right-0 flex items-center pr-2">
338
338
  <ChevronUpDownIcon
339
- className="text-mydarkgrey h-5 w-5"
339
+ className="h-5 w-5 text-mydarkgrey"
340
340
  aria-hidden="true"
341
341
  />
342
342
  </Combobox.Trigger>
@@ -345,9 +345,9 @@ const StyleCodeHookPanel = ({
345
345
 
346
346
  <Portal>
347
347
  <Combobox.Positioner style={{ zIndex: 1002 }}>
348
- <Combobox.Content className="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 sm:text-sm">
348
+ <Combobox.Content className="sm:text-sm 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">
349
349
  {collection.items.length === 0 ? (
350
- <div className="text-mydarkgrey relative cursor-default select-none px-4 py-2">
350
+ <div className="relative cursor-default select-none px-4 py-2 text-mydarkgrey">
351
351
  Nothing found.
352
352
  </div>
353
353
  ) : (
@@ -381,7 +381,7 @@ const StyleCodeHookPanel = ({
381
381
 
382
382
  {/* Options section */}
383
383
  <div>
384
- <label className="text-mydarkgrey block text-sm">Options</label>
384
+ <label className="block text-sm text-mydarkgrey">Options</label>
385
385
  {localOptions.map((option, index) => (
386
386
  <div key={index} className="mt-2 flex items-center space-x-2">
387
387
  <input
@@ -436,7 +436,7 @@ const StyleCodeHookPanel = ({
436
436
  ))}
437
437
  <button
438
438
  onClick={addOption}
439
- className="text-myblue mt-2 flex items-center hover:text-cyan-600"
439
+ className="mt-2 flex items-center text-myblue hover:text-cyan-600"
440
440
  >
441
441
  <PlusIcon className="mr-1 h-5 w-5" />
442
442
  Add Option
@@ -254,7 +254,7 @@ const StyleElementPanel = ({
254
254
  <div className="space-y-4">
255
255
  {node.wordCarouselPayload && (
256
256
  <div className="pb-2">
257
- <div className="text-myblack hover:bg-mygreen/20 w-fit rounded border border-slate-200 p-2 text-sm">
257
+ <div className="w-fit rounded border border-slate-200 p-2 text-sm text-myblack hover:bg-mygreen/20">
258
258
  <div
259
259
  title="Configure Word Carousel"
260
260
  className="flex items-center gap-2 font-bold"
@@ -279,7 +279,7 @@ const StyleElementPanel = ({
279
279
  {shouldShowQuickStyles ? (
280
280
  <div className="space-y-6">
281
281
  <div className="space-y-2">
282
- <h3 className="text-mydarkgrey text-sm font-bold">
282
+ <h3 className="text-sm font-bold text-mydarkgrey">
283
283
  Quick Style Selection
284
284
  </h3>
285
285
  <p className="text-xs text-gray-500">
@@ -313,7 +313,7 @@ const StyleElementPanel = ({
313
313
  <div className="border-t border-gray-100 pt-4">
314
314
  <button
315
315
  onClick={() => setShowPresets(false)}
316
- className="text-myblue w-full text-center text-sm underline hover:text-black"
316
+ className="w-full text-center text-sm text-myblue underline hover:text-black"
317
317
  >
318
318
  Apply your own styles manually
319
319
  </button>
@@ -340,14 +340,14 @@ const StyleElementPanel = ({
340
340
  )}
341
341
 
342
342
  <div className="space-y-4">
343
- <ul className="text-mydarkgrey flex flex-wrap gap-x-4 gap-y-1">
343
+ <ul className="flex flex-wrap gap-x-4 gap-y-1 text-mydarkgrey">
344
344
  <li>
345
345
  <em>Actions:</em>
346
346
  </li>
347
347
  <li>
348
348
  <button
349
349
  onClick={() => handleClickAdd()}
350
- className="text-myblue font-bold underline hover:text-black"
350
+ className="font-bold text-myblue underline hover:text-black"
351
351
  >
352
352
  Add Style
353
353
  </button>