@atelier-ui/react 0.2.23 โ†’ 0.2.24

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 CHANGED
@@ -1,3 +1,21 @@
1
+ ## 0.2.24 (2026-08-28)
2
+
3
+ ### ๐Ÿš€ Features
4
+
5
+ - **gates:** check the direction nothing checked, and gate the sets that clip ([e6602d4](https://github.com/DominikPieper/atelier-ui/commit/e6602d4))
6
+ - **figma:** two roles the eight did not span, and 231 text nodes bound to them ([e4f61ca](https://github.com/DominikPieper/atelier-ui/commit/e4f61ca))
7
+ - **tokens:** the type roles get their first consumers, and two gates learn the shorthand ([5d58f0d](https://github.com/DominikPieper/atelier-ui/commit/5d58f0d))
8
+
9
+ ### ๐Ÿฉน Fixes
10
+
11
+ - **tokens:** bind the literals the scale already named ([f19029e](https://github.com/DominikPieper/atelier-ui/commit/f19029e))
12
+ - **figma:** the whole file was in the wrong typeface ([3110cbd](https://github.com/DominikPieper/atelier-ui/commit/3110cbd))
13
+
14
+ ### โค๏ธ Thank You
15
+
16
+ - Claude Opus 5 (1M context)
17
+ - Dominik Pieper @DominikPieper
18
+
1
19
  ## 0.2.23 (2026-08-27)
2
20
 
3
21
  ### ๐Ÿš€ Features
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atelier-ui/react",
3
- "version": "0.2.23",
3
+ "version": "0.2.24",
4
4
  "description": "Atelier component library for React โ€” LLM-optimised, accessible, design-token-driven",
5
5
  "keywords": [
6
6
  "react",
@@ -15,9 +15,7 @@
15
15
  padding: var(--ui-spacing-4) var(--ui-spacing-5);
16
16
  border-radius: var(--ui-radius-lg);
17
17
  border: var(--ui-border-width) solid transparent;
18
- font-family: var(--ui-font-family);
19
- font-size: var(--ui-font-size-sm);
20
- line-height: var(--ui-line-height-normal);
18
+ font: var(--ui-type-body-sm);
21
19
  box-sizing: border-box;
22
20
  width: 100%;
23
21
  }
@@ -84,7 +82,7 @@
84
82
  /* Semantic indicator glyph โ€” non-color differentiation (WCAG 1.4.1). */
85
83
  .atl-alert .content .variant-icon {
86
84
  display: inline-block;
87
- font-weight: 700;
85
+ font-weight: var(--ui-font-weight-bold);
88
86
  margin-right: 0.4em;
89
87
  line-height: 1;
90
88
  }
@@ -64,7 +64,7 @@
64
64
 
65
65
  /* Semantic indicator glyph โ€” non-color differentiation (WCAG 1.4.1). */
66
66
  .atl-badge .variant-icon {
67
- font-weight: 700;
67
+ font-weight: var(--ui-font-weight-bold);
68
68
  margin-right: 0.3em;
69
69
  line-height: 1;
70
70
  }
@@ -50,7 +50,7 @@
50
50
  .code-block-label {
51
51
  font-family: var(--ui-font-mono);
52
52
  font-size: var(--ui-font-size-xs);
53
- font-weight: 600;
53
+ font-weight: var(--ui-font-weight-semibold);
54
54
  letter-spacing: 0.03em;
55
55
  color: var(--ui-color-text-muted);
56
56
  text-transform: lowercase;
@@ -64,15 +64,15 @@
64
64
  .code-block-copy {
65
65
  display: inline-flex;
66
66
  align-items: center;
67
- gap: 0.3rem;
68
- padding: 0.2rem 0.55rem;
67
+ gap: var(--ui-spacing-1);
68
+ padding: var(--ui-spacing-1) var(--ui-spacing-2);
69
69
  border: var(--ui-border-width) solid var(--ui-color-border);
70
70
  border-radius: var(--ui-radius-sm);
71
71
  background: transparent;
72
72
  color: var(--ui-color-text-muted);
73
73
  font-family: inherit;
74
74
  font-size: var(--ui-font-size-xs);
75
- font-weight: 500;
75
+ font-weight: var(--ui-font-weight-medium);
76
76
  cursor: pointer;
77
77
  transition: color var(--ui-transition-fast), background var(--ui-transition-fast), border-color var(--ui-transition-fast);
78
78
  white-space: nowrap;
@@ -101,9 +101,7 @@
101
101
  .code-block-pre {
102
102
  margin: 0;
103
103
  padding: var(--ui-spacing-4);
104
- font-family: var(--ui-font-mono);
105
- font-size: var(--ui-font-size-sm);
106
- line-height: var(--ui-line-height-code);
104
+ font: var(--ui-type-code);
107
105
  color: var(--ui-color-text);
108
106
  white-space: pre;
109
107
  tab-size: 2;
@@ -151,7 +151,7 @@ dialog > .panel.size-full {
151
151
  padding: var(--ui-spacing-5) var(--ui-spacing-6);
152
152
  border-bottom: var(--ui-border-width) solid var(--ui-color-border);
153
153
  font-size: var(--ui-font-size-xl);
154
- font-weight: 600;
154
+ font-weight: var(--ui-font-weight-semibold);
155
155
  letter-spacing: var(--ui-letter-spacing-tight);
156
156
  color: var(--ui-color-text);
157
157
  flex-shrink: 0;
@@ -208,7 +208,7 @@
208
208
  padding: var(--ui-spacing-5) var(--ui-spacing-6);
209
209
  border-bottom: var(--ui-border-width) solid var(--ui-color-border);
210
210
  font-size: var(--ui-font-size-xl);
211
- font-weight: 600;
211
+ font-weight: var(--ui-font-weight-semibold);
212
212
  letter-spacing: var(--ui-letter-spacing-tight);
213
213
  color: var(--ui-color-text);
214
214
  flex-shrink: 0;
@@ -9,6 +9,11 @@
9
9
  }
10
10
 
11
11
  .atl-stepper {
12
+ /* Local, not tokens: one component, two uses each, and the connector offset is
13
+ DERIVED from them (ADR-0071). A single-use dimension is not a token, but a
14
+ relationship between two of them should be visible. */
15
+ --step-circle: 36px;
16
+ --step-connector-width: 2px;
12
17
  display: block;
13
18
  font-family: var(--ui-font-family);
14
19
  /* The leading every descendant inherits. Stated here so the component keeps
@@ -35,7 +40,7 @@
35
40
  /* โ”€โ”€โ”€ Connector โ”€โ”€โ”€ */
36
41
  .step-connector {
37
42
  flex: 1;
38
- height: 2px;
43
+ height: var(--step-connector-width);
39
44
  background: var(--ui-color-border);
40
45
  border-radius: var(--ui-radius-full);
41
46
  transition: background var(--ui-transition-normal) var(--ui-ease-out);
@@ -53,8 +58,8 @@
53
58
  display: inline-flex;
54
59
  align-items: center;
55
60
  justify-content: center;
56
- width: 36px;
57
- height: 36px;
61
+ width: var(--step-circle);
62
+ height: var(--step-circle);
58
63
  border-radius: 50%;
59
64
  border: var(--ui-border-width-thick) solid var(--ui-color-border);
60
65
  background: var(--ui-color-surface);
@@ -179,8 +184,10 @@
179
184
 
180
185
  .atl-stepper.orientation-vertical .step-connector {
181
186
  flex: none;
182
- width: 2px;
187
+ width: var(--step-connector-width);
183
188
  height: var(--ui-spacing-6);
184
- margin-left: 17px;
189
+ /* Centres the connector under the circle: half the circle minus half the
190
+ connector. Was a literal 17px, which hid the relationship. */
191
+ margin-left: calc((var(--step-circle) - var(--step-connector-width)) / 2);
185
192
  min-width: 0;
186
193
  }
@@ -10,12 +10,12 @@
10
10
 
11
11
  .atl-textarea {
12
12
  display: block;
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);
18
- font-size: var(--ui-font-size-md);
13
+ /* One role, not three axes (ADR-0036): body-md carries the sans, the md size
14
+ and the normal leading โ€” normal because the field holds prose, and stated here
15
+ rather than inherited so the component keeps its own rhythm instead of the
16
+ consuming app's (ADR-0052). `font:` supplies the leading the longhand used to,
17
+ which is why check:typeface now recognises the shorthand (ADR-0073). */
18
+ font: var(--ui-type-body-md);
19
19
  }
20
20
 
21
21
  .atl-textarea textarea {
@@ -65,9 +65,7 @@
65
65
  padding: var(--ui-spacing-4) var(--ui-spacing-5);
66
66
  border-radius: var(--ui-radius-lg);
67
67
  border-left: 4px solid transparent;
68
- font-family: var(--ui-font-family);
69
- font-size: var(--ui-font-size-sm);
70
- line-height: var(--ui-line-height-normal);
68
+ font: var(--ui-type-body-sm);
71
69
  box-shadow: var(--ui-shadow-lg);
72
70
  background-color: var(--ui-color-surface-raised, var(--ui-color-surface));
73
71
  color: var(--ui-color-text);
@@ -28,7 +28,7 @@
28
28
  /* Tooltip content */
29
29
  .atl-tooltip {
30
30
  position: absolute;
31
- z-index: var(--ui-z-tooltip, 200);
31
+ z-index: var(--ui-z-dropdown);
32
32
  display: block;
33
33
  padding: var(--ui-spacing-1) var(--ui-spacing-2);
34
34
  background: var(--ui-color-text);
package/styles/tokens.css CHANGED
@@ -119,7 +119,29 @@
119
119
  --ui-type-label: var(--ui-font-weight-medium) var(--ui-font-size-xs) /
120
120
  var(--ui-line-height-tight) var(--ui-font-family);
121
121
  --ui-type-code: var(--ui-font-weight-normal) var(--ui-font-size-sm) /
122
- var(--ui-line-height-normal) var(--ui-font-mono);
122
+ var(--ui-line-height-code) var(--ui-font-mono);
123
+
124
+ /* The two roles the eight did not span. Both were measured on BOTH sides
125
+ * before being added (ADR-0074), which is the only sound basis for a role:
126
+ *
127
+ * control Medium 14 โ€” 6 CSS rules (tab button, page button, step label,
128
+ * chip label, select label, chat action) and 75 Figma text nodes.
129
+ * action SemiBold 16 โ€” 3 CSS rules (button, accordion trigger, chat
130
+ * header title) and 15 Figma text nodes.
131
+ *
132
+ * Both are TIGHT, and that was unanimous rather than chosen: every one of the
133
+ * 30 Figma nodes in these two combinations that states a leading at all states
134
+ * 125%, and .atl-button and .accordion-trigger state --ui-line-height-tight.
135
+ *
136
+ * They are named for the --ui-control-height-* ladder they live on: text on a
137
+ * control, not prose. A control's own VALUE text (an input's content) is not
138
+ * one of these โ€” that stays a longhand, because its padding formula names the
139
+ * leading as an operand (ADR-0073).
140
+ */
141
+ --ui-type-control: var(--ui-font-weight-medium) var(--ui-font-size-sm) /
142
+ var(--ui-line-height-tight) var(--ui-font-family);
143
+ --ui-type-action: var(--ui-font-weight-semibold) var(--ui-font-size-md) /
144
+ var(--ui-line-height-tight) var(--ui-font-family);
123
145
 
124
146
  /* โ”€โ”€ Colours ยท light mode (default) โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ */
125
147