@axiapps/axi-design 1.19.0 → 1.20.0

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/dist/axi.css CHANGED
@@ -144,6 +144,14 @@
144
144
  control-sized reads --axi-radius-sm. */
145
145
  --axi-radius: 0;
146
146
  --axi-radius-sm: 0;
147
+ /* The third step, for a box the size of the text beside it: a checkbox, a
148
+ radio. --axi-radius-sm is sized for something you press - a button, an
149
+ input, 36px tall - and a theme is free to set it to 10px. On a 22px
150
+ square 10px is most of the box: the checkbox stops being a square and
151
+ becomes a circle, and a circle next to rule 7's diamond radio is the one
152
+ shape confusion this pair exists to avoid. A theme that wants soft
153
+ corners sets all three. */
154
+ --axi-radius-xs: 0;
147
155
  /* Not a form step: a hairline used inside prose (inline code, table rules,
148
156
  the list bullet) where the two form steps above would read as too heavy
149
157
  for a line of running text. */
@@ -286,6 +294,15 @@ a { color: inherit; }
286
294
  fit is genuinely called for. */
287
295
  padding: var(--axi-panel-pad, 26px);
288
296
  }
297
+ /* A panel that floats over moving content rather than sitting in the page: a
298
+ readout pinned to a chart, a popover over a scrolling table. Same object,
299
+ same everything else; the one thing that changes is the surface it is
300
+ printed on. --axi-surface is a translucent tint under a theme like glass,
301
+ which reads as a pane only while what is behind it holds still - the moment
302
+ the content scrolls, it shows through the panel. --axi-surface-float is the
303
+ surface for exactly that case. Says the same thing .axi-rail--float says,
304
+ on the other surface that needs it. */
305
+ .axi-panel--float { background: var(--axi-surface-float); }
289
306
 
290
307
  /* ---------- well ---------- */
291
308
  /* The panel's inverse: a field sunk into the surface around it rather than
@@ -795,7 +812,10 @@ a { color: inherit; }
795
812
  place-items: center;
796
813
  background: var(--axi-ground);
797
814
  border: var(--axi-border-control) solid var(--axi-ink-line);
798
- border-radius: var(--axi-radius-sm);
815
+ /* The text-sized step, not the control-sized one - see --axi-radius-xs in
816
+ src/tokens.css for why a 22px box cannot take a corner scaled for a 36px
817
+ button. */
818
+ border-radius: var(--axi-radius-xs);
799
819
  cursor: pointer;
800
820
  }
801
821
  /* The mark is always in the DOM and revealed with opacity rather than being
@@ -1366,6 +1386,22 @@ textarea.axi-input {
1366
1386
  white-space: nowrap;
1367
1387
  pointer-events: none;
1368
1388
  }
1389
+ /* Positioned by the thing it describes rather than by the cursor. The <body>
1390
+ contract above is what position: fixed costs; a tooltip that belongs to one
1391
+ trigger can be a child of it instead, and then it wants the trigger's
1392
+ coordinate space. Rule 4's transformed ancestor is the reason fixed cannot
1393
+ live there - absolute is anchored to exactly that ancestor, so a hover lift
1394
+ carries the tooltip with it instead of stranding it.
1395
+
1396
+ The consumer supplies the offsets (a `position: relative` trigger and the
1397
+ left/top or inset the placement needs); this only changes which box those
1398
+ offsets are measured from. */
1399
+ .axi-tooltip--anchored { position: absolute; }
1400
+ /* A tooltip carrying a sentence rather than a value. nowrap is right for a
1401
+ reading - a number that breaks across two lines is harder to read than one
1402
+ that runs past its trigger - and wrong for prose, which needs a width from
1403
+ the consumer to wrap inside. */
1404
+ .axi-tooltip--wrap { white-space: normal; }
1369
1405
 
1370
1406
  /* ---------- card ---------- */
1371
1407
  .axi-card {
@@ -27,4 +27,5 @@
27
27
  --axi-border-hairline: 1px;
28
28
  --axi-radius: 16px;
29
29
  --axi-radius-sm: 10px;
30
+ --axi-radius-xs: 4px;
30
31
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@axiapps/axi-design",
3
- "version": "1.19.0",
3
+ "version": "1.20.0",
4
4
  "description": "The design language for the axi suite — flat and outlined, dark, drawn in saturated ink.",
5
5
  "type": "module",
6
6
  "license": "MIT",
package/src/forms.css CHANGED
@@ -36,7 +36,10 @@
36
36
  place-items: center;
37
37
  background: var(--axi-ground);
38
38
  border: var(--axi-border-control) solid var(--axi-ink-line);
39
- border-radius: var(--axi-radius-sm);
39
+ /* The text-sized step, not the control-sized one - see --axi-radius-xs in
40
+ src/tokens.css for why a 22px box cannot take a corner scaled for a 36px
41
+ button. */
42
+ border-radius: var(--axi-radius-xs);
40
43
  cursor: pointer;
41
44
  }
42
45
  /* The mark is always in the DOM and revealed with opacity rather than being
@@ -28,6 +28,15 @@
28
28
  fit is genuinely called for. */
29
29
  padding: var(--axi-panel-pad, 26px);
30
30
  }
31
+ /* A panel that floats over moving content rather than sitting in the page: a
32
+ readout pinned to a chart, a popover over a scrolling table. Same object,
33
+ same everything else; the one thing that changes is the surface it is
34
+ printed on. --axi-surface is a translucent tint under a theme like glass,
35
+ which reads as a pane only while what is behind it holds still - the moment
36
+ the content scrolls, it shows through the panel. --axi-surface-float is the
37
+ surface for exactly that case. Says the same thing .axi-rail--float says,
38
+ on the other surface that needs it. */
39
+ .axi-panel--float { background: var(--axi-surface-float); }
31
40
 
32
41
  /* ---------- well ---------- */
33
42
  /* The panel's inverse: a field sunk into the surface around it rather than
package/src/shells.css CHANGED
@@ -467,6 +467,22 @@
467
467
  white-space: nowrap;
468
468
  pointer-events: none;
469
469
  }
470
+ /* Positioned by the thing it describes rather than by the cursor. The <body>
471
+ contract above is what position: fixed costs; a tooltip that belongs to one
472
+ trigger can be a child of it instead, and then it wants the trigger's
473
+ coordinate space. Rule 4's transformed ancestor is the reason fixed cannot
474
+ live there - absolute is anchored to exactly that ancestor, so a hover lift
475
+ carries the tooltip with it instead of stranding it.
476
+
477
+ The consumer supplies the offsets (a `position: relative` trigger and the
478
+ left/top or inset the placement needs); this only changes which box those
479
+ offsets are measured from. */
480
+ .axi-tooltip--anchored { position: absolute; }
481
+ /* A tooltip carrying a sentence rather than a value. nowrap is right for a
482
+ reading - a number that breaks across two lines is harder to read than one
483
+ that runs past its trigger - and wrong for prose, which needs a width from
484
+ the consumer to wrap inside. */
485
+ .axi-tooltip--wrap { white-space: normal; }
470
486
 
471
487
  /* ---------- card ---------- */
472
488
  .axi-card {
package/src/tokens.css CHANGED
@@ -140,6 +140,14 @@
140
140
  control-sized reads --axi-radius-sm. */
141
141
  --axi-radius: 0;
142
142
  --axi-radius-sm: 0;
143
+ /* The third step, for a box the size of the text beside it: a checkbox, a
144
+ radio. --axi-radius-sm is sized for something you press - a button, an
145
+ input, 36px tall - and a theme is free to set it to 10px. On a 22px
146
+ square 10px is most of the box: the checkbox stops being a square and
147
+ becomes a circle, and a circle next to rule 7's diamond radio is the one
148
+ shape confusion this pair exists to avoid. A theme that wants soft
149
+ corners sets all three. */
150
+ --axi-radius-xs: 0;
143
151
  /* Not a form step: a hairline used inside prose (inline code, table rules,
144
152
  the list bullet) where the two form steps above would read as too heavy
145
153
  for a line of running text. */