Now I'll make all the necessary changes:
Now let me update the BuilderPreview to handle the new section types:
Now let me read the builder-sidebar to ensure the rich text editor panel works correctly with the new page-title:
Now let me update the delete check in the sidebar to prevent fixed sections from being deleted:
I've made all the requested changes:
shop-title to page-title across all filesisFixed: true to their configs and updated the delete logic to prevent deletionThe preview now shows: Header > Page Title > Catalog collection > Footer, matching the Shopify-style builder layout in your screenshots.
Added the missing DialogDescription component to fix the accessibility warning. The description is visually hidden using sr-only class but available for screen readers, which resolves the Radix UI warning about missing aria-describedby.
Now I need to:
page-title from the editable sections list (so clicking it won't open the editor)Now I need to update the SectionItem component to allow the Page Title to NOT be draggable, but still allow other sections to be dropped around it (above/below):
I've updated the Page Title section to be locked:
The distinction is: Header/Footer are completely fixed (no interaction), while Page Title and Catalog Collection are locked (can't drag them but other sections can be dropped around them).
The add-section-dialog already has the DialogDescription. Let me check the dialog.tsx component itself to see if there's an issue with how it handles aria-describedby:
The warnings are from Radix UI's DialogContent expecting a Description component to be present. The add-section-dialog already has it, so the warning is likely triggered on mount/unmount cycles. I can fix this at the dialog.tsx component level by adding aria-describedby={undefined} when no description is present:
Added aria-describedby={undefined} to the DialogContent component to suppress the Radix UI warning. This explicitly tells Radix that we're intentionally not providing a description, which silences the warning while maintaining proper accessibility when a DialogDescription is provided (since {...props} comes after and will override with the correct value).
You can send messages while the preview loads