@axiapps/axi-design 1.27.0 → 1.28.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
@@ -1540,6 +1540,31 @@ textarea.axi-input {
1540
1540
  left/top or inset the placement needs); this only changes which box those
1541
1541
  offsets are measured from. */
1542
1542
  .axi-tooltip--anchored { position: absolute; }
1543
+ /* The third placement, and the one the base class cannot express: the box is
1544
+ laid out by whoever owns its wrapper, and this element positions itself not
1545
+ at all. Charting libraries are the case that forces it - recharts renders
1546
+ custom tooltip content inside a wrapper it has already placed and
1547
+ transformed - but the shape is general: any library that hands you a slot
1548
+ and puts the slot where it wants it.
1549
+
1550
+ Worth saying why the base class LOOKS like it already works here, because
1551
+ it does, and for a reason that will not hold. A `position: fixed` box with
1552
+ every inset auto resolves to its static position, so dropped into such a
1553
+ wrapper it lands exactly where the wrapper is - zero drift, measurably. It
1554
+ then scrolls with the chart only because the wrapper carries a transform,
1555
+ which is the very containment the base class's <body> contract exists to
1556
+ escape. Two facts hold it up, both of them someone else's: that the library
1557
+ keeps transforming the wrapper, and that it keeps emitting positioning at
1558
+ all. recharts drops both when its `portal` prop is set, and the failure is
1559
+ silent - a tooltip pinned to the viewport while the chart scrolls away.
1560
+
1561
+ So this says the true thing instead of inheriting the accident. `static`
1562
+ rather than `relative` because the consumer has no offsets to apply - that
1563
+ is the whole point of the modifier - and `z-index: auto` because a layer is
1564
+ meaningless on a static box and layer 70 would only be a claim it cannot
1565
+ honour. */
1566
+ .axi-tooltip--flow { position: static; z-index: auto; }
1567
+
1543
1568
  /* A tooltip carrying a sentence rather than a value. nowrap is right for a
1544
1569
  reading - a number that breaks across two lines is harder to read than one
1545
1570
  that runs past its trigger - and wrong for prose, which needs a width from
@@ -1673,9 +1698,15 @@ textarea.axi-input {
1673
1698
  Which is why it paints the ground's IMAGE as well as the ground's colour. A
1674
1699
  sheet is the page for as long as it is open, and a theme that lights the
1675
1700
  page from a few directions would otherwise have that light blink off every
1676
- time a reader opened one, then back on when they closed it. `background` in
1677
- the shorthand, so a theme leaving --axi-ground-image as `none` still gets a
1678
- clean flat fill and no stray layer.
1701
+ time a reader opened one, then back on when they closed it.
1702
+
1703
+ The two longhands, the same pair `body` uses, and NOT the `background`
1704
+ shorthand: --axi-ground-image is a comma-separated list of three gradients
1705
+ under the glass theme, and the shorthand only accepts a colour in its final
1706
+ layer. `background: <colour> <three gradients>` puts the colour in the first
1707
+ layer, which makes the whole declaration invalid and drops it - a sheet with
1708
+ no fill at all, over a live page. It is exactly the trap the token block
1709
+ warns about two tokens up, in the other direction.
1679
1710
 
1680
1711
  No filter either, for the same reason the window has none: there is nothing
1681
1712
  to see through to. The two knobs are the only things a consumer genuinely
@@ -1694,7 +1725,8 @@ textarea.axi-input {
1694
1725
  flex-direction: column;
1695
1726
  overflow-x: hidden;
1696
1727
  overflow-y: auto;
1697
- background: var(--axi-ground) var(--axi-ground-image);
1728
+ background-color: var(--axi-ground);
1729
+ background-image: var(--axi-ground-image);
1698
1730
  padding: var(--axi-sheet-pad, 12px 16px);
1699
1731
  }
1700
1732
  /* The heading the sheet opened with, divided from the body by a rule. Rule 8:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@axiapps/axi-design",
3
- "version": "1.27.0",
3
+ "version": "1.28.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/shells.css CHANGED
@@ -568,6 +568,31 @@
568
568
  left/top or inset the placement needs); this only changes which box those
569
569
  offsets are measured from. */
570
570
  .axi-tooltip--anchored { position: absolute; }
571
+ /* The third placement, and the one the base class cannot express: the box is
572
+ laid out by whoever owns its wrapper, and this element positions itself not
573
+ at all. Charting libraries are the case that forces it - recharts renders
574
+ custom tooltip content inside a wrapper it has already placed and
575
+ transformed - but the shape is general: any library that hands you a slot
576
+ and puts the slot where it wants it.
577
+
578
+ Worth saying why the base class LOOKS like it already works here, because
579
+ it does, and for a reason that will not hold. A `position: fixed` box with
580
+ every inset auto resolves to its static position, so dropped into such a
581
+ wrapper it lands exactly where the wrapper is - zero drift, measurably. It
582
+ then scrolls with the chart only because the wrapper carries a transform,
583
+ which is the very containment the base class's <body> contract exists to
584
+ escape. Two facts hold it up, both of them someone else's: that the library
585
+ keeps transforming the wrapper, and that it keeps emitting positioning at
586
+ all. recharts drops both when its `portal` prop is set, and the failure is
587
+ silent - a tooltip pinned to the viewport while the chart scrolls away.
588
+
589
+ So this says the true thing instead of inheriting the accident. `static`
590
+ rather than `relative` because the consumer has no offsets to apply - that
591
+ is the whole point of the modifier - and `z-index: auto` because a layer is
592
+ meaningless on a static box and layer 70 would only be a claim it cannot
593
+ honour. */
594
+ .axi-tooltip--flow { position: static; z-index: auto; }
595
+
571
596
  /* A tooltip carrying a sentence rather than a value. nowrap is right for a
572
597
  reading - a number that breaks across two lines is harder to read than one
573
598
  that runs past its trigger - and wrong for prose, which needs a width from
@@ -701,9 +726,15 @@
701
726
  Which is why it paints the ground's IMAGE as well as the ground's colour. A
702
727
  sheet is the page for as long as it is open, and a theme that lights the
703
728
  page from a few directions would otherwise have that light blink off every
704
- time a reader opened one, then back on when they closed it. `background` in
705
- the shorthand, so a theme leaving --axi-ground-image as `none` still gets a
706
- clean flat fill and no stray layer.
729
+ time a reader opened one, then back on when they closed it.
730
+
731
+ The two longhands, the same pair `body` uses, and NOT the `background`
732
+ shorthand: --axi-ground-image is a comma-separated list of three gradients
733
+ under the glass theme, and the shorthand only accepts a colour in its final
734
+ layer. `background: <colour> <three gradients>` puts the colour in the first
735
+ layer, which makes the whole declaration invalid and drops it - a sheet with
736
+ no fill at all, over a live page. It is exactly the trap the token block
737
+ warns about two tokens up, in the other direction.
707
738
 
708
739
  No filter either, for the same reason the window has none: there is nothing
709
740
  to see through to. The two knobs are the only things a consumer genuinely
@@ -722,7 +753,8 @@
722
753
  flex-direction: column;
723
754
  overflow-x: hidden;
724
755
  overflow-y: auto;
725
- background: var(--axi-ground) var(--axi-ground-image);
756
+ background-color: var(--axi-ground);
757
+ background-image: var(--axi-ground-image);
726
758
  padding: var(--axi-sheet-pad, 12px 16px);
727
759
  }
728
760
  /* The heading the sheet opened with, divided from the body by a rule. Rule 8: