summaryrefslogtreecommitdiffstats
path: root/site/content/docs/5.2/utilities
diff options
context:
space:
mode:
Diffstat (limited to 'site/content/docs/5.2/utilities')
-rw-r--r--site/content/docs/5.2/utilities/api.md616
-rw-r--r--site/content/docs/5.2/utilities/background.md124
-rw-r--r--site/content/docs/5.2/utilities/borders.md166
-rw-r--r--site/content/docs/5.2/utilities/colors.md113
-rw-r--r--site/content/docs/5.2/utilities/display.md112
-rw-r--r--site/content/docs/5.2/utilities/flex.md666
-rw-r--r--site/content/docs/5.2/utilities/float.md48
-rw-r--r--site/content/docs/5.2/utilities/interactions.md42
-rw-r--r--site/content/docs/5.2/utilities/opacity.md31
-rw-r--r--site/content/docs/5.2/utilities/overflow.md40
-rw-r--r--site/content/docs/5.2/utilities/position.md130
-rw-r--r--site/content/docs/5.2/utilities/shadows.md30
-rw-r--r--site/content/docs/5.2/utilities/sizing.md60
-rw-r--r--site/content/docs/5.2/utilities/spacing.md127
-rw-r--r--site/content/docs/5.2/utilities/text.md155
-rw-r--r--site/content/docs/5.2/utilities/vertical-align.md48
-rw-r--r--site/content/docs/5.2/utilities/visibility.md37
17 files changed, 2545 insertions, 0 deletions
diff --git a/site/content/docs/5.2/utilities/api.md b/site/content/docs/5.2/utilities/api.md
new file mode 100644
index 0000000..81017ee
--- /dev/null
+++ b/site/content/docs/5.2/utilities/api.md
@@ -0,0 +1,616 @@
+---
+layout: docs
+title: Utility API
+description: The utility API is a Sass-based tool to generate utility classes.
+group: utilities
+aliases: "/docs/5.2/utilities/"
+toc: true
+---
+
+Bootstrap utilities are generated with our utility API and can be used to modify or extend our default set of utility classes via Sass. Our utility API is based on a series of Sass maps and functions for generating families of classes with various options. If you're unfamiliar with Sass maps, read up on the [official Sass docs](https://sass-lang.com/documentation/values/maps) to get started.
+
+The `$utilities` map contains all our utilities and is later merged with your custom `$utilities` map, if present. The utility map contains a keyed list of utility groups which accept the following options:
+
+{{< bs-table "table table-utilities" >}}
+| Option | Type | Default&nbsp;value | Description |
+| --- | --- | --- | --- |
+| [`property`](#property) | **Required** | – | Name of the property, this can be a string or an array of strings (e.g., horizontal paddings or margins). |
+| [`values`](#values) | **Required** | – | List of values, or a map if you don't want the class name to be the same as the value. If `null` is used as map key, `class` is not prepended to the class name. |
+| [`class`](#class) | Optional | null | Name of the generated class. If not provided and `property` is an array of strings, `class` will default to the first element of the `property` array. If not provided and `property` is a string, the `values` keys are used for the `class` names. |
+| [`css-var`](#css-variable-utilities) | Optional | `false` | Boolean to generate CSS variables instead of CSS rules. |
+| [`css-variable-name`](#css-variable-utilities) | Optional | null | Custom un-prefixed name for the CSS variable inside the ruleset. |
+| [`local-vars`](#local-css-variables) | Optional | null | Map of local CSS variables to generate in addition to the CSS rules. |
+| [`state`](#states) | Optional | null | List of pseudo-class variants (e.g., `:hover` or `:focus`) to generate. |
+| [`responsive`](#responsive) | Optional | `false` | Boolean indicating if responsive classes should be generated. |
+| `rfs` | Optional | `false` | Boolean to enable [fluid rescaling with RFS]({{< docsref "/getting-started/rfs" >}}). |
+| [`print`](#print) | Optional | `false` | Boolean indicating if print classes need to be generated. |
+| `rtl` | Optional | `true` | Boolean indicating if utility should be kept in RTL. |
+{{< /bs-table >}}
+
+## API explained
+
+All utility variables are added to the `$utilities` variable within our `_utilities.scss` stylesheet. Each group of utilities looks something like this:
+
+```scss
+$utilities: (
+ "opacity": (
+ property: opacity,
+ values: (
+ 0: 0,
+ 25: .25,
+ 50: .5,
+ 75: .75,
+ 100: 1,
+ )
+ )
+);
+```
+
+Which outputs the following:
+
+```css
+.opacity-0 { opacity: 0; }
+.opacity-25 { opacity: .25; }
+.opacity-50 { opacity: .5; }
+.opacity-75 { opacity: .75; }
+.opacity-100 { opacity: 1; }
+```
+
+### Property
+
+The required `property` key must be set for any utility, and it must contain a valid CSS property. This property is used in the generated utility's ruleset. When the `class` key is omitted, it also serves as the default class name. Consider the `text-decoration` utility:
+
+```scss
+$utilities: (
+ "text-decoration": (
+ property: text-decoration,
+ values: none underline line-through
+ )
+);
+```
+
+Output:
+
+```css
+.text-decoration-none { text-decoration: none !important; }
+.text-decoration-underline { text-decoration: underline !important; }
+.text-decoration-line-through { text-decoration: line-through !important; }
+```
+
+### Values
+
+Use the `values` key to specify which values for the specified `property` should be used in the generated class names and rules. Can be a list or map (set in the utilities or in a Sass variable).
+
+As a list, like with [`text-decoration` utilities]({{< docsref "/utilities/text#text-decoration" >}}):
+
+```scss
+values: none underline line-through
+```
+
+As a map, like with [`opacity` utilities]({{< docsref "/utilities/opacity" >}}):
+
+```scss
+values: (
+ 0: 0,
+ 25: .25,
+ 50: .5,
+ 75: .75,
+ 100: 1,
+)
+```
+
+As a Sass variable that sets the list or map, as in our [`position` utilities]({{< docsref "/utilities/position" >}}):
+
+```scss
+values: $position-values
+```
+
+### Class
+
+Use the `class` option to change the class prefix used in the compiled CSS. For example, to change from `.opacity-*` to `.o-*`:
+
+```scss
+$utilities: (
+ "opacity": (
+ property: opacity,
+ class: o,
+ values: (
+ 0: 0,
+ 25: .25,
+ 50: .5,
+ 75: .75,
+ 100: 1,
+ )
+ )
+);
+```
+
+Output:
+
+```css
+.o-0 { opacity: 0 !important; }
+.o-25 { opacity: .25 !important; }
+.o-50 { opacity: .5 !important; }
+.o-75 { opacity: .75 !important; }
+.o-100 { opacity: 1 !important; }
+```
+
+If `class: null`, generates classes for each of the `values` keys:
+
+```scss
+$utilities: (
+ "visibility": (
+ property: visibility,
+ class: null,
+ values: (
+ visible: visible,
+ invisible: hidden,
+ )
+ )
+);
+```
+
+Output:
+
+```css
+.visible { visibility: visible !important; }
+.invisible { visibility: hidden !important; }
+```
+
+### CSS variable utilities
+
+Set the `css-var` boolean option to `true` and the API will generate local CSS variables for the given selector instead of the usual `property: value` rules. Add an optional `css-variable-name` to set a different CSS variable name than the class name.
+
+Consider our `.text-opacity-*` utilities. If we add the `css-variable-name` option, we'll get a custom output.
+
+```scss
+$utilities: (
+ "text-opacity": (
+ css-var: true,
+ css-variable-name: text-alpha,
+ class: text-opacity,
+ values: (
+ 25: .25,
+ 50: .5,
+ 75: .75,
+ 100: 1
+ )
+ ),
+);
+```
+
+Output:
+
+```css
+.text-opacity-25 { --bs-text-alpha: .25; }
+.text-opacity-50 { --bs-text-alpha: .5; }
+.text-opacity-75 { --bs-text-alpha: .75; }
+.text-opacity-100 { --bs-text-alpha: 1; }
+```
+
+### Local CSS variables
+
+Use the `local-vars` option to specify a Sass map that will generate local CSS variables within the utility class's ruleset. Please note that it may require additional work to consume those local CSS variables in the generated CSS rules. For example, consider our `.bg-*` utilities:
+
+```scss
+$utilities: (
+ "background-color": (
+ property: background-color,
+ class: bg,
+ local-vars: (
+ "bg-opacity": 1
+ ),
+ values: map-merge(
+ $utilities-bg-colors,
+ (
+ "transparent": transparent
+ )
+ )
+ )
+);
+```
+
+Output:
+
+```css
+.bg-primary {
+ --bs-bg-opacity: 1;
+ background-color: rgba(var(--bs-primary-rgb), var(--bs-bg-opacity)) !important;
+}
+```
+
+### States
+
+Use the `state` option to generate pseudo-class variations. Example pseudo-classes are `:hover` and `:focus`. When a list of states are provided, classnames are created for that pseudo-class. For example, to change opacity on hover, add `state: hover` and you'll get `.opacity-hover:hover` in your compiled CSS.
+
+Need multiple pseudo-classes? Use a space-separated list of states: `state: hover focus`.
+
+```scss
+$utilities: (
+ "opacity": (
+ property: opacity,
+ class: opacity,
+ state: hover,
+ values: (
+ 0: 0,
+ 25: .25,
+ 50: .5,
+ 75: .75,
+ 100: 1,
+ )
+ )
+);
+```
+
+Output:
+
+```css
+.opacity-0-hover:hover { opacity: 0 !important; }
+.opacity-25-hover:hover { opacity: .25 !important; }
+.opacity-50-hover:hover { opacity: .5 !important; }
+.opacity-75-hover:hover { opacity: .75 !important; }
+.opacity-100-hover:hover { opacity: 1 !important; }
+```
+
+### Responsive
+
+Add the `responsive` boolean to generate responsive utilities (e.g., `.opacity-md-25`) across [all breakpoints]({{< docsref "/layout/breakpoints" >}}).
+
+```scss
+$utilities: (
+ "opacity": (
+ property: opacity,
+ responsive: true,
+ values: (
+ 0: 0,
+ 25: .25,
+ 50: .5,
+ 75: .75,
+ 100: 1,
+ )
+ )
+);
+```
+
+Output:
+
+```css
+.opacity-0 { opacity: 0 !important; }
+.opacity-25 { opacity: .25 !important; }
+.opacity-50 { opacity: .5 !important; }
+.opacity-75 { opacity: .75 !important; }
+.opacity-100 { opacity: 1 !important; }
+
+@media (min-width: 576px) {
+ .opacity-sm-0 { opacity: 0 !important; }
+ .opacity-sm-25 { opacity: .25 !important; }
+ .opacity-sm-50 { opacity: .5 !important; }
+ .opacity-sm-75 { opacity: .75 !important; }
+ .opacity-sm-100 { opacity: 1 !important; }
+}
+
+@media (min-width: 768px) {
+ .opacity-md-0 { opacity: 0 !important; }
+ .opacity-md-25 { opacity: .25 !important; }
+ .opacity-md-50 { opacity: .5 !important; }
+ .opacity-md-75 { opacity: .75 !important; }
+ .opacity-md-100 { opacity: 1 !important; }
+}
+
+@media (min-width: 992px) {
+ .opacity-lg-0 { opacity: 0 !important; }
+ .opacity-lg-25 { opacity: .25 !important; }
+ .opacity-lg-50 { opacity: .5 !important; }
+ .opacity-lg-75 { opacity: .75 !important; }
+ .opacity-lg-100 { opacity: 1 !important; }
+}
+
+@media (min-width: 1200px) {
+ .opacity-xl-0 { opacity: 0 !important; }
+ .opacity-xl-25 { opacity: .25 !important; }
+ .opacity-xl-50 { opacity: .5 !important; }
+ .opacity-xl-75 { opacity: .75 !important; }
+ .opacity-xl-100 { opacity: 1 !important; }
+}
+
+@media (min-width: 1400px) {
+ .opacity-xxl-0 { opacity: 0 !important; }
+ .opacity-xxl-25 { opacity: .25 !important; }
+ .opacity-xxl-50 { opacity: .5 !important; }
+ .opacity-xxl-75 { opacity: .75 !important; }
+ .opacity-xxl-100 { opacity: 1 !important; }
+}
+```
+
+### Print
+
+Enabling the `print` option will **also** generate utility classes for print, which are only applied within the `@media print { ... }` media query.
+
+```scss
+$utilities: (
+ "opacity": (
+ property: opacity,
+ print: true,
+ values: (
+ 0: 0,
+ 25: .25,
+ 50: .5,
+ 75: .75,
+ 100: 1,
+ )
+ )
+);
+```
+
+Output:
+
+```css
+.opacity-0 { opacity: 0 !important; }
+.opacity-25 { opacity: .25 !important; }
+.opacity-50 { opacity: .5 !important; }
+.opacity-75 { opacity: .75 !important; }
+.opacity-100 { opacity: 1 !important; }
+
+@media print {
+ .opacity-print-0 { opacity: 0 !important; }
+ .opacity-print-25 { opacity: .25 !important; }
+ .opacity-print-50 { opacity: .5 !important; }
+ .opacity-print-75 { opacity: .75 !important; }
+ .opacity-print-100 { opacity: 1 !important; }
+}
+```
+
+## Importance
+
+All utilities generated by the API include `!important` to ensure they override components and modifier classes as intended. You can toggle this setting globally with the `$enable-important-utilities` variable (defaults to `true`).
+
+## Using the API
+
+Now that you're familiar with how the utilities API works, learn how to add your own custom classes and modify our default utilities.
+
+### Override utilities
+
+Override existing utilities by using the same key. For example, if you want additional responsive overflow utility classes, you can do this:
+
+```scss
+$utilities: (
+ "overflow": (
+ responsive: true,
+ property: overflow,
+ values: visible hidden scroll auto,
+ ),
+);
+```
+
+### Add utilities
+
+New utilities can be added to the default `$utilities` map with a `map-merge`. Make sure our required Sass files and `_utilities.scss` are imported first, then use the `map-merge` to add your additional utilities. For example, here's how to add a responsive `cursor` utility with three values.
+
+```scss
+@import "bootstrap/scss/functions";
+@import "bootstrap/scss/variables";
+@import "bootstrap/scss/maps";
+@import "bootstrap/scss/mixins";
+@import "bootstrap/scss/utilities";
+
+$utilities: map-merge(
+ $utilities,
+ (
+ "cursor": (
+ property: cursor,
+ class: cursor,
+ responsive: true,
+ values: auto pointer grab,
+ )
+ )
+);
+
+@import "bootstrap/scss/utilities/api";
+```
+
+### Modify utilities
+
+Modify existing utilities in the default `$utilities` map with `map-get` and `map-merge` functions. In the example below, we're adding an additional value to the `width` utilities. Start with an initial `map-merge` and then specify which utility you want to modify. From there, fetch the nested `"width"` map with `map-get` to access and modify the utility's options and values.
+
+```scss
+@import "bootstrap/scss/functions";
+@import "bootstrap/scss/variables";
+@import "bootstrap/scss/maps";
+@import "bootstrap/scss/mixins";
+@import "bootstrap/scss/utilities";
+
+$utilities: map-merge(
+ $utilities,
+ (
+ "width": map-merge(
+ map-get($utilities, "width"),
+ (
+ values: map-merge(
+ map-get(map-get($utilities, "width"), "values"),
+ (10: 10%),
+ ),
+ ),
+ ),
+ )
+);
+
+@import "bootstrap/scss/utilities/api";
+```
+
+#### Enable responsive
+
+You can enable responsive classes for an existing set of utilities that are not currently responsive by default. For example, to make the `border` classes responsive:
+
+```scss
+@import "bootstrap/scss/functions";
+@import "bootstrap/scss/variables";
+@import "bootstrap/scss/maps";
+@import "bootstrap/scss/mixins";
+@import "bootstrap/scss/utilities";
+
+$utilities: map-merge(
+ $utilities, (
+ "border": map-merge(
+ map-get($utilities, "border"),
+ ( responsive: true ),
+ ),
+ )
+);
+
+@import "bootstrap/scss/utilities/api";
+```
+
+This will now generate responsive variations of `.border` and `.border-0` for each breakpoint. Your generated CSS will look like this:
+
+```css
+.border { ... }
+.border-0 { ... }
+
+@media (min-width: 576px) {
+ .border-sm { ... }
+ .border-sm-0 { ... }
+}
+
+@media (min-width: 768px) {
+ .border-md { ... }
+ .border-md-0 { ... }
+}
+
+@media (min-width: 992px) {
+ .border-lg { ... }
+ .border-lg-0 { ... }
+}
+
+@media (min-width: 1200px) {
+ .border-xl { ... }
+ .border-xl-0 { ... }
+}
+
+@media (min-width: 1400px) {
+ .border-xxl { ... }
+ .border-xxl-0 { ... }
+}
+```
+
+#### Rename utilities
+
+Missing v4 utilities, or used to another naming convention? The utilities API can be used to override the resulting `class` of a given utility—for example, to rename `.ms-*` utilities to oldish `.ml-*`:
+
+```scss
+@import "bootstrap/scss/functions";
+@import "bootstrap/scss/variables";
+@import "bootstrap/scss/maps";
+@import "bootstrap/scss/mixins";
+@import "bootstrap/scss/utilities";
+
+$utilities: map-merge(
+ $utilities, (
+ "margin-start": map-merge(
+ map-get($utilities, "margin-start"),
+ ( class: ml ),
+ ),
+ )
+);
+
+@import "bootstrap/scss/utilities/api";
+```
+
+### Remove utilities
+
+Remove any of the default utilities with the [`map-remove()` Sass function](https://sass-lang.com/documentation/modules/map#remove).
+
+```scss
+@import "bootstrap/scss/functions";
+@import "bootstrap/scss/variables";
+@import "bootstrap/scss/maps";
+@import "bootstrap/scss/mixins";
+@import "bootstrap/scss/utilities";
+
+// Remove multiple utilities with a comma-separated list
+$utilities: map-remove($utilities, "width", "float");
+
+@import "bootstrap/scss/utilities/api";
+```
+
+You can also use the [`map-merge()` Sass function](https://sass-lang.com/documentation/modules/map#merge) and set the group key to `null` to remove the utility.
+
+```scss
+@import "bootstrap/scss/functions";
+@import "bootstrap/scss/variables";
+@import "bootstrap/scss/maps";
+@import "bootstrap/scss/mixins";
+@import "bootstrap/scss/utilities";
+
+$utilities: map-merge(
+ $utilities,
+ (
+ "width": null
+ )
+);
+
+@import "bootstrap/scss/utilities/api";
+```
+
+### Add, remove, modify
+
+You can add, remove, and modify many utilities all at once with the [`map-merge()` Sass function](https://sass-lang.com/documentation/modules/map#merge). Here's how you can combine the previous examples into one larger map.
+
+```scss
+@import "bootstrap/scss/functions";
+@import "bootstrap/scss/variables";
+@import "bootstrap/scss/maps";
+@import "bootstrap/scss/mixins";
+@import "bootstrap/scss/utilities";
+
+$utilities: map-merge(
+ $utilities,
+ (
+ // Remove the `width` utility
+ "width": null,
+
+ // Make an existing utility responsive
+ "border": map-merge(
+ map-get($utilities, "border"),
+ ( responsive: true ),
+ ),
+
+ // Add new utilities
+ "cursor": (
+ property: cursor,
+ class: cursor,
+ responsive: true,
+ values: auto pointer grab,
+ )
+ )
+);
+
+@import "bootstrap/scss/utilities/api";
+```
+
+#### Remove utility in RTL
+
+Some edge cases make [RTL styling difficult](https://rtlstyling.com/posts/rtl-styling#common-things-that-might-not-work-for-rtl), such as line breaks in Arabic. Thus utilities can be dropped from RTL output by setting the `rtl` option to `false`:
+
+```scss
+$utilities: (
+ "word-wrap": (
+ property: word-wrap word-break,
+ class: text,
+ values: (break: break-word),
+ rtl: false
+ ),
+);
+```
+
+Output:
+
+```css
+/* rtl:begin:remove */
+.text-break {
+ word-wrap: break-word !important;
+ word-break: break-word !important;
+}
+/* rtl:end:remove */
+```
+
+This doesn't output anything in RTL, thanks to [the RTLCSS `remove` control directive](https://rtlcss.com/learn/usage-guide/control-directives/#remove).
diff --git a/site/content/docs/5.2/utilities/background.md b/site/content/docs/5.2/utilities/background.md
new file mode 100644
index 0000000..fe0bf57
--- /dev/null
+++ b/site/content/docs/5.2/utilities/background.md
@@ -0,0 +1,124 @@
+---
+layout: docs
+title: Background
+description: Convey meaning through `background-color` and add decoration with gradients.
+group: utilities
+toc: true
+---
+
+## Background color
+
+Similar to the contextual text color classes, set the background of an element to any contextual class. Background utilities **do not set `color`**, so in some cases you'll want to use `.text-*` [color utilities]({{< docsref "/utilities/colors" >}}).
+
+{{< example >}}
+{{< colors.inline >}}
+{{- range (index $.Site.Data "theme-colors") }}
+<div class="p-3 mb-2 bg-{{ .name }}{{ if .contrast_color }} text-{{ .contrast_color }}{{ else }} text-white{{ end }}">.bg-{{ .name }}</div>
+{{- end -}}
+{{< /colors.inline >}}
+<div class="p-3 mb-2 bg-body text-dark">.bg-body</div>
+<div class="p-3 mb-2 bg-white text-dark">.bg-white</div>
+<div class="p-3 mb-2 bg-transparent text-dark">.bg-transparent</div>
+{{< /example >}}
+
+## Background gradient
+
+By adding a `.bg-gradient` class, a linear gradient is added as background image to the backgrounds. This gradient starts with a semi-transparent white which fades out to the bottom.
+
+Do you need a gradient in your custom CSS? Just add `background-image: var(--bs-gradient);`.
+
+{{< markdown >}}
+{{< colors.inline >}}
+{{- range (index $.Site.Data "theme-colors") }}
+<div class="p-3 mb-2 bg-{{ .name }} bg-gradient{{ with .contrast_color }} text-{{ . }}{{ else }} text-white{{ end }}">.bg-{{ .name }}.bg-gradient</div>
+{{- end -}}
+{{< /colors.inline >}}
+{{< /markdown >}}
+
+## Opacity
+
+{{< added-in "5.1.0" >}}
+
+As of v5.1.0, `background-color` utilities are generated with Sass using CSS variables. This allows for real-time color changes without compilation and dynamic alpha transparency changes.
+
+### How it works
+
+Consider our default `.bg-success` utility.
+
+```css
+.bg-success {
+ --bs-bg-opacity: 1;
+ background-color: rgba(var(--bs-success-rgb), var(--bs-bg-opacity)) !important;
+}
+```
+
+We use an RGB version of our `--bs-success` (with the value of `25, 135, 84`) CSS variable and attached a second CSS variable, `--bs-bg-opacity`, for the alpha transparency (with a default value `1` thanks to a local CSS variable). That means anytime you use `.bg-success` now, your computed `color` value is `rgba(25, 135, 84, 1)`. The local CSS variable inside each `.bg-*` class avoids inheritance issues so nested instances of the utilities don't automatically have a modified alpha transparency.
+
+### Example
+
+To change that opacity, override `--bs-bg-opacity` via custom styles or inline styles.
+
+{{< example >}}
+<div class="bg-success p-2 text-white">This is default success background</div>
+<div class="bg-success p-2" style="--bs-bg-opacity: .5;">This is 50% opacity success background</div>
+{{< /example >}}
+
+Or, choose from any of the `.bg-opacity` utilities:
+
+{{< example >}}
+<div class="bg-success p-2 text-white">This is default success background</div>
+<div class="bg-success p-2 text-white bg-opacity-75">This is 75% opacity success background</div>
+<div class="bg-success p-2 text-dark bg-opacity-50">This is 50% opacity success background</div>
+<div class="bg-success p-2 text-dark bg-opacity-25">This is 25% opacity success background</div>
+<div class="bg-success p-2 text-dark bg-opacity-10">This is 10% opacity success background</div>
+{{< /example >}}
+
+## Sass
+
+In addition to the following Sass functionality, consider reading about our included [CSS custom properties]({{< docsref "/customize/css-variables" >}}) (aka CSS variables) for colors and more.
+
+### Variables
+
+Most `background-color` utilities are generated by our theme colors, reassigned from our generic color palette variables.
+
+{{< scss-docs name="color-variables" file="scss/_variables.scss" >}}
+
+{{< scss-docs name="theme-color-variables" file="scss/_variables.scss" >}}
+
+{{< scss-docs name="variable-gradient" file="scss/_variables.scss" >}}
+
+Grayscale colors are also available, but only a subset are used to generate any utilities.
+
+{{< scss-docs name="gray-color-variables" file="scss/_variables.scss" >}}
+
+### Map
+
+Theme colors are then put into a Sass map so we can loop over them to generate our utilities, component modifiers, and more.
+
+{{< scss-docs name="theme-colors-map" file="scss/_variables.scss" >}}
+
+Grayscale colors are also available as a Sass map. **This map is not used to generate any utilities.**
+
+{{< scss-docs name="gray-colors-map" file="scss/_variables.scss" >}}
+
+RGB colors are generated from a separate Sass map:
+
+{{< scss-docs name="theme-colors-rgb" file="scss/_maps.scss" >}}
+
+And background color opacities build on that with their own map that's consumed by the utilities API:
+
+{{< scss-docs name="utilities-bg-colors" file="scss/_maps.scss" >}}
+
+### Mixins
+
+**No mixins are used to generate our background utilities**, but we do have some additional mixins for other situations where you'd like to create your own gradients.
+
+{{< scss-docs name="gradient-bg-mixin" file="scss/mixins/_gradients.scss" >}}
+
+{{< scss-docs name="gradient-mixins" file="scss/mixins/_gradients.scss" >}}
+
+### Utilities API
+
+Background utilities are declared in our utilities API in `scss/_utilities.scss`. [Learn how to use the utilities API.]({{< docsref "/utilities/api#using-the-api" >}})
+
+{{< scss-docs name="utils-bg-color" file="scss/_utilities.scss" >}}
diff --git a/site/content/docs/5.2/utilities/borders.md b/site/content/docs/5.2/utilities/borders.md
new file mode 100644
index 0000000..8d850a2
--- /dev/null
+++ b/site/content/docs/5.2/utilities/borders.md
@@ -0,0 +1,166 @@
+---
+layout: docs
+title: Borders
+description: Use border utilities to quickly style the border and border-radius of an element. Great for images, buttons, or any other element.
+group: utilities
+toc: true
+---
+
+## Border
+
+Use border utilities to add or remove an element's borders. Choose from all borders or one at a time.
+
+### Additive
+
+Add borders to custom elements:
+
+{{< example class="bd-example-border-utils" >}}
+<span class="border"></span>
+<span class="border-top"></span>
+<span class="border-end"></span>
+<span class="border-bottom"></span>
+<span class="border-start"></span>
+{{< /example >}}
+
+### Subtractive
+
+Or remove borders:
+
+{{< example class="bd-example-border-utils" >}}
+<span class="border border-0"></span>
+<span class="border border-top-0"></span>
+<span class="border border-end-0"></span>
+<span class="border border-bottom-0"></span>
+<span class="border border-start-0"></span>
+{{< /example >}}
+
+## Color
+
+Change the border color using utilities built on our theme colors.
+
+{{< example class="bd-example-border-utils" >}}
+{{< border.inline >}}
+{{- range (index $.Site.Data "theme-colors") }}
+<span class="border border-{{ .name }}"></span>
+{{- end -}}
+{{< /border.inline >}}
+<span class="border border-white"></span>
+{{< /example >}}
+
+Or modify the default `border-color` of a component:
+
+{{< example >}}
+<div class="mb-4">
+ <label for="exampleFormControlInput1" class="form-label">Email address</label>
+ <input type="email" class="form-control border-success" id="exampleFormControlInput1" placeholder="name@example.com">
+</div>
+
+<div class="h4 pb-2 mb-4 text-danger border-bottom border-danger">
+ Dangerous heading
+</div>
+
+<div class="p-3 bg-info bg-opacity-10 border border-info border-start-0 rounded-end">
+ Changing border color and width
+</div>
+{{< /example >}}
+
+## Opacity
+
+{{< added-in "5.2.0" >}}
+
+Bootstrap `border-{color}` utilities are generated with Sass using CSS variables. This allows for real-time color changes without compilation and dynamic alpha transparency changes.
+
+### How it works
+
+Consider our default `.border-success` utility.
+
+```css
+.border-success {
+ --bs-border-opacity: 1;
+ border-color: rgba(var(--bs-success-rgb), var(--bs-border-opacity)) !important;
+}
+```
+
+We use an RGB version of our `--bs-success` (with the value of `25, 135, 84`) CSS variable and attached a second CSS variable, `--bs-border-opacity`, for the alpha transparency (with a default value `1` thanks to a local CSS variable). That means anytime you use `.border-success` now, your computed `color` value is `rgba(25, 135, 84, 1)`. The local CSS variable inside each `.border-*` class avoids inheritance issues so nested instances of the utilities don't automatically have a modified alpha transparency.
+
+### Example
+
+To change that opacity, override `--bs-border-opacity` via custom styles or inline styles.
+
+{{< example >}}
+<div class="border border-success p-2 mb-2">This is default success border</div>
+<div class="border border-success p-2" style="--bs-border-opacity: .5;">This is 50% opacity success border</div>
+{{< /example >}}
+
+Or, choose from any of the `.border-opacity` utilities:
+
+{{< example >}}
+<div class="border border-success p-2 mb-2">This is default success border</div>
+<div class="border border-success p-2 mb-2 border-opacity-75">This is 75% opacity success border</div>
+<div class="border border-success p-2 mb-2 border-opacity-50">This is 50% opacity success border</div>
+<div class="border border-success p-2 mb-2 border-opacity-25">This is 25% opacity success border</div>
+<div class="border border-success p-2 border-opacity-10">This is 10% opacity success border</div>
+{{< /example >}}
+
+## Width
+
+{{< example class="bd-example-border-utils" >}}
+<span class="border border-1"></span>
+<span class="border border-2"></span>
+<span class="border border-3"></span>
+<span class="border border-4"></span>
+<span class="border border-5"></span>
+{{< /example >}}
+
+## Radius
+
+Add classes to an element to easily round its corners.
+
+{{< example class="bd-example-rounded-utils" >}}
+{{< placeholder width="75" height="75" class="rounded" title="Example rounded image" >}}
+{{< placeholder width="75" height="75" class="rounded-top" title="Example top rounded image" >}}
+{{< placeholder width="75" height="75" class="rounded-end" title="Example right rounded image" >}}
+{{< placeholder width="75" height="75" class="rounded-bottom" title="Example bottom rounded image" >}}
+{{< placeholder width="75" height="75" class="rounded-start" title="Example left rounded image" >}}
+{{< placeholder width="75" height="75" class="rounded-circle" title="Completely round image" >}}
+{{< placeholder width="150" height="75" class="rounded-pill" title="Rounded pill image" >}}
+{{< /example >}}
+
+### Sizes
+
+Use the scaling classes for larger or smaller rounded corners. Sizes range from `0` to `5`, and can be configured by modifying the utilities API.
+
+{{< example class="bd-example-rounded-utils" >}}
+{{< placeholder width="75" height="75" class="rounded-0" title="Example non-rounded image" >}}
+{{< placeholder width="75" height="75" class="rounded-1" title="Example small rounded image" >}}
+{{< placeholder width="75" height="75" class="rounded-2" title="Example default rounded image" >}}
+{{< placeholder width="75" height="75" class="rounded-3" title="Example large rounded image" >}}
+{{< placeholder width="75" height="75" class="rounded-4" title="Example larger rounded image" >}}
+{{< placeholder width="75" height="75" class="rounded-5" title="Example extra large rounded image" >}}
+{{< /example >}}
+
+## CSS
+
+### Variables
+
+{{< added-in "5.2.0" >}}
+
+{{< scss-docs name="root-border-var" file="scss/_root.scss" >}}
+
+### Sass variables
+
+{{< scss-docs name="border-variables" file="scss/_variables.scss" >}}
+
+{{< scss-docs name="border-radius-variables" file="scss/_variables.scss" >}}
+
+### Sass mixins
+
+{{< scss-docs name="border-radius-mixins" file="scss/mixins/_border-radius.scss" >}}
+
+### Utilities API
+
+Border utilities are declared in our utilities API in `scss/_utilities.scss`. [Learn how to use the utilities API.]({{< docsref "/utilities/api#using-the-api" >}})
+
+{{< scss-docs name="utils-borders" file="scss/_utilities.scss" >}}
+
+{{< scss-docs name="utils-border-radius" file="scss/_utilities.scss" >}}
diff --git a/site/content/docs/5.2/utilities/colors.md b/site/content/docs/5.2/utilities/colors.md
new file mode 100644
index 0000000..eb917f9
--- /dev/null
+++ b/site/content/docs/5.2/utilities/colors.md
@@ -0,0 +1,113 @@
+---
+layout: docs
+title: Colors
+description: Convey meaning through `color` with a handful of color utility classes. Includes support for styling links with hover states, too.
+group: utilities
+toc: true
+---
+
+## Colors
+
+Colorize text with color utilities. If you want to colorize links, you can use the [`.link-*` helper classes]({{< docsref "/helpers/colored-links" >}}) which have `:hover` and `:focus` states.
+
+{{< example >}}
+{{< colors.inline >}}
+{{- range (index $.Site.Data "theme-colors") }}
+<p class="text-{{ .name }}{{ with .contrast_color }} bg-{{ . }}{{ end }}">.text-{{ .name }}</p>
+{{- end -}}
+{{< /colors.inline >}}
+<p class="text-body">.text-body</p>
+<p class="text-muted">.text-muted</p>
+<p class="text-white bg-dark">.text-white</p>
+<p class="text-black-50">.text-black-50</p>
+<p class="text-white-50 bg-dark">.text-white-50</p>
+{{< /example >}}
+
+{{< callout warning >}}
+**Deprecation:** With the addition of `.text-opacity-*` utilities and CSS variables for text utilities, `.text-black-50` and `.text-white-50` are deprecated as of v5.1.0. They'll be removed in v6.0.0.
+{{< /callout >}}
+
+{{< callout info >}}
+{{< partial "callout-warning-color-assistive-technologies.md" >}}
+{{< /callout >}}
+
+## Opacity
+
+{{< added-in "5.1.0" >}}
+
+As of v5.1.0, text color utilities are generated with Sass using CSS variables. This allows for real-time color changes without compilation and dynamic alpha transparency changes.
+
+### How it works
+
+Consider our default `.text-primary` utility.
+
+```css
+.text-primary {
+ --bs-text-opacity: 1;
+ color: rgba(var(--bs-primary-rgb), var(--bs-text-opacity)) !important;
+}
+```
+
+We use an RGB version of our `--bs-primary` (with the value of `13, 110, 253`) CSS variable and attached a second CSS variable, `--bs-text-opacity`, for the alpha transparency (with a default value `1` thanks to a local CSS variable). That means anytime you use `.text-primary` now, your computed `color` value is `rgba(13, 110, 253, 1)`. The local CSS variable inside each `.text-*` class avoids inheritance issues so nested instances of the utilities don't automatically have a modified alpha transparency.
+
+### Example
+
+To change that opacity, override `--bs-text-opacity` via custom styles or inline styles.
+
+{{< example >}}
+<div class="text-primary">This is default primary text</div>
+<div class="text-primary" style="--bs-text-opacity: .5;">This is 50% opacity primary text</div>
+{{< /example >}}
+
+Or, choose from any of the `.text-opacity` utilities:
+
+{{< example >}}
+<div class="text-primary">This is default primary text</div>
+<div class="text-primary text-opacity-75">This is 75% opacity primary text</div>
+<div class="text-primary text-opacity-50">This is 50% opacity primary text</div>
+<div class="text-primary text-opacity-25">This is 25% opacity primary text</div>
+{{< /example >}}
+
+## Specificity
+
+Sometimes contextual classes cannot be applied due to the specificity of another selector. In some cases, a sufficient workaround is to wrap your element's content in a `<div>` or more semantic element with the desired class.
+
+## Sass
+
+In addition to the following Sass functionality, consider reading about our included [CSS custom properties]({{< docsref "/customize/css-variables" >}}) (aka CSS variables) for colors and more.
+
+### Variables
+
+Most `color` utilities are generated by our theme colors, reassigned from our generic color palette variables.
+
+{{< scss-docs name="color-variables" file="scss/_variables.scss" >}}
+
+{{< scss-docs name="theme-color-variables" file="scss/_variables.scss" >}}
+
+Grayscale colors are also available, but only a subset are used to generate any utilities.
+
+{{< scss-docs name="gray-color-variables" file="scss/_variables.scss" >}}
+
+### Map
+
+Theme colors are then put into a Sass map so we can loop over them to generate our utilities, component modifiers, and more.
+
+{{< scss-docs name="theme-colors-map" file="scss/_variables.scss" >}}
+
+Grayscale colors are also available as a Sass map. **This map is not used to generate any utilities.**
+
+{{< scss-docs name="gray-colors-map" file="scss/_variables.scss" >}}
+
+RGB colors are generated from a separate Sass map:
+
+{{< scss-docs name="theme-colors-rgb" file="scss/_maps.scss" >}}
+
+And color opacities build on that with their own map that's consumed by the utilities API:
+
+{{< scss-docs name="utilities-text-colors" file="scss/_maps.scss" >}}
+
+### Utilities API
+
+Color utilities are declared in our utilities API in `scss/_utilities.scss`. [Learn how to use the utilities API.]({{< docsref "/utilities/api#using-the-api" >}})
+
+{{< scss-docs name="utils-color" file="scss/_utilities.scss" >}}
diff --git a/site/content/docs/5.2/utilities/display.md b/site/content/docs/5.2/utilities/display.md
new file mode 100644
index 0000000..5ed825a
--- /dev/null
+++ b/site/content/docs/5.2/utilities/display.md
@@ -0,0 +1,112 @@
+---
+layout: docs
+title: Display property
+description: Quickly and responsively toggle the display value of components and more with our display utilities. Includes support for some of the more common values, as well as some extras for controlling display when printing.
+group: utilities
+toc: true
+---
+
+## How it works
+
+Change the value of the [`display` property](https://developer.mozilla.org/en-US/docs/Web/CSS/display) with our responsive display utility classes. We purposely support only a subset of all possible values for `display`. Classes can be combined for various effects as you need.
+
+## Notation
+
+Display utility classes that apply to all [breakpoints]({{< docsref "/layout/breakpoints" >}}), from `xs` to `xxl`, have no breakpoint abbreviation in them. This is because those classes are applied from `min-width: 0;` and up, and thus are not bound by a media query. The remaining breakpoints, however, do include a breakpoint abbreviation.
+
+As such, the classes are named using the format:
+
+- `.d-{value}` for `xs`
+- `.d-{breakpoint}-{value}` for `sm`, `md`, `lg`, `xl`, and `xxl`.
+
+Where *value* is one of:
+
+- `none`
+- `inline`
+- `inline-block`
+- `block`
+- `grid`
+- `table`
+- `table-cell`
+- `table-row`
+- `flex`
+- `inline-flex`
+
+The display values can be altered by changing the `display` values defined in `$utilities` and recompiling the SCSS.
+
+The media queries affect screen widths with the given breakpoint *or larger*. For example, `.d-lg-none` sets `display: none;` on `lg`, `xl`, and `xxl` screens.
+
+## Examples
+
+{{< example >}}
+<div class="d-inline p-2 text-bg-primary">d-inline</div>
+<div class="d-inline p-2 text-bg-dark">d-inline</div>
+{{< /example >}}
+
+{{< example >}}
+<span class="d-block p-2 text-bg-primary">d-block</span>
+<span class="d-block p-2 text-bg-dark">d-block</span>
+{{< /example >}}
+
+## Hiding elements
+
+For faster mobile-friendly development, use responsive display classes for showing and hiding elements by device. Avoid creating entirely different versions of the same site, instead hide elements responsively for each screen size.
+
+To hide elements simply use the `.d-none` class or one of the `.d-{sm,md,lg,xl,xxl}-none` classes for any responsive screen variation.
+
+To show an element only on a given interval of screen sizes you can combine one `.d-*-none` class with a `.d-*-*` class, for example `.d-none .d-md-block .d-xl-none .d-xxl-none` will hide the element for all screen sizes except on medium and large devices.
+
+{{< bs-table >}}
+| Screen size | Class |
+| --- | --- |
+| Hidden on all | `.d-none` |
+| Hidden only on xs | `.d-none .d-sm-block` |
+| Hidden only on sm | `.d-sm-none .d-md-block` |
+| Hidden only on md | `.d-md-none .d-lg-block` |
+| Hidden only on lg | `.d-lg-none .d-xl-block` |
+| Hidden only on xl | `.d-xl-none` |
+| Hidden only on xxl | `.d-xxl-none .d-xxl-block` |
+| Visible on all | `.d-block` |
+| Visible only on xs | `.d-block .d-sm-none` |
+| Visible only on sm | `.d-none .d-sm-block .d-md-none` |
+| Visible only on md | `.d-none .d-md-block .d-lg-none` |
+| Visible only on lg | `.d-none .d-lg-block .d-xl-none` |
+| Visible only on xl | `.d-none .d-xl-block .d-xxl-none` |
+| Visible only on xxl | `.d-none .d-xxl-block` |
+{{< /bs-table >}}
+
+{{< example >}}
+<div class="d-lg-none">hide on lg and wider screens</div>
+<div class="d-none d-lg-block">hide on screens smaller than lg</div>
+{{< /example >}}
+
+## Display in print
+
+Change the `display` value of elements when printing with our print display utility classes. Includes support for the same `display` values as our responsive `.d-*` utilities.
+
+- `.d-print-none`
+- `.d-print-inline`
+- `.d-print-inline-block`
+- `.d-print-block`
+- `.d-print-grid`
+- `.d-print-table`
+- `.d-print-table-row`
+- `.d-print-table-cell`
+- `.d-print-flex`
+- `.d-print-inline-flex`
+
+The print and display classes can be combined.
+
+{{< example >}}
+<div class="d-print-none">Screen Only (Hide on print only)</div>
+<div class="d-none d-print-block">Print Only (Hide on screen only)</div>
+<div class="d-none d-lg-block d-print-block">Hide up to large on screen, but always show on print</div>
+{{< /example >}}
+
+## Sass
+
+### Utilities API
+
+Display utilities are declared in our utilities API in `scss/_utilities.scss`. [Learn how to use the utilities API.]({{< docsref "/utilities/api#using-the-api" >}})
+
+{{< scss-docs name="utils-display" file="scss/_utilities.scss" >}}
diff --git a/site/content/docs/5.2/utilities/flex.md b/site/content/docs/5.2/utilities/flex.md
new file mode 100644
index 0000000..567befe
--- /dev/null
+++ b/site/content/docs/5.2/utilities/flex.md
@@ -0,0 +1,666 @@
+---
+layout: docs
+title: Flex
+description: Quickly manage the layout, alignment, and sizing of grid columns, navigation, components, and more with a full suite of responsive flexbox utilities. For more complex implementations, custom CSS may be necessary.
+group: utilities
+toc: true
+---
+
+## Enable flex behaviors
+
+Apply `display` utilities to create a flexbox container and transform **direct children elements** into flex items. Flex containers and items are able to be modified further with additional flex properties.
+
+{{< example class="bd-example-flex" >}}
+<div class="d-flex p-2">I'm a flexbox container!</div>
+{{< /example >}}
+
+{{< example class="bd-example-flex" >}}
+<div class="d-inline-flex p-2">I'm an inline flexbox container!</div>
+{{< /example >}}
+
+Responsive variations also exist for `.d-flex` and `.d-inline-flex`.
+
+{{< markdown >}}
+{{< flex.inline >}}
+{{- range $.Site.Data.breakpoints }}
+- `.d{{ .abbr }}-flex`
+- `.d{{ .abbr }}-inline-flex`
+{{- end -}}
+{{< /flex.inline >}}
+{{< /markdown >}}
+
+## Direction
+
+Set the direction of flex items in a flex container with direction utilities. In most cases you can omit the horizontal class here as the browser default is `row`. However, you may encounter situations where you needed to explicitly set this value (like responsive layouts).
+
+Use `.flex-row` to set a horizontal direction (the browser default), or `.flex-row-reverse` to start the horizontal direction from the opposite side.
+
+{{< example class="bd-example-flex" >}}
+<div class="d-flex flex-row mb-3">
+ <div class="p-2">Flex item 1</div>
+ <div class="p-2">Flex item 2</div>
+ <div class="p-2">Flex item 3</div>
+</div>
+<div class="d-flex flex-row-reverse">
+ <div class="p-2">Flex item 1</div>
+ <div class="p-2">Flex item 2</div>
+ <div class="p-2">Flex item 3</div>
+</div>
+{{< /example >}}
+
+Use `.flex-column` to set a vertical direction, or `.flex-column-reverse` to start the vertical direction from the opposite side.
+
+{{< example class="bd-example-flex" >}}
+<div class="d-flex flex-column mb-3">
+ <div class="p-2">Flex item 1</div>
+ <div class="p-2">Flex item 2</div>
+ <div class="p-2">Flex item 3</div>
+</div>
+<div class="d-flex flex-column-reverse">
+ <div class="p-2">Flex item 1</div>
+ <div class="p-2">Flex item 2</div>
+ <div class="p-2">Flex item 3</div>
+</div>
+{{< /example >}}
+
+Responsive variations also exist for `flex-direction`.
+
+{{< markdown >}}
+{{< flex.inline >}}
+{{- range $.Site.Data.breakpoints }}
+- `.flex{{ .abbr }}-row`
+- `.flex{{ .abbr }}-row-reverse`
+- `.flex{{ .abbr }}-column`
+- `.flex{{ .abbr }}-column-reverse`
+{{- end -}}
+{{< /flex.inline >}}
+{{< /markdown >}}
+
+## Justify content
+
+Use `justify-content` utilities on flexbox containers to change the alignment of flex items on the main axis (the x-axis to start, y-axis if `flex-direction: column`). Choose from `start` (browser default), `end`, `center`, `between`, `around`, or `evenly`.
+
+<div class="bd-example bd-example-flex">
+ <div class="d-flex justify-content-start mb-3">
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ </div>
+ <div class="d-flex justify-content-end mb-3">
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ </div>
+ <div class="d-flex justify-content-center mb-3">
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ </div>
+ <div class="d-flex justify-content-between mb-3">
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ </div>
+ <div class="d-flex justify-content-around mb-3">
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ </div>
+ <div class="d-flex justify-content-evenly">
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ </div>
+</div>
+
+```html
+<div class="d-flex justify-content-start">...</div>
+<div class="d-flex justify-content-end">...</div>
+<div class="d-flex justify-content-center">...</div>
+<div class="d-flex justify-content-between">...</div>
+<div class="d-flex justify-content-around">...</div>
+<div class="d-flex justify-content-evenly">...</div>
+```
+
+Responsive variations also exist for `justify-content`.
+
+{{< markdown >}}
+{{< flex.inline >}}
+{{- range $.Site.Data.breakpoints }}
+- `.justify-content{{ .abbr }}-start`
+- `.justify-content{{ .abbr }}-end`
+- `.justify-content{{ .abbr }}-center`
+- `.justify-content{{ .abbr }}-between`
+- `.justify-content{{ .abbr }}-around`
+- `.justify-content{{ .abbr }}-evenly`
+{{- end -}}
+{{< /flex.inline >}}
+{{< /markdown >}}
+
+## Align items
+
+Use `align-items` utilities on flexbox containers to change the alignment of flex items on the cross axis (the y-axis to start, x-axis if `flex-direction: column`). Choose from `start`, `end`, `center`, `baseline`, or `stretch` (browser default).
+
+<div class="bd-example bd-example-flex">
+ <div class="d-flex align-items-start mb-3" style="height: 100px">
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ </div>
+ <div class="d-flex align-items-end mb-3" style="height: 100px">
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ </div>
+ <div class="d-flex align-items-center mb-3" style="height: 100px">
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ </div>
+ <div class="d-flex align-items-baseline mb-3" style="height: 100px">
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ </div>
+ <div class="d-flex align-items-stretch" style="height: 100px">
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ </div>
+</div>
+
+```html
+<div class="d-flex align-items-start">...</div>
+<div class="d-flex align-items-end">...</div>
+<div class="d-flex align-items-center">...</div>
+<div class="d-flex align-items-baseline">...</div>
+<div class="d-flex align-items-stretch">...</div>
+```
+
+Responsive variations also exist for `align-items`.
+
+{{< markdown >}}
+{{< flex.inline >}}
+{{- range $.Site.Data.breakpoints }}
+- `.align-items{{ .abbr }}-start`
+- `.align-items{{ .abbr }}-end`
+- `.align-items{{ .abbr }}-center`
+- `.align-items{{ .abbr }}-baseline`
+- `.align-items{{ .abbr }}-stretch`
+{{- end -}}
+{{< /flex.inline >}}
+{{< /markdown >}}
+
+## Align self
+
+Use `align-self` utilities on flexbox items to individually change their alignment on the cross axis (the y-axis to start, x-axis if `flex-direction: column`). Choose from the same options as `align-items`: `start`, `end`, `center`, `baseline`, or `stretch` (browser default).
+
+<div class="bd-example bd-example-flex">
+ <div class="d-flex mb-3" style="height: 100px">
+ <div class="p-2">Flex item</div>
+ <div class="align-self-start p-2">Aligned flex item</div>
+ <div class="p-2">Flex item</div>
+ </div>
+ <div class="d-flex mb-3" style="height: 100px">
+ <div class="p-2">Flex item</div>
+ <div class="align-self-end p-2">Aligned flex item</div>
+ <div class="p-2">Flex item</div>
+ </div>
+ <div class="d-flex mb-3" style="height: 100px">
+ <div class="p-2">Flex item</div>
+ <div class="align-self-center p-2">Aligned flex item</div>
+ <div class="p-2">Flex item</div>
+ </div>
+ <div class="d-flex mb-3" style="height: 100px">
+ <div class="p-2">Flex item</div>
+ <div class="align-self-baseline p-2">Aligned flex item</div>
+ <div class="p-2">Flex item</div>
+ </div>
+ <div class="d-flex" style="height: 100px">
+ <div class="p-2">Flex item</div>
+ <div class="align-self-stretch p-2">Aligned flex item</div>
+ <div class="p-2">Flex item</div>
+ </div>
+</div>
+
+```html
+<div class="align-self-start">Aligned flex item</div>
+<div class="align-self-end">Aligned flex item</div>
+<div class="align-self-center">Aligned flex item</div>
+<div class="align-self-baseline">Aligned flex item</div>
+<div class="align-self-stretch">Aligned flex item</div>
+```
+
+Responsive variations also exist for `align-self`.
+
+{{< markdown >}}
+{{< flex.inline >}}
+{{- range $.Site.Data.breakpoints }}
+- `.align-self{{ .abbr }}-start`
+- `.align-self{{ .abbr }}-end`
+- `.align-self{{ .abbr }}-center`
+- `.align-self{{ .abbr }}-baseline`
+- `.align-self{{ .abbr }}-stretch`
+{{- end -}}
+{{< /flex.inline >}}
+{{< /markdown >}}
+
+## Fill
+
+Use the `.flex-fill` class on a series of sibling elements to force them into widths equal to their content (or equal widths if their content does not surpass their border-boxes) while taking up all available horizontal space.
+
+{{< example class="bd-example-flex" >}}
+<div class="d-flex">
+ <div class="p-2 flex-fill">Flex item with a lot of content</div>
+ <div class="p-2 flex-fill">Flex item</div>
+ <div class="p-2 flex-fill">Flex item</div>
+</div>
+{{< /example >}}
+
+Responsive variations also exist for `flex-fill`.
+
+{{< markdown >}}
+{{< flex.inline >}}
+{{- range $.Site.Data.breakpoints }}
+- `.flex{{ .abbr }}-fill`
+{{- end -}}
+{{< /flex.inline >}}
+{{< /markdown >}}
+
+## Grow and shrink
+
+Use `.flex-grow-*` utilities to toggle a flex item's ability to grow to fill available space. In the example below, the `.flex-grow-1` elements uses all available space it can, while allowing the remaining two flex items their necessary space.
+
+{{< example class="bd-example-flex" >}}
+<div class="d-flex">
+ <div class="p-2 flex-grow-1">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Third flex item</div>
+</div>
+{{< /example >}}
+
+Use `.flex-shrink-*` utilities to toggle a flex item's ability to shrink if necessary. In the example below, the second flex item with `.flex-shrink-1` is forced to wrap its contents to a new line, "shrinking" to allow more space for the previous flex item with `.w-100`.
+
+{{< example class="bd-example-flex" >}}
+<div class="d-flex">
+ <div class="p-2 w-100">Flex item</div>
+ <div class="p-2 flex-shrink-1">Flex item</div>
+</div>
+{{< /example >}}
+
+Responsive variations also exist for `flex-grow` and `flex-shrink`.
+
+{{< markdown >}}
+{{< flex.inline >}}
+{{- range $.Site.Data.breakpoints }}
+- `.flex{{ .abbr }}-{grow|shrink}-0`
+- `.flex{{ .abbr }}-{grow|shrink}-1`
+{{- end -}}
+{{< /flex.inline >}}
+{{< /markdown >}}
+
+## Auto margins
+
+Flexbox can do some pretty awesome things when you mix flex alignments with auto margins. Shown below are three examples of controlling flex items via auto margins: default (no auto margin), pushing two items to the right (`.me-auto`), and pushing two items to the left (`.ms-auto`).
+
+{{< example class="bd-example-flex" >}}
+<div class="d-flex mb-3">
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+</div>
+
+<div class="d-flex mb-3">
+ <div class="me-auto p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+</div>
+
+<div class="d-flex mb-3">
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="ms-auto p-2">Flex item</div>
+</div>
+{{< /example >}}
+
+### With align-items
+
+Vertically move one flex item to the top or bottom of a container by mixing `align-items`, `flex-direction: column`, and `margin-top: auto` or `margin-bottom: auto`.
+
+{{< example class="bd-example-flex" >}}
+<div class="d-flex align-items-start flex-column mb-3" style="height: 200px;">
+ <div class="mb-auto p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+</div>
+
+<div class="d-flex align-items-end flex-column mb-3" style="height: 200px;">
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="mt-auto p-2">Flex item</div>
+</div>
+{{< /example >}}
+
+## Wrap
+
+Change how flex items wrap in a flex container. Choose from no wrapping at all (the browser default) with `.flex-nowrap`, wrapping with `.flex-wrap`, or reverse wrapping with `.flex-wrap-reverse`.
+
+<div class="bd-example bd-example-flex">
+ <div class="d-flex flex-nowrap" style="width: 8rem;">
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ </div>
+</div>
+
+```html
+<div class="d-flex flex-nowrap">
+ ...
+</div>
+```
+
+<div class="bd-example bd-example-flex">
+ <div class="d-flex flex-wrap">
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ </div>
+</div>
+
+```html
+<div class="d-flex flex-wrap">
+ ...
+</div>
+```
+
+<div class="bd-example bd-example-flex">
+ <div class="d-flex flex-wrap-reverse">
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ </div>
+</div>
+
+```html
+<div class="d-flex flex-wrap-reverse">
+ ...
+</div>
+```
+
+
+Responsive variations also exist for `flex-wrap`.
+
+{{< markdown >}}
+{{< flex.inline >}}
+{{- range $.Site.Data.breakpoints }}
+- `.flex{{ .abbr }}-nowrap`
+- `.flex{{ .abbr }}-wrap`
+- `.flex{{ .abbr }}-wrap-reverse`
+{{- end -}}
+{{< /flex.inline >}}
+{{< /markdown >}}
+
+## Order
+
+Change the _visual_ order of specific flex items with a handful of `order` utilities. We only provide options for making an item first or last, as well as a reset to use the DOM order. As `order` takes any integer value from 0 to 5, add custom CSS for any additional values needed.
+
+{{< example class="bd-example-flex" >}}
+<div class="d-flex flex-nowrap">
+ <div class="order-3 p-2">First flex item</div>
+ <div class="order-2 p-2">Second flex item</div>
+ <div class="order-1 p-2">Third flex item</div>
+</div>
+{{< /example >}}
+
+Responsive variations also exist for `order`.
+
+{{< markdown >}}
+{{< flex.inline >}}
+{{- range $bp := $.Site.Data.breakpoints -}}
+{{- range (seq 0 5) }}
+- `.order{{ $bp.abbr }}-{{ . }}`
+{{- end -}}
+{{- end -}}
+{{< /flex.inline >}}
+{{< /markdown >}}
+
+Additionally there are also responsive `.order-first` and `.order-last` classes that change the `order` of an element by applying `order: -1` and `order: 6`, respectively.
+
+{{< markdown >}}
+{{< flex.inline >}}
+{{- range $bp := $.Site.Data.breakpoints -}}
+{{- range (slice "first" "last") }}
+- `.order{{ $bp.abbr }}-{{ . }}`
+{{- end -}}
+{{- end -}}
+{{< /flex.inline >}}
+{{< /markdown >}}
+
+## Align content
+
+Use `align-content` utilities on flexbox containers to align flex items *together* on the cross axis. Choose from `start` (browser default), `end`, `center`, `between`, `around`, or `stretch`. To demonstrate these utilities, we've enforced `flex-wrap: wrap` and increased the number of flex items.
+
+**Heads up!** This property has no effect on single rows of flex items.
+
+<div class="bd-example bd-example-flex">
+ <div class="d-flex align-content-start flex-wrap mb-3" style="height: 200px">
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ </div>
+</div>
+
+```html
+<div class="d-flex align-content-start flex-wrap">
+ ...
+</div>
+```
+
+<div class="bd-example bd-example-flex">
+ <div class="d-flex align-content-end flex-wrap mb-3" style="height: 200px">
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ </div>
+</div>
+
+```html
+<div class="d-flex align-content-end flex-wrap">...</div>
+```
+
+<div class="bd-example bd-example-flex">
+ <div class="d-flex align-content-center flex-wrap mb-3" style="height: 200px">
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ </div>
+</div>
+
+```html
+<div class="d-flex align-content-center flex-wrap">...</div>
+```
+
+<div class="bd-example bd-example-flex">
+ <div class="d-flex align-content-between flex-wrap mb-3" style="height: 200px">
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ </div>
+</div>
+
+```html
+<div class="d-flex align-content-between flex-wrap">...</div>
+```
+
+<div class="bd-example bd-example-flex">
+ <div class="d-flex align-content-around flex-wrap mb-3" style="height: 200px">
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ </div>
+</div>
+
+```html
+<div class="d-flex align-content-around flex-wrap">...</div>
+```
+
+<div class="bd-example bd-example-flex">
+ <div class="d-flex align-content-stretch flex-wrap mb-3" style="height: 200px">
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ <div class="p-2">Flex item</div>
+ </div>
+</div>
+
+```html
+<div class="d-flex align-content-stretch flex-wrap">...</div>
+```
+
+Responsive variations also exist for `align-content`.
+
+{{< markdown >}}
+{{< flex.inline >}}
+{{- range $.Site.Data.breakpoints }}
+- `.align-content{{ .abbr }}-start`
+- `.align-content{{ .abbr }}-end`
+- `.align-content{{ .abbr }}-center`
+- `.align-content{{ .abbr }}-between`
+- `.align-content{{ .abbr }}-around`
+- `.align-content{{ .abbr }}-stretch`
+{{- end -}}
+{{< /flex.inline >}}
+{{< /markdown >}}
+
+## Media object
+
+Looking to replicate the [media object component](https://getbootstrap.com/docs/4.6/components/media-object/) from Bootstrap 4? Recreate it in no time with a few flex utilities that allow even more flexibility and customization than before.
+
+{{< example >}}
+<div class="d-flex">
+ <div class="flex-shrink-0">
+ {{< placeholder width="100" height="100" color="#999" background="#e5e5e5" text="Image" >}}
+ </div>
+ <div class="flex-grow-1 ms-3">
+ This is some content from a media component. You can replace this with any content and adjust it as needed.
+ </div>
+</div>
+{{< /example >}}
+
+And say you want to vertically center the content next to the image:
+
+{{< example >}}
+<div class="d-flex align-items-center">
+ <div class="flex-shrink-0">
+ {{< placeholder width="100" height="100" color="#999" background="#e5e5e5" text="Image" >}}
+ </div>
+ <div class="flex-grow-1 ms-3">
+ This is some content from a media component. You can replace this with any content and adjust it as needed.
+ </div>
+</div>
+{{< /example >}}
+
+## Sass
+
+### Utilities API
+
+Flexbox utilities are declared in our utilities API in `scss/_utilities.scss`. [Learn how to use the utilities API.]({{< docsref "/utilities/api#using-the-api" >}})
+
+{{< scss-docs name="utils-flex" file="scss/_utilities.scss" >}}
diff --git a/site/content/docs/5.2/utilities/float.md b/site/content/docs/5.2/utilities/float.md
new file mode 100644
index 0000000..a18c214
--- /dev/null
+++ b/site/content/docs/5.2/utilities/float.md
@@ -0,0 +1,48 @@
+---
+layout: docs
+title: Float
+description: Toggle floats on any element, across any breakpoint, using our responsive float utilities.
+group: utilities
+toc: true
+---
+
+## Overview
+
+These utility classes float an element to the left or right, or disable floating, based on the current viewport size using the [CSS `float` property](https://developer.mozilla.org/en-US/docs/Web/CSS/float). `!important` is included to avoid specificity issues. These use the same viewport breakpoints as our grid system. Please be aware float utilities have no effect on flex items.
+
+{{< example >}}
+<div class="float-start">Float start on all viewport sizes</div><br>
+<div class="float-end">Float end on all viewport sizes</div><br>
+<div class="float-none">Don't float on all viewport sizes</div>
+{{< /example >}}
+
+## Responsive
+
+Responsive variations also exist for each `float` value.
+
+{{< example >}}
+<div class="float-sm-start">Float start on viewports sized SM (small) or wider</div><br>
+<div class="float-md-start">Float start on viewports sized MD (medium) or wider</div><br>
+<div class="float-lg-start">Float start on viewports sized LG (large) or wider</div><br>
+<div class="float-xl-start">Float start on viewports sized XL (extra-large) or wider</div><br>
+{{< /example >}}
+
+Here are all the support classes:
+
+{{< markdown >}}
+{{< float.inline >}}
+{{- range $.Site.Data.breakpoints }}
+- `.float{{ .abbr }}-start`
+- `.float{{ .abbr }}-end`
+- `.float{{ .abbr }}-none`
+{{- end -}}
+{{< /float.inline >}}
+{{< /markdown >}}
+
+## Sass
+
+### Utilities API
+
+Float utilities are declared in our utilities API in `scss/_utilities.scss`. [Learn how to use the utilities API.]({{< docsref "/utilities/api#using-the-api" >}})
+
+{{< scss-docs name="utils-float" file="scss/_utilities.scss" >}}
diff --git a/site/content/docs/5.2/utilities/interactions.md b/site/content/docs/5.2/utilities/interactions.md
new file mode 100644
index 0000000..35ea2b9
--- /dev/null
+++ b/site/content/docs/5.2/utilities/interactions.md
@@ -0,0 +1,42 @@
+---
+layout: docs
+title: Interactions
+description: Utility classes that change how users interact with contents of a website.
+group: utilities
+toc: false
+---
+
+## Text selection
+
+Change the way in which the content is selected when the user interacts with it.
+
+{{< example >}}
+<p class="user-select-all">This paragraph will be entirely selected when clicked by the user.</p>
+<p class="user-select-auto">This paragraph has default select behavior.</p>
+<p class="user-select-none">This paragraph will not be selectable when clicked by the user.</p>
+{{< /example >}}
+
+## Pointer events
+
+Bootstrap provides `.pe-none` and `.pe-auto` classes to prevent or add element interactions.
+
+{{< example >}}
+<p><a href="#" class="pe-none" tabindex="-1" aria-disabled="true">This link</a> can not be clicked.</p>
+<p><a href="#" class="pe-auto">This link</a> can be clicked (this is default behavior).</p>
+<p class="pe-none"><a href="#" tabindex="-1" aria-disabled="true">This link</a> can not be clicked because the <code>pointer-events</code> property is inherited from its parent. However, <a href="#" class="pe-auto">this link</a> has a <code>pe-auto</code> class and can be clicked.</p>
+{{< /example >}}
+
+The `.pe-none` class (and the `pointer-events` CSS property it sets) only prevents interactions with a pointer (mouse, stylus, touch). Links and controls with `.pe-none` are, by default, still focusable and actionable for keyboard users. To ensure that they are completely neutralized even for keyboard users, you may need to add further attributes such as `tabindex="-1"` (to prevent them from receiving keyboard focus) and `aria-disabled="true"` (to convey the fact they are effectively disabled to assistive technologies), and possibly use JavaScript to completely prevent them from being actionable.
+
+If possible, the simpler solution is:
+
+- For form controls, add the `disabled` HTML attribute.
+* For links, remove the `href` attribute, making it a non-interactive anchor or placeholder link.
+
+## Sass
+
+### Utilities API
+
+Interaction utilities are declared in our utilities API in `scss/_utilities.scss`. [Learn how to use the utilities API.]({{< docsref "/utilities/api#using-the-api" >}})
+
+{{< scss-docs name="utils-interaction" file="scss/_utilities.scss" >}}
diff --git a/site/content/docs/5.2/utilities/opacity.md b/site/content/docs/5.2/utilities/opacity.md
new file mode 100644
index 0000000..5cc4c22
--- /dev/null
+++ b/site/content/docs/5.2/utilities/opacity.md
@@ -0,0 +1,31 @@
+---
+layout: docs
+title: Opacity
+description: Control the opacity of elements.
+group: utilities
+added: "5.1"
+---
+
+The `opacity` property sets the opacity level for an element. The opacity level describes the transparency level, where `1` is not transparent at all, `.5` is 50% visible, and `0` is completely transparent.
+
+Set the `opacity` of an element using `.opacity-{value}` utilities.
+
+<div class="bd-example d-sm-flex">
+ <div class="opacity-100 p-3 m-2 bg-primary text-light fw-bold rounded">100%</div>
+ <div class="opacity-75 p-3 m-2 bg-primary text-light fw-bold rounded">75%</div>
+ <div class="opacity-50 p-3 m-2 bg-primary text-light fw-bold rounded">50%</div>
+ <div class="opacity-25 p-3 m-2 bg-primary text-light fw-bold rounded">25%</div>
+</div>
+
+```html
+<div class="opacity-100">...</div>
+<div class="opacity-75">...</div>
+<div class="opacity-50">...</div>
+<div class="opacity-25">...</div>
+```
+
+### Utilities API
+
+Opacity utilities are declared in our utilities API in `scss/_utilities.scss`. [Learn how to use the utilities API.]({{< docsref "/utilities/api#using-the-api" >}})
+
+{{< scss-docs name="utils-opacity" file="scss/_utilities.scss" >}}
diff --git a/site/content/docs/5.2/utilities/overflow.md b/site/content/docs/5.2/utilities/overflow.md
new file mode 100644
index 0000000..a36374c
--- /dev/null
+++ b/site/content/docs/5.2/utilities/overflow.md
@@ -0,0 +1,40 @@
+---
+layout: docs
+title: Overflow
+description: Use these shorthand utilities for quickly configuring how content overflows an element.
+group: utilities
+---
+
+Adjust the `overflow` property on the fly with four default values and classes. These classes are not responsive by default.
+
+<div class="bd-example d-md-flex">
+ <div class="overflow-auto p-3 mb-3 mb-md-0 me-md-3 bg-light" style="max-width: 260px; max-height: 100px;">
+ This is an example of using <code>.overflow-auto</code> on an element with set width and height dimensions. By design, this content will vertically scroll.
+ </div>
+ <div class="overflow-hidden p-3 mb-3 mb-md-0 me-md-3 bg-light" style="max-width: 260px; max-height: 100px;">
+ This is an example of using <code>.overflow-hidden</code> on an element with set width and height dimensions.
+ </div>
+ <div class="overflow-visible p-3 mb-3 mb-md-0 me-md-3 bg-light" style="max-width: 260px; max-height: 100px;">
+ This is an example of using <code>.overflow-visible</code> on an element with set width and height dimensions.
+ </div>
+ <div class="overflow-scroll p-3 bg-light" style="max-width: 260px; max-height: 100px;">
+ This is an example of using <code>.overflow-scroll</code> on an element with set width and height dimensions.
+ </div>
+</div>
+
+```html
+<div class="overflow-auto">...</div>
+<div class="overflow-hidden">...</div>
+<div class="overflow-visible">...</div>
+<div class="overflow-scroll">...</div>
+```
+
+Using Sass variables, you may customize the overflow utilities by changing the `$overflows` variable in `_variables.scss`.
+
+## Sass
+
+### Utilities API
+
+Overflow utilities are declared in our utilities API in `scss/_utilities.scss`. [Learn how to use the utilities API.]({{< docsref "/utilities/api#using-the-api" >}})
+
+{{< scss-docs name="utils-overflow" file="scss/_utilities.scss" >}}
diff --git a/site/content/docs/5.2/utilities/position.md b/site/content/docs/5.2/utilities/position.md
new file mode 100644
index 0000000..5a6e849
--- /dev/null
+++ b/site/content/docs/5.2/utilities/position.md
@@ -0,0 +1,130 @@
+---
+layout: docs
+title: Position
+description: Use these shorthand utilities for quickly configuring the position of an element.
+group: utilities
+toc: true
+---
+
+## Position values
+
+Quick positioning classes are available, though they are not responsive.
+
+```html
+<div class="position-static">...</div>
+<div class="position-relative">...</div>
+<div class="position-absolute">...</div>
+<div class="position-fixed">...</div>
+<div class="position-sticky">...</div>
+```
+
+## Arrange elements
+
+Arrange elements easily with the edge positioning utilities. The format is `{property}-{position}`.
+
+Where *property* is one of:
+
+- `top` - for the vertical `top` position
+- `start` - for the horizontal `left` position (in LTR)
+- `bottom` - for the vertical `bottom` position
+- `end` - for the horizontal `right` position (in LTR)
+
+Where *position* is one of:
+
+- `0` - for `0` edge position
+- `50` - for `50%` edge position
+- `100` - for `100%` edge position
+
+(You can add more position values by adding entries to the `$position-values` Sass map variable.)
+
+{{< example class="bd-example-position-utils" >}}
+<div class="position-relative">
+ <div class="position-absolute top-0 start-0"></div>
+ <div class="position-absolute top-0 end-0"></div>
+ <div class="position-absolute top-50 start-50"></div>
+ <div class="position-absolute bottom-50 end-50"></div>
+ <div class="position-absolute bottom-0 start-0"></div>
+ <div class="position-absolute bottom-0 end-0"></div>
+</div>
+{{< /example >}}
+
+## Center elements
+
+In addition, you can also center the elements with the transform utility class `.translate-middle`.
+
+This class applies the transformations `translateX(-50%)` and `translateY(-50%)` to the element which, in combination with the edge positioning utilities, allows you to absolute center an element.
+
+{{< example class="bd-example-position-utils" >}}
+<div class="position-relative">
+ <div class="position-absolute top-0 start-0 translate-middle"></div>
+ <div class="position-absolute top-0 start-50 translate-middle"></div>
+ <div class="position-absolute top-0 start-100 translate-middle"></div>
+ <div class="position-absolute top-50 start-0 translate-middle"></div>
+ <div class="position-absolute top-50 start-50 translate-middle"></div>
+ <div class="position-absolute top-50 start-100 translate-middle"></div>
+ <div class="position-absolute top-100 start-0 translate-middle"></div>
+ <div class="position-absolute top-100 start-50 translate-middle"></div>
+ <div class="position-absolute top-100 start-100 translate-middle"></div>
+</div>
+{{< /example >}}
+
+By adding `.translate-middle-x` or `.translate-middle-y` classes, elements can be positioned only in horizontal or vertical direction.
+
+{{< example class="bd-example-position-utils" >}}
+<div class="position-relative">
+ <div class="position-absolute top-0 start-0"></div>
+ <div class="position-absolute top-0 start-50 translate-middle-x"></div>
+ <div class="position-absolute top-0 end-0"></div>
+ <div class="position-absolute top-50 start-0 translate-middle-y"></div>
+ <div class="position-absolute top-50 start-50 translate-middle"></div>
+ <div class="position-absolute top-50 end-0 translate-middle-y"></div>
+ <div class="position-absolute bottom-0 start-0"></div>
+ <div class="position-absolute bottom-0 start-50 translate-middle-x"></div>
+ <div class="position-absolute bottom-0 end-0"></div>
+</div>
+{{< /example >}}
+
+## Examples
+
+Here are some real life examples of these classes:
+
+{{< example class="bd-example-position-examples d-flex justify-content-around" >}}
+<button type="button" class="btn btn-primary position-relative">
+ Mails <span class="position-absolute top-0 start-100 translate-middle badge rounded-pill bg-secondary">+99 <span class="visually-hidden">unread messages</span></span>
+</button>
+
+<button type="button" class="btn btn-dark position-relative">
+ Marker <svg width="1em" height="1em" viewBox="0 0 16 16" class="position-absolute top-100 start-50 translate-middle mt-1" fill="#212529" xmlns="http://www.w3.org/2000/svg"><path d="M7.247 11.14L2.451 5.658C1.885 5.013 2.345 4 3.204 4h9.592a1 1 0 0 1 .753 1.659l-4.796 5.48a1 1 0 0 1-1.506 0z"/></svg>
+</button>
+
+<button type="button" class="btn btn-primary position-relative">
+ Alerts <span class="position-absolute top-0 start-100 translate-middle badge border border-light rounded-circle bg-danger p-2"><span class="visually-hidden">unread messages</span></span>
+</button>
+{{< /example >}}
+
+You can use these classes with existing components to create new ones. Remember that you can extend its functionality by adding entries to the `$position-values` variable.
+
+{{< example class="bd-example-position-examples" >}}
+<div class="position-relative m-4">
+ <div class="progress" style="height: 1px;">
+ <div class="progress-bar" role="progressbar" aria-label="Progress" style="width: 50%;" aria-valuenow="50" aria-valuemin="0" aria-valuemax="100"></div>
+ </div>
+ <button type="button" class="position-absolute top-0 start-0 translate-middle btn btn-sm btn-primary rounded-pill" style="width: 2rem; height:2rem;">1</button>
+ <button type="button" class="position-absolute top-0 start-50 translate-middle btn btn-sm btn-primary rounded-pill" style="width: 2rem; height:2rem;">2</button>
+ <button type="button" class="position-absolute top-0 start-100 translate-middle btn btn-sm btn-secondary rounded-pill" style="width: 2rem; height:2rem;">3</button>
+</div>
+{{< /example >}}
+
+## Sass
+
+### Maps
+
+Default position utility values are declared in a Sass map, then used to generate our utilities.
+
+{{< scss-docs name="position-map" file="scss/_variables.scss" >}}
+
+### Utilities API
+
+Position utilities are declared in our utilities API in `scss/_utilities.scss`. [Learn how to use the utilities API.]({{< docsref "/utilities/api#using-the-api" >}})
+
+{{< scss-docs name="utils-position" file="scss/_utilities.scss" >}}
diff --git a/site/content/docs/5.2/utilities/shadows.md b/site/content/docs/5.2/utilities/shadows.md
new file mode 100644
index 0000000..bb5ef44
--- /dev/null
+++ b/site/content/docs/5.2/utilities/shadows.md
@@ -0,0 +1,30 @@
+---
+layout: docs
+title: Shadows
+description: Add or remove shadows to elements with box-shadow utilities.
+group: utilities
+toc: true
+---
+
+## Examples
+
+While shadows on components are disabled by default in Bootstrap and can be enabled via `$enable-shadows`, you can also quickly add or remove a shadow with our `box-shadow` utility classes. Includes support for `.shadow-none` and three default sizes (which have associated variables to match).
+
+{{< example >}}
+<div class="shadow-none p-3 mb-5 bg-light rounded">No shadow</div>
+<div class="shadow-sm p-3 mb-5 bg-body rounded">Small shadow</div>
+<div class="shadow p-3 mb-5 bg-body rounded">Regular shadow</div>
+<div class="shadow-lg p-3 mb-5 bg-body rounded">Larger shadow</div>
+{{< /example >}}
+
+## Sass
+
+### Variables
+
+{{< scss-docs name="box-shadow-variables" file="scss/_variables.scss" >}}
+
+### Utilities API
+
+Shadow utilities are declared in our utilities API in `scss/_utilities.scss`. [Learn how to use the utilities API.]({{< docsref "/utilities/api#using-the-api" >}})
+
+{{< scss-docs name="utils-shadow" file="scss/_utilities.scss" >}}
diff --git a/site/content/docs/5.2/utilities/sizing.md b/site/content/docs/5.2/utilities/sizing.md
new file mode 100644
index 0000000..962575f
--- /dev/null
+++ b/site/content/docs/5.2/utilities/sizing.md
@@ -0,0 +1,60 @@
+---
+layout: docs
+title: Sizing
+description: Easily make an element as wide or as tall with our width and height utilities.
+group: utilities
+toc: true
+---
+
+## Relative to the parent
+
+Width and height utilities are generated from the utility API in `_utilities.scss`. Includes support for `25%`, `50%`, `75%`, `100%`, and `auto` by default. Modify those values as you need to generate different utilities here.
+
+{{< example >}}
+<div class="w-25 p-3" style="background-color: #eee;">Width 25%</div>
+<div class="w-50 p-3" style="background-color: #eee;">Width 50%</div>
+<div class="w-75 p-3" style="background-color: #eee;">Width 75%</div>
+<div class="w-100 p-3" style="background-color: #eee;">Width 100%</div>
+<div class="w-auto p-3" style="background-color: #eee;">Width auto</div>
+{{< /example >}}
+
+{{< example >}}
+<div style="height: 100px; background-color: rgba(255,0,0,0.1);">
+ <div class="h-25 d-inline-block" style="width: 120px; background-color: rgba(0,0,255,.1)">Height 25%</div>
+ <div class="h-50 d-inline-block" style="width: 120px; background-color: rgba(0,0,255,.1)">Height 50%</div>
+ <div class="h-75 d-inline-block" style="width: 120px; background-color: rgba(0,0,255,.1)">Height 75%</div>
+ <div class="h-100 d-inline-block" style="width: 120px; background-color: rgba(0,0,255,.1)">Height 100%</div>
+ <div class="h-auto d-inline-block" style="width: 120px; background-color: rgba(0,0,255,.1)">Height auto</div>
+</div>
+{{< /example >}}
+
+You can also use `max-width: 100%;` and `max-height: 100%;` utilities as needed.
+
+{{< example >}}
+{{< placeholder width="100%" height="100" class="mw-100" text="Max-width 100%" >}}
+{{< /example >}}
+
+{{< example >}}
+<div style="height: 100px; background-color: rgba(255,0,0,.1);">
+ <div class="mh-100" style="width: 100px; height: 200px; background-color: rgba(0,0,255,.1);">Max-height 100%</div>
+</div>
+{{< /example >}}
+
+## Relative to the viewport
+
+You can also use utilities to set the width and height relative to the viewport.
+
+```html
+<div class="min-vw-100">Min-width 100vw</div>
+<div class="min-vh-100">Min-height 100vh</div>
+<div class="vw-100">Width 100vw</div>
+<div class="vh-100">Height 100vh</div>
+```
+
+## Sass
+
+### Utilities API
+
+Sizing utilities are declared in our utilities API in `scss/_utilities.scss`. [Learn how to use the utilities API.]({{< docsref "/utilities/api#using-the-api" >}})
+
+{{< scss-docs name="utils-sizing" file="scss/_utilities.scss" >}}
diff --git a/site/content/docs/5.2/utilities/spacing.md b/site/content/docs/5.2/utilities/spacing.md
new file mode 100644
index 0000000..1e5f6d3
--- /dev/null
+++ b/site/content/docs/5.2/utilities/spacing.md
@@ -0,0 +1,127 @@
+---
+layout: docs
+title: Spacing
+description: Bootstrap includes a wide range of shorthand responsive margin, padding, and gap utility classes to modify an element's appearance.
+group: utilities
+toc: true
+---
+
+## Margin and padding
+
+Assign responsive-friendly `margin` or `padding` values to an element or a subset of its sides with shorthand classes. Includes support for individual properties, all properties, and vertical and horizontal properties. Classes are built from a default Sass map ranging from `.25rem` to `3rem`.
+
+{{< callout >}}
+**Using the CSS Grid layout module?** Consider using [the gap utility](#gap) instead.
+{{< /callout >}}
+
+### Notation
+
+Spacing utilities that apply to all breakpoints, from `xs` to `xxl`, have no breakpoint abbreviation in them. This is because those classes are applied from `min-width: 0` and up, and thus are not bound by a media query. The remaining breakpoints, however, do include a breakpoint abbreviation.
+
+The classes are named using the format `{property}{sides}-{size}` for `xs` and `{property}{sides}-{breakpoint}-{size}` for `sm`, `md`, `lg`, `xl`, and `xxl`.
+
+Where *property* is one of:
+
+- `m` - for classes that set `margin`
+- `p` - for classes that set `padding`
+
+Where *sides* is one of:
+
+- `t` - for classes that set `margin-top` or `padding-top`
+- `b` - for classes that set `margin-bottom` or `padding-bottom`
+- `s` - (start) for classes that set `margin-left` or `padding-left` in LTR, `margin-right` or `padding-right` in RTL
+- `e` - (end) for classes that set `margin-right` or `padding-right` in LTR, `margin-left` or `padding-left` in RTL
+- `x` - for classes that set both `*-left` and `*-right`
+- `y` - for classes that set both `*-top` and `*-bottom`
+- blank - for classes that set a `margin` or `padding` on all 4 sides of the element
+
+Where *size* is one of:
+
+- `0` - for classes that eliminate the `margin` or `padding` by setting it to `0`
+- `1` - (by default) for classes that set the `margin` or `padding` to `$spacer * .25`
+- `2` - (by default) for classes that set the `margin` or `padding` to `$spacer * .5`
+- `3` - (by default) for classes that set the `margin` or `padding` to `$spacer`
+- `4` - (by default) for classes that set the `margin` or `padding` to `$spacer * 1.5`
+- `5` - (by default) for classes that set the `margin` or `padding` to `$spacer * 3`
+- `auto` - for classes that set the `margin` to auto
+
+(You can add more sizes by adding entries to the `$spacers` Sass map variable.)
+
+### Examples
+
+Here are some representative examples of these classes:
+
+```scss
+.mt-0 {
+ margin-top: 0 !important;
+}
+
+.ms-1 {
+ margin-left: ($spacer * .25) !important;
+}
+
+.px-2 {
+ padding-left: ($spacer * .5) !important;
+ padding-right: ($spacer * .5) !important;
+}
+
+.p-3 {
+ padding: $spacer !important;
+}
+```
+
+### Horizontal centering
+
+Additionally, Bootstrap also includes an `.mx-auto` class for horizontally centering fixed-width block level content—that is, content that has `display: block` and a `width` set—by setting the horizontal margins to `auto`.
+
+<div class="bd-example">
+ <div class="mx-auto" style="width: 200px; background-color: rgba(86,61,124,.15);">
+ Centered element
+ </div>
+</div>
+
+```html
+<div class="mx-auto" style="width: 200px;">
+ Centered element
+</div>
+```
+
+## Negative margin
+
+In CSS, `margin` properties can utilize negative values (`padding` cannot). These negative margins are **disabled by default**, but can be enabled in Sass by setting `$enable-negative-margins: true`.
+
+The syntax is nearly the same as the default, positive margin utilities, but with the addition of `n` before the requested size. Here's an example class that's the opposite of `.mt-1`:
+
+```scss
+.mt-n1 {
+ margin-top: -0.25rem !important;
+}
+```
+
+## Gap
+
+When using `display: grid`, you can make use of `gap` utilities on the parent grid container. This can save on having to add margin utilities to individual grid items (children of a `display: grid` container). Gap utilities are responsive by default, and are generated via our utilities API, based on the `$spacers` Sass map.
+
+{{< example html >}}
+<div class="d-grid gap-3">
+ <div class="p-2 bg-light border">Grid item 1</div>
+ <div class="p-2 bg-light border">Grid item 2</div>
+ <div class="p-2 bg-light border">Grid item 3</div>
+</div>
+{{< /example >}}
+
+Support includes responsive options for all of Bootstrap's grid breakpoints, as well as six sizes from the `$spacers` map (`0`–`5`). There is no `.gap-auto` utility class as it's effectively the same as `.gap-0`.
+
+## Sass
+
+### Maps
+
+Spacing utilities are declared via Sass map and then generated with our utilities API.
+
+{{< scss-docs name="spacer-variables-maps" file="scss/_variables.scss" >}}
+
+### Utilities API
+
+Spacing utilities are declared in our utilities API in `scss/_utilities.scss`. [Learn how to use the utilities API.]({{< docsref "/utilities/api#using-the-api" >}})
+
+{{< scss-docs name="utils-spacing" file="scss/_utilities.scss" >}}
diff --git a/site/content/docs/5.2/utilities/text.md b/site/content/docs/5.2/utilities/text.md
new file mode 100644
index 0000000..060194f
--- /dev/null
+++ b/site/content/docs/5.2/utilities/text.md
@@ -0,0 +1,155 @@
+---
+layout: docs
+title: Text
+description: Documentation and examples for common text utilities to control alignment, wrapping, weight, and more.
+group: utilities
+toc: true
+---
+
+## Text alignment
+
+Easily realign text to components with text alignment classes. For start, end, and center alignment, responsive classes are available that use the same viewport width breakpoints as the grid system.
+
+{{< example >}}
+<p class="text-start">Start aligned text on all viewport sizes.</p>
+<p class="text-center">Center aligned text on all viewport sizes.</p>
+<p class="text-end">End aligned text on all viewport sizes.</p>
+
+<p class="text-sm-start">Start aligned text on viewports sized SM (small) or wider.</p>
+<p class="text-md-start">Start aligned text on viewports sized MD (medium) or wider.</p>
+<p class="text-lg-start">Start aligned text on viewports sized LG (large) or wider.</p>
+<p class="text-xl-start">Start aligned text on viewports sized XL (extra-large) or wider.</p>
+{{< /example >}}
+
+{{< callout info >}}
+Note that we don't provide utility classes for justified text. While, aesthetically, justified text might look more appealing, it does make word-spacing more random and therefore harder to read.
+{{< /callout >}}
+
+## Text wrapping and overflow
+
+Wrap text with a `.text-wrap` class.
+
+{{< example >}}
+<div class="badge bg-primary text-wrap" style="width: 6rem;">
+ This text should wrap.
+</div>
+{{< /example >}}
+
+Prevent text from wrapping with a `.text-nowrap` class.
+
+{{< example >}}
+<div class="text-nowrap bg-light border" style="width: 8rem;">
+ This text should overflow the parent.
+</div>
+{{< /example >}}
+
+## Word break
+
+Prevent long strings of text from breaking your components' layout by using `.text-break` to set `word-wrap: break-word` and `word-break: break-word`. We use `word-wrap` instead of the more common `overflow-wrap` for wider browser support, and add the deprecated `word-break: break-word` to avoid issues with flex containers.
+
+{{< example >}}
+<p class="text-break">mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm</p>
+{{< /example >}}
+
+{{< callout warning >}}
+Note that [breaking words isn't possible in Arabic](https://rtlstyling.com/posts/rtl-styling#3.-line-break), which is the most used RTL language. Therefore `.text-break` is removed from our RTL compiled CSS.
+{{< /callout >}}
+
+## Text transform
+
+Transform text in components with text capitalization classes.
+
+{{< example >}}
+<p class="text-lowercase">Lowercased text.</p>
+<p class="text-uppercase">Uppercased text.</p>
+<p class="text-capitalize">CapiTaliZed text.</p>
+{{< /example >}}
+
+Note how `.text-capitalize` only changes the first letter of each word, leaving the case of any other letters unaffected.
+
+## Font size
+
+Quickly change the `font-size` of text. While our heading classes (e.g., `.h1`–`.h6`) apply `font-size`, `font-weight`, and `line-height`, these utilities _only_ apply `font-size`. Sizing for these utilities matches HTML's heading elements, so as the number increases, their size decreases.
+
+{{< example >}}
+<p class="fs-1">.fs-1 text</p>
+<p class="fs-2">.fs-2 text</p>
+<p class="fs-3">.fs-3 text</p>
+<p class="fs-4">.fs-4 text</p>
+<p class="fs-5">.fs-5 text</p>
+<p class="fs-6">.fs-6 text</p>
+{{< /example >}}
+
+Customize your available `font-size`s by modifying the `$font-sizes` Sass map.
+
+## Font weight and italics
+
+Quickly change the `font-weight` or `font-style` of text with these utilities. `font-style` utilities are abbreviated as `.fst-*` and `font-weight` utilities are abbreviated as `.fw-*`.
+
+{{< example >}}
+<p class="fw-bold">Bold text.</p>
+<p class="fw-bolder">Bolder weight text (relative to the parent element).</p>
+<p class="fw-semibold">Semibold weight text.</p>
+<p class="fw-normal">Normal weight text.</p>
+<p class="fw-light">Light weight text.</p>
+<p class="fw-lighter">Lighter weight text (relative to the parent element).</p>
+<p class="fst-italic">Italic text.</p>
+<p class="fst-normal">Text with normal font style</p>
+{{< /example >}}
+
+## Line height
+
+Change the line height with `.lh-*` utilities.
+
+{{< example >}}
+<p class="lh-1">This is a long paragraph written to show how the line-height of an element is affected by our utilities. Classes are applied to the element itself or sometimes the parent element. These classes can be customized as needed with our utility API.</p>
+<p class="lh-sm">This is a long paragraph written to show how the line-height of an element is affected by our utilities. Classes are applied to the element itself or sometimes the parent element. These classes can be customized as needed with our utility API.</p>
+<p class="lh-base">This is a long paragraph written to show how the line-height of an element is affected by our utilities. Classes are applied to the element itself or sometimes the parent element. These classes can be customized as needed with our utility API.</p>
+<p class="lh-lg">This is a long paragraph written to show how the line-height of an element is affected by our utilities. Classes are applied to the element itself or sometimes the parent element. These classes can be customized as needed with our utility API.</p>
+{{< /example >}}
+
+## Monospace
+
+Change a selection to our monospace font stack with `.font-monospace`.
+
+{{< example >}}
+<p class="font-monospace">This is in monospace</p>
+{{< /example >}}
+
+## Reset color
+
+Reset a text or link's color with `.text-reset`, so that it inherits the color from its parent.
+
+{{< example >}}
+<p class="text-muted">
+ Muted text with a <a href="#" class="text-reset">reset link</a>.
+</p>
+{{< /example >}}
+
+## Text decoration
+
+Decorate text in components with text decoration classes.
+
+{{< example >}}
+<p class="text-decoration-underline">This text has a line underneath it.</p>
+<p class="text-decoration-line-through">This text has a line going through it.</p>
+<a href="#" class="text-decoration-none">This link has its text decoration removed</a>
+{{< /example >}}
+
+## Sass
+
+### Variables
+
+{{< scss-docs name="font-variables" file="scss/_variables.scss" >}}
+
+### Maps
+
+Font-size utilities are generated from this map, in combination with our utilities API.
+
+{{< scss-docs name="font-sizes" file="scss/_variables.scss" >}}
+
+### Utilities API
+
+Font and text utilities are declared in our utilities API in `scss/_utilities.scss`. [Learn how to use the utilities API.]({{< docsref "/utilities/api#using-the-api" >}})
+
+{{< scss-docs name="utils-text" file="scss/_utilities.scss" >}}
diff --git a/site/content/docs/5.2/utilities/vertical-align.md b/site/content/docs/5.2/utilities/vertical-align.md
new file mode 100644
index 0000000..9fe0eeb
--- /dev/null
+++ b/site/content/docs/5.2/utilities/vertical-align.md
@@ -0,0 +1,48 @@
+---
+layout: docs
+title: Vertical alignment
+description: Easily change the vertical alignment of inline, inline-block, inline-table, and table cell elements.
+group: utilities
+---
+
+Change the alignment of elements with the [`vertical-alignment`](https://developer.mozilla.org/en-US/docs/Web/CSS/vertical-align) utilities. Please note that vertical-align only affects inline, inline-block, inline-table, and table cell elements.
+
+Choose from `.align-baseline`, `.align-top`, `.align-middle`, `.align-bottom`, `.align-text-bottom`, and `.align-text-top` as needed.
+
+To vertically center non-inline content (like `<div>`s and more), use our [flex box utilities]({{< docsref "/utilities/flex#align-items" >}}).
+
+With inline elements:
+
+{{< example >}}
+<span class="align-baseline">baseline</span>
+<span class="align-top">top</span>
+<span class="align-middle">middle</span>
+<span class="align-bottom">bottom</span>
+<span class="align-text-top">text-top</span>
+<span class="align-text-bottom">text-bottom</span>
+{{< /example >}}
+
+With table cells:
+
+{{< example >}}
+<table style="height: 100px;">
+ <tbody>
+ <tr>
+ <td class="align-baseline">baseline</td>
+ <td class="align-top">top</td>
+ <td class="align-middle">middle</td>
+ <td class="align-bottom">bottom</td>
+ <td class="align-text-top">text-top</td>
+ <td class="align-text-bottom">text-bottom</td>
+ </tr>
+ </tbody>
+</table>
+{{< /example >}}
+
+## Sass
+
+### Utilities API
+
+Vertical align utilities are declared in our utilities API in `scss/_utilities.scss`. [Learn how to use the utilities API.]({{< docsref "/utilities/api#using-the-api" >}})
+
+{{< scss-docs name="utils-vertical-align" file="scss/_utilities.scss" >}}
diff --git a/site/content/docs/5.2/utilities/visibility.md b/site/content/docs/5.2/utilities/visibility.md
new file mode 100644
index 0000000..61eb302
--- /dev/null
+++ b/site/content/docs/5.2/utilities/visibility.md
@@ -0,0 +1,37 @@
+---
+layout: docs
+title: Visibility
+description: Control the visibility of elements, without modifying their display, with visibility utilities.
+group: utilities
+---
+
+Set the `visibility` of elements with our visibility utilities. These utility classes do not modify the `display` value at all and do not affect layout – `.invisible` elements still take up space in the page.
+
+{{< callout warning >}}
+Elements with the `.invisible` class will be hidden *both* visually and for assistive technology/screen reader users.
+{{< /callout >}}
+
+Apply `.visible` or `.invisible` as needed.
+
+```html
+<div class="visible">...</div>
+<div class="invisible">...</div>
+```
+
+```scss
+// Class
+.visible {
+ visibility: visible !important;
+}
+.invisible {
+ visibility: hidden !important;
+}
+```
+
+## Sass
+
+### Utilities API
+
+Visibility utilities are declared in our utilities API in `scss/_utilities.scss`. [Learn how to use the utilities API.]({{< docsref "/utilities/api#using-the-api" >}})
+
+{{< scss-docs name="utils-visibility" file="scss/_utilities.scss" >}}