Add widget layout settings flow (#24446)
> **Stack** (split of #24434, review bottom-up) > 1. #24444 Simplify widget rendering surfaces > 2. #24445 Unify vertical list widget layout > 3. #24446 Add widget layout settings flow ## Goal Make widgets predictable across record pages, side panels, and edit mode. This PR adds the settings surface on top of the architecture from #24444 and #24445, so placement and visibility are editable from the widget itself rather than only from tab settings. Based on #24445. ## What changes New `PageLayoutWidgetSettings` side-panel page, backed by `SidePanelPageLayoutWidgetSettings`. `useOpenWidgetSettingsInSidePanel` routes into it, and the header info, icon, and title helpers know about it. Placement moves into `useWidgetSettingsPlacement`, which drives the placement section and the move-to-tab dropdown. `shouldShowAddWidgetBelow` decides when the add-below affordance applies, following the fit-content and viewport-filling rules from #24445. Now that single-widget tabs are derived rather than stored, the solo naming goes with it: - `SoloTabSettingsContent` becomes `SingleWidgetTabSettingsContent` - `SoloTabWidgetVisibilityDropdownContent` becomes `WidgetVisibilityOptionsList`, shared by the widget and single-widget-tab visibility dropdowns `TabPresentation` and `getTabPresentation` are removed, since presentation is derived from the tab's widgets. ## Before/After These show the end state of the full stack. <img width="823" height="786" alt="image" src="https://github.com/user-attachments/assets/876c85d3-0266-4e64-b1db-b1115f346f11" /> <img width="975" height="681" alt="image" src="https://github.com/user-attachments/assets/eeef236c-490e-415d-861d-3b1a27333460" /> Record-page widgets keep the same viewport-aware layout in view and edit modes: the active Timeline widget fills to the viewport edge while fit-content widgets remain independently stackable. <img width="2560" height="720" alt="Record layout in view mode and edit mode" src="https://github.com/user-attachments/assets/3c4a0e6a-6a4f-4267-b4d1-9ec09aa25d8a" />
T
Thomas des Francs committed
e211040a6babfe513a22df4c776dc76111a9afcc
Parent: e02fc28
Committed by GitHub <noreply@github.com>
on 8/25/2026, 7:57:20 AM