Skip to content

Commit e1e27c5

Browse files
authored
feat(css): migrate to logical properties for better internationalization (#19)
Replace physical directional properties (margin-top, padding-left, etc.) with logical properties (margin-block-start, padding-inline-start, etc.) throughout the CSS codebase.
1 parent f0bf627 commit e1e27c5

File tree

11 files changed

+52
-53
lines changed

11 files changed

+52
-53
lines changed

src/css/00-base.css

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
4040
line-height: 1.25;
4141

4242
&:first-child {
43-
margin-top: 0;
43+
margin-block-start: 0;
4444
}
4545
}
4646

@@ -75,10 +75,10 @@
7575
}
7676

7777
p {
78-
margin-bottom: var(--space-4);
78+
margin-block-end: var(--space-4);
7979

8080
&:last-child {
81-
margin-bottom: 0;
81+
margin-block-end: 0;
8282
}
8383
}
8484

@@ -119,7 +119,7 @@
119119
background-color: var(--faint);
120120
border-radius: var(--radius-medium);
121121
overflow-x: auto;
122-
margin-bottom: var(--space-4);
122+
margin-block-end: var(--space-4);
123123

124124
code {
125125
padding: 0;
@@ -129,8 +129,8 @@
129129
}
130130

131131
blockquote {
132-
border-left: 4px solid var(--border);
133-
padding-left: var(--space-4);
132+
border-inline-start: 4px solid var(--border);
133+
padding-inline-start: var(--space-4);
134134
margin: var(--space-4) 0;
135135
color: var(--muted-foreground);
136136
font-style: italic;
@@ -143,8 +143,8 @@
143143
}
144144

145145
ul, ol {
146-
padding-left: var(--space-6);
147-
margin-bottom: var(--space-4);
146+
padding-inline-start: var(--space-6);
147+
margin-block-end: var(--space-4);
148148
}
149149

150150
ul {
@@ -156,7 +156,7 @@
156156
}
157157

158158
li {
159-
margin-bottom: var(--space-1);
159+
margin-block-end: var(--space-1);
160160
}
161161

162162
mark {

src/css/button.css

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@
124124

125125
@layer components {
126126
menu.buttons {
127-
padding-left: 0;
127+
padding-inline-start: 0;
128128
display: inline-flex;
129129

130130
& > :is(button, [type=button], [type=submit], [type=reset], a.button) {

src/css/dialog.css

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -58,16 +58,16 @@
5858
flex-direction: column;
5959
gap: var(--space-1);
6060
padding: var(--space-6);
61-
padding-bottom: 0;
61+
padding-block-end: 0;
6262

6363
& > h1, & > h2, & > h3, & > h4, & > h5, & > h6 {
64-
margin-bottom: 0;
64+
margin-block-end: 0;
6565
}
6666

6767
& > p {
6868
font-size: var(--text-7);
6969
color: var(--muted-foreground);
70-
margin-bottom: 0;
70+
margin-block-end: 0;
7171
}
7272
}
7373

@@ -83,7 +83,7 @@
8383
justify-content: flex-end;
8484
gap: var(--space-2);
8585
padding: var(--space-6);
86-
padding-top: 0;
86+
padding-block-start: 0;
8787
}
8888
}
8989
}

src/css/dropdown.css

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,12 +37,12 @@
3737
[role="menuitem"] {
3838
display: flex;
3939
align-items: center;
40-
justify-content: left;
40+
justify-content: start;
4141
gap: var(--space-2);
4242
width: 100%;
4343
padding: var(--space-2) var(--space-3);
4444
font-size: var(--text-7);
45-
text-align: left;
45+
text-align: start;
4646
color: var(--foreground);
4747
background: none;
4848
border: none;

src/css/form.css

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414

1515
:where(input:not([type=checkbox], [type=radio], [type=range], [type=file], [type=color]), textarea, select) {
1616
width: 100%;
17-
margin-top: var(--space-1);
17+
margin-block-start: var(--space-1);
1818
padding: var(--space-2) var(--space-3);
1919
font-size: var(--text-7);
2020
line-height: var(--leading-normal);
@@ -59,7 +59,7 @@
5959
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%2371717a' stroke-width='2'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
6060
background-repeat: no-repeat;
6161
background-position: right var(--space-2) center;
62-
padding-right: var(--space-6);
62+
padding-inline-end: var(--space-6);
6363
}
6464

6565
input:where([type=checkbox], [type=radio]) {
@@ -185,7 +185,7 @@
185185
border: 1px solid var(--border);
186186
border-radius: var(--radius-medium);
187187
padding: var(--space-4);
188-
margin-bottom: var(--space-4);
188+
margin-block-end: var(--space-4);
189189
}
190190

191191
legend {
@@ -205,8 +205,8 @@
205205

206206
& > :is(input, textarea, select) {
207207
flex: 1;
208-
margin-top: 0;
209-
border-right: 0;
208+
margin-block-start: 0;
209+
border-inline-end: 0;
210210
}
211211

212212
& > :is(input, textarea, select, button) {
@@ -236,14 +236,14 @@
236236
}
237237

238238
[data-field] {
239-
margin-bottom: var(--space-4);
239+
margin-block-end: var(--space-4);
240240

241241
/* Hint text that succeeds an input with aria-describedby */
242242
[data-hint], .error {
243243
font-size: var(--text-8);
244244
font-weight: var(--font-normal);
245245
color: var(--muted-foreground);
246-
margin-top: var(--space-1);
246+
margin-block-start: var(--space-1);
247247
}
248248

249249
.error {

src/css/sidebar.css

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,11 @@
1919
/* <main> immediately after top-nav, adjust for topnav height */
2020
> main {
2121
min-width: 0;
22-
margin-top: calc(var(--topnav-height));
22+
margin-block-start: calc(var(--topnav-height));
2323

2424
/* Offset #anchor scrolling to not go behind the topnav. */
2525
[id] {
26-
scroll-margin-top: calc(var(--topnav-height) + var(--space-6));
26+
scroll-margin-block-start: calc(var(--topnav-height) + var(--space-6));
2727
}
2828
}
2929
}
@@ -35,7 +35,7 @@
3535
height: 100dvh;
3636
align-self: start;
3737
background-color: var(--background);
38-
border-right: 1px solid var(--border);
38+
border-inline-end: 1px solid var(--border);
3939
display: flex;
4040
flex-direction: column;
4141
width: var(--sidebar-width);
@@ -47,7 +47,7 @@
4747

4848
> footer {
4949
flex-shrink: 0;
50-
margin-top: auto;
50+
margin-block-start: auto;
5151
padding: var(--space-3);
5252
}
5353

@@ -94,7 +94,7 @@
9494

9595
& + details { margin-top: 0; }
9696
&[open] summary { border-bottom: none; }
97-
> ul { margin-left: var(--space-4); padding: var(--space-1) 0; }
97+
> ul { margin-inline-start: var(--space-4); padding: var(--space-1) 0; }
9898
}
9999

100100
summary {
@@ -117,9 +117,8 @@
117117

118118
nav[data-topnav] {
119119
position: fixed;
120-
top: 0;
121-
left: 0;
122-
right: 0;
120+
inset-block-start: 0;
121+
inset-inline: 0;
123122
z-index: 5;
124123
min-height: var(--topnav-height);
125124
display: flex;

src/css/skeleton.css

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
@layer components {
22
[role="status"].skeleton {
3-
margin-bottom: var(--space-3);
3+
margin-block-end: var(--space-3);
44
background: var(--muted);
55
border-radius: var(--radius-medium);
66
animation: shimmer 2s infinite;
@@ -33,7 +33,7 @@
3333
}
3434

3535
[role="status"].skeleton:last-child {
36-
margin-bottom: 0;
36+
margin-block-end: 0;
3737
}
3838

3939
@keyframes shimmer {

src/css/table.css

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616

1717
th {
1818
padding: var(--space-3) var(--space-2);
19-
text-align: left;
19+
text-align: start;
2020
font-weight: var(--font-medium);
2121
color: var(--muted-foreground);
2222
}

src/css/toast.css

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,8 @@
5252
pointer-events: auto;
5353
background-color: var(--card);
5454
border: 1px solid var(--border);
55-
border-left-width: var(--space-1);
56-
border-left-style: solid;
55+
border-inline-start-width: var(--space-1);
56+
border-inline-start-style: solid;
5757
border-radius: var(--radius-medium);
5858
box-shadow: var(--shadow-small);
5959
transition: opacity 150ms, transform 150ms, margin 150ms;
@@ -68,19 +68,19 @@
6868
}
6969

7070
&[data-variant="success"] {
71-
border-left-color: var(--success);
71+
border-inline-start-color: var(--success);
7272
}
7373

7474
&[data-variant="danger"] {
75-
border-left-color: var(--danger);
75+
border-inline-start-color: var(--danger);
7676
}
7777

7878
&[data-variant="warning"] {
79-
border-left-color: var(--warning);
79+
border-inline-start-color: var(--warning);
8080
}
8181

8282
&[data-variant="info"] {
83-
border-left-color: var(--secondary);
83+
border-inline-start-color: var(--secondary);
8484
}
8585

8686
& > [data-close] {

src/css/tooltip.css

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
[data-tooltip]::before,
77
[data-tooltip]::after {
88
position: absolute;
9-
left: 50%;
9+
inset-inline-start: 50%;
1010
opacity: 0;
1111
visibility: hidden;
1212
transition: opacity var(--transition-fast), transform var(--transition-fast), visibility var(--transition-fast);
@@ -17,7 +17,7 @@
1717
/* Text */
1818
[data-tooltip]::after {
1919
content: attr(data-tooltip);
20-
bottom: calc(100% + 10px);
20+
inset-block-end: calc(100% + 10px);
2121
transform: translateX(-50%) translateY(4px);
2222
padding: var(--space-2) var(--space-3);
2323
font-size: var(--text-7);
@@ -31,7 +31,7 @@
3131
/* Arrow */
3232
[data-tooltip]::before {
3333
content: '';
34-
bottom: calc(100% - 5px);
34+
inset-block-end: calc(100% - 5px);
3535
transform: translateX(-50%) translateY(4px);
3636
border: 8px solid transparent;
3737
border-top-color: var(--foreground);

0 commit comments

Comments
 (0)