@crewlethq/ui 0.37.1 → 0.39.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/README.md +70 -2
- package/dist/Accordion/index.js +1 -1
- package/dist/AgentHandoffPanel/index.js +2 -2
- package/dist/AppShell/index.js +1 -1
- package/dist/{AppShell-JBCZSSX3.css → AppShell-NDU4XMGF.css} +39 -6
- package/dist/ArtifactBar/index.js +1 -1
- package/dist/{ArtifactBar-FWPBBKQ5.css → ArtifactBar-6PGWGKN2.css} +13 -1
- package/dist/ArtifactCard/index.js +2 -2
- package/dist/ArtifactMakeRow/ArtifactMakeRow.d.ts +3 -1
- package/dist/ArtifactMakeRow/index.js +1 -1
- package/dist/{ArtifactMakeRow-W3RD5YWZ.css → ArtifactMakeRow-6UX2LTF7.css} +43 -5
- package/dist/AuthLayout/index.js +2 -2
- package/dist/Card/Card.d.ts +14 -2
- package/dist/Card/index.js +1 -1
- package/dist/{Card-QOVASQNU.css → Card-JR2UPQH7.css} +63 -0
- package/dist/CatalogTile/CatalogTile.d.ts +47 -0
- package/dist/CatalogTile/index.d.ts +3 -0
- package/dist/CatalogTile/index.js +3 -0
- package/dist/CatalogTile-TGR2ZZVQ.css +131 -0
- package/dist/CodeBlock/index.js +1 -1
- package/dist/{CodeBlock-GYNJ2HI6.css → CodeBlock-N5ETJF24.css} +13 -0
- package/dist/CommandPalette/index.js +2 -2
- package/dist/DataTable/index.js +2 -2
- package/dist/DataView/index.js +3 -3
- package/dist/DatasetSource/DatasetSource.d.ts +7 -1
- package/dist/DatasetSource/index.js +2 -2
- package/dist/DescriptionList/DescriptionList.d.ts +12 -1
- package/dist/DescriptionList/index.js +1 -1
- package/dist/{DescriptionList-IXMRCSMK.css → DescriptionList-DEZISDLQ.css} +8 -1
- package/dist/Disclosure/index.js +1 -1
- package/dist/{Disclosure-VKBJJIZ7.css → Disclosure-P4FH3C35.css} +28 -2
- package/dist/LinkInterstitial/index.js +2 -2
- package/dist/List/List.d.ts +8 -0
- package/dist/List/index.js +1 -1
- package/dist/{List-MYJIV6MP.css → List-YHLIZFK4.css} +46 -0
- package/dist/ListInput/ListInput.d.ts +9 -1
- package/dist/ListInput/index.js +1 -1
- package/dist/Modal/index.js +1 -1
- package/dist/{Modal-7MWRCWAI.css → Modal-TOEWHDCQ.css} +5 -0
- package/dist/ObjectHeader/index.js +1 -1
- package/dist/{ObjectHeader-D7GU7QNI.css → ObjectHeader-ZOS22FKX.css} +7 -8
- package/dist/PricingCard/index.js +2 -2
- package/dist/SettingsTable/SettingsTable.d.ts +66 -0
- package/dist/SettingsTable/index.d.ts +3 -0
- package/dist/SettingsTable/index.js +3 -0
- package/dist/SettingsTable-6DUFAFXG.css +160 -0
- package/dist/ShareDialog/index.js +2 -2
- package/dist/SheetGrid/index.js +2 -2
- package/dist/StatCard/index.js +1 -1
- package/dist/{StatCard-4T7TMWMN.css → StatCard-HAA3F5GX.css} +8 -3
- package/dist/StatGroup/StatGroup.d.ts +11 -7
- package/dist/StatGroup/index.js +1 -1
- package/dist/StatGroup-ZMW7VQWP.css +195 -0
- package/dist/Switcher/index.js +2 -2
- package/dist/TableCells/index.js +2 -2
- package/dist/Tag/index.js +1 -1
- package/dist/{Tag-SRGTK5KI.css → Tag-2DQOVE6W.css} +15 -5
- package/dist/TagsInput/index.js +2 -2
- package/dist/TileGrid/TileGrid.d.ts +33 -0
- package/dist/TileGrid/index.d.ts +3 -0
- package/dist/TileGrid/index.js +2 -0
- package/dist/TileGrid-I6LNYD2H.css +52 -0
- package/dist/{chunk-YSG3DW7W.js → chunk-3TXY3PJZ.js} +1 -1
- package/dist/{chunk-K4VP6ZKE.js → chunk-4BJK7FE5.js} +1 -1
- package/dist/chunk-4RKTZSEW.js +64 -0
- package/dist/{chunk-3SBM4DGI.js → chunk-BH52LIY6.js} +1 -1
- package/dist/{chunk-HDHZWIFL.js → chunk-DYB66CNM.js} +16 -2
- package/dist/{chunk-A23KDROH.js → chunk-FXBGEANQ.js} +1 -1
- package/dist/{chunk-HMLAWVG6.js → chunk-HQJ24WPM.js} +5 -3
- package/dist/{chunk-SVGARBDY.js → chunk-IAGYPTEJ.js} +2 -2
- package/dist/{chunk-5QXRI35B.js → chunk-INHXF2CL.js} +24 -11
- package/dist/{chunk-6NNY5WBF.js → chunk-JKAGN4V4.js} +1 -1
- package/dist/{chunk-DZSBFITC.js → chunk-JZPK4IXR.js} +1 -1
- package/dist/{chunk-UWRBD2YO.js → chunk-KNHUBHFX.js} +1 -1
- package/dist/{chunk-GFV4LJHH.js → chunk-KYIAFNU7.js} +1 -1
- package/dist/{chunk-F2XSYBKH.js → chunk-MFS6F2P7.js} +4 -1
- package/dist/{chunk-NRBAXRWE.js → chunk-N3TFYBN3.js} +1 -1
- package/dist/chunk-NNTO3TNC.js +9 -0
- package/dist/{chunk-DS2C73RJ.js → chunk-NZWX27J7.js} +2 -2
- package/dist/{chunk-VGE3G3T4.js → chunk-ODOJJGXH.js} +1 -1
- package/dist/{chunk-MICH6QSJ.js → chunk-OGXHZHRX.js} +1 -1
- package/dist/{chunk-JXRI5YD2.js → chunk-OUD75UB2.js} +2 -1
- package/dist/{chunk-MG3HTY6F.js → chunk-QRKT4XTT.js} +1 -1
- package/dist/{chunk-NS4NSHVX.js → chunk-R2IBCEU6.js} +12 -2
- package/dist/{chunk-WX2NIG4G.js → chunk-S4DREXGM.js} +1 -1
- package/dist/{chunk-GDDE4UM7.js → chunk-SEC2GR2V.js} +1 -1
- package/dist/{chunk-S27UBCVX.js → chunk-TZYFTC4M.js} +1 -1
- package/dist/{chunk-OHA6WSAG.js → chunk-U2XAJONO.js} +1 -1
- package/dist/{chunk-DQSXWQMJ.js → chunk-U3ILLCR2.js} +1 -1
- package/dist/{chunk-DOLATMGF.js → chunk-WYYCPV46.js} +5 -0
- package/dist/{chunk-A72JPXIV.js → chunk-XGBUUQDU.js} +1 -1
- package/dist/chunk-XNXK5MA4.js +48 -0
- package/dist/{chunk-XO7PUL4F.js → chunk-YPTTSJPM.js} +1 -1
- package/dist/{chunk-RIAZM6L3.js → chunk-ZNOXQACX.js} +1 -1
- package/dist/generated/index.d.ts +3 -0
- package/dist/generated/index.js +56 -53
- package/dist/index.js +56 -53
- package/dist/styles.css +782 -64
- package/package.json +3 -3
- package/dist/StatGroup-PADTJCUQ.css +0 -86
- /package/dist/{chunk-4QQ3MND5.js → chunk-QRLIWCLX.js} +0 -0
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* SettingsTable: a read-only table of settings, one row each, on one grid.
|
|
3
|
+
*
|
|
4
|
+
* THE TRACKS ARE FRACTIONS OF THE TABLE, so every table of one width shares
|
|
5
|
+
* them: a page that stacks a table per group puts each column on one line
|
|
6
|
+
* down the page with nothing to coordinate. `--crewlet-settings-table-columns`
|
|
7
|
+
* is inherited, so a page that wants other proportions sets it once.
|
|
8
|
+
*
|
|
9
|
+
* Each row is its own grid on those tracks rather than a subgrid of the
|
|
10
|
+
* table's, because the tracks are fractions: one row's long label can never
|
|
11
|
+
* move another row's value, which is what a content-sized track would do.
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
.crewlet-settings-table {
|
|
15
|
+
container: crewlet-settings-table / inline-size;
|
|
16
|
+
display: flex;
|
|
17
|
+
flex-direction: column;
|
|
18
|
+
min-width: 0;
|
|
19
|
+
font-size: var(--font-size-compact);
|
|
20
|
+
/* The flush-panel recipe, standing on its own: the card's surface, its
|
|
21
|
+
hairline and its corner. Inside a card it gives them up (below). */
|
|
22
|
+
background: var(--color-surface-subtle);
|
|
23
|
+
border: 1px solid var(--color-border-default);
|
|
24
|
+
border-radius: var(--radius-lg);
|
|
25
|
+
overflow: hidden;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/*
|
|
29
|
+
* A TABLE THAT IS A CARD'S CONTENT IS THAT CARD'S TABLE. It draws no edge or
|
|
30
|
+
* corner of its own inside one, so a card never holds a box inside a box; its
|
|
31
|
+
* rows' hairlines run to the card's edges under the card's own head rule.
|
|
32
|
+
*/
|
|
33
|
+
.crewlet-card > .crewlet-settings-table,
|
|
34
|
+
.crewlet-card__body > .crewlet-settings-table {
|
|
35
|
+
background: transparent;
|
|
36
|
+
border: 0;
|
|
37
|
+
border-radius: var(--radius-none);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
.crewlet-settings-table__row {
|
|
41
|
+
display: grid;
|
|
42
|
+
grid-template-columns: var(
|
|
43
|
+
--crewlet-settings-table-columns,
|
|
44
|
+
minmax(0, 5fr) minmax(0, 3fr) minmax(0, 2fr)
|
|
45
|
+
);
|
|
46
|
+
column-gap: var(--spacing-6);
|
|
47
|
+
/* ONE BASELINE PER ROW: the name, the value and the source sit on the
|
|
48
|
+
first line's baseline, whatever the name's key adds under it. */
|
|
49
|
+
align-items: baseline;
|
|
50
|
+
min-height: var(--size-row-md);
|
|
51
|
+
padding: var(--spacing-3) var(--spacing-4);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
.crewlet-settings-table__body > .crewlet-settings-table__row + .crewlet-settings-table__row {
|
|
55
|
+
border-top: 1px solid var(--color-border-default);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/*
|
|
59
|
+
* The column names, in the micro-label register a table's header takes
|
|
60
|
+
* across the system, on the panel's own ground. Hidden by default (see the
|
|
61
|
+
* component): still the table's column headers for assistive technology.
|
|
62
|
+
*/
|
|
63
|
+
.crewlet-settings-table__head .crewlet-settings-table__row {
|
|
64
|
+
min-height: 0;
|
|
65
|
+
padding-block: var(--spacing-2);
|
|
66
|
+
border-bottom: 1px solid var(--color-border-default);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
.crewlet-settings-table__name {
|
|
70
|
+
font-size: var(--font-size-2xs);
|
|
71
|
+
font-weight: var(--font-weight-medium);
|
|
72
|
+
letter-spacing: var(--font-letter-spacing-wide);
|
|
73
|
+
text-transform: uppercase;
|
|
74
|
+
color: var(--color-text-tertiary);
|
|
75
|
+
white-space: nowrap;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
.crewlet-settings-table__head--hidden {
|
|
79
|
+
position: absolute;
|
|
80
|
+
width: 1px;
|
|
81
|
+
height: 1px;
|
|
82
|
+
margin: -1px;
|
|
83
|
+
padding: 0;
|
|
84
|
+
border: 0;
|
|
85
|
+
overflow: hidden;
|
|
86
|
+
clip-path: inset(50%);
|
|
87
|
+
white-space: nowrap;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
.crewlet-settings-table__setting {
|
|
91
|
+
display: flex;
|
|
92
|
+
flex-direction: column;
|
|
93
|
+
gap: var(--spacing-1);
|
|
94
|
+
min-width: 0;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
.crewlet-settings-table__label {
|
|
98
|
+
color: var(--color-text-primary);
|
|
99
|
+
line-height: var(--font-line-height-snug);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
/*
|
|
103
|
+
* THE KEY IS FOR THE READER WHO WILL GO AND CHANGE IT, so it is there and
|
|
104
|
+
* quiet: the monospace face at the smallest step, in the tertiary ink, and
|
|
105
|
+
* free to break anywhere, since a dotted path is one word to a line breaker.
|
|
106
|
+
*/
|
|
107
|
+
.crewlet-settings-table__key {
|
|
108
|
+
font-family: var(--font-family-mono);
|
|
109
|
+
font-size: var(--font-size-2xs);
|
|
110
|
+
line-height: var(--font-line-height-snug);
|
|
111
|
+
color: var(--color-text-tertiary);
|
|
112
|
+
overflow-wrap: anywhere;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
/* Tabular figures, so a column of numbers reads down its digits. */
|
|
116
|
+
.crewlet-settings-table__value {
|
|
117
|
+
min-width: 0;
|
|
118
|
+
color: var(--color-text-primary);
|
|
119
|
+
font-weight: var(--font-weight-medium);
|
|
120
|
+
font-variant-numeric: tabular-nums;
|
|
121
|
+
overflow-wrap: anywhere;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
.crewlet-settings-table__source {
|
|
125
|
+
display: inline-flex;
|
|
126
|
+
align-items: baseline;
|
|
127
|
+
gap: var(--spacing-2);
|
|
128
|
+
min-width: 0;
|
|
129
|
+
font-size: var(--font-size-xs);
|
|
130
|
+
color: var(--color-text-tertiary);
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
/* A value that differs from its default is the row a reader came to find. */
|
|
134
|
+
.crewlet-settings-table__source--changed {
|
|
135
|
+
color: var(--color-text-secondary);
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
.crewlet-settings-table__source--changed .crewlet-status-dot {
|
|
139
|
+
align-self: center;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
/*
|
|
143
|
+
* NARROW: the name takes the row's first line, and the value and its source
|
|
144
|
+
* share the second. Three columns at this width leave a name column a word
|
|
145
|
+
* wide, which wraps every name into a stack of single words.
|
|
146
|
+
*/
|
|
147
|
+
@container crewlet-settings-table (width < 32rem) {
|
|
148
|
+
.crewlet-settings-table__row {
|
|
149
|
+
grid-template-columns: minmax(0, 1fr) auto;
|
|
150
|
+
row-gap: var(--spacing-1);
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
.crewlet-settings-table__setting {
|
|
154
|
+
grid-column: 1 / -1;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
.crewlet-settings-table__source {
|
|
158
|
+
justify-self: end;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
export { ARTIFACT_ROLES, SHAREABLE_ROLES, ShareDialog, roleAtLeast } from '../chunk-
|
|
1
|
+
export { ARTIFACT_ROLES, SHAREABLE_ROLES, ShareDialog, roleAtLeast } from '../chunk-KNHUBHFX.js';
|
|
2
2
|
import '../chunk-XQZ6EWOE.js';
|
|
3
3
|
import '../chunk-W46LPU4R.js';
|
|
4
4
|
import '../chunk-STJ7QBC3.js';
|
|
5
5
|
import '../chunk-DTIW4CHZ.js';
|
|
6
|
-
import '../chunk-
|
|
6
|
+
import '../chunk-IAGYPTEJ.js';
|
|
7
7
|
import '../chunk-7KHM2FZH.js';
|
|
8
8
|
import '../chunk-SZZRIHGT.js';
|
|
9
9
|
import '../chunk-CI3VPIJN.js';
|
package/dist/SheetGrid/index.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
export { CellDisplay, CellEditor, CheckboxCell, DateCell, LongTextCell, MultiSelectCell, NumberCell, PersonCell, RatingCell, SelectCell, SheetCell, SheetGrid, StatusCell, TextCell, UrlCell } from '../chunk-
|
|
1
|
+
export { CellDisplay, CellEditor, CheckboxCell, DateCell, LongTextCell, MultiSelectCell, NumberCell, PersonCell, RatingCell, SelectCell, SheetCell, SheetGrid, StatusCell, TextCell, UrlCell } from '../chunk-JZPK4IXR.js';
|
|
2
2
|
import '../chunk-O2EGEONV.js';
|
|
3
3
|
import '../chunk-CENOOTAV.js';
|
|
4
4
|
import '../chunk-3BYIWOTV.js';
|
|
5
5
|
import '../chunk-I6POAB4V.js';
|
|
6
|
-
import '../chunk-
|
|
6
|
+
import '../chunk-KYIAFNU7.js';
|
|
7
7
|
import '../chunk-WIATRXEJ.js';
|
|
8
8
|
import '../chunk-66X5WDKE.js';
|
|
9
9
|
import '../chunk-LFSIKGRQ.js';
|
package/dist/StatCard/index.js
CHANGED
|
@@ -186,6 +186,12 @@
|
|
|
186
186
|
* tiles where only some carry one still stands at one height: its leading is
|
|
187
187
|
* set here and the reserve is exactly one line of it, where a reserve in `em`
|
|
188
188
|
* was a line shorter than the one a sub actually draws.
|
|
189
|
+
*
|
|
190
|
+
* IT WRAPS, balanced, rather than ending in an ellipsis. The line qualifies
|
|
191
|
+
* the number, so its end is the half that says what the number means, and
|
|
192
|
+
* `nowrap` cut it: "6 seats idle and waiting for ..." on a phone, a caption
|
|
193
|
+
* mid-clause at 1440. A grid of tiles (a StatGroup, or a caller's own) gives
|
|
194
|
+
* every tile in a row one height, so a second line costs no alignment.
|
|
189
195
|
*/
|
|
190
196
|
.crewlet-statcard__sub {
|
|
191
197
|
min-height: calc(1em * var(--font-line-height-body));
|
|
@@ -194,9 +200,8 @@
|
|
|
194
200
|
/* The quiet step, with the label. The line qualifies the number rather than
|
|
195
201
|
being a second one. */
|
|
196
202
|
color: var(--color-text-tertiary);
|
|
197
|
-
overflow:
|
|
198
|
-
text-
|
|
199
|
-
white-space: nowrap;
|
|
203
|
+
overflow-wrap: anywhere;
|
|
204
|
+
text-wrap: balance;
|
|
200
205
|
}
|
|
201
206
|
|
|
202
207
|
/*
|
|
@@ -4,13 +4,17 @@ export interface StatGroupProps extends HTMLAttributes<HTMLDivElement> {
|
|
|
4
4
|
* How many tiles a row holds. FIXED, and that is the whole point: the board
|
|
5
5
|
* this replaces reflowed from one column to three as tiles appeared and
|
|
6
6
|
* vanished, which moved every number on the page for a reason that had
|
|
7
|
-
* nothing to do with the numbers.
|
|
7
|
+
* nothing to do with the numbers. What changes it is the row's own width:
|
|
8
|
+
* four fold to two under 640px of row, and three stack one a row under
|
|
9
|
+
* 480px, so no row is left with a lone tile.
|
|
8
10
|
*/
|
|
9
11
|
columns?: 2 | 3 | 4;
|
|
10
12
|
/**
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
13
|
+
* The row gives up its own surface, hairline and corner and keeps only the
|
|
14
|
+
* hairlines between its tiles, so the host holding it does not draw a box
|
|
15
|
+
* inside a box. A row that is a `Card`'s content, or its body's, is flush
|
|
16
|
+
* without being told; this is for any other host (a widget's frame, a panel
|
|
17
|
+
* of an application's own).
|
|
14
18
|
*/
|
|
15
19
|
flush?: boolean | undefined;
|
|
16
20
|
children?: ReactNode;
|
|
@@ -19,8 +23,8 @@ export interface StatGroupProps extends HTMLAttributes<HTMLDivElement> {
|
|
|
19
23
|
* A row of stat tiles, as one card.
|
|
20
24
|
*
|
|
21
25
|
* The tiles inside it are `flush`, so the group draws the surface and the
|
|
22
|
-
* hairlines between them rather than four separate cards with gaps.
|
|
23
|
-
*
|
|
24
|
-
*
|
|
26
|
+
* hairlines between them rather than four separate cards with gaps. It folds
|
|
27
|
+
* by its OWN width rather than the window's (see StatGroup.css), so a row in
|
|
28
|
+
* a narrow column beside a rail folds where a row across a page does not.
|
|
25
29
|
*/
|
|
26
30
|
export declare function StatGroup({ columns, flush, className, children, ...rest }: StatGroupProps): import("react").JSX.Element;
|
package/dist/StatGroup/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { StatGroup } from '../chunk-
|
|
1
|
+
export { StatGroup } from '../chunk-OUD75UB2.js';
|
|
2
2
|
import '../chunk-ODEQTPFM.js';
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* A row of stat tiles.
|
|
3
|
+
*
|
|
4
|
+
* ITS COLUMN COUNT NEVER MOVES with its contents. A grid that reflowed as
|
|
5
|
+
* tiles appeared and vanished moved every number on the page for a reason that
|
|
6
|
+
* had nothing to do with the numbers, which is exactly what a reader watching
|
|
7
|
+
* a live board is trying not to have happen.
|
|
8
|
+
*
|
|
9
|
+
* IT FOLDS BY ITS OWN WIDTH, never the window's. The row used to drop to two
|
|
10
|
+
* columns under a 1024px viewport, but a row's width is whatever its column
|
|
11
|
+
* leaves it: beside the rail and a settings column at exactly 1024 a
|
|
12
|
+
* four-column row was 489px wide, its tiles about 120px each, and its figures
|
|
13
|
+
* were cut ("Not s…", "1.6 …"), while on a phone a three-column row folded to
|
|
14
|
+
* two and left its third tile alone on a row of its own. So the row is a size
|
|
15
|
+
* container, and the tiles take their place from the row's own width.
|
|
16
|
+
*
|
|
17
|
+
* TWELVE TRACKS, AND EACH TILE SPANS ITS SHARE. A container query styles what
|
|
18
|
+
* is inside the container, never the container itself, so the row cannot
|
|
19
|
+
* change its own column count by its own width. Its tiles can change how many
|
|
20
|
+
* of its twelve tracks they span, which is the same layout: twelve divides by
|
|
21
|
+
* every count a row takes (one, two, three and four a row).
|
|
22
|
+
*
|
|
23
|
+
* The row's width comes from where it stands, as a block's does: inline-size
|
|
24
|
+
* containment means its contents never widen it.
|
|
25
|
+
*/
|
|
26
|
+
|
|
27
|
+
.crewlet-stat-group {
|
|
28
|
+
container: crewlet-stat-group / inline-size;
|
|
29
|
+
display: grid;
|
|
30
|
+
grid-template-columns: repeat(12, minmax(0, 1fr));
|
|
31
|
+
/* The flush-panel recipe: the card's surface, its hairline and its 12px
|
|
32
|
+
corner, flat as every card is, and `overflow: hidden`, which is what lets
|
|
33
|
+
the tiles inside sit against the corners without their own hairlines
|
|
34
|
+
escaping past them. */
|
|
35
|
+
background: var(--color-surface-subtle);
|
|
36
|
+
border: 1px solid var(--color-border-default);
|
|
37
|
+
border-radius: var(--radius-lg);
|
|
38
|
+
overflow: hidden;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/*
|
|
42
|
+
* Inside another card: the card's surface and edge are the row's.
|
|
43
|
+
*
|
|
44
|
+
* A ROW STANDING IN A CARD IS FLUSH WHETHER OR NOT ITS CALLER SAID SO. Six
|
|
45
|
+
* settings pages wrapped a row in a card without `flush`, and each drew the
|
|
46
|
+
* row's own edge and 12px corner one pixel inside the card's: a box inside a
|
|
47
|
+
* box, and inside a padded body a third frame. A row that is a card's content,
|
|
48
|
+
* or its body's, is that card's row; `flush` is for a host that is not a
|
|
49
|
+
* Card (a widget's frame, a panel of an application's own).
|
|
50
|
+
*/
|
|
51
|
+
.crewlet-stat-group--flush,
|
|
52
|
+
.crewlet-card > .crewlet-stat-group,
|
|
53
|
+
.crewlet-card__body > .crewlet-stat-group {
|
|
54
|
+
background: transparent;
|
|
55
|
+
border: 0;
|
|
56
|
+
border-radius: var(--radius-none);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/*
|
|
60
|
+
* A tile inside the row brings no surface of its own, whether or not its
|
|
61
|
+
* caller remembered `flush`. The group draws one card and the hairlines
|
|
62
|
+
* inside it, so a tile that kept its own border and radius is a card inside
|
|
63
|
+
* a card: a box inside a box, which is what the reader sees.
|
|
64
|
+
*
|
|
65
|
+
* TWO CLASSES, NOT :where(). Written as `> :where(.crewlet-statcard)` this
|
|
66
|
+
* weighed exactly what the tile's own `.crewlet-statcard` rule weighs, so
|
|
67
|
+
* which one painted was settled by whichever stylesheet the bundler put
|
|
68
|
+
* last. It put the tile's last, and every tile in every group drew its own
|
|
69
|
+
* border, its own 12px corner and its own surface inside the group's.
|
|
70
|
+
* Naming both classes settles it by weight, which no import order can undo.
|
|
71
|
+
*/
|
|
72
|
+
.crewlet-stat-group > .crewlet-statcard {
|
|
73
|
+
background: transparent;
|
|
74
|
+
border: 0;
|
|
75
|
+
border-radius: var(--radius-none);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/*
|
|
79
|
+
* A ROW OF TILES SHARES ITS LINES. A tile stacks its label, its number and its
|
|
80
|
+
* sub in a column of its own, so a label that wrapped pushed its own number
|
|
81
|
+
* down and no other: beside a node's peek at 1440, "Behind on config" broke
|
|
82
|
+
* over two lines and its figure sat 18px below the other three. Inside a row
|
|
83
|
+
* each tile is a SUBGRID over the row's lines, one per line the tile renders
|
|
84
|
+
* (StatCard always renders three, an absent sub included), so a line is as
|
|
85
|
+
* tall as the tallest of it across the row and every figure starts together.
|
|
86
|
+
*
|
|
87
|
+
* A LABEL SITS ON ITS NUMBER: where one label in the row takes two lines, the
|
|
88
|
+
* others end at the foot of the label row, one gap above their figure, rather
|
|
89
|
+
* than floating at its top a line away from what they name.
|
|
90
|
+
*
|
|
91
|
+
* These were the engine dashboard's own rules over this component, held there
|
|
92
|
+
* with a note that the kit should carry them; they are the kit's now, with the
|
|
93
|
+
* sub's wrap (see StatCard), which the engine applied to every tile.
|
|
94
|
+
*/
|
|
95
|
+
.crewlet-stat-group > .crewlet-statcard {
|
|
96
|
+
display: grid;
|
|
97
|
+
grid-template-rows: subgrid;
|
|
98
|
+
grid-row: span 3;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
.crewlet-stat-group > .crewlet-statcard > .crewlet-statcard__label {
|
|
102
|
+
align-self: end;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
/*
|
|
106
|
+
* Each tile spans its share of the twelve tracks: the row's `columns`, set on
|
|
107
|
+
* it as `--crewlet-stat-group-cols`, a row.
|
|
108
|
+
*/
|
|
109
|
+
.crewlet-stat-group > * {
|
|
110
|
+
grid-column: span calc(12 / var(--crewlet-stat-group-cols, 4));
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
/*
|
|
114
|
+
* The hairlines between tiles: one before every tile that does not start a
|
|
115
|
+
* row, and one above every tile that is not on the first.
|
|
116
|
+
*
|
|
117
|
+
* NAMED TWICE, ON PURPOSE. The rule above clears the tile's own border and
|
|
118
|
+
* weighs two classes, so a one-class selector here loses to it and the row
|
|
119
|
+
* of numbers runs together with nothing between the columns. The first
|
|
120
|
+
* selector of each pair matches whatever a caller puts in the row; the second
|
|
121
|
+
* weighs at least as much as the rule it has to beat, and sits after it.
|
|
122
|
+
*/
|
|
123
|
+
.crewlet-stat-group > * + *,
|
|
124
|
+
.crewlet-stat-group > .crewlet-statcard + .crewlet-statcard {
|
|
125
|
+
border-left: 1px solid var(--color-border-default);
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
.crewlet-stat-group[data-columns='2'] > :nth-child(2n + 1),
|
|
129
|
+
.crewlet-stat-group[data-columns='2'] > .crewlet-statcard:nth-child(2n + 1),
|
|
130
|
+
.crewlet-stat-group[data-columns='3'] > :nth-child(3n + 1),
|
|
131
|
+
.crewlet-stat-group[data-columns='3'] > .crewlet-statcard:nth-child(3n + 1),
|
|
132
|
+
.crewlet-stat-group[data-columns='4'] > :nth-child(4n + 1),
|
|
133
|
+
.crewlet-stat-group[data-columns='4'] > .crewlet-statcard:nth-child(4n + 1) {
|
|
134
|
+
border-left: 0;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
.crewlet-stat-group[data-columns='2'] > :nth-child(n + 3),
|
|
138
|
+
.crewlet-stat-group[data-columns='2'] > .crewlet-statcard:nth-child(n + 3),
|
|
139
|
+
.crewlet-stat-group[data-columns='3'] > :nth-child(n + 4),
|
|
140
|
+
.crewlet-stat-group[data-columns='3'] > .crewlet-statcard:nth-child(n + 4),
|
|
141
|
+
.crewlet-stat-group[data-columns='4'] > :nth-child(n + 5),
|
|
142
|
+
.crewlet-stat-group[data-columns='4'] > .crewlet-statcard:nth-child(n + 5) {
|
|
143
|
+
border-top: 1px solid var(--color-border-default);
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
/*
|
|
147
|
+
* FOUR A ROW FOLD TO TWO under 640px of row (the phone breakpoint's number):
|
|
148
|
+
* four tiles of 160px is the narrowest at which a six-character figure and a
|
|
149
|
+
* two-word label still stand on one line each. Two by two keeps every row
|
|
150
|
+
* full.
|
|
151
|
+
*/
|
|
152
|
+
@container crewlet-stat-group (width < 640px) {
|
|
153
|
+
.crewlet-stat-group[data-columns='4'] > *,
|
|
154
|
+
.crewlet-stat-group[data-columns='4'] > .crewlet-statcard {
|
|
155
|
+
grid-column: span 6;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
.crewlet-stat-group[data-columns='4'] > :nth-child(odd),
|
|
159
|
+
.crewlet-stat-group[data-columns='4'] > .crewlet-statcard:nth-child(odd) {
|
|
160
|
+
border-left: 0;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
.crewlet-stat-group[data-columns='4'] > :nth-child(even),
|
|
164
|
+
.crewlet-stat-group[data-columns='4'] > .crewlet-statcard:nth-child(even) {
|
|
165
|
+
border-left: 1px solid var(--color-border-default);
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
.crewlet-stat-group[data-columns='4'] > :nth-child(n + 3),
|
|
169
|
+
.crewlet-stat-group[data-columns='4'] > .crewlet-statcard:nth-child(n + 3) {
|
|
170
|
+
border-top: 1px solid var(--color-border-default);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
/*
|
|
175
|
+
* THREE A ROW STACK under 480px of row (the small breakpoint's number), at the
|
|
176
|
+
* same 160px a tile. Folded to two, three tiles stood two and one, the last
|
|
177
|
+
* alone at double width and a different height, which read as a tile that had
|
|
178
|
+
* failed to load; one a row leaves no row short.
|
|
179
|
+
*/
|
|
180
|
+
@container crewlet-stat-group (width < 480px) {
|
|
181
|
+
.crewlet-stat-group[data-columns='3'] > *,
|
|
182
|
+
.crewlet-stat-group[data-columns='3'] > .crewlet-statcard {
|
|
183
|
+
grid-column: span 12;
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
.crewlet-stat-group[data-columns='3'] > *,
|
|
187
|
+
.crewlet-stat-group[data-columns='3'] > .crewlet-statcard + .crewlet-statcard {
|
|
188
|
+
border-left: 0;
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
.crewlet-stat-group[data-columns='3'] > :nth-child(n + 2),
|
|
192
|
+
.crewlet-stat-group[data-columns='3'] > .crewlet-statcard:nth-child(n + 2) {
|
|
193
|
+
border-top: 1px solid var(--color-border-default);
|
|
194
|
+
}
|
|
195
|
+
}
|
package/dist/Switcher/index.js
CHANGED
package/dist/TableCells/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export { TABLE_TAGS_CELL_LABELS, TableDateCell, TableEntityCell, TableKeyCell, TableNumberCell, TableStatusCell, TableTagsCell, TableTextCell } from '../chunk-
|
|
1
|
+
export { TABLE_TAGS_CELL_LABELS, TableDateCell, TableEntityCell, TableKeyCell, TableNumberCell, TableStatusCell, TableTagsCell, TableTextCell } from '../chunk-4BJK7FE5.js';
|
|
2
2
|
import '../chunk-FBSEJO2C.js';
|
|
3
|
-
import '../chunk-
|
|
3
|
+
import '../chunk-KYIAFNU7.js';
|
|
4
4
|
import '../chunk-WIATRXEJ.js';
|
|
5
5
|
import '../chunk-3CZ7XAVY.js';
|
|
6
6
|
import '../chunk-EUCC37WY.js';
|
package/dist/Tag/index.js
CHANGED
|
@@ -277,12 +277,22 @@
|
|
|
277
277
|
--crewlet-tag-line: var(--color-border-strong-hover);
|
|
278
278
|
}
|
|
279
279
|
|
|
280
|
-
/*
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
280
|
+
/*
|
|
281
|
+
* The neutral outline: the neutral pill's own boundary with no fill, and the
|
|
282
|
+
* tertiary ink, which is a quieter register than the tinted outlines keep. It
|
|
283
|
+
* is the appearance for a value that is not a state at all, so it says less
|
|
284
|
+
* than its neighbours on purpose, by its ink and its empty ground.
|
|
285
|
+
*
|
|
286
|
+
* NOT BY A FAINTER EDGE. It used to take the plain hairline, the line that
|
|
287
|
+
* finds a card, and on the card it so often stands on that line measured
|
|
288
|
+
* 1.07:1 in dark: Limits' "Off" beside a filled "Default", an audit row's
|
|
289
|
+
* machine and open, a tool's "builtin", all read as loose words rather than
|
|
290
|
+
* as pills. The strong step is the edge the neutral soft pill already draws
|
|
291
|
+
* (1.49:1 dark, 1.52:1 light on the card), so the two neutral pills differ by
|
|
292
|
+
* their fill alone and both read as pills.
|
|
293
|
+
*/
|
|
284
294
|
.crewlet-tag--neutral.crewlet-tag--outline {
|
|
285
|
-
border-color: var(--color-border-
|
|
295
|
+
border-color: var(--color-border-strong);
|
|
286
296
|
--crewlet-tag-ink: var(--color-text-tertiary);
|
|
287
297
|
}
|
|
288
298
|
|
package/dist/TagsInput/index.js
CHANGED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { HTMLAttributes, ReactNode } from 'react';
|
|
2
|
+
/** The most tracks a grid draws; it folds to fewer by its own width. */
|
|
3
|
+
export type TileGridColumns = 2 | 3 | 4;
|
|
4
|
+
export interface TileGridProps extends HTMLAttributes<HTMLElement> {
|
|
5
|
+
/**
|
|
6
|
+
* The tracks at full width. `3` (the default) folds straight to one, never
|
|
7
|
+
* to two, so a set of three or six tiles never leaves a lone tile on a row
|
|
8
|
+
* of its own; `4` folds to two and then one; `2` folds to one.
|
|
9
|
+
*/
|
|
10
|
+
columns?: TileGridColumns | undefined;
|
|
11
|
+
/** The element the tiles stand in: a `ul` for tiles that are `li`s. */
|
|
12
|
+
as?: 'div' | 'ul' | 'ol' | undefined;
|
|
13
|
+
children?: ReactNode;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Tiles on a fixed number of tracks that folds by the grid's own width.
|
|
17
|
+
*
|
|
18
|
+
* GRIDS ON ONE PAGE LINE UP. Two sections of tiles (a catalogue's built-in
|
|
19
|
+
* services over its third-party apps) each laid out on a track count of its
|
|
20
|
+
* own put their tile edges in different places, and an `auto-fill` grid left
|
|
21
|
+
* a hole at the end of a short section. A tile grid's tracks are a count, the
|
|
22
|
+
* same in every grid given the same count and the same width, so every tile
|
|
23
|
+
* edge on the page lines up.
|
|
24
|
+
*
|
|
25
|
+
* IT FOLDS BY ITS OWN WIDTH, never the window's: a grid beside a rail and a
|
|
26
|
+
* settings column is as narrow as a phone's at a wide window. The outer
|
|
27
|
+
* element is the size container, and the track list inside it is the grid,
|
|
28
|
+
* because a container query styles what is inside the container and never
|
|
29
|
+
* the container itself. `className` goes on that outer box, where a page
|
|
30
|
+
* places the grid; every other attribute (an `id`, an `aria-label`) goes on
|
|
31
|
+
* the track, which is the list a `ul` grid is.
|
|
32
|
+
*/
|
|
33
|
+
export declare function TileGrid({ columns, as: Track, className, children, ...rest }: TileGridProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* TileGrid: tiles on a fixed track count that folds by the grid's own width.
|
|
3
|
+
*
|
|
4
|
+
* Equal tracks, so two grids of one count and one width put every tile edge
|
|
5
|
+
* on the same line; the tiles in a row stretch to the tallest of them. The
|
|
6
|
+
* folds are steps of the grid's own width (see the component): three tracks
|
|
7
|
+
* go straight to one, so a set of three never strands a tile.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
.crewlet-tile-grid {
|
|
11
|
+
container: crewlet-tile-grid / inline-size;
|
|
12
|
+
min-width: 0;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
.crewlet-tile-grid__track {
|
|
16
|
+
--crewlet-tile-grid-tracks: 3;
|
|
17
|
+
|
|
18
|
+
display: grid;
|
|
19
|
+
grid-template-columns: repeat(var(--crewlet-tile-grid-tracks), minmax(0, 1fr));
|
|
20
|
+
gap: var(--spacing-3);
|
|
21
|
+
margin: 0;
|
|
22
|
+
padding: 0;
|
|
23
|
+
list-style: none;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
.crewlet-tile-grid[data-columns='2'] > .crewlet-tile-grid__track {
|
|
27
|
+
--crewlet-tile-grid-tracks: 2;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
.crewlet-tile-grid[data-columns='4'] > .crewlet-tile-grid__track {
|
|
31
|
+
--crewlet-tile-grid-tracks: 4;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/* Four tracks fold to two where a tile would be narrower than its content. */
|
|
35
|
+
@container crewlet-tile-grid (width < 56rem) {
|
|
36
|
+
.crewlet-tile-grid[data-columns='4'] > .crewlet-tile-grid__track {
|
|
37
|
+
--crewlet-tile-grid-tracks: 2;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/* Three fold to one: two up would leave the third tile alone on a row. */
|
|
42
|
+
@container crewlet-tile-grid (width < 40rem) {
|
|
43
|
+
.crewlet-tile-grid[data-columns='3'] > .crewlet-tile-grid__track {
|
|
44
|
+
--crewlet-tile-grid-tracks: 1;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
@container crewlet-tile-grid (width < 28rem) {
|
|
49
|
+
.crewlet-tile-grid > .crewlet-tile-grid__track {
|
|
50
|
+
--crewlet-tile-grid-tracks: 1;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Timeline } from './chunk-AUQPBL4O.js';
|
|
2
2
|
import { Section } from './chunk-3TFDQLW3.js';
|
|
3
|
-
import { Disclosure } from './chunk-
|
|
3
|
+
import { Disclosure } from './chunk-OGXHZHRX.js';
|
|
4
4
|
import { Composer } from './chunk-ISA2O2BK.js';
|
|
5
5
|
import { ArtifactPanel } from './chunk-Y5BD4MTE.js';
|
|
6
6
|
import { Button } from './chunk-OG6CL3EB.js';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Link } from './chunk-FBSEJO2C.js';
|
|
2
|
-
import { Tag } from './chunk-
|
|
2
|
+
import { Tag } from './chunk-KYIAFNU7.js';
|
|
3
3
|
import { RelativeTime } from './chunk-3CZ7XAVY.js';
|
|
4
4
|
import { EmptyValue } from './chunk-EUCC37WY.js';
|
|
5
5
|
import { Avatar } from './chunk-PZKHBB7D.js';
|