### `blockish/container`

The primary layout block — flexbox or CSS grid. **Accepts children: yes.**


| Attribute | Type | Default | Notes/enum |
|---|---|---|---|

| `tagName` | Option | `{"label":"Div","value":"div"}` | `Div`/`div` · `Section`/`section` · `Article`/`article` · `Main`/`main` · `Aside`/`aside` · `Header`/`header` · `Footer`/`footer` <br>**Note:** Do not use `header` or `footer` when building inside a Template Part, to avoid double `<header>`/`<footer>` tags. |
| `display` | Scalar (string) | `"flex"` | `"flex"` `"grid"` |
| `containerWidth` | Scalar (string) | `"alignfull"` | `"alignfull"` `"alignwide"` `"align-custom-width"` (with `customWidthContainer`) — **the custom option's value is the literal string `"align-custom-width"`, not `"custom"`** |
| `customWidthContainer` | Responsive | `{"Desktop":"100%"}` | Active when `containerWidth` = `"align-custom-width"` |
| `containerMinHeight` | Responsive | `{"Desktop":"0"}` | |
| `overflow` | Responsive-Option | unset | `"visible"` `"hidden"` `"scroll"` `"auto"` |
| `flexDirection` | Responsive-Option | unset | Used when `display` = `"flex"`. Options: `[{"label":"Row","value":"row"},{"label":"Column","value":"column"},{"label":"Row Reverse","value":"row-reverse"},{"label":"Column Reverse","value":"column-reverse"}]` |
| `flexWrap` | Responsive | `{"Desktop":"wrap"}` | Used when `display` = `"flex"`. `"wrap"` `"nowrap"` `"wrap-reverse"` |
| `justifyContent` | Responsive-Option | unset | Used when `display` = `"flex"`. Options: `[{"label":"Start","value":"flex-start"},{"label":"End","value":"flex-end"},{"label":"Center","value":"center"},{"label":"Space Between","value":"space-between"},{"label":"Space Around","value":"space-around"},{"label":"Space Evenly","value":"space-evenly"}]` |
| `alignItems` | Responsive-Option | unset | Used when `display` = `"flex"`. Options: `[{"label":"Start","value":"flex-start"},{"label":"End","value":"flex-end"},{"label":"Center","value":"center"},{"label":"Stretch","value":"stretch"}]` — **no `baseline` option** (despite the global `alignSelf` attribute supporting it) |
| `columnGap` | Responsive | unset | |
| `rowGap` | Responsive | unset | |
| `gridLayoutType` | Scalar (string) | `"auto"` | `"auto"` (auto-fit columns) `"fixed"` (explicit count) |
| `gridColumns` | Responsive | `{"Desktop":3,"Tablet":2,"Mobile":1}` | Used when `gridLayoutType` = `"fixed"` |
| `gridRows` | Responsive | `{"Desktop":1}` | Used when `gridLayoutType` = `"fixed"` |
| `autoGridWidth` | Responsive | `{"Desktop":"12rem"}` | Used when `gridLayoutType` = `"auto"` |
| `autoGridHeight` | Responsive | unset | |
| `containerBackground` | Stringified-JSON (Background) | unset | Normal state. **Only this attribute supports `backgroundType:"video"`.** |
| `containerHoverBackground` | Stringified-JSON (Background) | unset | Hover state |
| `containerBackgroundOverlay` | Stringified-JSON (Background Overlay) | unset | Normal state |
| `containerHoverBackgroundOverlay` | Stringified-JSON (Background Overlay) | unset | Hover state |
| `containerBorder` | Stringified-JSON (Border) | unset | Normal state |
| `containerHoverBorder` | Stringified-JSON (Border) | unset | Hover state |
| `containerBorderRadius` | Border-Radius | unset | Normal state |
| `containerHoverBorderRadius` | Border-Radius | unset | Hover state |
| `containerBoxShadow` | Stringified-JSON (Box Shadow) | unset | Normal state |
| `containerHoverBoxShadow` | Stringified-JSON (Box Shadow) | unset | Hover state |
| `anchor` | Scalar (string) | unset | WP-core "HTML anchor" — sets the element's `id`. See §7.1. |
| `align` | Scalar (string) | unset | `"wide"` `"full"` — WP-core wide/full alignment. See §7.1. |

Minimal schema:
```json
{
  "name": "blockish/container",
  "attributes": {},
  "innerBlocks": []
}
```

---

