Simplify widget rendering surfaces (#24444)
> **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 takes the **widgets own content** half of that: one rendering surface per widget, no matter which host it sits in. ## What changes The shared card shell owns framing, padding, headers, permissions, and edit state. Widget bodies only own their domain UI. That removes the record/non-record rendering fork: `RecordPageWidgetRenderer` and `NonRecordPageWidgetRenderer` are gone, and `WidgetRenderer` is the single entry point. It also separates sizing from presentation. `WidgetCardVariant` drops the host-specific list (`solo`, `side-column`, `dashboard`, `standalone`, `record-page`) for two presentation values: - `framed` renders the card chrome. - `flush` renders the content without it. Padding is derived from the widget type through `getWidgetContentPadding` rather than decided per host, and `useIsSideColumnContext` replaces the ad hoc host checks. The hard-coded `StackedWidgetMaxHeight` constant and `useIsCurrentWidgetLastOfTab` are removed. Heights are no longer pinned per widget. The sizing rules that replace them land in #24445. The settings and activities card consumers change because `CardContent` no longer resets its own hover background, and two wrapper selectors were tightened from `> *` to `> div` so they stop applying to the card's non-element children. ## Notes No behavior change is intended in this PR on its own.
T
Thomas des Francs committed
e500849b4022df13b101fced43c795ce3e3e983c
Parent: 0e3a968
Committed by GitHub <noreply@github.com>
on 8/24/2026, 7:20:47 PM