New Block Support: Text Indent

WordPress 7.0 introduces a new **`textIndent` block support** for typography, allowing blocks to opt in to `text-indent` CSS support. The Paragraph block is the first core block to adopt this support.
Text indentation is a standard typographic convention, particularly in long-form publishing. It has been one of the most-requested typography features for WordPress blocks since 2021 ([#37462](https://github.com/WordPress/gutenberg/issues/37462)).
With this release, WordPress now supports it natively through a new block support. No custom CSS required.
##### The `textIndent` Block Support
Any block can now declare support for `textIndent` in its `block.json`:
When a block declares this support, the block editor will show a **Line Indent** control in the Typography panel of the block sidebar, and the block’s `style.typography.textIndent` attribute will be serialised as a `text-indent` CSS property.
This follows the same pattern as other typography block supports such as `letterSpacing`, `textDecoration`, and `textTransform`.
##### Paragraph Block: Selector Behaviour and the `textIndent` Setting
The `textIndent` support has a unique consideration specific to the core Paragraph block: in traditional typographic conventions of English and some other left-to-right (LTR) languages, only *subsequent* paragraphs (those that follow another paragraph) are typically indented, while the very first paragraph in a sequence is not. In some right-to-left (RTL) languages and publishing traditions, such as Arabic and Hebrew, however, it is common to indent all paragraphs.
To accommodate both conventions, a **`typography.textIndent` setting** controls which CSS selector is used when generating the `text-indent` rule. This setting is distinct from the style value (the actual indent amount) and applies at the Global Styles level.
| Setting value | Selector used | Behaviour |
| --- | --- | --- |
| `"subsequent"` (default) | `.wp-block-paragraph + .wp-block-paragraph` | Only paragraphs immediately following another paragraph are indented |
| `"all"` | `.wp-block-paragraph` | All paragraphs are indented |
Note: This selector behaviour is specific to `core/paragraph`. Third-party blocks that opt in to `textIndent` support will have `text-indent` applied using their own block selector, but the subsequent/all switching logic is not currently available to them.
In Global Styles, an **“Indent all paragraphs”** toggle lets authors switch between the two modes interactively.
##### Configuring via `theme.json`
Themes can enable and configure Line Indent support through `theme.json`.
**Enable the control with default (subsequent) behaviour:**
**Enable with all-paragraphs mode:**
**Set a default indent value globally for paragraphs:**
This is a new opt-in feature. No existing block behaviour changes unless a block explicitly declares `"textIndent": true` in its `supports.typography` definition. There are no breaking changes to existing APIs.
Props [@aaronrobertshaw](https://profiles.wordpress.org/aaronrobertshaw/) for development. Props [@wildworks](https://profiles.wordpress.org/wildworks/), [@andrewserong](https://profiles.wordpress.org/andrewserong/), and [@ramonopoly](https://profiles.wordpress.org/ramonopoly/) for technical reviews and proofreading., New Block Support: Text Indent, make.wordpress.org, 01kkva9svxb4r8e690a8jnkaaj.