@crewlethq/ui 0.38.0 → 0.40.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 +79 -3
- package/dist/AgentHandoffPanel/index.js +3 -3
- package/dist/AppShell/AppShell.d.ts +13 -2
- package/dist/AppShell/index.js +1 -1
- package/dist/{AppShell-NDU4XMGF.css → AppShell-NPSWZ3XW.css} +45 -4
- package/dist/ArtifactBar/index.js +6 -5
- package/dist/{ArtifactBar-FWPBBKQ5.css → ArtifactBar-6PGWGKN2.css} +13 -1
- package/dist/ArtifactCard/index.js +2 -2
- package/dist/AuthLayout/index.js +2 -2
- package/dist/AvatarPicker/index.js +10 -6
- package/dist/Card/Card.d.ts +14 -2
- package/dist/Card/index.js +1 -1
- package/dist/{Card-G2ZGT5Z6.css → Card-JR2UPQH7.css} +20 -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-XL4XLFUH.css +135 -0
- package/dist/CharacterPicker/index.js +2 -2
- package/dist/Charts/Histogram.d.ts +71 -0
- package/dist/Charts/index.d.ts +2 -0
- package/dist/Charts/index.js +1 -1
- package/dist/{Charts-MBJG72BS.css → Charts-TZ744HT6.css} +118 -0
- package/dist/CodeBlock/index.js +1 -1
- package/dist/{CodeBlock-GYNJ2HI6.css → CodeBlock-N5ETJF24.css} +13 -0
- package/dist/CommandPalette/index.js +3 -3
- package/dist/CommentThread/index.js +3 -3
- package/dist/Composer/index.js +2 -2
- package/dist/DataGrid/DataGrid.d.ts +267 -0
- package/dist/DataGrid/index.d.ts +3 -0
- package/dist/DataGrid/index.js +7 -0
- package/dist/DataGrid-AQKPJD7W.css +482 -0
- package/dist/DataTable/index.js +2 -2
- package/dist/DataView/index.js +4 -4
- package/dist/DatasetSource/DatasetSource.d.ts +7 -1
- package/dist/DatasetSource/index.js +1 -1
- package/dist/HuePicker/index.js +11 -4
- package/dist/LayersList/index.js +2 -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 +2 -2
- package/dist/LockedLabel/LockedLabel.d.ts +34 -0
- package/dist/LockedLabel/index.d.ts +3 -0
- package/dist/LockedLabel/index.js +3 -0
- package/dist/LockedLabel-VQEGEB7G.css +16 -0
- package/dist/MarkdownEditor/index.js +8 -5
- package/dist/MergeConflicts/index.js +11 -5
- 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/PageNote/PageNote.d.ts +14 -0
- package/dist/PageNote/index.d.ts +3 -0
- package/dist/PageNote/index.js +2 -0
- package/dist/PageNote-RHLXH3ML.css +12 -0
- package/dist/PropertyList/PropertyList.d.ts +88 -0
- package/dist/PropertyList/index.d.ts +3 -0
- package/dist/PropertyList/index.js +7 -0
- package/dist/PropertyList-SCYM66LL.css +96 -0
- package/dist/RelatedRow/RelatedRow.d.ts +27 -0
- package/dist/RelatedRow/index.d.ts +3 -0
- package/dist/RelatedRow/index.js +9 -0
- package/dist/RelatedRow-2FVS6QQA.css +6 -0
- package/dist/RichEditor/index.js +1 -1
- package/dist/SectionFrame/SectionFrame.d.ts +76 -0
- package/dist/SectionFrame/index.d.ts +3 -0
- package/dist/SectionFrame/index.js +7 -0
- package/dist/SectionFrame-M62UUVFQ.css +164 -0
- package/dist/SegmentedControl/index.js +11 -4
- 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/SheetColumnEditor/index.js +7 -6
- package/dist/SheetGrid/index.js +3 -3
- package/dist/SidebarNav/SidebarNav.d.ts +35 -2
- package/dist/SidebarNav/index.js +2 -1
- package/dist/{SidebarNav-7SGUZYKK.css → SidebarNav-YI74SPDC.css} +10 -0
- package/dist/StatCard/index.js +1 -1
- package/dist/{StatCard-4T7TMWMN.css → StatCard-HAA3F5GX.css} +8 -3
- package/dist/StatGroup/index.js +1 -1
- package/dist/{StatGroup-DOFHX5QJ.css → StatGroup-ZMW7VQWP.css} +27 -0
- package/dist/Switcher/index.js +2 -2
- package/dist/Tabs/Tabs.d.ts +55 -1
- package/dist/Tabs/fold.d.ts +54 -0
- package/dist/Tabs/index.d.ts +1 -1
- package/dist/Tabs/index.js +9 -2
- package/dist/Tabs/roving.d.ts +3 -3
- package/dist/{Tabs-WIF7457H.css → Tabs-S7F4RWAN.css} +77 -0
- package/dist/TagsInput/index.js +1 -1
- package/dist/ThemeGallery/index.js +2 -2
- package/dist/ThemeSwitcher/index.js +12 -5
- 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/VersionCompare/index.js +12 -5
- package/dist/{chunk-B5J23C73.js → chunk-2PEXZ7L4.js} +1 -1
- package/dist/{chunk-S27UBCVX.js → chunk-2VOHUGUA.js} +2 -2
- package/dist/{chunk-XBURIXHO.js → chunk-3TXY3PJZ.js} +1 -1
- package/dist/{chunk-2QZ2VPHR.js → chunk-4OK4DX3V.js} +2 -2
- package/dist/chunk-4RKTZSEW.js +64 -0
- package/dist/{chunk-ECGGQX2H.js → chunk-A44YHLCQ.js} +2 -2
- package/dist/{chunk-F4LPQA4E.js → chunk-BA32AVKS.js} +1 -1
- package/dist/chunk-CV4NES3P.js +9 -0
- package/dist/{chunk-PPHTIKZO.js → chunk-E4BOVKNJ.js} +1 -1
- package/dist/{chunk-W7PAIVAP.js → chunk-E7QLG3PG.js} +30 -9
- package/dist/{chunk-RKKO7QHH.js → chunk-EGMQURBR.js} +5 -4
- package/dist/{chunk-GMW4ZHST.js → chunk-EX22Q5SH.js} +2 -2
- package/dist/{chunk-A23KDROH.js → chunk-FXBGEANQ.js} +1 -1
- package/dist/{chunk-4L2BWSHR.js → chunk-GFYQKMQZ.js} +2 -2
- package/dist/{chunk-HG5VF3TZ.js → chunk-HMVQQEHW.js} +91 -2
- package/dist/{chunk-IPWU6ERC.js → chunk-HQJ24WPM.js} +4 -2
- package/dist/{chunk-SVGARBDY.js → chunk-IAGYPTEJ.js} +2 -2
- package/dist/{chunk-ZK3VYY7L.js → chunk-INHXF2CL.js} +24 -11
- package/dist/chunk-INVSUFJK.js +71 -0
- package/dist/{chunk-6NNY5WBF.js → chunk-JKAGN4V4.js} +1 -1
- package/dist/{chunk-4LRAJXHL.js → chunk-JSWOXRRE.js} +1 -1
- package/dist/{chunk-DYB66CNM.js → chunk-KKNHMXTE.js} +6 -3
- package/dist/{chunk-UWRBD2YO.js → chunk-KNHUBHFX.js} +1 -1
- package/dist/{chunk-ZMDYQ2HH.js → chunk-KWWP3D7M.js} +1 -1
- package/dist/{chunk-46RL3E54.js → chunk-M6NQ4XGK.js} +1 -1
- package/dist/{chunk-PT6WKXKW.js → chunk-MMPKN7WV.js} +1 -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-OHGH7O6T.js +19 -0
- package/dist/{chunk-4ISUIS6F.js → chunk-OOC7Q67K.js} +1 -1
- package/dist/{chunk-BT5H2THK.js → chunk-OUD75UB2.js} +1 -1
- package/dist/chunk-PCT47E7O.js +48 -0
- package/dist/{chunk-X3UYTAOG.js → chunk-PFZOFAQ6.js} +1 -1
- package/dist/{chunk-YQG4PZGC.js → chunk-QRKT4XTT.js} +2 -2
- package/dist/{chunk-BJI3RFXG.js → chunk-S4DREXGM.js} +1 -1
- package/dist/{chunk-GDDE4UM7.js → chunk-SEC2GR2V.js} +1 -1
- package/dist/{chunk-YEVG2X5R.js → chunk-SNQRGH4A.js} +1 -1
- package/dist/chunk-T6MXORP5.js +116 -0
- package/dist/{chunk-OTCXRJ7D.js → chunk-U2XAJONO.js} +1 -1
- package/dist/{chunk-3ZUINC7C.js → chunk-WYYCPV46.js} +6 -1
- package/dist/chunk-X4IXXLWM.js +306 -0
- package/dist/{chunk-PAQXOP2M.js → chunk-XGBUUQDU.js} +2 -2
- package/dist/chunk-XIDD7PJO.js +416 -0
- package/dist/{chunk-XO7PUL4F.js → chunk-YPTTSJPM.js} +1 -1
- package/dist/chunk-ZUTUI27P.js +21 -0
- package/dist/generated/index.d.ts +9 -0
- package/dist/generated/index.js +83 -74
- package/dist/index.js +83 -74
- package/dist/styles.css +1627 -104
- package/package.json +3 -3
- package/dist/chunk-7SDUKCNW.js +0 -141
- package/dist/{Editor-QV4JP242.js → Editor-IRDQ3JDZ.js} +1 -1
- package/dist/{chunk-JZPK4IXR.js → chunk-3PR65I3H.js} +2 -2
- package/dist/{chunk-ETVEGR2Y.js → chunk-ISA2O2BK.js} +1 -1
- /package/dist/{chunk-4QQ3MND5.js → chunk-S3QTFUJX.js} +0 -0
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* SectionFrame: a column of sections beside the screen, and the one-row
|
|
3
|
+
* picker it folds to.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
/* THE FRAME TAKES THE CONTENT COLUMN'S PADDING BACK and gives it to the body,
|
|
7
|
+
so the column is flush with the sheet and the section keeps the inset. */
|
|
8
|
+
.crewlet-app-shell__content:has(> .crewlet-section-frame) {
|
|
9
|
+
min-height: 100%;
|
|
10
|
+
padding: 0;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
.crewlet-section-frame {
|
|
14
|
+
display: grid;
|
|
15
|
+
flex: 1 1 auto;
|
|
16
|
+
grid-template-columns: var(--crewlet-section-frame-column) minmax(0, 1fr);
|
|
17
|
+
min-height: 100%;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/*
|
|
21
|
+
* AS TALL AS THE VIEW, NEVER AS THE GRID. A sticky box moves only inside its
|
|
22
|
+
* grid area, which the section beside it makes as tall as its content; sized
|
|
23
|
+
* against that area the column was exactly as tall as the section, had
|
|
24
|
+
* nowhere to stick, and a wheel over a long section carried the list off the
|
|
25
|
+
* top. At the view's height (`100cqb`: the shell's scroller is a size
|
|
26
|
+
* container) it sticks for the whole scroll and a long list scrolls in itself.
|
|
27
|
+
*
|
|
28
|
+
* IT KEEPS THE WHEEL AT ITS ENDS. A box whose bottom is below the fold traps
|
|
29
|
+
* the wheel; this one is exactly the view and always all on screen, so what
|
|
30
|
+
* chaining would do is move the section beside it at the list's end, which
|
|
31
|
+
* is not what the pointer is over.
|
|
32
|
+
*/
|
|
33
|
+
.crewlet-section-frame__nav {
|
|
34
|
+
position: sticky;
|
|
35
|
+
top: 0;
|
|
36
|
+
align-self: start;
|
|
37
|
+
height: 100cqb;
|
|
38
|
+
overflow-y: auto;
|
|
39
|
+
overscroll-behavior: contain;
|
|
40
|
+
padding: var(--spacing-4) 0;
|
|
41
|
+
border-right: 1px solid var(--color-border-default);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
.crewlet-section-frame__body {
|
|
45
|
+
display: flex;
|
|
46
|
+
flex-direction: column;
|
|
47
|
+
gap: var(--spacing-5);
|
|
48
|
+
min-width: 0;
|
|
49
|
+
padding: var(--spacing-5) var(--spacing-5) var(--spacing-10);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/* BESIDE THE SECTION there is room for the whole list: no toggle, and the
|
|
53
|
+
list is always drawn. */
|
|
54
|
+
.crewlet-section-frame__toggle {
|
|
55
|
+
display: none;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/*
|
|
59
|
+
* FOLDED: one pane, the picker above the section. The picker's row is its
|
|
60
|
+
* own height and the section takes the rest: two `auto` rows split a short
|
|
61
|
+
* section's spare height and opened a band of nothing between the picker
|
|
62
|
+
* and the section it names.
|
|
63
|
+
*/
|
|
64
|
+
.crewlet-section-frame[data-folded] {
|
|
65
|
+
grid-template-columns: minmax(0, 1fr);
|
|
66
|
+
grid-template-rows: auto 1fr;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/* IN THE FLOW, as tall as it is, on the section's own gutter: the list it
|
|
70
|
+
unfolds is part of the page rather than a pane of its own. */
|
|
71
|
+
.crewlet-section-frame[data-folded] > .crewlet-section-frame__nav {
|
|
72
|
+
position: static;
|
|
73
|
+
height: auto;
|
|
74
|
+
overflow-y: visible;
|
|
75
|
+
padding: var(--spacing-2) var(--spacing-5);
|
|
76
|
+
border-right: none;
|
|
77
|
+
border-bottom: 1px solid var(--color-border-default);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
/* ONE ROW NAMING WHERE THE READER IS, which unfolds the list. Its glyph and
|
|
81
|
+
name stand over the glyphs and names of the rows: the rows' own inset,
|
|
82
|
+
less the toggle's border. */
|
|
83
|
+
.crewlet-section-frame[data-folded] .crewlet-section-frame__toggle {
|
|
84
|
+
display: flex;
|
|
85
|
+
align-items: center;
|
|
86
|
+
gap: var(--spacing-2);
|
|
87
|
+
width: 100%;
|
|
88
|
+
min-height: var(--size-target-min);
|
|
89
|
+
padding: 0 calc(var(--size-nav-row-pad) - 1px);
|
|
90
|
+
border: 1px solid var(--color-border-default);
|
|
91
|
+
border-radius: var(--radius-sm);
|
|
92
|
+
background: var(--color-surface-elevated);
|
|
93
|
+
color: var(--color-text-primary);
|
|
94
|
+
font: inherit;
|
|
95
|
+
font-weight: var(--font-weight-medium);
|
|
96
|
+
text-align: left;
|
|
97
|
+
cursor: pointer;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
.crewlet-section-frame[data-folded] .crewlet-section-frame__toggle:hover {
|
|
101
|
+
background: var(--color-surface-hover);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
/* INSIDE ITS OWN EDGE, as every control that draws one rings. */
|
|
105
|
+
.crewlet-section-frame__toggle:focus-visible {
|
|
106
|
+
outline: 2px solid var(--color-focus);
|
|
107
|
+
outline-offset: var(--size-focus-ring-inset-offset);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
.crewlet-section-frame__toggle-icon {
|
|
111
|
+
display: inline-flex;
|
|
112
|
+
flex: none;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
.crewlet-section-frame__toggle-name {
|
|
116
|
+
flex: 1 1 auto;
|
|
117
|
+
min-width: 0;
|
|
118
|
+
overflow: hidden;
|
|
119
|
+
text-overflow: ellipsis;
|
|
120
|
+
white-space: nowrap;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
/* "Section ·" BEFORE THE NAME, in the quiet ink, so the row reads as a
|
|
124
|
+
control holding the other sections rather than as the page's title. */
|
|
125
|
+
.crewlet-section-frame__toggle-prefix {
|
|
126
|
+
color: var(--color-text-tertiary);
|
|
127
|
+
font-weight: var(--font-weight-regular);
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
.crewlet-section-frame__chevron {
|
|
131
|
+
flex: none;
|
|
132
|
+
color: var(--color-text-tertiary);
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
.crewlet-section-frame__nav[data-open] .crewlet-section-frame__chevron {
|
|
136
|
+
transform: rotate(180deg);
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
.crewlet-section-frame[data-folded] .crewlet-section-frame__nav:not([data-open]) .crewlet-section-frame__list {
|
|
140
|
+
display: none;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
.crewlet-section-frame[data-folded] .crewlet-section-frame__nav[data-open] .crewlet-section-frame__list {
|
|
144
|
+
padding-top: var(--spacing-2);
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
/* THE LIST TAKES NO GUTTER OF ITS OWN inside the folded picker, which is
|
|
148
|
+
inset already: with the rail's gutter on top, its glyphs sat 11px right of
|
|
149
|
+
the toggle's. */
|
|
150
|
+
.crewlet-section-frame[data-folded] .crewlet-section-frame__list > .crewlet-sidebar-nav {
|
|
151
|
+
padding-inline: 0;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
/* A PHONE'S ONE GUTTER: the section and the picker start where every other
|
|
155
|
+
screen's content does. */
|
|
156
|
+
@media (width < 640px) {
|
|
157
|
+
.crewlet-section-frame__body {
|
|
158
|
+
padding: var(--spacing-4) var(--spacing-4) var(--spacing-9);
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
.crewlet-section-frame[data-folded] > .crewlet-section-frame__nav {
|
|
162
|
+
padding-inline: var(--spacing-4);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
@@ -1,8 +1,15 @@
|
|
|
1
|
-
import '../chunk-
|
|
2
|
-
export { SegmentedControl } from '../chunk-
|
|
3
|
-
import '../chunk-
|
|
4
|
-
import '../chunk-
|
|
1
|
+
import '../chunk-OOC7Q67K.js';
|
|
2
|
+
export { SegmentedControl } from '../chunk-4OK4DX3V.js';
|
|
3
|
+
import '../chunk-X4IXXLWM.js';
|
|
4
|
+
import '../chunk-WIATRXEJ.js';
|
|
5
|
+
import '../chunk-EGMQURBR.js';
|
|
5
6
|
import '../chunk-BHHIIK3M.js';
|
|
7
|
+
import '../chunk-D6FEHY5G.js';
|
|
8
|
+
import '../chunk-OMV5W53A.js';
|
|
9
|
+
import '../chunk-H5XTJ7GJ.js';
|
|
6
10
|
import '../chunk-2YTOOH3A.js';
|
|
11
|
+
import '../chunk-OG6CL3EB.js';
|
|
12
|
+
import '../chunk-4FQT6ZAY.js';
|
|
13
|
+
import '../chunk-NUZHC6MM.js';
|
|
7
14
|
import '../chunk-BZFWDIV6.js';
|
|
8
15
|
import '../chunk-ODEQTPFM.js';
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import type { HTMLAttributes, ReactNode } from 'react';
|
|
2
|
+
/** The words the three columns are named by, for assistive technology and the optional header row. */
|
|
3
|
+
export interface SettingsTableColumns {
|
|
4
|
+
setting?: string | undefined;
|
|
5
|
+
value?: string | undefined;
|
|
6
|
+
source?: string | undefined;
|
|
7
|
+
}
|
|
8
|
+
export interface SettingsTableProps extends HTMLAttributes<HTMLDivElement> {
|
|
9
|
+
/**
|
|
10
|
+
* Draws the column names as a header row. Off by default: a page that
|
|
11
|
+
* stacks one table per group (a card each) would repeat the same three
|
|
12
|
+
* words over every card. The names are always exposed to assistive
|
|
13
|
+
* technology, drawn or not.
|
|
14
|
+
*/
|
|
15
|
+
header?: boolean | undefined;
|
|
16
|
+
/** The column names. Defaults to Setting, Value and Source. */
|
|
17
|
+
columns?: SettingsTableColumns | undefined;
|
|
18
|
+
children?: ReactNode;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* A read-only table of settings: what each is called, the value in force and
|
|
22
|
+
* where that value comes from.
|
|
23
|
+
*
|
|
24
|
+
* ONE COLUMN GRID FOR EVERY TABLE ON A PAGE. The tracks are fractions of the
|
|
25
|
+
* table's own width (`--crewlet-settings-table-columns`), never the width of
|
|
26
|
+
* the longest label, so a page that stacks a table per group in cards of one
|
|
27
|
+
* width puts every value and every source on one vertical line down the page.
|
|
28
|
+
* A term column sized to its own longest term started the values at a
|
|
29
|
+
* different place in every card, and a fixed one left them floating a third
|
|
30
|
+
* of the way across a wide card with the rest of the row empty.
|
|
31
|
+
*
|
|
32
|
+
* THE SOURCE IS QUIET UNLESS IT IS NEWS. A value that is the default says so
|
|
33
|
+
* in the tertiary ink, as a word rather than a tag: a tag on every row is
|
|
34
|
+
* noise that teaches a reader to skip the column. A value that differs from
|
|
35
|
+
* its default (`changed`) carries a mark before its source, which is the one
|
|
36
|
+
* row in the table a reader scanning it came to find.
|
|
37
|
+
*
|
|
38
|
+
* A TABLE, BECAUSE IT IS ONE. Every row carries the same three fields, so it
|
|
39
|
+
* is announced as a table with its column names, and each setting's name is
|
|
40
|
+
* the row's header. The roles are written out rather than taken from table
|
|
41
|
+
* elements because the row folds into two lines on a narrow table, and a
|
|
42
|
+
* table element that changes its display loses its semantics in some
|
|
43
|
+
* browsers.
|
|
44
|
+
*/
|
|
45
|
+
export declare function SettingsTable({ header, columns, className, children, ...rest }: SettingsTableProps): import("react").JSX.Element;
|
|
46
|
+
export declare namespace SettingsTable {
|
|
47
|
+
var Row: typeof SettingsTableRow;
|
|
48
|
+
}
|
|
49
|
+
export interface SettingsTableRowProps extends HTMLAttributes<HTMLDivElement> {
|
|
50
|
+
/** What the setting is called, in a reader's words. */
|
|
51
|
+
label: ReactNode;
|
|
52
|
+
/**
|
|
53
|
+
* The setting's address in the document it is written in
|
|
54
|
+
* (`turn_engine.max_iterations`), drawn quietly under its name in the
|
|
55
|
+
* monospace face. For the reader who will go and change it there.
|
|
56
|
+
*/
|
|
57
|
+
settingKey?: string | undefined;
|
|
58
|
+
/** The value in force, in its own unit. Drawn in tabular figures. */
|
|
59
|
+
children?: ReactNode;
|
|
60
|
+
/** Where the value comes from: "Default", "Set in the company document". */
|
|
61
|
+
source?: ReactNode;
|
|
62
|
+
/** The value differs from its default: the source carries a mark. */
|
|
63
|
+
changed?: boolean | undefined;
|
|
64
|
+
}
|
|
65
|
+
/** One setting: its name (and key), its value and its source. */
|
|
66
|
+
export declare function SettingsTableRow({ label, settingKey, source, changed, className, children, ...rest }: SettingsTableRowProps): import("react").JSX.Element;
|
|
@@ -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';
|
|
@@ -1,17 +1,18 @@
|
|
|
1
|
-
export { SHEET_COLUMN_EDITOR_LABELS, SheetColumnEditor, SheetColumnTypeGlyph } from '../chunk-
|
|
1
|
+
export { SHEET_COLUMN_EDITOR_LABELS, SheetColumnEditor, SheetColumnTypeGlyph } from '../chunk-GFYQKMQZ.js';
|
|
2
2
|
import '../chunk-XQZ6EWOE.js';
|
|
3
3
|
import '../chunk-FFMCMSJB.js';
|
|
4
4
|
import '../chunk-7KHM2FZH.js';
|
|
5
5
|
import '../chunk-LFSIKGRQ.js';
|
|
6
6
|
import '../chunk-Z7JYG5TF.js';
|
|
7
|
-
import '../chunk-
|
|
7
|
+
import '../chunk-BA32AVKS.js';
|
|
8
8
|
import '../chunk-AYKXMIOR.js';
|
|
9
|
-
import '../chunk-2QZ2VPHR.js';
|
|
10
|
-
import '../chunk-7SDUKCNW.js';
|
|
11
|
-
import '../chunk-RKKO7QHH.js';
|
|
12
9
|
import '../chunk-AXS6MBNH.js';
|
|
13
|
-
import '../chunk-
|
|
10
|
+
import '../chunk-4OK4DX3V.js';
|
|
11
|
+
import '../chunk-X4IXXLWM.js';
|
|
12
|
+
import '../chunk-WIATRXEJ.js';
|
|
13
|
+
import '../chunk-EGMQURBR.js';
|
|
14
14
|
import '../chunk-TYONQSOK.js';
|
|
15
|
+
import '../chunk-SMBKXWML.js';
|
|
15
16
|
import '../chunk-BHHIIK3M.js';
|
|
16
17
|
import '../chunk-PQADV6P6.js';
|
|
17
18
|
import '../chunk-D6FEHY5G.js';
|
package/dist/SheetGrid/index.js
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
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-3PR65I3H.js';
|
|
2
2
|
import '../chunk-O2EGEONV.js';
|
|
3
3
|
import '../chunk-CENOOTAV.js';
|
|
4
|
+
import '../chunk-KYIAFNU7.js';
|
|
4
5
|
import '../chunk-3BYIWOTV.js';
|
|
5
6
|
import '../chunk-I6POAB4V.js';
|
|
6
|
-
import '../chunk-KYIAFNU7.js';
|
|
7
|
-
import '../chunk-WIATRXEJ.js';
|
|
8
7
|
import '../chunk-66X5WDKE.js';
|
|
9
8
|
import '../chunk-LFSIKGRQ.js';
|
|
10
9
|
import '../chunk-Z7JYG5TF.js';
|
|
11
10
|
import '../chunk-KHJIEPZV.js';
|
|
12
11
|
import '../chunk-AYKXMIOR.js';
|
|
12
|
+
import '../chunk-WIATRXEJ.js';
|
|
13
13
|
import '../chunk-I33UIUZD.js';
|
|
14
14
|
import '../chunk-5AQBPHZD.js';
|
|
15
15
|
import '../chunk-PZKHBB7D.js';
|
|
@@ -69,6 +69,17 @@ export interface NavGroupProps {
|
|
|
69
69
|
* first row.
|
|
70
70
|
*/
|
|
71
71
|
action?: NavGroupAction | undefined;
|
|
72
|
+
/**
|
|
73
|
+
* Every row in the group is closed to this reader, for this reason
|
|
74
|
+
* ("Needs Admin access"). The key is drawn ONCE, after the group's label,
|
|
75
|
+
* which names the reason for a screen reader and as its title; the rows
|
|
76
|
+
* stay links, in the quiet ink, without a key each, so a reader who holds
|
|
77
|
+
* none of a column's access meets one mark per group rather than a wall of
|
|
78
|
+
* keys. A row still says its own reason (its `locked`) as its title and
|
|
79
|
+
* after its name. Only for a NAMED group: a run with no label has no
|
|
80
|
+
* heading to carry the key, so its rows keep theirs.
|
|
81
|
+
*/
|
|
82
|
+
locked?: string | undefined;
|
|
72
83
|
className?: string | undefined;
|
|
73
84
|
children?: ReactNode;
|
|
74
85
|
}
|
|
@@ -79,6 +90,11 @@ export interface NavLinkProps {
|
|
|
79
90
|
href?: string | undefined;
|
|
80
91
|
'aria-current'?: 'page' | undefined;
|
|
81
92
|
onClick?: MouseEventHandler<HTMLElement> | undefined;
|
|
93
|
+
/** The row's hint, as the pointer's title. */
|
|
94
|
+
title?: string | undefined;
|
|
95
|
+
/** The row's `onPrefetch`, on the pointer reaching it and on focus. */
|
|
96
|
+
onPointerEnter?: (() => void) | undefined;
|
|
97
|
+
onFocus?: (() => void) | undefined;
|
|
82
98
|
}
|
|
83
99
|
/**
|
|
84
100
|
* A figure at the end of a row, and what it counts.
|
|
@@ -145,6 +161,23 @@ export interface NavItemProps {
|
|
|
145
161
|
* read after its name.
|
|
146
162
|
*/
|
|
147
163
|
disabledReason?: string | undefined;
|
|
164
|
+
/**
|
|
165
|
+
* Closed to this reader, and why, as a sentence: "Needs Admin access". The
|
|
166
|
+
* row stays and stays a link (a place that vanished is one the reader
|
|
167
|
+
* cannot ask for); its words carry the key after them, the pointer's title
|
|
168
|
+
* says why, and a screen reader hears the reason after the name. See
|
|
169
|
+
* `LockedLabel`. Unlike `disabledReason`, the destination is reachable: it
|
|
170
|
+
* is the page that says the reader may not read it.
|
|
171
|
+
*/
|
|
172
|
+
locked?: string | undefined;
|
|
173
|
+
/** The row's hint, as the pointer's title: what the destination answers. */
|
|
174
|
+
title?: string | undefined;
|
|
175
|
+
/**
|
|
176
|
+
* Called when the pointer reaches the row and when it takes focus: the
|
|
177
|
+
* reader deciding, which is the moment to start fetching where it leads,
|
|
178
|
+
* so the destination is usually in by the time the press lands.
|
|
179
|
+
*/
|
|
180
|
+
onPrefetch?: (() => void) | undefined;
|
|
148
181
|
/** Draws the row's element, for a router that owns navigation. */
|
|
149
182
|
renderLink?: ((props: NavLinkProps) => ReactNode) | undefined;
|
|
150
183
|
onClick?: MouseEventHandler<HTMLElement> | undefined;
|
|
@@ -172,6 +205,6 @@ export declare namespace SidebarNav {
|
|
|
172
205
|
* `<div>` here still carries the label's own padding, which put sixteen blank
|
|
173
206
|
* pixels at the top of the rail and named a group nothing could read.
|
|
174
207
|
*/
|
|
175
|
-
export declare function NavGroup({ label, action, className, children }: NavGroupProps): import("react").JSX.Element;
|
|
208
|
+
export declare function NavGroup({ label, action, locked, className, children }: NavGroupProps): import("react").JSX.Element;
|
|
176
209
|
/** One row: a glyph, a label, an optional badge, and optionally rows beneath. */
|
|
177
|
-
export declare function NavItem({ label, icon, lead, count, badge, href, current, disabledReason, renderLink, onClick, children, expanded, defaultExpanded, onExpandedChange, expandLabel, className, }: NavItemProps): import("react").JSX.Element;
|
|
210
|
+
export declare function NavItem({ label, icon, lead, count, badge, href, current, disabledReason, locked, title, onPrefetch, renderLink, onClick, children, expanded, defaultExpanded, onExpandedChange, expandLabel, className, }: NavItemProps): import("react").JSX.Element;
|
package/dist/SidebarNav/index.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
export { NavGroup, NavItem, SidebarNav } from '../chunk-
|
|
1
|
+
export { NavGroup, NavItem, SidebarNav } from '../chunk-E7QLG3PG.js';
|
|
2
|
+
import '../chunk-OHGH7O6T.js';
|
|
2
3
|
import '../chunk-FYTIJM2T.js';
|
|
3
4
|
import '../chunk-2YTOOH3A.js';
|
|
4
5
|
import '../chunk-BZFWDIV6.js';
|
|
@@ -426,3 +426,13 @@
|
|
|
426
426
|
transition: none;
|
|
427
427
|
}
|
|
428
428
|
}
|
|
429
|
+
|
|
430
|
+
/*
|
|
431
|
+
* A GROUP THE READER HOLDS NONE OF: the key once, after its label (see
|
|
432
|
+
* `NavGroup`'s `locked`), and its resting rows in the quiet ink, so a closed
|
|
433
|
+
* column reads as closed at a glance without a key on every row. A pointed
|
|
434
|
+
* row and the reader's own still lift to the primary step, as every row does.
|
|
435
|
+
*/
|
|
436
|
+
.crewlet-nav-group--locked .crewlet-nav-item__row:not([aria-current]):not(:hover) {
|
|
437
|
+
color: var(--color-text-tertiary);
|
|
438
|
+
}
|
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
|
/*
|
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';
|
|
@@ -75,6 +75,33 @@
|
|
|
75
75
|
border-radius: var(--radius-none);
|
|
76
76
|
}
|
|
77
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
|
+
|
|
78
105
|
/*
|
|
79
106
|
* Each tile spans its share of the twelve tracks: the row's `columns`, set on
|
|
80
107
|
* it as `--crewlet-stat-group-cols`, a row.
|
package/dist/Switcher/index.js
CHANGED