@axiapps/axi-design 1.36.0 → 1.37.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 +79 -4
- package/package.json +1 -1
- package/src/data.css +71 -3
- package/src/prose.css +8 -1
package/dist/axi.css
CHANGED
|
@@ -2402,9 +2402,68 @@ textarea.axi-input {
|
|
|
2402
2402
|
/* The row under the cursor comes forward on the neutral ramp. Not an ink:
|
|
2403
2403
|
hovering a row is not a status, and forty rows that each flash a colour on
|
|
2404
2404
|
the way past the one you want is the tinted-everything failure rule 2 is
|
|
2405
|
-
about.
|
|
2406
|
-
|
|
2405
|
+
about.
|
|
2406
|
+
|
|
2407
|
+
ONE SURFACE, MANY ELEMENTS - the attachment below, and on the sticky head,
|
|
2408
|
+
the pinned column and the prose table's head, which are the four places in
|
|
2409
|
+
this language where that is the shape of the problem. Everywhere else a
|
|
2410
|
+
themed fill lands on a single box: a panel, a rail, a toolbar, one hovered
|
|
2411
|
+
row of a palette. A table's surfaces are ASSEMBLED. A hovered row is every
|
|
2412
|
+
cell in it, a sticky head is a row of `th`, a pinned name column is one cell
|
|
2413
|
+
per row - one strip to the eye and N painting areas to the renderer. A theme
|
|
2414
|
+
is allowed to make any surface a gradient and glass makes all three of them
|
|
2415
|
+
one, so each cell restarts the ramp and the strip arrives as a row of
|
|
2416
|
+
separately lit boxes with a seam at every boundary.
|
|
2417
|
+
|
|
2418
|
+
Fixed is the same idiom as `body`, `.axi-mast` and `.axi-sheet`, for the
|
|
2419
|
+
reason .axi-mast gives at length: an element shows its SHARE of one light
|
|
2420
|
+
rather than its own private copy of it. Give the cells of a strip a shared
|
|
2421
|
+
painting area and they resolve back into the one surface they were always
|
|
2422
|
+
drawing. Note what the fix does NOT depend on: which box ends up shared. A
|
|
2423
|
+
filtered ancestor - any panel under a glass theme, since --axi-surface-filter
|
|
2424
|
+
is a backdrop-filter and establishes a containing block, the trap that
|
|
2425
|
+
token's own comment points at - takes the painting area from the viewport and
|
|
2426
|
+
makes it the panel's. Both are shared by every cell in the band, so both are
|
|
2427
|
+
continuous; the ancestor only decides where the light sits, which is a
|
|
2428
|
+
question with no wrong answer here. What is not available is the obvious
|
|
2429
|
+
alternative of filling the container and leaving the cells transparent: a
|
|
2430
|
+
sticky head has to carry its own fill, because a fill on `thead` stays
|
|
2431
|
+
behind while the cells travel. */
|
|
2432
|
+
.axi-table tbody tr:hover :is(td, th) {
|
|
2433
|
+
background: var(--axi-surface-raised);
|
|
2434
|
+
background-attachment: fixed;
|
|
2435
|
+
color: var(--axi-text);
|
|
2436
|
+
}
|
|
2407
2437
|
/* The measured value in a row, as opposed to its supporting numbers. */
|
|
2438
|
+
/* A row that is the one currently shown somewhere else -- a detail pane, a
|
|
2439
|
+
chart, a second table. `aria-current`, for the same reason `aria-sort` above
|
|
2440
|
+
carries the sorted column and `.axi-rail__item[aria-current]` carries the
|
|
2441
|
+
chosen place: the attribute a screen reader already needs in order to announce
|
|
2442
|
+
the row is the whole fact, and a class beside it would be a second source of
|
|
2443
|
+
truth for one thing.
|
|
2444
|
+
|
|
2445
|
+
The fill is the float step, not the raised one, and the reason is the hover
|
|
2446
|
+
directly above: hovering a row ALREADY raises it, so a selection drawn at the
|
|
2447
|
+
raised step is indistinguishable from the row under the cursor -- and every
|
|
2448
|
+
consumer who has hand-written this state has hit that and reached for a hue
|
|
2449
|
+
instead, which is rule 2's tinted-everything failure arrived at honestly.
|
|
2450
|
+
Hover is a transient lift and selection is a held one, so selection sits one
|
|
2451
|
+
step beyond it and hovering a selected row must not pull it back down.
|
|
2452
|
+
|
|
2453
|
+
No accent, and no leading edge either. The accent is for one claim per screen
|
|
2454
|
+
and a selected row spends it on something a detail pane usually spends again;
|
|
2455
|
+
an edge would need a border reserved on every cell of every row, which is the
|
|
2456
|
+
grid-of-boxes rule 8 refuses. The attachment is the one-surface-many-elements
|
|
2457
|
+
case, same as the hover. */
|
|
2458
|
+
.axi-table tbody tr[aria-current] :is(td, th) {
|
|
2459
|
+
background: var(--axi-surface-float);
|
|
2460
|
+
background-attachment: fixed;
|
|
2461
|
+
color: var(--axi-text);
|
|
2462
|
+
}
|
|
2463
|
+
.axi-table tbody tr[aria-current]:hover :is(td, th) {
|
|
2464
|
+
background: var(--axi-surface-float);
|
|
2465
|
+
background-attachment: fixed;
|
|
2466
|
+
}
|
|
2408
2467
|
.axi-table__num { color: var(--axi-text); }
|
|
2409
2468
|
/* A name cell: an icon, a diamond or a rank beside the label. */
|
|
2410
2469
|
.axi-table__who { display: flex; align-items: center; gap: 9px; }
|
|
@@ -2453,8 +2512,14 @@ textarea.axi-input {
|
|
|
2453
2512
|
--axi-surface-float exists: rows travel behind both of these, and a glass
|
|
2454
2513
|
theme's ordinary surfaces are alpha, so a head at --axi-surface-raised
|
|
2455
2514
|
would have numbers sliding through it. Opaque is not a look here, it is
|
|
2456
|
-
the requirement.
|
|
2515
|
+
the requirement.
|
|
2516
|
+
|
|
2517
|
+
Opaque and a gradient, under glass, which is why the attachment is here:
|
|
2518
|
+
the head is a row of cells and this is the one-surface-many-elements case
|
|
2519
|
+
the hover rule explains. Nothing about the sticky positioning changes it -
|
|
2520
|
+
a sticky box is still its own painting area. */
|
|
2457
2521
|
background: var(--axi-surface-float);
|
|
2522
|
+
background-attachment: fixed;
|
|
2458
2523
|
border-bottom: var(--axi-border-control) solid var(--axi-ink-line);
|
|
2459
2524
|
}
|
|
2460
2525
|
/* The first column stays. It holds the row's name, and a name scrolled out of
|
|
@@ -2466,7 +2531,10 @@ textarea.axi-input {
|
|
|
2466
2531
|
position: sticky;
|
|
2467
2532
|
left: 0;
|
|
2468
2533
|
z-index: 1;
|
|
2534
|
+
/* The same strip as the head, turned ninety degrees, so the same attachment:
|
|
2535
|
+
one cell per row means forty painting areas down a single column. */
|
|
2469
2536
|
background: var(--axi-surface-float);
|
|
2537
|
+
background-attachment: fixed;
|
|
2470
2538
|
border-right: var(--axi-border-control) solid var(--axi-ink-line);
|
|
2471
2539
|
}
|
|
2472
2540
|
/* The corner belongs to both and has to outrank both. */
|
|
@@ -2836,9 +2904,16 @@ textarea.axi-input {
|
|
|
2836
2904
|
overflow: hidden;
|
|
2837
2905
|
font-size: 13.5px;
|
|
2838
2906
|
}
|
|
2907
|
+
/* A markdown table's head is a row of cells filled from a themed surface, so
|
|
2908
|
+
it is the one-surface-many-elements case `.axi-table tbody tr:hover` sets
|
|
2909
|
+
out in data.css, and it takes the same attachment. Nothing here is sticky,
|
|
2910
|
+
which makes no difference: the seam is per-cell repetition of the gradient,
|
|
2911
|
+
not anything to do with scrolling. */
|
|
2839
2912
|
.axi-prose th {
|
|
2840
2913
|
text-align: left; padding: 10px 12px;
|
|
2841
|
-
background: var(--axi-surface-raised);
|
|
2914
|
+
background: var(--axi-surface-raised);
|
|
2915
|
+
background-attachment: fixed;
|
|
2916
|
+
color: var(--axi-text);
|
|
2842
2917
|
font: var(--axi-t-micro); letter-spacing: var(--axi-ls-micro); text-transform: uppercase;
|
|
2843
2918
|
}
|
|
2844
2919
|
.axi-prose td { padding: 10px 12px; border-top: var(--axi-border-hairline) solid var(--axi-rule); }
|
package/package.json
CHANGED
package/src/data.css
CHANGED
|
@@ -100,9 +100,68 @@
|
|
|
100
100
|
/* The row under the cursor comes forward on the neutral ramp. Not an ink:
|
|
101
101
|
hovering a row is not a status, and forty rows that each flash a colour on
|
|
102
102
|
the way past the one you want is the tinted-everything failure rule 2 is
|
|
103
|
-
about.
|
|
104
|
-
|
|
103
|
+
about.
|
|
104
|
+
|
|
105
|
+
ONE SURFACE, MANY ELEMENTS - the attachment below, and on the sticky head,
|
|
106
|
+
the pinned column and the prose table's head, which are the four places in
|
|
107
|
+
this language where that is the shape of the problem. Everywhere else a
|
|
108
|
+
themed fill lands on a single box: a panel, a rail, a toolbar, one hovered
|
|
109
|
+
row of a palette. A table's surfaces are ASSEMBLED. A hovered row is every
|
|
110
|
+
cell in it, a sticky head is a row of `th`, a pinned name column is one cell
|
|
111
|
+
per row - one strip to the eye and N painting areas to the renderer. A theme
|
|
112
|
+
is allowed to make any surface a gradient and glass makes all three of them
|
|
113
|
+
one, so each cell restarts the ramp and the strip arrives as a row of
|
|
114
|
+
separately lit boxes with a seam at every boundary.
|
|
115
|
+
|
|
116
|
+
Fixed is the same idiom as `body`, `.axi-mast` and `.axi-sheet`, for the
|
|
117
|
+
reason .axi-mast gives at length: an element shows its SHARE of one light
|
|
118
|
+
rather than its own private copy of it. Give the cells of a strip a shared
|
|
119
|
+
painting area and they resolve back into the one surface they were always
|
|
120
|
+
drawing. Note what the fix does NOT depend on: which box ends up shared. A
|
|
121
|
+
filtered ancestor - any panel under a glass theme, since --axi-surface-filter
|
|
122
|
+
is a backdrop-filter and establishes a containing block, the trap that
|
|
123
|
+
token's own comment points at - takes the painting area from the viewport and
|
|
124
|
+
makes it the panel's. Both are shared by every cell in the band, so both are
|
|
125
|
+
continuous; the ancestor only decides where the light sits, which is a
|
|
126
|
+
question with no wrong answer here. What is not available is the obvious
|
|
127
|
+
alternative of filling the container and leaving the cells transparent: a
|
|
128
|
+
sticky head has to carry its own fill, because a fill on `thead` stays
|
|
129
|
+
behind while the cells travel. */
|
|
130
|
+
.axi-table tbody tr:hover :is(td, th) {
|
|
131
|
+
background: var(--axi-surface-raised);
|
|
132
|
+
background-attachment: fixed;
|
|
133
|
+
color: var(--axi-text);
|
|
134
|
+
}
|
|
105
135
|
/* The measured value in a row, as opposed to its supporting numbers. */
|
|
136
|
+
/* A row that is the one currently shown somewhere else -- a detail pane, a
|
|
137
|
+
chart, a second table. `aria-current`, for the same reason `aria-sort` above
|
|
138
|
+
carries the sorted column and `.axi-rail__item[aria-current]` carries the
|
|
139
|
+
chosen place: the attribute a screen reader already needs in order to announce
|
|
140
|
+
the row is the whole fact, and a class beside it would be a second source of
|
|
141
|
+
truth for one thing.
|
|
142
|
+
|
|
143
|
+
The fill is the float step, not the raised one, and the reason is the hover
|
|
144
|
+
directly above: hovering a row ALREADY raises it, so a selection drawn at the
|
|
145
|
+
raised step is indistinguishable from the row under the cursor -- and every
|
|
146
|
+
consumer who has hand-written this state has hit that and reached for a hue
|
|
147
|
+
instead, which is rule 2's tinted-everything failure arrived at honestly.
|
|
148
|
+
Hover is a transient lift and selection is a held one, so selection sits one
|
|
149
|
+
step beyond it and hovering a selected row must not pull it back down.
|
|
150
|
+
|
|
151
|
+
No accent, and no leading edge either. The accent is for one claim per screen
|
|
152
|
+
and a selected row spends it on something a detail pane usually spends again;
|
|
153
|
+
an edge would need a border reserved on every cell of every row, which is the
|
|
154
|
+
grid-of-boxes rule 8 refuses. The attachment is the one-surface-many-elements
|
|
155
|
+
case, same as the hover. */
|
|
156
|
+
.axi-table tbody tr[aria-current] :is(td, th) {
|
|
157
|
+
background: var(--axi-surface-float);
|
|
158
|
+
background-attachment: fixed;
|
|
159
|
+
color: var(--axi-text);
|
|
160
|
+
}
|
|
161
|
+
.axi-table tbody tr[aria-current]:hover :is(td, th) {
|
|
162
|
+
background: var(--axi-surface-float);
|
|
163
|
+
background-attachment: fixed;
|
|
164
|
+
}
|
|
106
165
|
.axi-table__num { color: var(--axi-text); }
|
|
107
166
|
/* A name cell: an icon, a diamond or a rank beside the label. */
|
|
108
167
|
.axi-table__who { display: flex; align-items: center; gap: 9px; }
|
|
@@ -151,8 +210,14 @@
|
|
|
151
210
|
--axi-surface-float exists: rows travel behind both of these, and a glass
|
|
152
211
|
theme's ordinary surfaces are alpha, so a head at --axi-surface-raised
|
|
153
212
|
would have numbers sliding through it. Opaque is not a look here, it is
|
|
154
|
-
the requirement.
|
|
213
|
+
the requirement.
|
|
214
|
+
|
|
215
|
+
Opaque and a gradient, under glass, which is why the attachment is here:
|
|
216
|
+
the head is a row of cells and this is the one-surface-many-elements case
|
|
217
|
+
the hover rule explains. Nothing about the sticky positioning changes it -
|
|
218
|
+
a sticky box is still its own painting area. */
|
|
155
219
|
background: var(--axi-surface-float);
|
|
220
|
+
background-attachment: fixed;
|
|
156
221
|
border-bottom: var(--axi-border-control) solid var(--axi-ink-line);
|
|
157
222
|
}
|
|
158
223
|
/* The first column stays. It holds the row's name, and a name scrolled out of
|
|
@@ -164,7 +229,10 @@
|
|
|
164
229
|
position: sticky;
|
|
165
230
|
left: 0;
|
|
166
231
|
z-index: 1;
|
|
232
|
+
/* The same strip as the head, turned ninety degrees, so the same attachment:
|
|
233
|
+
one cell per row means forty painting areas down a single column. */
|
|
167
234
|
background: var(--axi-surface-float);
|
|
235
|
+
background-attachment: fixed;
|
|
168
236
|
border-right: var(--axi-border-control) solid var(--axi-ink-line);
|
|
169
237
|
}
|
|
170
238
|
/* The corner belongs to both and has to outrank both. */
|
package/src/prose.css
CHANGED
|
@@ -76,9 +76,16 @@
|
|
|
76
76
|
overflow: hidden;
|
|
77
77
|
font-size: 13.5px;
|
|
78
78
|
}
|
|
79
|
+
/* A markdown table's head is a row of cells filled from a themed surface, so
|
|
80
|
+
it is the one-surface-many-elements case `.axi-table tbody tr:hover` sets
|
|
81
|
+
out in data.css, and it takes the same attachment. Nothing here is sticky,
|
|
82
|
+
which makes no difference: the seam is per-cell repetition of the gradient,
|
|
83
|
+
not anything to do with scrolling. */
|
|
79
84
|
.axi-prose th {
|
|
80
85
|
text-align: left; padding: 10px 12px;
|
|
81
|
-
background: var(--axi-surface-raised);
|
|
86
|
+
background: var(--axi-surface-raised);
|
|
87
|
+
background-attachment: fixed;
|
|
88
|
+
color: var(--axi-text);
|
|
82
89
|
font: var(--axi-t-micro); letter-spacing: var(--axi-ls-micro); text-transform: uppercase;
|
|
83
90
|
}
|
|
84
91
|
.axi-prose td { padding: 10px 12px; border-top: var(--axi-border-hairline) solid var(--axi-rule); }
|