@axiapps/axi-design 1.15.0 → 1.16.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 +49 -5
- package/package.json +1 -1
- package/src/shells.css +49 -5
package/dist/axi.css
CHANGED
|
@@ -874,24 +874,67 @@ textarea.axi-input {
|
|
|
874
874
|
color: var(--axi-text-faint);
|
|
875
875
|
letter-spacing: .09em; text-transform: uppercase;
|
|
876
876
|
}
|
|
877
|
-
.
|
|
878
|
-
|
|
877
|
+
/* Anchors and buttons both. A strip that moves between URLs is made of links;
|
|
878
|
+
a strip inside an application that swaps a view in place is made of buttons,
|
|
879
|
+
and they look the same because they answer the same question. A button also
|
|
880
|
+
arrives carrying the UA's own font, fill and cursor, which an anchor does
|
|
881
|
+
not, so those three are cleared here rather than left to the consumer. */
|
|
882
|
+
.axi-tabs { display: flex; gap: 8px; }
|
|
883
|
+
/* The auto margin belongs to the masthead, not to the strip: it is a statement
|
|
884
|
+
about where the tabs sit in that row, and a strip standing on its own -
|
|
885
|
+
spanning a view instead of ending a header - has nothing to push away from. */
|
|
886
|
+
.axi-mast .axi-tabs { margin-left: auto; }
|
|
887
|
+
.axi-tabs a,
|
|
888
|
+
.axi-tabs button {
|
|
879
889
|
padding: 8px 16px;
|
|
880
890
|
font: 800 13.5px/1 var(--axi-sans);
|
|
881
891
|
color: var(--axi-text-dim); text-decoration: none;
|
|
892
|
+
background: none;
|
|
893
|
+
cursor: pointer;
|
|
882
894
|
border: var(--axi-border-control) solid transparent;
|
|
883
895
|
border-radius: var(--axi-radius-sm);
|
|
884
896
|
}
|
|
885
|
-
.axi-tabs a:hover
|
|
897
|
+
.axi-tabs a:hover,
|
|
898
|
+
.axi-tabs button:hover { color: var(--axi-text); border-color: var(--axi-rule); }
|
|
886
899
|
/* The current tab is filled and blocked - the same treatment a pressed pill
|
|
887
900
|
gets, because it is the same idea: this one is on. */
|
|
888
|
-
.axi-tabs a[aria-current="page"]
|
|
901
|
+
.axi-tabs a[aria-current="page"],
|
|
902
|
+
.axi-tabs button[aria-current="page"] {
|
|
889
903
|
background: var(--axi-accent);
|
|
890
904
|
color: var(--axi-accent-ink);
|
|
891
905
|
border-color: var(--axi-ink-line);
|
|
892
906
|
box-shadow: var(--axi-shadow-control);
|
|
893
907
|
}
|
|
894
908
|
|
|
909
|
+
/* A closable tab - a report or a document, an open thing rather than a place.
|
|
910
|
+
The label and its close control travel together, so the pair is a box and
|
|
911
|
+
the strip's gap falls between pairs instead of between a tab and its own X.
|
|
912
|
+
|
|
913
|
+
The close control is a tab's affordance and not a tab, so it opts out of the
|
|
914
|
+
tab treatment: no tab padding, no tab weight, and faint until the cursor is
|
|
915
|
+
on it. Two classes to outrank `.axi-tabs button`, which is one class and one
|
|
916
|
+
element and would otherwise win on source order alone. */
|
|
917
|
+
/* A document title is arbitrarily long, so the label truncates rather than
|
|
918
|
+
pushing the close control off the strip. Both boxes need min-width: 0 - a
|
|
919
|
+
flex item's default min-width is its content, so without it the label simply
|
|
920
|
+
refuses to shrink and the ellipsis never appears. The consumer sets the width
|
|
921
|
+
it wants to hold on .axi-tabs__tab. */
|
|
922
|
+
.axi-tabs__tab { display: inline-flex; align-items: center; min-width: 0; }
|
|
923
|
+
.axi-tabs__tab > a:first-child,
|
|
924
|
+
.axi-tabs__tab > button:first-child {
|
|
925
|
+
min-width: 0;
|
|
926
|
+
overflow: hidden;
|
|
927
|
+
text-overflow: ellipsis;
|
|
928
|
+
white-space: nowrap;
|
|
929
|
+
}
|
|
930
|
+
.axi-tabs .axi-tabs__close {
|
|
931
|
+
padding: 0 6px;
|
|
932
|
+
font: var(--axi-t-micro);
|
|
933
|
+
color: var(--axi-text-faint);
|
|
934
|
+
border-color: transparent;
|
|
935
|
+
}
|
|
936
|
+
.axi-tabs .axi-tabs__close:hover { color: var(--axi-text); border-color: transparent; }
|
|
937
|
+
|
|
895
938
|
/* ---------- notice ---------- */
|
|
896
939
|
.axi-notice {
|
|
897
940
|
display: flex; gap: 14px; padding: 15px 18px;
|
|
@@ -1205,7 +1248,8 @@ textarea.axi-input {
|
|
|
1205
1248
|
|
|
1206
1249
|
@media (max-width: 640px) {
|
|
1207
1250
|
.axi-mast__in { min-height: 0; padding: 10px 16px; gap: 12px; }
|
|
1208
|
-
.axi-tabs { margin-left: 0;
|
|
1251
|
+
.axi-mast .axi-tabs { margin-left: 0; }
|
|
1252
|
+
.axi-tabs { width: 100%; overflow-x: auto; }
|
|
1209
1253
|
/* The offset blocks eat horizontal room a phone does not have, so the panel
|
|
1210
1254
|
step drops to the control step here rather than to an invented number.
|
|
1211
1255
|
The card's hover has to come down with it - left alone it kept deepening
|
package/package.json
CHANGED
package/src/shells.css
CHANGED
|
@@ -48,24 +48,67 @@
|
|
|
48
48
|
color: var(--axi-text-faint);
|
|
49
49
|
letter-spacing: .09em; text-transform: uppercase;
|
|
50
50
|
}
|
|
51
|
-
.
|
|
52
|
-
|
|
51
|
+
/* Anchors and buttons both. A strip that moves between URLs is made of links;
|
|
52
|
+
a strip inside an application that swaps a view in place is made of buttons,
|
|
53
|
+
and they look the same because they answer the same question. A button also
|
|
54
|
+
arrives carrying the UA's own font, fill and cursor, which an anchor does
|
|
55
|
+
not, so those three are cleared here rather than left to the consumer. */
|
|
56
|
+
.axi-tabs { display: flex; gap: 8px; }
|
|
57
|
+
/* The auto margin belongs to the masthead, not to the strip: it is a statement
|
|
58
|
+
about where the tabs sit in that row, and a strip standing on its own -
|
|
59
|
+
spanning a view instead of ending a header - has nothing to push away from. */
|
|
60
|
+
.axi-mast .axi-tabs { margin-left: auto; }
|
|
61
|
+
.axi-tabs a,
|
|
62
|
+
.axi-tabs button {
|
|
53
63
|
padding: 8px 16px;
|
|
54
64
|
font: 800 13.5px/1 var(--axi-sans);
|
|
55
65
|
color: var(--axi-text-dim); text-decoration: none;
|
|
66
|
+
background: none;
|
|
67
|
+
cursor: pointer;
|
|
56
68
|
border: var(--axi-border-control) solid transparent;
|
|
57
69
|
border-radius: var(--axi-radius-sm);
|
|
58
70
|
}
|
|
59
|
-
.axi-tabs a:hover
|
|
71
|
+
.axi-tabs a:hover,
|
|
72
|
+
.axi-tabs button:hover { color: var(--axi-text); border-color: var(--axi-rule); }
|
|
60
73
|
/* The current tab is filled and blocked - the same treatment a pressed pill
|
|
61
74
|
gets, because it is the same idea: this one is on. */
|
|
62
|
-
.axi-tabs a[aria-current="page"]
|
|
75
|
+
.axi-tabs a[aria-current="page"],
|
|
76
|
+
.axi-tabs button[aria-current="page"] {
|
|
63
77
|
background: var(--axi-accent);
|
|
64
78
|
color: var(--axi-accent-ink);
|
|
65
79
|
border-color: var(--axi-ink-line);
|
|
66
80
|
box-shadow: var(--axi-shadow-control);
|
|
67
81
|
}
|
|
68
82
|
|
|
83
|
+
/* A closable tab - a report or a document, an open thing rather than a place.
|
|
84
|
+
The label and its close control travel together, so the pair is a box and
|
|
85
|
+
the strip's gap falls between pairs instead of between a tab and its own X.
|
|
86
|
+
|
|
87
|
+
The close control is a tab's affordance and not a tab, so it opts out of the
|
|
88
|
+
tab treatment: no tab padding, no tab weight, and faint until the cursor is
|
|
89
|
+
on it. Two classes to outrank `.axi-tabs button`, which is one class and one
|
|
90
|
+
element and would otherwise win on source order alone. */
|
|
91
|
+
/* A document title is arbitrarily long, so the label truncates rather than
|
|
92
|
+
pushing the close control off the strip. Both boxes need min-width: 0 - a
|
|
93
|
+
flex item's default min-width is its content, so without it the label simply
|
|
94
|
+
refuses to shrink and the ellipsis never appears. The consumer sets the width
|
|
95
|
+
it wants to hold on .axi-tabs__tab. */
|
|
96
|
+
.axi-tabs__tab { display: inline-flex; align-items: center; min-width: 0; }
|
|
97
|
+
.axi-tabs__tab > a:first-child,
|
|
98
|
+
.axi-tabs__tab > button:first-child {
|
|
99
|
+
min-width: 0;
|
|
100
|
+
overflow: hidden;
|
|
101
|
+
text-overflow: ellipsis;
|
|
102
|
+
white-space: nowrap;
|
|
103
|
+
}
|
|
104
|
+
.axi-tabs .axi-tabs__close {
|
|
105
|
+
padding: 0 6px;
|
|
106
|
+
font: var(--axi-t-micro);
|
|
107
|
+
color: var(--axi-text-faint);
|
|
108
|
+
border-color: transparent;
|
|
109
|
+
}
|
|
110
|
+
.axi-tabs .axi-tabs__close:hover { color: var(--axi-text); border-color: transparent; }
|
|
111
|
+
|
|
69
112
|
/* ---------- notice ---------- */
|
|
70
113
|
.axi-notice {
|
|
71
114
|
display: flex; gap: 14px; padding: 15px 18px;
|
|
@@ -379,7 +422,8 @@
|
|
|
379
422
|
|
|
380
423
|
@media (max-width: 640px) {
|
|
381
424
|
.axi-mast__in { min-height: 0; padding: 10px 16px; gap: 12px; }
|
|
382
|
-
.axi-tabs { margin-left: 0;
|
|
425
|
+
.axi-mast .axi-tabs { margin-left: 0; }
|
|
426
|
+
.axi-tabs { width: 100%; overflow-x: auto; }
|
|
383
427
|
/* The offset blocks eat horizontal room a phone does not have, so the panel
|
|
384
428
|
step drops to the control step here rather than to an invented number.
|
|
385
429
|
The card's hover has to come down with it - left alone it kept deepening
|