Skip to content

Commit b449ac6

Browse files
Copilotsiddharthkp
andcommitted
Skip auto values from namespacing requirement
Co-authored-by: siddharthkp <1863771+siddharthkp@users.noreply.github.com>
1 parent a61aa8e commit b449ac6

3 files changed

Lines changed: 12 additions & 21 deletions

File tree

docs/rules/namespace-spacing-utils.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,11 @@ The following patterns are detected:
1212

1313
- Margin: `m-{size}`, `mx-{size}`, `my-{size}`, `mt-{size}`, `mr-{size}`, `mb-{size}`, `ml-{size}`
1414
- Padding: `p-{size}`, `px-{size}`, `py-{size}`, `pt-{size}`, `pr-{size}`, `pb-{size}`, `pl-{size}`
15-
- Sizes: `0-12`, `auto`, `n1-n12` (negative values)
15+
- Sizes: `0-12`, `n1-n12` (negative values)
1616
- Responsive variants: `mx-sm-2`, `mx-md-4`, `p-lg-3`, `mt-xl-6` (breakpoint embedded in class name)
1717

18+
**Note:** `auto` values (e.g., `m-auto`, `mx-auto`) are **not** flagged by this rule and don't need namespacing.
19+
1820
👎 Examples of **incorrect** code for this rule:
1921

2022
```jsx
@@ -32,9 +34,6 @@ The following patterns are detected:
3234
// ❌ Negative spacing without namespace
3335
<div className="m-n4" />
3436

35-
// ❌ Auto spacing without namespace
36-
<div className="mx-auto" />
37-
3837
// ❌ Responsive variants without namespace
3938
<div className="mx-sm-2" />
4039
<div className="mx-md-4" />
@@ -57,8 +56,9 @@ The following patterns are detected:
5756
// ✅ Negative spacing with namespace
5857
<div className="pr-m-n4" />
5958

60-
// ✅ Auto spacing with namespace
61-
<div className="pr-mx-auto" />
59+
// ✅ Auto spacing (no namespace needed)
60+
<div className="mx-auto" />
61+
<div className="m-auto" />
6262

6363
// ✅ Responsive variants with namespace
6464
<div className="pr-mx-sm-2" />

src/rules/__tests__/namespace-spacing-utils.test.js

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,9 @@ ruleTester.run('namespace-spacing-utils', rule, {
4141
'<div className="pr-m-n4" />',
4242
'<div className="pr-mt-n2" />',
4343

44-
// Auto spacing classes (already namespaced)
44+
// Auto spacing classes - these are skipped from namespacing
45+
'<div className="m-auto" />',
46+
'<div className="mx-auto" />',
4547
'<div className="pr-m-auto" />',
4648
'<div className="pr-mx-auto" />',
4749

@@ -155,18 +157,6 @@ ruleTester.run('namespace-spacing-utils', rule, {
155157
errors: [{messageId: 'namespaceRequired', data: {className: 'mt-n2', replacement: 'pr-mt-n2'}}],
156158
},
157159

158-
// Auto spacing classes
159-
{
160-
code: '<div className="m-auto" />',
161-
output: '<div className="pr-m-auto" />',
162-
errors: [{messageId: 'namespaceRequired', data: {className: 'm-auto', replacement: 'pr-m-auto'}}],
163-
},
164-
{
165-
code: '<div className="mx-auto" />',
166-
output: '<div className="pr-mx-auto" />',
167-
errors: [{messageId: 'namespaceRequired', data: {className: 'mx-auto', replacement: 'pr-mx-auto'}}],
168-
},
169-
170160
// Mixed with other classes
171161
{
172162
code: '<div className="some-class m-4 other-class" />',

src/rules/namespace-spacing-utils.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
// Regex pattern to match margin/padding utility classes from Primer CSS
22
// Matches: m-{size}, mx-{size}, my-{size}, mt-{size}, mr-{size}, mb-{size}, ml-{size}
33
// p-{size}, px-{size}, py-{size}, pt-{size}, pr-{size}, pb-{size}, pl-{size}
4-
// Sizes: 0-12, auto, n1-n12 (negative)
4+
// Sizes: 0-12, n1-n12 (negative)
55
// Responsive variants: mx-sm-2, mx-md-4, etc. (breakpoint embedded in class name)
6-
const spacingUtilPattern = /^[mp][xytblr]?-(?:sm-|md-|lg-|xl-)?(?:auto|n?[0-9]+)$/
6+
// Note: auto values (m-auto, mx-auto, etc.) are skipped - they don't need namespacing
7+
const spacingUtilPattern = /^[mp][xytblr]?-(?:sm-|md-|lg-|xl-)?n?[0-9]+$/
78

89
// Check if a single class token is an unnamespaced spacing utility
910
const isUnNamespacedSpacingUtil = token => {

0 commit comments

Comments
 (0)