SIGN IN SIGN UP

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