@atelier-ui/react 0.2.18 → 0.2.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +24 -0
- package/package.json +1 -1
- package/src/lib/accordion/atl-accordion.css +13 -2
- package/src/lib/avatar/atl-avatar.css +5 -0
- package/src/lib/breadcrumbs/atl-breadcrumbs.css +5 -0
- package/src/lib/card/atl-card.css +5 -0
- package/src/lib/chat/atl-chat.css +5 -0
- package/src/lib/checkbox/atl-checkbox.css +13 -2
- package/src/lib/code-block/atl-code-block.css +5 -1
- package/src/lib/combobox/atl-combobox.css +13 -2
- package/src/lib/dialog/atl-dialog.css +5 -0
- package/src/lib/drawer/atl-drawer.css +5 -0
- package/src/lib/input/atl-input.css +4 -0
- package/src/lib/menu/atl-menu.css +17 -2
- package/src/lib/pagination/atl-pagination.css +5 -0
- package/src/lib/progress/atl-progress.css +5 -0
- package/src/lib/radio/atl-radio.css +6 -3
- package/src/lib/radio-group/atl-radio-group.css +5 -0
- package/src/lib/select/atl-select.css +4 -0
- package/src/lib/skeleton/atl-skeleton.css +5 -0
- package/src/lib/stepper/atl-stepper.css +5 -0
- package/src/lib/table/atl-table.css +22 -5
- package/src/lib/tabs/atl-tabs.css +5 -0
- package/src/lib/textarea/atl-textarea.css +4 -0
- package/src/lib/toggle/atl-toggle.css +10 -2
- package/styles/tokens.css +29 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,27 @@
|
|
|
1
|
+
## 0.2.20 (2026-08-26)
|
|
2
|
+
|
|
3
|
+
### 🚀 Features
|
|
4
|
+
|
|
5
|
+
- **rhythm:** every component root states its own leading ([7a7f473](https://github.com/DominikPieper/atelier-ui/commit/7a7f473))
|
|
6
|
+
- **rows:** put the remaining row boxes on the row ladder ([cc6dd13](https://github.com/DominikPieper/atelier-ui/commit/cc6dd13))
|
|
7
|
+
|
|
8
|
+
### ❤️ Thank You
|
|
9
|
+
|
|
10
|
+
- Claude Opus 5
|
|
11
|
+
- Dominik Pieper @DominikPieper
|
|
12
|
+
|
|
13
|
+
## 0.2.19 (2026-08-26)
|
|
14
|
+
|
|
15
|
+
### 🚀 Features
|
|
16
|
+
|
|
17
|
+
- **rows:** prove the row recipe on two boxes, and what that exposed ([14284f9](https://github.com/DominikPieper/atelier-ui/commit/14284f9))
|
|
18
|
+
- **tokens:** the row ladder — --ui-row-inset and --ui-row-height-sm/md/lg ([b2f390a](https://github.com/DominikPieper/atelier-ui/commit/b2f390a))
|
|
19
|
+
|
|
20
|
+
### ❤️ Thank You
|
|
21
|
+
|
|
22
|
+
- Claude Opus 5
|
|
23
|
+
- Dominik Pieper @DominikPieper
|
|
24
|
+
|
|
1
25
|
## 0.2.18 (2026-08-26)
|
|
2
26
|
|
|
3
27
|
### 🩹 Fixes
|
package/package.json
CHANGED
|
@@ -18,6 +18,11 @@
|
|
|
18
18
|
.atl-accordion-group {
|
|
19
19
|
display: block;
|
|
20
20
|
font-family: var(--ui-font-family);
|
|
21
|
+
/* The leading every descendant inherits. Stated here so the component keeps
|
|
22
|
+
its own vertical rhythm instead of adopting the consuming app's prose
|
|
23
|
+
leading — the defect that made the row boxes measure differently in a
|
|
24
|
+
Storybook page and in a docs page (ADR-0052). This one carries prose, so normal. */
|
|
25
|
+
line-height: var(--ui-line-height-normal);
|
|
21
26
|
color: var(--ui-color-text);
|
|
22
27
|
}
|
|
23
28
|
|
|
@@ -78,8 +83,14 @@
|
|
|
78
83
|
justify-content: space-between;
|
|
79
84
|
gap: var(--ui-spacing-3);
|
|
80
85
|
width: 100%;
|
|
81
|
-
|
|
82
|
-
|
|
86
|
+
/* Row recipe (ADR-0052): 3.25rem was a literal that happened to clear the
|
|
87
|
+
prose leading. On the row ladder the trigger is a lg row, and it states
|
|
88
|
+
its own line-height because `all: unset` above reset that to inherit —
|
|
89
|
+
without it the box grows with whatever leading the page sets. */
|
|
90
|
+
min-height: var(--ui-row-height-lg);
|
|
91
|
+
padding-block: 0;
|
|
92
|
+
padding-inline: var(--ui-spacing-5);
|
|
93
|
+
line-height: var(--ui-line-height-tight);
|
|
83
94
|
font-size: var(--ui-font-size-md);
|
|
84
95
|
font-weight: var(--ui-font-weight-semibold);
|
|
85
96
|
color: var(--ui-color-text);
|
|
@@ -24,6 +24,11 @@
|
|
|
24
24
|
overflow: hidden;
|
|
25
25
|
flex-shrink: 0;
|
|
26
26
|
font-family: var(--ui-font-family);
|
|
27
|
+
/* The leading every descendant inherits. Stated here so the component keeps
|
|
28
|
+
its own vertical rhythm instead of adopting the consuming app's prose
|
|
29
|
+
leading — the defect that made the row boxes measure differently in a
|
|
30
|
+
Storybook page and in a docs page (ADR-0052). Single-line chrome, so tight. */
|
|
31
|
+
line-height: var(--ui-line-height-tight);
|
|
27
32
|
font-weight: var(--ui-font-weight-semibold);
|
|
28
33
|
background-color: color-mix(in srgb, var(--ui-color-primary) 12%, var(--ui-color-surface-sunken));
|
|
29
34
|
color: var(--ui-color-primary);
|
|
@@ -18,6 +18,11 @@
|
|
|
18
18
|
.atl-breadcrumbs {
|
|
19
19
|
display: block;
|
|
20
20
|
font-family: var(--ui-font-family);
|
|
21
|
+
/* The leading every descendant inherits. Stated here so the component keeps
|
|
22
|
+
its own vertical rhythm instead of adopting the consuming app's prose
|
|
23
|
+
leading — the defect that made the row boxes measure differently in a
|
|
24
|
+
Storybook page and in a docs page (ADR-0052). Single-line chrome, so tight. */
|
|
25
|
+
line-height: var(--ui-line-height-tight);
|
|
21
26
|
}
|
|
22
27
|
|
|
23
28
|
.breadcrumbs-list {
|
|
@@ -24,6 +24,11 @@
|
|
|
24
24
|
* Sans — measured: a card next to a button showed two typefaces. Declared once
|
|
25
25
|
* per component root, never on a descendant (ADR-0049). */
|
|
26
26
|
font-family: var(--ui-font-family);
|
|
27
|
+
/* The leading every descendant inherits. Stated here so the component keeps
|
|
28
|
+
its own vertical rhythm instead of adopting the consuming app's prose
|
|
29
|
+
leading — the defect that made the row boxes measure differently in a
|
|
30
|
+
Storybook page and in a docs page (ADR-0052). This one carries prose, so normal. */
|
|
31
|
+
line-height: var(--ui-line-height-normal);
|
|
27
32
|
display: block;
|
|
28
33
|
border-radius: var(--ui-radius-xl);
|
|
29
34
|
background-color: var(--ui-color-surface-raised);
|
|
@@ -31,6 +31,11 @@
|
|
|
31
31
|
* Sans — measured: a card next to a button showed two typefaces. Declared once
|
|
32
32
|
* per component root, never on a descendant (ADR-0049). */
|
|
33
33
|
font-family: var(--ui-font-family);
|
|
34
|
+
/* The leading every descendant inherits. Stated here so the component keeps
|
|
35
|
+
its own vertical rhythm instead of adopting the consuming app's prose
|
|
36
|
+
leading — the defect that made the row boxes measure differently in a
|
|
37
|
+
Storybook page and in a docs page (ADR-0052). This one carries prose, so normal. */
|
|
38
|
+
line-height: var(--ui-line-height-normal);
|
|
34
39
|
display: contents;
|
|
35
40
|
}
|
|
36
41
|
|
|
@@ -12,6 +12,10 @@
|
|
|
12
12
|
display: block;
|
|
13
13
|
font-family: var(--ui-font-family);
|
|
14
14
|
font-size: var(--ui-font-size-md);
|
|
15
|
+
/* The root is a block wrapping an inline-flex row, so it opens a line box and
|
|
16
|
+
its strut is sized by whatever leading it inherits. Without this the row is
|
|
17
|
+
40px here and 48px inside an app with roomy prose leading. */
|
|
18
|
+
line-height: var(--ui-line-height-tight);
|
|
15
19
|
}
|
|
16
20
|
|
|
17
21
|
.atl-checkbox label {
|
|
@@ -21,14 +25,21 @@
|
|
|
21
25
|
cursor: pointer;
|
|
22
26
|
user-select: none;
|
|
23
27
|
color: var(--ui-color-text);
|
|
24
|
-
|
|
25
|
-
|
|
28
|
+
/* Row recipe (ADR-0052): the clickable line is a row — it states its height
|
|
29
|
+
and centres the control + text, rather than being sized by whichever of
|
|
30
|
+
the two happens to be taller. */
|
|
31
|
+
min-height: var(--ui-row-height-sm);
|
|
32
|
+
padding-block: 0;
|
|
33
|
+
line-height: var(--ui-line-height-tight);
|
|
26
34
|
}
|
|
27
35
|
|
|
28
36
|
.atl-checkbox input[type='checkbox'] {
|
|
29
37
|
appearance: none;
|
|
30
38
|
-webkit-appearance: none;
|
|
31
39
|
flex-shrink: 0;
|
|
40
|
+
/* The UA ships margin: 3px 3px 3px 4px on a native checkbox. Left in, it
|
|
41
|
+
adds 6px to the row and offsets the box from the label text. */
|
|
42
|
+
margin: 0;
|
|
32
43
|
width: 1.25rem;
|
|
33
44
|
height: 1.25rem;
|
|
34
45
|
border: var(--ui-border-width-thick) solid var(--ui-color-border-strong);
|
|
@@ -18,6 +18,10 @@
|
|
|
18
18
|
border-radius: var(--ui-radius-lg);
|
|
19
19
|
overflow: hidden;
|
|
20
20
|
font-family: var(--ui-font-family);
|
|
21
|
+
/* The leading every descendant inherits, stated so the component keeps its
|
|
22
|
+
own rhythm rather than the consuming app's prose leading (ADR-0052).
|
|
23
|
+
Chrome around the code, so tight — the code element states the code leading itself. */
|
|
24
|
+
line-height: var(--ui-line-height-tight);
|
|
21
25
|
}
|
|
22
26
|
|
|
23
27
|
/* ---------------------------------------------------------------------------
|
|
@@ -99,7 +103,7 @@
|
|
|
99
103
|
padding: var(--ui-spacing-4);
|
|
100
104
|
font-family: var(--ui-font-mono);
|
|
101
105
|
font-size: var(--ui-font-size-sm);
|
|
102
|
-
line-height:
|
|
106
|
+
line-height: var(--ui-line-height-code);
|
|
103
107
|
color: var(--ui-color-text);
|
|
104
108
|
white-space: pre;
|
|
105
109
|
tab-size: 2;
|
|
@@ -38,6 +38,10 @@
|
|
|
38
38
|
display: block;
|
|
39
39
|
position: relative;
|
|
40
40
|
font-family: var(--ui-font-family);
|
|
41
|
+
/* The leading every descendant inherits, stated so the component keeps its
|
|
42
|
+
own rhythm rather than the consuming app's prose leading (ADR-0052).
|
|
43
|
+
A single-line field over a list of rows, so tight. */
|
|
44
|
+
line-height: var(--ui-line-height-tight);
|
|
41
45
|
font-size: var(--ui-font-size-md);
|
|
42
46
|
}
|
|
43
47
|
|
|
@@ -156,8 +160,15 @@
|
|
|
156
160
|
display: flex;
|
|
157
161
|
align-items: center;
|
|
158
162
|
justify-content: space-between;
|
|
159
|
-
|
|
160
|
-
|
|
163
|
+
/* Row recipe (ADR-0052): the height is stated, the block padding is zero and the
|
|
164
|
+
* content is centred. A row centres, a control pads — ADR-0041's derived-padding
|
|
165
|
+
* formula produces the wrong box here. The line-height is stated so the box does
|
|
166
|
+
* not follow the installed font (ADR-0048).
|
|
167
|
+
*/
|
|
168
|
+
min-height: var(--ui-row-height-sm);
|
|
169
|
+
padding-block: 0;
|
|
170
|
+
line-height: var(--ui-line-height-tight);
|
|
171
|
+
padding-inline: var(--ui-spacing-4);
|
|
161
172
|
cursor: pointer;
|
|
162
173
|
color: var(--ui-color-text);
|
|
163
174
|
font-size: var(--ui-font-size-md);
|
|
@@ -29,6 +29,11 @@
|
|
|
29
29
|
* typeface (ADR-0035); without this the dialog renders in the consuming app's
|
|
30
30
|
* font while its neighbours render Instrument Sans (ADR-0049). */
|
|
31
31
|
font-family: var(--ui-font-family);
|
|
32
|
+
/* The leading every descendant inherits. Stated here so the component keeps
|
|
33
|
+
its own vertical rhythm instead of adopting the consuming app's prose
|
|
34
|
+
leading — the defect that made the row boxes measure differently in a
|
|
35
|
+
Storybook page and in a docs page (ADR-0052). This one carries prose, so normal. */
|
|
36
|
+
line-height: var(--ui-line-height-normal);
|
|
32
37
|
position: fixed;
|
|
33
38
|
inset: 0;
|
|
34
39
|
margin: auto;
|
|
@@ -25,6 +25,11 @@
|
|
|
25
25
|
* Sans — measured: a card next to a button showed two typefaces. Declared once
|
|
26
26
|
* per component root, never on a descendant (ADR-0049). */
|
|
27
27
|
font-family: var(--ui-font-family);
|
|
28
|
+
/* The leading every descendant inherits. Stated here so the component keeps
|
|
29
|
+
its own vertical rhythm instead of adopting the consuming app's prose
|
|
30
|
+
leading — the defect that made the row boxes measure differently in a
|
|
31
|
+
Storybook page and in a docs page (ADR-0052). This one carries prose, so normal. */
|
|
32
|
+
line-height: var(--ui-line-height-normal);
|
|
28
33
|
display: contents;
|
|
29
34
|
}
|
|
30
35
|
|
|
@@ -11,6 +11,10 @@
|
|
|
11
11
|
.atl-input {
|
|
12
12
|
display: block;
|
|
13
13
|
font-family: var(--ui-font-family);
|
|
14
|
+
/* The leading every descendant inherits, stated so the component keeps its
|
|
15
|
+
own rhythm rather than the consuming app's prose leading (ADR-0052).
|
|
16
|
+
A single-line field, so tight. */
|
|
17
|
+
line-height: var(--ui-line-height-tight);
|
|
14
18
|
font-size: var(--ui-font-size-md);
|
|
15
19
|
}
|
|
16
20
|
|
|
@@ -28,6 +28,11 @@
|
|
|
28
28
|
border-radius: var(--ui-radius-lg);
|
|
29
29
|
box-shadow: var(--ui-shadow-lg);
|
|
30
30
|
font-family: var(--ui-font-family);
|
|
31
|
+
/* The leading every descendant inherits. Stated here so the component keeps
|
|
32
|
+
its own vertical rhythm instead of adopting the consuming app's prose
|
|
33
|
+
leading — the defect that made the row boxes measure differently in a
|
|
34
|
+
Storybook page and in a docs page (ADR-0052). Single-line chrome, so tight. */
|
|
35
|
+
line-height: var(--ui-line-height-tight);
|
|
31
36
|
font-size: var(--ui-font-size-md);
|
|
32
37
|
color: var(--ui-color-text);
|
|
33
38
|
outline: none;
|
|
@@ -68,8 +73,14 @@
|
|
|
68
73
|
display: flex;
|
|
69
74
|
align-items: center;
|
|
70
75
|
gap: var(--ui-spacing-3);
|
|
71
|
-
|
|
72
|
-
|
|
76
|
+
/* Row recipe (ADR-0052): the height is stated, the block padding is zero and the
|
|
77
|
+
* content is centred. A row centres, a control pads — ADR-0041's derived-padding
|
|
78
|
+
* formula produces the wrong box here. The line-height is stated so the box does
|
|
79
|
+
* not follow the installed font (ADR-0048).
|
|
80
|
+
*/
|
|
81
|
+
min-height: var(--ui-row-height-sm);
|
|
82
|
+
padding-block: 0;
|
|
83
|
+
padding-inline: var(--ui-spacing-4);
|
|
73
84
|
cursor: pointer;
|
|
74
85
|
color: var(--ui-color-text);
|
|
75
86
|
transition: background var(--ui-transition-fast);
|
|
@@ -77,6 +88,10 @@
|
|
|
77
88
|
border: none;
|
|
78
89
|
background: none;
|
|
79
90
|
font: inherit;
|
|
91
|
+
/* After `font: inherit`, which is a shorthand and resets line-height along with
|
|
92
|
+
* everything else. Declared above it, the row's stated line-height was silently
|
|
93
|
+
* erased and the box grew with the text metrics again (ADR-0052). */
|
|
94
|
+
line-height: var(--ui-line-height-tight);
|
|
80
95
|
width: 100%;
|
|
81
96
|
text-align: start;
|
|
82
97
|
}
|
|
@@ -11,6 +11,11 @@
|
|
|
11
11
|
.atl-pagination {
|
|
12
12
|
display: block;
|
|
13
13
|
font-family: var(--ui-font-family);
|
|
14
|
+
/* The leading every descendant inherits. Stated here so the component keeps
|
|
15
|
+
its own vertical rhythm instead of adopting the consuming app's prose
|
|
16
|
+
leading — the defect that made the row boxes measure differently in a
|
|
17
|
+
Storybook page and in a docs page (ADR-0052). Single-line chrome, so tight. */
|
|
18
|
+
line-height: var(--ui-line-height-tight);
|
|
14
19
|
}
|
|
15
20
|
|
|
16
21
|
.page-list {
|
|
@@ -12,6 +12,11 @@
|
|
|
12
12
|
display: block;
|
|
13
13
|
width: 100%;
|
|
14
14
|
font-family: var(--ui-font-family);
|
|
15
|
+
/* The leading every descendant inherits. Stated here so the component keeps
|
|
16
|
+
its own vertical rhythm instead of adopting the consuming app's prose
|
|
17
|
+
leading — the defect that made the row boxes measure differently in a
|
|
18
|
+
Storybook page and in a docs page (ADR-0052). Single-line chrome, so tight. */
|
|
19
|
+
line-height: var(--ui-line-height-tight);
|
|
15
20
|
}
|
|
16
21
|
|
|
17
22
|
.track {
|
|
@@ -15,11 +15,14 @@
|
|
|
15
15
|
cursor: pointer;
|
|
16
16
|
user-select: none;
|
|
17
17
|
color: var(--ui-color-text);
|
|
18
|
-
line-height: var(--ui-line-height-
|
|
18
|
+
line-height: var(--ui-line-height-tight);
|
|
19
19
|
font-family: var(--ui-font-family);
|
|
20
20
|
font-size: var(--ui-font-size-md);
|
|
21
|
-
|
|
22
|
-
|
|
21
|
+
/* Row recipe (ADR-0052): the clickable line is a row — it states its height
|
|
22
|
+
and centres the control + text, rather than being sized by whichever of
|
|
23
|
+
the two happens to be taller. */
|
|
24
|
+
padding-block: 0;
|
|
25
|
+
min-height: var(--ui-row-height-sm);
|
|
23
26
|
transition: color var(--ui-transition-fast);
|
|
24
27
|
}
|
|
25
28
|
|
|
@@ -11,6 +11,11 @@
|
|
|
11
11
|
.atl-radio-group {
|
|
12
12
|
display: flex;
|
|
13
13
|
font-family: var(--ui-font-family);
|
|
14
|
+
/* The leading every descendant inherits. Stated here so the component keeps
|
|
15
|
+
its own vertical rhythm instead of adopting the consuming app's prose
|
|
16
|
+
leading — the defect that made the row boxes measure differently in a
|
|
17
|
+
Storybook page and in a docs page (ADR-0052). Single-line chrome, so tight. */
|
|
18
|
+
line-height: var(--ui-line-height-tight);
|
|
14
19
|
gap: var(--ui-spacing-3);
|
|
15
20
|
}
|
|
16
21
|
|
|
@@ -12,6 +12,10 @@
|
|
|
12
12
|
display: inline-block;
|
|
13
13
|
position: relative;
|
|
14
14
|
font-family: var(--ui-font-family);
|
|
15
|
+
/* The leading every descendant inherits, stated so the component keeps its
|
|
16
|
+
own rhythm rather than the consuming app's prose leading (ADR-0052).
|
|
17
|
+
A single-line field, so tight. */
|
|
18
|
+
line-height: var(--ui-line-height-tight);
|
|
15
19
|
font-size: var(--ui-font-size-md);
|
|
16
20
|
}
|
|
17
21
|
|
|
@@ -14,6 +14,11 @@
|
|
|
14
14
|
* Sans — measured: a card next to a button showed two typefaces. Declared once
|
|
15
15
|
* per component root, never on a descendant (ADR-0049). */
|
|
16
16
|
font-family: var(--ui-font-family);
|
|
17
|
+
/* The leading every descendant inherits. Stated here so the component keeps
|
|
18
|
+
its own vertical rhythm instead of adopting the consuming app's prose
|
|
19
|
+
leading — the defect that made the row boxes measure differently in a
|
|
20
|
+
Storybook page and in a docs page (ADR-0052). Single-line chrome, so tight. */
|
|
21
|
+
line-height: var(--ui-line-height-tight);
|
|
17
22
|
display: block;
|
|
18
23
|
background: var(--ui-color-border);
|
|
19
24
|
overflow: hidden;
|
|
@@ -11,6 +11,11 @@
|
|
|
11
11
|
.atl-stepper {
|
|
12
12
|
display: block;
|
|
13
13
|
font-family: var(--ui-font-family);
|
|
14
|
+
/* The leading every descendant inherits. Stated here so the component keeps
|
|
15
|
+
its own vertical rhythm instead of adopting the consuming app's prose
|
|
16
|
+
leading — the defect that made the row boxes measure differently in a
|
|
17
|
+
Storybook page and in a docs page (ADR-0052). Single-line chrome, so tight. */
|
|
18
|
+
line-height: var(--ui-line-height-tight);
|
|
14
19
|
}
|
|
15
20
|
|
|
16
21
|
/* ─── Header ─── */
|
|
@@ -36,6 +36,11 @@
|
|
|
36
36
|
.atl-table {
|
|
37
37
|
display: block;
|
|
38
38
|
font-family: var(--ui-font-family);
|
|
39
|
+
/* The leading every descendant inherits. Stated here so the component keeps
|
|
40
|
+
its own vertical rhythm instead of adopting the consuming app's prose
|
|
41
|
+
leading — the defect that made the row boxes measure differently in a
|
|
42
|
+
Storybook page and in a docs page (ADR-0052). Single-line chrome, so tight. */
|
|
43
|
+
line-height: var(--ui-line-height-tight);
|
|
39
44
|
color: var(--ui-color-text);
|
|
40
45
|
}
|
|
41
46
|
|
|
@@ -60,7 +65,13 @@
|
|
|
60
65
|
text-transform: uppercase;
|
|
61
66
|
border-bottom: var(--ui-border-width-thick) solid var(--ui-color-border);
|
|
62
67
|
background-color: var(--ui-color-surface);
|
|
63
|
-
|
|
68
|
+
/* Row recipe (ADR-0052): a row centres its content on a stated height, it
|
|
69
|
+
does not let the content push the box. padding-block stays 0 so the size
|
|
70
|
+
variants below only vary the inline inset. */
|
|
71
|
+
height: var(--ui-row-height-md);
|
|
72
|
+
padding-block: 0;
|
|
73
|
+
padding-inline: var(--ui-spacing-4);
|
|
74
|
+
line-height: var(--ui-line-height-tight);
|
|
64
75
|
text-align: start;
|
|
65
76
|
white-space: nowrap;
|
|
66
77
|
}
|
|
@@ -70,7 +81,10 @@
|
|
|
70
81
|
--------------------------------------------------------------------------- */
|
|
71
82
|
.atl-table tbody td {
|
|
72
83
|
border-bottom: var(--ui-border-width) solid var(--ui-color-border);
|
|
73
|
-
|
|
84
|
+
height: var(--ui-row-height-md);
|
|
85
|
+
padding-block: 0;
|
|
86
|
+
padding-inline: var(--ui-spacing-4);
|
|
87
|
+
line-height: var(--ui-line-height-tight);
|
|
74
88
|
vertical-align: middle;
|
|
75
89
|
background-color: var(--ui-color-surface);
|
|
76
90
|
transition: background-color var(--ui-transition-fast);
|
|
@@ -81,19 +95,22 @@
|
|
|
81
95
|
--------------------------------------------------------------------------- */
|
|
82
96
|
.atl-table.size-sm thead th,
|
|
83
97
|
.atl-table.size-sm tbody td {
|
|
84
|
-
|
|
98
|
+
height: var(--ui-row-height-sm);
|
|
99
|
+
padding-inline: var(--ui-spacing-3);
|
|
85
100
|
font-size: var(--ui-font-size-xs);
|
|
86
101
|
}
|
|
87
102
|
|
|
88
103
|
.atl-table.size-md thead th,
|
|
89
104
|
.atl-table.size-md tbody td {
|
|
90
|
-
|
|
105
|
+
height: var(--ui-row-height-md);
|
|
106
|
+
padding-inline: var(--ui-spacing-4);
|
|
91
107
|
font-size: var(--ui-font-size-sm);
|
|
92
108
|
}
|
|
93
109
|
|
|
94
110
|
.atl-table.size-lg thead th,
|
|
95
111
|
.atl-table.size-lg tbody td {
|
|
96
|
-
|
|
112
|
+
height: var(--ui-row-height-lg);
|
|
113
|
+
padding-inline: var(--ui-spacing-6);
|
|
97
114
|
font-size: var(--ui-font-size-md);
|
|
98
115
|
}
|
|
99
116
|
|
|
@@ -11,6 +11,11 @@
|
|
|
11
11
|
.atl-tab-group {
|
|
12
12
|
display: block;
|
|
13
13
|
font-family: var(--ui-font-family);
|
|
14
|
+
/* The leading every descendant inherits. Stated here so the component keeps
|
|
15
|
+
its own vertical rhythm instead of adopting the consuming app's prose
|
|
16
|
+
leading — the defect that made the row boxes measure differently in a
|
|
17
|
+
Storybook page and in a docs page (ADR-0052). Single-line chrome, so tight. */
|
|
18
|
+
line-height: var(--ui-line-height-tight);
|
|
14
19
|
color: var(--ui-color-text);
|
|
15
20
|
}
|
|
16
21
|
|
|
@@ -11,6 +11,10 @@
|
|
|
11
11
|
.atl-textarea {
|
|
12
12
|
display: block;
|
|
13
13
|
font-family: var(--ui-font-family);
|
|
14
|
+
/* The leading every descendant inherits, stated so the component keeps its
|
|
15
|
+
own rhythm rather than the consuming app's prose leading (ADR-0052).
|
|
16
|
+
The field carries prose, so normal. */
|
|
17
|
+
line-height: var(--ui-line-height-normal);
|
|
14
18
|
font-size: var(--ui-font-size-md);
|
|
15
19
|
}
|
|
16
20
|
|
|
@@ -12,6 +12,10 @@
|
|
|
12
12
|
display: block;
|
|
13
13
|
font-family: var(--ui-font-family);
|
|
14
14
|
font-size: var(--ui-font-size-md);
|
|
15
|
+
/* The root is a block wrapping an inline-flex row, so it opens a line box and
|
|
16
|
+
its strut is sized by whatever leading it inherits. Without this the row is
|
|
17
|
+
40px here and 48px inside an app with roomy prose leading. */
|
|
18
|
+
line-height: var(--ui-line-height-tight);
|
|
15
19
|
}
|
|
16
20
|
|
|
17
21
|
.atl-toggle label {
|
|
@@ -21,8 +25,12 @@
|
|
|
21
25
|
cursor: pointer;
|
|
22
26
|
user-select: none;
|
|
23
27
|
color: var(--ui-color-text);
|
|
24
|
-
|
|
25
|
-
|
|
28
|
+
/* Row recipe (ADR-0052): the clickable line is a row — it states its height
|
|
29
|
+
and centres the control + text, rather than being sized by whichever of
|
|
30
|
+
the two happens to be taller. */
|
|
31
|
+
min-height: var(--ui-row-height-sm);
|
|
32
|
+
padding-block: 0;
|
|
33
|
+
line-height: var(--ui-line-height-tight);
|
|
26
34
|
}
|
|
27
35
|
|
|
28
36
|
/* Hide native checkbox visually but keep it accessible */
|
package/styles/tokens.css
CHANGED
|
@@ -47,6 +47,32 @@
|
|
|
47
47
|
* button the same height. Stating the padding and hoping, which is what the
|
|
48
48
|
* library did until 2026-08-26, made them 6px apart.
|
|
49
49
|
*/
|
|
50
|
+
/* ── Row heights ────────────────────────────────────────────────────────────
|
|
51
|
+
* A row is taller than the control it holds. That relation lives here, in a
|
|
52
|
+
* calc over the control scale, rather than as a convention thirty stylesheets
|
|
53
|
+
* have to honour: `--ui-row-inset: 0` collapses the two ladders into one in a
|
|
54
|
+
* single edit.
|
|
55
|
+
*
|
|
56
|
+
* Measured, which is why the inset exists: a table cell at the *control* height
|
|
57
|
+
* of 40 renders 41.0px when it holds a 40px control (the extra pixel is the two
|
|
58
|
+
* collapsed cell borders), while the same cell at 48 renders exactly 48.00px
|
|
59
|
+
* holding text, a badge, an sm button, an md button or an md avatar. So at the
|
|
60
|
+
* row height any control of the matching step fits, with no convention.
|
|
61
|
+
*
|
|
62
|
+
* A row CENTRES its content; a control PADS it. ADR-0041's derived-padding
|
|
63
|
+
* formula therefore does not apply here — a size-md cell with derived padding
|
|
64
|
+
* renders 62.5px holding an md button. The row recipe is
|
|
65
|
+
* `min-height: var(--ui-row-height-*); padding-block: 0; line-height: tight`.
|
|
66
|
+
*
|
|
67
|
+
* Not rows, on purpose: breadcrumbs (17px of inline text, holding no control)
|
|
68
|
+
* and the card/dialog/drawer/chat headers (one-off bands with their own
|
|
69
|
+
* padding, not one line among many). See ADR-0052.
|
|
70
|
+
*/
|
|
71
|
+
--ui-row-inset: 0.25rem;
|
|
72
|
+
--ui-row-height-sm: calc(var(--ui-control-height-sm) + 2 * var(--ui-row-inset));
|
|
73
|
+
--ui-row-height-md: calc(var(--ui-control-height-md) + 2 * var(--ui-row-inset));
|
|
74
|
+
--ui-row-height-lg: calc(var(--ui-control-height-lg) + 2 * var(--ui-row-inset));
|
|
75
|
+
|
|
50
76
|
--ui-control-height-sm: 2rem;
|
|
51
77
|
--ui-control-height-md: 2.5rem;
|
|
52
78
|
--ui-control-height-lg: 3rem;
|
|
@@ -56,6 +82,9 @@
|
|
|
56
82
|
--ui-font-weight-bold: 700;
|
|
57
83
|
--ui-line-height-tight: 1.25;
|
|
58
84
|
--ui-line-height-normal: 1.5;
|
|
85
|
+
/* Code needs looser leading than prose: a reader scans columns, not sentences.
|
|
86
|
+
* AtlCodeBlock had 1.65 as a literal in one stylesheet. */
|
|
87
|
+
--ui-line-height-code: 1.65;
|
|
59
88
|
|
|
60
89
|
/* ── Type roles ─────────────────────────────────────────────
|
|
61
90
|
* Composed entirely from the axes above, so sizes and weights stay
|