@axiapps/axi-design 1.37.1 → 1.38.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 +42 -2
- package/package.json +1 -1
- package/src/data.css +42 -2
package/dist/axi.css
CHANGED
|
@@ -2473,8 +2473,29 @@ textarea.axi-input {
|
|
|
2473
2473
|
border-inline-start-color: var(--axi-accent);
|
|
2474
2474
|
}
|
|
2475
2475
|
.axi-table__num { color: var(--axi-text); }
|
|
2476
|
-
/* A name cell: an icon, a diamond or a rank beside the label.
|
|
2477
|
-
|
|
2476
|
+
/* A name cell: an icon, a diamond or a rank beside the label.
|
|
2477
|
+
|
|
2478
|
+
The label truncates and the mark does not. A name is arbitrarily long - a
|
|
2479
|
+
skill called "Chapter 4: Scorched Aftermath" measured 417px against a 183px
|
|
2480
|
+
column - and with nothing said, a flex row lets it spill across its
|
|
2481
|
+
neighbours rather than shrink. The same reasoning as the comment on
|
|
2482
|
+
.axi-tabs__tab, and the same pair of requirements: min-width: 0 on the
|
|
2483
|
+
container AND on the shrinking child, because a flex item's default
|
|
2484
|
+
min-width is its content, so the ellipsis never appears without both.
|
|
2485
|
+
|
|
2486
|
+
Selected by element, not by a class the consumer adds: which child is the
|
|
2487
|
+
icon and which is the label is visible in the markup, and asking every
|
|
2488
|
+
consumer to label it invites exactly the omission this rule exists to fix.
|
|
2489
|
+
The `flex: none` on the mark is the load-bearing half - without it the icon
|
|
2490
|
+
squashes toward zero before the text gives up any room at all. */
|
|
2491
|
+
.axi-table__who { display: flex; align-items: center; gap: 9px; min-width: 0; }
|
|
2492
|
+
.axi-table__who > :where(img, svg) { flex: none; }
|
|
2493
|
+
.axi-table__who > :where(span, a, div, p) {
|
|
2494
|
+
min-width: 0;
|
|
2495
|
+
overflow: hidden;
|
|
2496
|
+
text-overflow: ellipsis;
|
|
2497
|
+
white-space: nowrap;
|
|
2498
|
+
}
|
|
2478
2499
|
/* Rank is the only fill a table gets, and only where the position is real -
|
|
2479
2500
|
a podium, not a row number. An outlined rank is the ordinary case. */
|
|
2480
2501
|
.axi-table__rank {
|
|
@@ -2552,6 +2573,25 @@ textarea.axi-input {
|
|
|
2552
2573
|
its being a modifier rather than a second table. */
|
|
2553
2574
|
.axi-table--dense thead th { padding: 0 7px 6px; }
|
|
2554
2575
|
.axi-table--dense :is(td, tbody th) { padding: 5px 7px; font: var(--axi-t-micro); }
|
|
2576
|
+
/* Proportional columns, for a table inside a pane rather than a page.
|
|
2577
|
+
|
|
2578
|
+
`width: 100%` is a floor, not a cap. Under the default auto layout the
|
|
2579
|
+
columns size to their content, and because every cell here is `nowrap`,
|
|
2580
|
+
content wins: a three-column table measured 581px inside a 360px pane.
|
|
2581
|
+
A page-width table absorbs that, and .axi-table__scroll turns it into a
|
|
2582
|
+
horizontal scrollbar on purpose. A table sharing a 480px pane with a
|
|
2583
|
+
selector list has neither option - it needs the columns to divide the room
|
|
2584
|
+
it has, which is what a grid's `fr` gives for free and is the reason
|
|
2585
|
+
hand-built tables in panes were grids.
|
|
2586
|
+
|
|
2587
|
+
The consumer sets the proportions in a <colgroup>, because they are facts
|
|
2588
|
+
about one table's columns and nothing here can know them.
|
|
2589
|
+
|
|
2590
|
+
Cells get the clip, not just the ellipsis: fixed layout makes a cell
|
|
2591
|
+
narrower than its content the normal case rather than the exception, and
|
|
2592
|
+
an unclipped cell paints over the column beside it. */
|
|
2593
|
+
.axi-table--fixed { table-layout: fixed; }
|
|
2594
|
+
.axi-table--fixed :where(td, th) { overflow: hidden; text-overflow: ellipsis; }
|
|
2555
2595
|
/* The sorted column, named with the attribute a screen reader already needs
|
|
2556
2596
|
in order to announce it. A class beside `aria-sort` would be a second
|
|
2557
2597
|
source of truth for one fact. The mark is ink on the head and its edge -
|
package/package.json
CHANGED
package/src/data.css
CHANGED
|
@@ -171,8 +171,29 @@
|
|
|
171
171
|
border-inline-start-color: var(--axi-accent);
|
|
172
172
|
}
|
|
173
173
|
.axi-table__num { color: var(--axi-text); }
|
|
174
|
-
/* A name cell: an icon, a diamond or a rank beside the label.
|
|
175
|
-
|
|
174
|
+
/* A name cell: an icon, a diamond or a rank beside the label.
|
|
175
|
+
|
|
176
|
+
The label truncates and the mark does not. A name is arbitrarily long - a
|
|
177
|
+
skill called "Chapter 4: Scorched Aftermath" measured 417px against a 183px
|
|
178
|
+
column - and with nothing said, a flex row lets it spill across its
|
|
179
|
+
neighbours rather than shrink. The same reasoning as the comment on
|
|
180
|
+
.axi-tabs__tab, and the same pair of requirements: min-width: 0 on the
|
|
181
|
+
container AND on the shrinking child, because a flex item's default
|
|
182
|
+
min-width is its content, so the ellipsis never appears without both.
|
|
183
|
+
|
|
184
|
+
Selected by element, not by a class the consumer adds: which child is the
|
|
185
|
+
icon and which is the label is visible in the markup, and asking every
|
|
186
|
+
consumer to label it invites exactly the omission this rule exists to fix.
|
|
187
|
+
The `flex: none` on the mark is the load-bearing half - without it the icon
|
|
188
|
+
squashes toward zero before the text gives up any room at all. */
|
|
189
|
+
.axi-table__who { display: flex; align-items: center; gap: 9px; min-width: 0; }
|
|
190
|
+
.axi-table__who > :where(img, svg) { flex: none; }
|
|
191
|
+
.axi-table__who > :where(span, a, div, p) {
|
|
192
|
+
min-width: 0;
|
|
193
|
+
overflow: hidden;
|
|
194
|
+
text-overflow: ellipsis;
|
|
195
|
+
white-space: nowrap;
|
|
196
|
+
}
|
|
176
197
|
/* Rank is the only fill a table gets, and only where the position is real -
|
|
177
198
|
a podium, not a row number. An outlined rank is the ordinary case. */
|
|
178
199
|
.axi-table__rank {
|
|
@@ -250,6 +271,25 @@
|
|
|
250
271
|
its being a modifier rather than a second table. */
|
|
251
272
|
.axi-table--dense thead th { padding: 0 7px 6px; }
|
|
252
273
|
.axi-table--dense :is(td, tbody th) { padding: 5px 7px; font: var(--axi-t-micro); }
|
|
274
|
+
/* Proportional columns, for a table inside a pane rather than a page.
|
|
275
|
+
|
|
276
|
+
`width: 100%` is a floor, not a cap. Under the default auto layout the
|
|
277
|
+
columns size to their content, and because every cell here is `nowrap`,
|
|
278
|
+
content wins: a three-column table measured 581px inside a 360px pane.
|
|
279
|
+
A page-width table absorbs that, and .axi-table__scroll turns it into a
|
|
280
|
+
horizontal scrollbar on purpose. A table sharing a 480px pane with a
|
|
281
|
+
selector list has neither option - it needs the columns to divide the room
|
|
282
|
+
it has, which is what a grid's `fr` gives for free and is the reason
|
|
283
|
+
hand-built tables in panes were grids.
|
|
284
|
+
|
|
285
|
+
The consumer sets the proportions in a <colgroup>, because they are facts
|
|
286
|
+
about one table's columns and nothing here can know them.
|
|
287
|
+
|
|
288
|
+
Cells get the clip, not just the ellipsis: fixed layout makes a cell
|
|
289
|
+
narrower than its content the normal case rather than the exception, and
|
|
290
|
+
an unclipped cell paints over the column beside it. */
|
|
291
|
+
.axi-table--fixed { table-layout: fixed; }
|
|
292
|
+
.axi-table--fixed :where(td, th) { overflow: hidden; text-overflow: ellipsis; }
|
|
253
293
|
/* The sorted column, named with the attribute a screen reader already needs
|
|
254
294
|
in order to announce it. A class beside `aria-sort` would be a second
|
|
255
295
|
source of truth for one fact. The mark is ink on the head and its edge -
|