SIGN IN SIGN UP

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