# better-tailwindcss/enforce-logical-properties
Enforce logical utility class names over physical directions for better RTL and LTR support.
The rule reports physical classes and auto-fixes them to their logical equivalent when a direct Tailwind replacement exists.
## Physical to Logical Mappings
| **Physical** | **Logical** |
| :--- | :--- |
| `pl-*` | `ps-*` |
| `pr-*` | `pe-*` |
| `pt-*` | `pbs-*` |
| `pb-*` | `pbe-*` |
| `ml-*` | `ms-*` |
| `mr-*` | `me-*` |
| `mt-*` | `mbs-*` |
| `mb-*` | `mbe-*` |
| `scroll-pl-*` | `scroll-ps-*` |
| `scroll-pr-*` | `scroll-pe-*` |
| `scroll-pt-*` | `scroll-pbs-*` |
| `scroll-pb-*` | `scroll-pbe-*` |
| `scroll-ml-*` | `scroll-ms-*` |
| `scroll-mr-*` | `scroll-me-*` |
| `scroll-mt-*` | `scroll-mbs-*` |
| `scroll-mb-*` | `scroll-mbe-*` |
| `left-*` | `inset-s-*` |
| `right-*` | `inset-e-*` |
| `top-*` | `inset-bs-*` |
| `bottom-*` | `inset-be-*` |
| `border-l` / `border-l-*` | `border-s` / `border-s-*` |
| `border-r` / `border-r-*` | `border-e` / `border-e-*` |
| `border-t` / `border-t-*` | `border-bs` / `border-bs-*` |
| `border-b` / `border-b-*` | `border-be` / `border-be-*` |
| `rounded-l` / `rounded-l-*` | `rounded-s` / `rounded-s-*` |
| `rounded-r` / `rounded-r-*` | `rounded-e` / `rounded-e-*` |
| `rounded-tl` / `rounded-tl-*` | `rounded-ss` / `rounded-ss-*` |
| `rounded-tr` / `rounded-tr-*` | `rounded-se` / `rounded-se-*` |
| `rounded-br` / `rounded-br-*` | `rounded-ee` / `rounded-ee-*` |
| `rounded-bl` / `rounded-bl-*` | `rounded-es` / `rounded-es-*` |
| `text-left` | `text-start` |
| `text-right` | `text-end` |
| `float-left` | `float-start` |
| `float-right` | `float-end` |
| `clear-left` | `clear-start` |
| `clear-right` | `clear-end` |
| `h-*` | `block-*` |
| `w-*` | `inline-*` |
| `min-h-*` | `min-block-*` |
| `min-w-*` | `min-inline-*` |
| `max-h-*` | `max-block-*` |
| `max-w-*` | `max-inline-*` |
| `size-*` | `block-* inline-*` |
## Options
### `ignore`
List of regex patterns for classes that should not report logical property suggestions.
This can be useful for classes that intentionally use physical directions.
**Type**: `string[]`
**Default**: `[]`
Common options
These options are common to all rules and can also be set globally via the [settings object](../settings/settings.md).
### `selectors`
Flat list of selectors that determines where Tailwind class strings are linted.
**Type**: Array of [Selectors](../configuration/advanced.md#selectors)
**Default**: See [defaults API](../api/defaults.md)
### `entryPoint`
The path to the entry file of the css based tailwind config (eg: `src/global.css`).
If not specified, the plugin will fall back to the default configuration.
**Type**: `string`
**Default**: `undefined`
### `tailwindConfig`
Tailwind config file path.
**Type**: string
**Default**: Tailwind's default config resolution
### `tsconfig`
The path to the `tsconfig.json` file. If not specified, the plugin will try to find it automatically.
This can also be set globally via the [settings object](../settings/settings.md#tsconfig).
The tsconfig is used to resolve tsconfig [path](https://www.typescriptlang.org/tsconfig/#paths) aliases.
**Type**: `string`
**Default**: `undefined`
## Examples
```tsx
// ❌ BAD: physical direction classes