@axiapps/axi-design 1.26.0 → 1.27.1

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/README.md CHANGED
@@ -156,6 +156,8 @@ not "what does the system look like". Everything else is
156
156
  | `--axi-palette-top` | how far down the screen an `.axi-palette` opens | `12vh` | `<div class="axi-scrim axi-palette" style="--axi-palette-top: 6vh">` |
157
157
  | `--axi-menu-width` | width of `.axi-menu__pop` | `310px` | `<div class="axi-menu__pop" style="--axi-menu-width: 380px">` |
158
158
  | `--axi-drawer-width` | width of `.axi-drawer` (capped at `100vw`) | `560px` | `<aside class="axi-drawer" style="--axi-drawer-width: 720px">` |
159
+ | `--axi-sheet-top` | where an `.axi-sheet`'s top edge sits, for an app whose own chrome starts above it | `0` | `<div class="axi-sheet" style="--axi-sheet-top: 2.5rem">` |
160
+ | `--axi-sheet-pad` | the padding inside an `.axi-sheet` | `12px 16px` | `<div class="axi-sheet" style="--axi-sheet-pad: 0">` |
159
161
  | `--axi-series` | the ink a meter fill, bar, plot line or `.axi-diamond--series` is drawn in | `var(--axi-accent)` | `<span class="axi-meter__fill" style="--axi-series: var(--axi-ok)">` |
160
162
  | `--axi-meter-v` | how full one `.axi-meter__fill` is | `0%` | `<span class="axi-meter__fill" style="--axi-meter-v: 62%">` |
161
163
  | `--axi-meter-h` | height of a `.axi-meter` | `12px` | `<div class="axi-meter" style="--axi-meter-h: 18px">` |
package/dist/axi.css CHANGED
@@ -1649,6 +1649,73 @@ textarea.axi-input {
1649
1649
  }
1650
1650
  .axi-drawer__body { overflow-y: auto; padding: 18px 24px 30px; }
1651
1651
 
1652
+ /* ---------- sheet ---------- */
1653
+ /* A pane that covers the whole of its containing block: one thing blown up to
1654
+ fill the app, with a way back out. Three names were already close and all
1655
+ three are wrong, so this one is worth its own word.
1656
+
1657
+ Not .axi-modal. A modal is a <dialog> in the top layer with a scrim and the
1658
+ page inert behind it; a sheet is in the page, and the thing it replaces is
1659
+ the view, not the reader's attention.
1660
+
1661
+ Not .axi-drawer--full. A drawer is pinned to three edges with the page live
1662
+ beside it - that live strip is what makes it a drawer, and it is what pays
1663
+ for the float fill, the leading outline and the scrim. Widen a drawer to the
1664
+ fourth edge and every one of those three goes away, which is a different
1665
+ object wearing a modifier, not a wider drawer.
1666
+
1667
+ Not .axi-panel. Rule 3 outlines a raised element and rule 5 gives it a
1668
+ block, and both are claims about an edge: an element pinned to all four
1669
+ sides has no edge on screen to outline, and nothing behind it this language
1670
+ is entitled to cast a shadow on. So a sheet carries no outline, no block and
1671
+ no radius, and nothing raises it - it is the ground with one thing on it.
1672
+
1673
+ Which is why it paints the ground's IMAGE as well as the ground's colour. A
1674
+ sheet is the page for as long as it is open, and a theme that lights the
1675
+ 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.
1677
+
1678
+ The two longhands, the same pair `body` uses, and NOT the `background`
1679
+ shorthand: --axi-ground-image is a comma-separated list of three gradients
1680
+ under the glass theme, and the shorthand only accepts a colour in its final
1681
+ layer. `background: <colour> <three gradients>` puts the colour in the first
1682
+ layer, which makes the whole declaration invalid and drops it - a sheet with
1683
+ no fill at all, over a live page. It is exactly the trap the token block
1684
+ warns about two tokens up, in the other direction.
1685
+
1686
+ No filter either, for the same reason the window has none: there is nothing
1687
+ to see through to. The two knobs are the only things a consumer genuinely
1688
+ cannot know from here - where its top edge is (an app with its own titlebar
1689
+ starts below it) and how much padding its content wants. */
1690
+ .axi-sheet {
1691
+ position: fixed;
1692
+ inset: var(--axi-sheet-top, 0) 0 0;
1693
+ /* Its own rung, between the page's sticky chrome and the scrim. Above 40 and
1694
+ 41 because a sheet covers the view, and the masthead and the popovers are
1695
+ part of the view; below 50 because a modal or a drawer opened FROM a sheet
1696
+ has to land on top of it, and a sheet is not the kind of thing that gets
1697
+ to win that. */
1698
+ z-index: 45;
1699
+ display: flex;
1700
+ flex-direction: column;
1701
+ overflow-x: hidden;
1702
+ overflow-y: auto;
1703
+ background-color: var(--axi-ground);
1704
+ background-image: var(--axi-ground-image);
1705
+ padding: var(--axi-sheet-pad, 12px 16px);
1706
+ }
1707
+ /* The heading the sheet opened with, divided from the body by a rule. Rule 8:
1708
+ a line inside a surface separates its parts rather than raising them - and
1709
+ here it is doing the job the outline a sheet does not have would have done,
1710
+ which is to say where the pane's own chrome stops and its content starts. */
1711
+ .axi-sheet__head {
1712
+ flex: none;
1713
+ padding-bottom: 10px;
1714
+ border-bottom: var(--axi-border-control) solid var(--axi-ink-line);
1715
+ }
1716
+ /* The scrolling region under the head. */
1717
+ .axi-sheet__body { flex: 1 1 auto; min-height: 0; }
1718
+
1652
1719
  /* ---------- pull-quote ---------- */
1653
1720
  /* A cited quotation. The accent rule down the left is the only place in the
1654
1721
  language where colour marks a block rather than filling a chip - a quote is
package/docs/RULES.md CHANGED
@@ -490,6 +490,7 @@ instead of joining it.
490
490
  | Table corner | 3 | where the two cross |
491
491
  | Sticky chrome | 40 | `.axi-mast` |
492
492
  | Popovers | 41 | `.axi-menu__pop`, `.axi-picker__pop` |
493
+ | Sheet | 45 | `.axi-sheet` |
493
494
  | Scrim | 50 | `.axi-scrim` |
494
495
  | Drawer | 51 | `.axi-drawer` |
495
496
  | Toasts | 60 | `.axi-toasts` |
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@axiapps/axi-design",
3
- "version": "1.26.0",
3
+ "version": "1.27.1",
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
@@ -677,6 +677,73 @@
677
677
  }
678
678
  .axi-drawer__body { overflow-y: auto; padding: 18px 24px 30px; }
679
679
 
680
+ /* ---------- sheet ---------- */
681
+ /* A pane that covers the whole of its containing block: one thing blown up to
682
+ fill the app, with a way back out. Three names were already close and all
683
+ three are wrong, so this one is worth its own word.
684
+
685
+ Not .axi-modal. A modal is a <dialog> in the top layer with a scrim and the
686
+ page inert behind it; a sheet is in the page, and the thing it replaces is
687
+ the view, not the reader's attention.
688
+
689
+ Not .axi-drawer--full. A drawer is pinned to three edges with the page live
690
+ beside it - that live strip is what makes it a drawer, and it is what pays
691
+ for the float fill, the leading outline and the scrim. Widen a drawer to the
692
+ fourth edge and every one of those three goes away, which is a different
693
+ object wearing a modifier, not a wider drawer.
694
+
695
+ Not .axi-panel. Rule 3 outlines a raised element and rule 5 gives it a
696
+ block, and both are claims about an edge: an element pinned to all four
697
+ sides has no edge on screen to outline, and nothing behind it this language
698
+ is entitled to cast a shadow on. So a sheet carries no outline, no block and
699
+ no radius, and nothing raises it - it is the ground with one thing on it.
700
+
701
+ Which is why it paints the ground's IMAGE as well as the ground's colour. A
702
+ sheet is the page for as long as it is open, and a theme that lights the
703
+ 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.
705
+
706
+ The two longhands, the same pair `body` uses, and NOT the `background`
707
+ shorthand: --axi-ground-image is a comma-separated list of three gradients
708
+ under the glass theme, and the shorthand only accepts a colour in its final
709
+ layer. `background: <colour> <three gradients>` puts the colour in the first
710
+ layer, which makes the whole declaration invalid and drops it - a sheet with
711
+ no fill at all, over a live page. It is exactly the trap the token block
712
+ warns about two tokens up, in the other direction.
713
+
714
+ No filter either, for the same reason the window has none: there is nothing
715
+ to see through to. The two knobs are the only things a consumer genuinely
716
+ cannot know from here - where its top edge is (an app with its own titlebar
717
+ starts below it) and how much padding its content wants. */
718
+ .axi-sheet {
719
+ position: fixed;
720
+ inset: var(--axi-sheet-top, 0) 0 0;
721
+ /* Its own rung, between the page's sticky chrome and the scrim. Above 40 and
722
+ 41 because a sheet covers the view, and the masthead and the popovers are
723
+ part of the view; below 50 because a modal or a drawer opened FROM a sheet
724
+ has to land on top of it, and a sheet is not the kind of thing that gets
725
+ to win that. */
726
+ z-index: 45;
727
+ display: flex;
728
+ flex-direction: column;
729
+ overflow-x: hidden;
730
+ overflow-y: auto;
731
+ background-color: var(--axi-ground);
732
+ background-image: var(--axi-ground-image);
733
+ padding: var(--axi-sheet-pad, 12px 16px);
734
+ }
735
+ /* The heading the sheet opened with, divided from the body by a rule. Rule 8:
736
+ a line inside a surface separates its parts rather than raising them - and
737
+ here it is doing the job the outline a sheet does not have would have done,
738
+ which is to say where the pane's own chrome stops and its content starts. */
739
+ .axi-sheet__head {
740
+ flex: none;
741
+ padding-bottom: 10px;
742
+ border-bottom: var(--axi-border-control) solid var(--axi-ink-line);
743
+ }
744
+ /* The scrolling region under the head. */
745
+ .axi-sheet__body { flex: 1 1 auto; min-height: 0; }
746
+
680
747
  /* ---------- pull-quote ---------- */
681
748
  /* A cited quotation. The accent rule down the left is the only place in the
682
749
  language where colour marks a block rather than filling a chip - a quote is