@atelier-ui/angular 0.2.11 → 0.2.13

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atelier-ui/angular",
3
- "version": "0.2.11",
3
+ "version": "0.2.13",
4
4
  "description": "Atelier component library for Angular — LLM-optimised, accessible, design-token-driven",
5
5
  "keywords": [
6
6
  "angular",
@@ -78,9 +78,33 @@
78
78
  /* ── Colours · light mode (default) ────────────────────────── */
79
79
 
80
80
  /* Primary — Conciso deep teal */
81
- --ui-color-primary: #006470;
82
- --ui-color-primary-hover: #004e58;
83
- --ui-color-primary-active: #003a42;
81
+
82
+ /* ── Teal ramp · primitive tier (ADR-0038) ──────────────────
83
+ * The brand hue as a tonal scale. Semantics below alias into it, so a step
84
+ * is declared once and every mode picks a different step of the same ramp.
85
+ *
86
+ * Annotations are CHECKED, not decorative — `check:contrast` re-measures
87
+ * every one and fails if a stated ratio is wrong or below AA:
88
+ * ★ the brand anchor
89
+ * T on surface(light|dark) N.NN this step carries normal text on that
90
+ * canvas at the stated WCAG 2.2 ratio
91
+ * Steps 50–500 are generated by perceptual (OKLab) interpolation between the
92
+ * shipping values; 100–300 and 700–900 ARE the shipping values, unchanged.
93
+ */
94
+ --ui-color-teal-50: #99f4f4;
95
+ --ui-color-teal-100: #87efef;
96
+ --ui-color-teal-200: #5ee5e5;
97
+ --ui-color-teal-300: #34d8d8; /* T on surface(dark) 10.83 */
98
+ --ui-color-teal-400: #27babd; /* T on surface(dark) 8.01 */
99
+ --ui-color-teal-500: #1a9ca3; /* T on surface(dark) 5.73 — lightest step that still carries text on dark */
100
+ --ui-color-teal-600: #0d7f89; /* T on surface(light) 4.76 — lightest step that still carries text on light */
101
+ --ui-color-teal-700: #006470; /* ★ · T on surface(light) 6.87 */
102
+ --ui-color-teal-800: #004e58; /* T on surface(light) 9.41 */
103
+ --ui-color-teal-900: #003a42; /* T on surface(light) 12.47 */
104
+
105
+ --ui-color-primary: var(--ui-color-teal-700);
106
+ --ui-color-primary-hover: var(--ui-color-teal-800);
107
+ --ui-color-primary-active: var(--ui-color-teal-900);
84
108
  --ui-color-primary-light: rgba(0, 100, 112, 0.08);
85
109
 
86
110
  /* Secondary (legacy — kept for components that opt in) */
@@ -179,9 +203,15 @@
179
203
  --ui-transition-normal: var(--ui-duration-normal) var(--ui-ease-out);
180
204
  --ui-transition-slow: var(--ui-duration-slow) var(--ui-ease-out);
181
205
 
182
- /* Focus ring — double-ring for light & dark background compatibility */
206
+ /* Focus ring — double-ring for light & dark background compatibility.
207
+ * Declared once: the inner ring tracks the surface and the outer the accent,
208
+ * both of which are mode-dependent, so the ring follows the mode for free.
209
+ * The danger variant exists so an invalid control does not have to restate
210
+ * the formula (it did, in atl-input.css, until 2026-08-26). */
183
211
  --ui-focus-ring: 0 0 0 2px var(--ui-color-surface),
184
212
  0 0 0 4px var(--ui-color-primary);
213
+ --ui-focus-ring-danger: 0 0 0 2px var(--ui-color-surface),
214
+ 0 0 0 4px var(--ui-color-danger);
185
215
 
186
216
  /* Form controls */
187
217
  --ui-color-input-bg: var(--ui-color-surface-sunken);
@@ -205,9 +235,9 @@
205
235
 
206
236
  @media (prefers-color-scheme: dark) {
207
237
  :root {
208
- --ui-color-primary: #34d8d8;
209
- --ui-color-primary-hover: #5ee5e5;
210
- --ui-color-primary-active: #87efef;
238
+ --ui-color-primary: var(--ui-color-teal-300);
239
+ --ui-color-primary-hover: var(--ui-color-teal-200);
240
+ --ui-color-primary-active: var(--ui-color-teal-100);
211
241
  --ui-color-primary-light: rgba(52, 216, 216, 0.15);
212
242
 
213
243
  --ui-color-secondary: #94a3b8;
@@ -265,9 +295,9 @@
265
295
  }
266
296
 
267
297
  [data-theme="dark"] {
268
- --ui-color-primary: #34d8d8;
269
- --ui-color-primary-hover: #5ee5e5;
270
- --ui-color-primary-active: #87efef;
298
+ --ui-color-primary: var(--ui-color-teal-300);
299
+ --ui-color-primary-hover: var(--ui-color-teal-200);
300
+ --ui-color-primary-active: var(--ui-color-teal-100);
271
301
  --ui-color-primary-light: rgba(52, 216, 216, 0.15);
272
302
 
273
303
  --ui-color-secondary: #94a3b8;
@@ -325,9 +355,9 @@
325
355
 
326
356
  /* Explicit light theme — declared last so it wins over prefers-color-scheme: dark */
327
357
  [data-theme="light"] {
328
- --ui-color-primary: #006470;
329
- --ui-color-primary-hover: #004e58;
330
- --ui-color-primary-active: #003a42;
358
+ --ui-color-primary: var(--ui-color-teal-700);
359
+ --ui-color-primary-hover: var(--ui-color-teal-800);
360
+ --ui-color-primary-active: var(--ui-color-teal-900);
331
361
  --ui-color-primary-light: rgba(0, 100, 112, 0.08);
332
362
 
333
363
  --ui-color-secondary: #475569;