@crewlethq/ui 0.6.3 → 0.8.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 +109 -0
- package/dist/AddPill/index.js +1 -1
- package/dist/{AddPill-IJQYCY6C.css → AddPill-V4TQXJ53.css} +23 -22
- package/dist/AppShell/index.js +2 -2
- package/dist/{AppShell-XARELGIH.css → AppShell-CEVLW4QG.css} +3 -1
- package/dist/Button/index.js +1 -1
- package/dist/{Button-EXU36DEH.css → Button-UWKBTKYD.css} +18 -0
- package/dist/Canvas/Canvas.d.ts +16 -1
- package/dist/Canvas/index.d.ts +1 -1
- package/dist/Canvas/index.js +3 -3
- package/dist/{Canvas-Q6JETCWR.css → Canvas-YVXHMWLN.css} +13 -0
- package/dist/Card/index.js +1 -1
- package/dist/{Card-GLP7SUV6.css → Card-KJOYHDTJ.css} +5 -1
- package/dist/Charts/BarList.d.ts +23 -0
- package/dist/Charts/index.d.ts +1 -1
- package/dist/Charts/index.js +1 -1
- package/dist/{Charts-B3YEF7R4.css → Charts-THPA5BWV.css} +40 -0
- package/dist/Checkbox/index.js +1 -1
- package/dist/{Checkbox-BOXQ747I.css → Checkbox-UE7TEPAM.css} +9 -1
- package/dist/CodeBlock/index.js +4 -4
- package/dist/Combobox/index.js +3 -3
- package/dist/CommandPalette/index.js +6 -6
- package/dist/Copyable/index.js +3 -3
- package/dist/DataTable/index.js +6 -6
- package/dist/{DataTable-OLHPF7D4.css → DataTable-WZK3V62B.css} +11 -0
- package/dist/DataView/index.js +11 -11
- package/dist/DateTimePicker/index.js +4 -4
- package/dist/{DateTimePicker-22VNXRWC.css → DateTimePicker-4AZBTODT.css} +11 -6
- package/dist/ErrorBoundary/index.js +2 -2
- package/dist/FilterChip/index.js +1 -1
- package/dist/{FilterChip-GTGLLOXE.css → FilterChip-EZ4QMW4E.css} +4 -1
- package/dist/IconButton/index.js +1 -1
- package/dist/{IconButton-TVEUWK6L.css → IconButton-VYWP6SGW.css} +15 -0
- package/dist/ImageUpload/index.js +1 -1
- package/dist/{ImageUpload-YCHJMUGX.css → ImageUpload-L2GE4JUM.css} +5 -1
- package/dist/Input/index.js +2 -2
- package/dist/{Input-2PU5CPKK.css → Input-DRFNI26F.css} +40 -10
- package/dist/Kbd/index.js +1 -1
- package/dist/{Kbd-JPLDVJIP.css → Kbd-MCWJTRTT.css} +11 -0
- package/dist/ListInput/index.js +4 -4
- package/dist/Menu/index.js +3 -3
- package/dist/Modal/index.js +3 -3
- package/dist/NewItemsNotice/index.js +1 -1
- package/dist/{NewItemsNotice-T4DSSPVV.css → NewItemsNotice-Q5ED73BQ.css} +3 -1
- package/dist/OrgLabel/OrgLabel.d.ts +12 -3
- package/dist/OrgLabel/index.js +1 -1
- package/dist/{OrgLabel-CR233G34.css → OrgLabel-6WSKJQOT.css} +38 -0
- package/dist/OrgNode/OrgNode.d.ts +7 -4
- package/dist/OrgNode/index.js +2 -2
- package/dist/{OrgNode-BT7T2Q2X.css → OrgNode-TCHJH5FO.css} +89 -45
- package/dist/OrgTable/index.js +5 -5
- package/dist/{OrgTable-VWMFC3TB.css → OrgTable-JZSYTUIK.css} +28 -4
- package/dist/Popover/index.js +1 -1
- package/dist/{Popover-WJGCF3ZQ.css → Popover-QCINR7WG.css} +5 -2
- package/dist/PricingCard/index.js +2 -2
- package/dist/{PricingCard-7EFXRSD2.css → PricingCard-HTAHG4ST.css} +5 -1
- package/dist/SearchTrigger/index.js +1 -1
- package/dist/{SearchTrigger-Z5D4AAY7.css → SearchTrigger-KIZLWBEH.css} +4 -1
- package/dist/SegmentedControl/SegmentedControl.d.ts +19 -1
- package/dist/SegmentedControl/index.d.ts +1 -1
- package/dist/SegmentedControl/index.js +2 -2
- package/dist/SegmentedControl-76HODRBT.css +160 -0
- package/dist/Select/index.js +1 -1
- package/dist/{Select-E24U5LBC.css → Select-4ANVLHUY.css} +4 -4
- package/dist/Switch/index.js +1 -1
- package/dist/{Switch-U4OWK4CL.css → Switch-66RAQCRE.css} +8 -5
- package/dist/Tabs/index.js +1 -1
- package/dist/{Tabs-XCNPHA7B.css → Tabs-BWFQSWY3.css} +12 -0
- package/dist/Tag/index.js +1 -1
- package/dist/{Tag-4OXGO2DU.css → Tag-4BRQS6GN.css} +28 -1
- package/dist/TagGroup/index.js +1 -1
- package/dist/{TagGroup-APC2EFH4.css → TagGroup-BCQZD7ZD.css} +4 -1
- package/dist/TagsInput/index.js +3 -3
- package/dist/{TagsInput-W4P36PRJ.css → TagsInput-P2HS5QL4.css} +2 -2
- package/dist/ThemeSwitcher/index.js +3 -3
- package/dist/ThemeToggle/index.js +2 -2
- package/dist/TimeWindowPicker/index.js +6 -6
- package/dist/{TimeWindowPicker-7I7KWCMU.css → TimeWindowPicker-GBF4JDFI.css} +21 -8
- package/dist/Tree/layout.d.ts +3 -3
- package/dist/TreeCanvas/TreeCanvas.d.ts +7 -5
- package/dist/TreeCanvas/index.js +4 -4
- package/dist/{TreeCanvas-HVOV4SQN.css → TreeCanvas-L2XYONWL.css} +80 -74
- package/dist/TreeGrid/index.js +2 -2
- package/dist/{chunk-SVNXOK25.js → chunk-26SCUACK.js} +2 -2
- package/dist/{chunk-4UQ7SMPK.js → chunk-4FQT6ZAY.js} +1 -1
- package/dist/{chunk-IBYO2IJN.js → chunk-5I56UXBJ.js} +4 -4
- package/dist/{chunk-ZFATEERP.js → chunk-5YLON2PW.js} +1 -1
- package/dist/{chunk-EFYPAJT3.js → chunk-6DRDCT22.js} +1 -1
- package/dist/{chunk-PQNILU27.js → chunk-6HXH57BL.js} +3 -3
- package/dist/{chunk-BNCCEER3.js → chunk-6SIG5I72.js} +22 -11
- package/dist/{chunk-RJM4QCGG.js → chunk-6VL4LGWC.js} +36 -13
- package/dist/{chunk-OM5E3TTK.js → chunk-74WGARJE.js} +5 -2
- package/dist/{chunk-EV6IMYJ6.js → chunk-A722MUNR.js} +1 -1
- package/dist/{chunk-WOFOMTGB.js → chunk-B47YUQGM.js} +6 -2
- package/dist/{chunk-MV2E3QZM.js → chunk-BTHX2FS3.js} +2 -2
- package/dist/{chunk-2QLOH454.js → chunk-BXPLX7YU.js} +3 -3
- package/dist/{chunk-V34H2YCY.js → chunk-CEOXFO3E.js} +1 -1
- package/dist/{chunk-KKLITCMF.js → chunk-CHG7VT2M.js} +8 -8
- package/dist/{chunk-QY7UU5ZB.js → chunk-DRHXRGB6.js} +1 -1
- package/dist/{chunk-V2XMNLMS.js → chunk-E6UWRXNM.js} +1 -1
- package/dist/{chunk-NQ2HQ6P5.js → chunk-HVPC2GHY.js} +6 -6
- package/dist/{chunk-FFKYL7Z3.js → chunk-L7THQMFB.js} +4 -2
- package/dist/{chunk-PAWGBSHU.js → chunk-LOECRMHA.js} +1 -1
- package/dist/{chunk-LSJZUA5V.js → chunk-LSB3EHBW.js} +2 -2
- package/dist/{chunk-ERHSECG2.js → chunk-MORLKUGM.js} +1 -1
- package/dist/{chunk-UWQWTGQH.js → chunk-MPXI6FM6.js} +3 -3
- package/dist/{chunk-DHPUMOTX.js → chunk-N5KCGFWI.js} +8 -4
- package/dist/{chunk-ZAO4HHXI.js → chunk-OG6CL3EB.js} +1 -1
- package/dist/{chunk-C5WJUZVR.js → chunk-ORNOOMVY.js} +1 -1
- package/dist/{chunk-WUVZDFHS.js → chunk-OVLJEVQS.js} +2 -2
- package/dist/{chunk-AUS5FNQE.js → chunk-PDUZO35I.js} +1 -1
- package/dist/{chunk-YLYOWZ4V.js → chunk-PXU6HOZB.js} +1 -1
- package/dist/{chunk-AGQ3YLA5.js → chunk-QJZ3Y6WW.js} +6 -6
- package/dist/{chunk-S7KW47IQ.js → chunk-RHHGLTXJ.js} +1 -1
- package/dist/{chunk-SJQ546ID.js → chunk-SEFMO2EV.js} +1 -1
- package/dist/{chunk-KJ34ZBBI.js → chunk-SMBKXWML.js} +1 -1
- package/dist/{chunk-FIFNP6PL.js → chunk-SX2DFTQV.js} +1 -1
- package/dist/{chunk-L6XZOCP4.js → chunk-UCYIRDND.js} +2 -2
- package/dist/{chunk-D6EVJUGU.js → chunk-UYK72NOS.js} +1 -1
- package/dist/{chunk-TIWAHZZ6.js → chunk-VCOELPCT.js} +2 -2
- package/dist/{chunk-2HY7I3NT.js → chunk-VE6LD3KM.js} +5 -3
- package/dist/{chunk-CAIHUYXV.js → chunk-W4GQWFRX.js} +1 -1
- package/dist/{chunk-BWIPKSWA.js → chunk-XX2VQE55.js} +1 -1
- package/dist/{chunk-UA7O3KKJ.js → chunk-YCTMKKRA.js} +1 -1
- package/dist/{chunk-DSUY5F4E.js → chunk-ZGX2DP7F.js} +2 -2
- package/dist/generated/index.js +44 -44
- package/dist/index.js +44 -44
- package/dist/styles.css +662 -223
- package/package.json +3 -3
- package/dist/SegmentedControl-X3BI3XU4.css +0 -68
|
@@ -33,6 +33,15 @@
|
|
|
33
33
|
|
|
34
34
|
/* ---- A unit's lead ------------------------------------------------------ */
|
|
35
35
|
|
|
36
|
+
/*
|
|
37
|
+
* NO LINE OF ITS OWN. The console chart rules a hairline over this strip and
|
|
38
|
+
* frames a set lead's pill inside it, 4px in from the node's own edge: inside
|
|
39
|
+
* a card that is already framed, that is a box drawn twice, with a second line
|
|
40
|
+
* running beside the card's edge on three sides and a third across the top.
|
|
41
|
+
* A set lead is a ground instead, and a ground needs no line to divide it from
|
|
42
|
+
* the name above. Only an EMPTY slot keeps an edge, dashed (below), because
|
|
43
|
+
* the dash is what says a place is waiting rather than a frame round a value.
|
|
44
|
+
*/
|
|
36
45
|
.crewlet-org-node-lead {
|
|
37
46
|
position: relative;
|
|
38
47
|
display: flex;
|
|
@@ -41,28 +50,11 @@
|
|
|
41
50
|
padding: 0 var(--spacing-1) var(--spacing-1);
|
|
42
51
|
}
|
|
43
52
|
|
|
44
|
-
/*
|
|
45
|
-
* THE SEPARATOR IS INSET, like every hairline inside a node of the console
|
|
46
|
-
* chart (it draws this one from 4 to `nw - 4`). Edge to edge it cut the card
|
|
47
|
-
* in two and the node read as two stacked cells rather than as a card with a
|
|
48
|
-
* fact along its bottom edge. Drawn rather than bordered for that reason
|
|
49
|
-
* alone: a border cannot be shorter than the box it is on.
|
|
50
|
-
*/
|
|
51
|
-
.crewlet-org-node-lead::before {
|
|
52
|
-
content: '';
|
|
53
|
-
position: absolute;
|
|
54
|
-
top: 0;
|
|
55
|
-
right: var(--spacing-1);
|
|
56
|
-
left: var(--spacing-1);
|
|
57
|
-
height: 1px;
|
|
58
|
-
background: var(--color-border-default);
|
|
59
|
-
}
|
|
60
|
-
|
|
61
53
|
/*
|
|
62
54
|
* A PILL RATHER THAN A LINE OF TEXT, so the lead reads as one value attached
|
|
63
|
-
* to this unit rather than as a second caption.
|
|
64
|
-
*
|
|
65
|
-
*
|
|
55
|
+
* to this unit rather than as a second caption. RAISED, on the step a chip
|
|
56
|
+
* with no boundary of its own takes (the palette suite holds it off the card
|
|
57
|
+
* on both themes), so it is found by its ground rather than by a frame.
|
|
66
58
|
*/
|
|
67
59
|
.crewlet-org-node-lead__pill {
|
|
68
60
|
display: flex;
|
|
@@ -77,32 +69,30 @@
|
|
|
77
69
|
font-weight: var(--font-weight-medium);
|
|
78
70
|
line-height: var(--font-line-height-tight);
|
|
79
71
|
color: var(--color-text-secondary);
|
|
80
|
-
|
|
81
|
-
* THE BOUNDARY IS THE HOVER STEP, not the resting hairline, which is what
|
|
82
|
-
* the console chart draws around this one pill and nowhere else inside a
|
|
83
|
-
* node: every other line in there is the separator step and this is a
|
|
84
|
-
* boundary around a value. At the separator's own alpha the pill was a
|
|
85
|
-
* rectangle a reader had to look for, on the one fact a unit's node states.
|
|
86
|
-
*/
|
|
87
|
-
border: 1px solid var(--color-border-hover);
|
|
72
|
+
background: var(--color-surface-elevated);
|
|
88
73
|
border-radius: var(--radius-sm);
|
|
89
74
|
}
|
|
90
75
|
|
|
91
76
|
/*
|
|
92
|
-
* AND AN EMPTY ONE IS
|
|
93
|
-
*
|
|
94
|
-
*
|
|
95
|
-
*
|
|
77
|
+
* AND AN EMPTY ONE IS AN EMPTY SLOT: no ground, a dashed edge and the word
|
|
78
|
+
* alone in the quieter ink, as the console chart draws it. A unit with no lead
|
|
79
|
+
* has a place for one, and the dash is what says the place is waiting to be
|
|
80
|
+
* filled, which is what invites the reader to set it. It is the one edge drawn
|
|
81
|
+
* inside a node, and only while the slot is empty: a set lead is a raised
|
|
82
|
+
* ground with no edge at all. The edge is the hover step rather than the
|
|
83
|
+
* resting hairline, because at the hairline's own step the slot was a
|
|
84
|
+
* rectangle a reader had to look for.
|
|
96
85
|
*/
|
|
97
86
|
.crewlet-org-node-lead__pill--empty {
|
|
98
87
|
color: var(--color-text-tertiary);
|
|
99
|
-
|
|
88
|
+
background: none;
|
|
89
|
+
border: 1px dashed var(--color-border-hover);
|
|
100
90
|
}
|
|
101
91
|
|
|
102
92
|
/*
|
|
103
93
|
* A LEAD THAT CAN BE CHANGED IS STILL A LEAD. Where the pill holds a control
|
|
104
94
|
* rather than a word, the control IS the pill: it fills it, carries the pill's
|
|
105
|
-
* own type and ink, and draws no
|
|
95
|
+
* own type and ink, and draws no boundary or ground of its own on the pill's.
|
|
106
96
|
* Left at its own size, a control step inside a half-rank strip is a button
|
|
107
97
|
* that overflows the node it sits in.
|
|
108
98
|
*
|
|
@@ -129,6 +119,35 @@
|
|
|
129
119
|
color: var(--color-text-primary);
|
|
130
120
|
}
|
|
131
121
|
|
|
122
|
+
/*
|
|
123
|
+
* WHATEVER WRAPS THE CONTROL FILLS THE PILL TOO. A menu's trigger arrives
|
|
124
|
+
* inside the menu's own anchor, and the anchor was a shrink-wrapped item of
|
|
125
|
+
* the pill's row: the control was the width of the word "Lead" in a pill as
|
|
126
|
+
* wide as the node, and a press anywhere else in the pill did nothing.
|
|
127
|
+
*/
|
|
128
|
+
.crewlet-org-node-lead__pill > :has(> .crewlet-btn) {
|
|
129
|
+
display: flex;
|
|
130
|
+
flex: 1;
|
|
131
|
+
min-width: 0;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
/*
|
|
135
|
+
* REACHED, THE WHOLE PILL LIGHTS, because the whole pill is the control. The
|
|
136
|
+
* ghost control's own hover and press grounds were a patch the size of the
|
|
137
|
+
* word inside the pill, so it paints neither, and the pill takes the row hover
|
|
138
|
+
* step over its own ground while the control is pointed at or its menu is
|
|
139
|
+
* open. Its ink still goes to full, above.
|
|
140
|
+
*/
|
|
141
|
+
.crewlet-org-node-lead__pill
|
|
142
|
+
.crewlet-btn:is(:hover, :active):not(:disabled):not([aria-disabled='true']) {
|
|
143
|
+
background: none;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
.crewlet-org-node-lead__pill:has(.crewlet-btn:hover:not(:disabled):not([aria-disabled='true'])),
|
|
147
|
+
.crewlet-org-node-lead__pill:has(.crewlet-btn[aria-expanded='true']) {
|
|
148
|
+
background-image: linear-gradient(var(--color-surface-hover), var(--color-surface-hover));
|
|
149
|
+
}
|
|
150
|
+
|
|
132
151
|
/* The name of the lead, not the chevron beside it, is what truncates. */
|
|
133
152
|
.crewlet-org-node-lead__pill .crewlet-btn > span {
|
|
134
153
|
overflow: hidden;
|
|
@@ -147,25 +166,42 @@
|
|
|
147
166
|
*
|
|
148
167
|
* DRAWN SMALL, HIT FULL SIZE, the rule the whole node keeps: the strip is half
|
|
149
168
|
* a rank, so the target is grown past the pill's own edge into the node's
|
|
150
|
-
* bottom padding, exactly as the lead's own control is.
|
|
151
|
-
*
|
|
152
|
-
*
|
|
153
|
-
*
|
|
169
|
+
* bottom padding, exactly as the lead's own control is.
|
|
170
|
+
*
|
|
171
|
+
* AND IT DOES NOT MOVE THE NAME. Taking its room from the row, it pushed the
|
|
172
|
+
* name half its own width off the pill's middle, so "Lead: Ada" sat left of
|
|
173
|
+
* centre on every unit that had one. It is drawn over the pill's right end
|
|
174
|
+
* instead, out of the row, and the lead's control keeps the same room at both
|
|
175
|
+
* of its ends while it is there: the name is centred on the whole pill and
|
|
176
|
+
* truncates before it reaches the clear, and the control is still the whole
|
|
177
|
+
* pill to press.
|
|
154
178
|
*/
|
|
155
179
|
.crewlet-org-node-lead__clear {
|
|
156
|
-
position:
|
|
180
|
+
position: absolute;
|
|
181
|
+
top: 50%;
|
|
182
|
+
right: 0;
|
|
183
|
+
z-index: 1;
|
|
157
184
|
display: inline-flex;
|
|
158
|
-
flex: none;
|
|
159
185
|
align-items: center;
|
|
160
186
|
justify-content: center;
|
|
187
|
+
transform: translateY(-50%);
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
.crewlet-org-node-lead__pill:has(> .crewlet-org-node-lead__clear) {
|
|
191
|
+
position: relative;
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
.crewlet-org-node-lead__pill:has(> .crewlet-org-node-lead__clear)
|
|
195
|
+
.crewlet-btn:not(.crewlet-org-node-lead__clear *) {
|
|
196
|
+
padding-inline: var(--spacing-4);
|
|
161
197
|
}
|
|
162
198
|
|
|
163
199
|
/*
|
|
164
|
-
* THE
|
|
165
|
-
*
|
|
166
|
-
*
|
|
167
|
-
* would disappear on half the deployments
|
|
168
|
-
*
|
|
200
|
+
* THE DISC IS ITS RING. Its ground is the raised step the pill itself is
|
|
201
|
+
* drawn on, rather than that chart's own alpha (0.08 of white is the card's
|
|
202
|
+
* own value on this package's light theme, so a disc drawn by its ground
|
|
203
|
+
* would disappear on half the deployments), and so what draws it on the pill
|
|
204
|
+
* is the hairline round it.
|
|
169
205
|
*/
|
|
170
206
|
.crewlet-org-node-lead__disc {
|
|
171
207
|
position: absolute;
|
|
@@ -203,6 +239,14 @@
|
|
|
203
239
|
color: var(--color-text-primary);
|
|
204
240
|
}
|
|
205
241
|
|
|
242
|
+
/* AND NOTHING ELSE FILLS EITHER: a ghost control's own hover and press grounds
|
|
243
|
+
are painted on its whole 24px target, which drew a circle twice the disc's
|
|
244
|
+
size round a 12px mark the moment it was pointed at. */
|
|
245
|
+
.crewlet-org-node-lead__clear
|
|
246
|
+
:is(.crewlet-btn, .crewlet-icon-btn):is(:hover, :active):not(:disabled):not([aria-disabled='true']) {
|
|
247
|
+
background: none;
|
|
248
|
+
}
|
|
249
|
+
|
|
206
250
|
.crewlet-org-node-lead__clear:hover .crewlet-org-node-lead__disc {
|
|
207
251
|
border-color: var(--color-border-control);
|
|
208
252
|
}
|
package/dist/OrgTable/index.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
export { OrgTable, OrgTableActions, OrgTableAdd, OrgTableName } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
1
|
+
export { OrgTable, OrgTableActions, OrgTableAdd, OrgTableName } from '../chunk-6SIG5I72.js';
|
|
2
|
+
import '../chunk-SX2DFTQV.js';
|
|
3
3
|
import '../chunk-S3BCVWTU.js';
|
|
4
|
-
import '../chunk-
|
|
4
|
+
import '../chunk-B47YUQGM.js';
|
|
5
5
|
import '../chunk-53DVJCVW.js';
|
|
6
|
-
import '../chunk-
|
|
6
|
+
import '../chunk-74WGARJE.js';
|
|
7
7
|
import '../chunk-7RPGY3JE.js';
|
|
8
8
|
import '../chunk-R25RGPUB.js';
|
|
9
|
-
import '../chunk-
|
|
9
|
+
import '../chunk-4FQT6ZAY.js';
|
|
10
10
|
import '../chunk-IA232OTU.js';
|
|
11
11
|
import '../chunk-BZFWDIV6.js';
|
|
12
12
|
import '../chunk-ODEQTPFM.js';
|
|
@@ -24,8 +24,11 @@
|
|
|
24
24
|
*/
|
|
25
25
|
--crewlet-org-table-indent: var(--spacing-8);
|
|
26
26
|
/* The wire arriving at a row, and what it fades to at the row's own end.
|
|
27
|
-
|
|
28
|
-
|
|
27
|
+
It leaves the trunk in the TRUNK'S own step, as the console table's does,
|
|
28
|
+
so the two read as one line; started brighter than the trunk, every
|
|
29
|
+
branch was a dash floating beside a trunk nobody could see. Rebound per
|
|
30
|
+
hue below. */
|
|
31
|
+
--crewlet-org-table-wire: var(--color-border-strong);
|
|
29
32
|
--crewlet-org-table-wire-fade: var(--color-border-default);
|
|
30
33
|
/* What a row's name and its mark are drawn in. Rebound per hue below. */
|
|
31
34
|
--crewlet-org-table-ink: var(--color-text-primary);
|
|
@@ -134,8 +137,15 @@
|
|
|
134
137
|
* follows, so the trunk is one line down the whole table rather than one per
|
|
135
138
|
* level. The cell's padding is taken back and the wire element carries the
|
|
136
139
|
* level instead.
|
|
140
|
+
*
|
|
141
|
+
* AND THE CELL IS THE ROW'S FULL HEIGHT, because the wire in it is. The grid
|
|
142
|
+
* centres its cells in a row taller than they are, and a trunk drawn down a
|
|
143
|
+
* centred cell stopped short of both edges of every row, so the line its
|
|
144
|
+
* segments were meant to stack into read as one dash per row. The cell still
|
|
145
|
+
* centres what it holds.
|
|
137
146
|
*/
|
|
138
147
|
.crewlet-org-table [role='gridcell']:first-child {
|
|
148
|
+
align-self: stretch;
|
|
139
149
|
padding-inline-start: var(--spacing-2);
|
|
140
150
|
}
|
|
141
151
|
|
|
@@ -170,12 +180,19 @@
|
|
|
170
180
|
* segments stack into one line. Neutral, always: it belongs to the table
|
|
171
181
|
* rather than to any row, and a trunk that took each row's hue in turn would
|
|
172
182
|
* be a striped line saying nothing.
|
|
183
|
+
*
|
|
184
|
+
* IN THE STRONG STEP, where the console table draws its trunk a notch above
|
|
185
|
+
* the row's ground. In the plain border step it all but vanished on the
|
|
186
|
+
* table's own ground, and the branches beside it read as loose dashes.
|
|
187
|
+
*
|
|
188
|
+
* It starts one hairline above the cell, over the grid's rule between rows,
|
|
189
|
+
* so the segments meet rather than being cut by that rule.
|
|
173
190
|
*/
|
|
174
191
|
.crewlet-org-table__wire[data-trunk]::before {
|
|
175
|
-
inset-block: 0;
|
|
192
|
+
inset-block: -1px 0;
|
|
176
193
|
inset-inline-start: 0;
|
|
177
194
|
width: 2px;
|
|
178
|
-
background: var(--color-border-
|
|
195
|
+
background: var(--color-border-strong);
|
|
179
196
|
}
|
|
180
197
|
|
|
181
198
|
/* A root row's trunk starts at the row's middle: nothing hangs above the
|
|
@@ -184,6 +201,13 @@
|
|
|
184
201
|
inset-block-start: 50%;
|
|
185
202
|
}
|
|
186
203
|
|
|
204
|
+
/* The last row a root shows ends the trunk at its own branch: no row below it
|
|
205
|
+
hangs off the line, and a trunk run on to the next tree or the table's edge
|
|
206
|
+
is a line to nowhere. */
|
|
207
|
+
.crewlet-org-table__wire[data-last][data-trunk]::before {
|
|
208
|
+
inset-block-end: 50%;
|
|
209
|
+
}
|
|
210
|
+
|
|
187
211
|
/*
|
|
188
212
|
* THE BRANCH: from the trunk across the gutter to the row's own mark, fading
|
|
189
213
|
* as it arrives. It reaches one cell gap past the wire's own width, which is
|
package/dist/Popover/index.js
CHANGED
|
@@ -40,10 +40,13 @@
|
|
|
40
40
|
transform-origin: bottom left;
|
|
41
41
|
}
|
|
42
42
|
|
|
43
|
-
/* A panel that takes focus shows it on the panel, not only on what is inside
|
|
43
|
+
/* A panel that takes focus shows it on the panel, not only on what is inside,
|
|
44
|
+
and shows it ONCE: over the panel's own boundary rather than 2px off it,
|
|
45
|
+
which is two edges with a gap between them (the rule every field keeps, see
|
|
46
|
+
Input.css). */
|
|
44
47
|
.crewlet-popover:focus-visible {
|
|
45
48
|
outline: 2px solid var(--color-focus);
|
|
46
|
-
outline-offset:
|
|
49
|
+
outline-offset: var(--size-focus-ring-inset-offset);
|
|
47
50
|
}
|
|
48
51
|
|
|
49
52
|
/* Up from under its anchor, which is where it is about to be. */
|
|
@@ -64,9 +64,13 @@
|
|
|
64
64
|
border-color: var(--color-brand-accent-soft-strong);
|
|
65
65
|
}
|
|
66
66
|
|
|
67
|
+
/* One ring, over the card's own boundary rather than 2px off it, which is two
|
|
68
|
+
edges with a gap between them: the rule every field keeps (see Input.css).
|
|
69
|
+
The chosen plan keeps an accent line inside the ring, since the selection
|
|
70
|
+
ring below is two pixels deep and the focus ring covers one of them. */
|
|
67
71
|
.crewlet-pricing-card:focus-visible {
|
|
68
72
|
outline: 2px solid var(--color-focus);
|
|
69
|
-
outline-offset:
|
|
73
|
+
outline-offset: var(--size-focus-ring-inset-offset);
|
|
70
74
|
}
|
|
71
75
|
|
|
72
76
|
/* The chosen plan takes the selection ring, which is the same inset rule
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { SearchTrigger } from '../chunk-
|
|
1
|
+
export { SearchTrigger } from '../chunk-6DRDCT22.js';
|
|
2
2
|
import '../chunk-ODEQTPFM.js';
|
|
@@ -58,9 +58,12 @@
|
|
|
58
58
|
color: var(--color-text-primary);
|
|
59
59
|
}
|
|
60
60
|
|
|
61
|
+
/* One ring, over the trigger's own boundary rather than 2px off it, which is
|
|
62
|
+
two edges with a gap between them: the rule every field keeps (see
|
|
63
|
+
Input.css). */
|
|
61
64
|
.crewlet-search-trigger:focus-visible {
|
|
62
65
|
outline: 2px solid var(--color-focus);
|
|
63
|
-
outline-offset:
|
|
66
|
+
outline-offset: var(--size-focus-ring-inset-offset);
|
|
64
67
|
}
|
|
65
68
|
|
|
66
69
|
.crewlet-search-trigger__icon {
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { type ReactNode } from 'react';
|
|
2
2
|
export type SegmentedSize = 'sm' | 'md';
|
|
3
|
+
/** How the options are drawn: see [SegmentedControlProps.layout]. */
|
|
4
|
+
export type SegmentedLayout = 'pill' | 'chips';
|
|
3
5
|
export interface SegmentedOption<T extends string = string> {
|
|
4
6
|
value: T;
|
|
5
7
|
/** What is drawn. An empty label makes the option icon-only. */
|
|
@@ -27,6 +29,22 @@ interface SegmentedShared<T extends string> {
|
|
|
27
29
|
value: T;
|
|
28
30
|
onValueChange: (value: T) => void;
|
|
29
31
|
size?: SegmentedSize | undefined;
|
|
32
|
+
/**
|
|
33
|
+
* How the options are drawn. `pill`, the default, is a row of chips in one
|
|
34
|
+
* tinted well, for a lens, a setting or a compact switch. `chips` is a row of
|
|
35
|
+
* SEPARATE chips that wraps, for a setting with more choices than a well
|
|
36
|
+
* holds on one line (a unit's type): each chip a raised ground of its own,
|
|
37
|
+
* the chosen one filled with the accent. A row whose options carry a
|
|
38
|
+
* description is drawn as cards whatever this says.
|
|
39
|
+
*/
|
|
40
|
+
layout?: SegmentedLayout | undefined;
|
|
41
|
+
/**
|
|
42
|
+
* Drawn at the end of the row, after the last option and outside the
|
|
43
|
+
* choices themselves: the field that completes the last choice, such as the
|
|
44
|
+
* box a "Custom" chip asks for. It takes no part in the arrow keys, so a
|
|
45
|
+
* caret moves inside it as it does in any field.
|
|
46
|
+
*/
|
|
47
|
+
trailing?: ReactNode | undefined;
|
|
30
48
|
className?: string | undefined;
|
|
31
49
|
}
|
|
32
50
|
/**
|
|
@@ -97,5 +115,5 @@ export type SegmentedControlProps<T extends string = string> = SegmentedShared<T
|
|
|
97
115
|
* look like two different controls depending on which component a screen
|
|
98
116
|
* reached for.
|
|
99
117
|
*/
|
|
100
|
-
export declare function SegmentedControl<T extends string = string>({ label, options, value, onValueChange, size, className, semantics, panelId, activate, activateHint, }: SegmentedControlProps<T>): import("react").JSX.Element;
|
|
118
|
+
export declare function SegmentedControl<T extends string = string>({ label, options, value, onValueChange, size, layout, trailing, className, semantics, panelId, activate, activateHint, }: SegmentedControlProps<T>): import("react").JSX.Element;
|
|
101
119
|
export {};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import '../Tabs/Tabs.css';
|
|
2
2
|
import './SegmentedControl.css';
|
|
3
3
|
export { SegmentedControl } from './SegmentedControl.js';
|
|
4
|
-
export type { SegmentedActivation, SegmentedControlProps, SegmentedOption, SegmentedSize, } from './SegmentedControl.js';
|
|
4
|
+
export type { SegmentedActivation, SegmentedControlProps, SegmentedLayout, SegmentedOption, SegmentedSize, } from './SegmentedControl.js';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export { SegmentedControl } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
1
|
+
export { SegmentedControl } from '../chunk-N5KCGFWI.js';
|
|
2
|
+
import '../chunk-DRHXRGB6.js';
|
|
3
3
|
import '../chunk-BHHIIK3M.js';
|
|
4
4
|
import '../chunk-BZFWDIV6.js';
|
|
5
5
|
import '../chunk-ODEQTPFM.js';
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* SegmentedControl: the pill row, drawn with the Tabs classes.
|
|
3
|
+
*
|
|
4
|
+
* Only what is its own lives here. The chrome, the sizes and the active chip
|
|
5
|
+
* come from Tabs.css, so a lens row and a setting row look the same whichever
|
|
6
|
+
* component a screen reached for.
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
.crewlet-segmented__text {
|
|
10
|
+
display: inline-flex;
|
|
11
|
+
flex-direction: column;
|
|
12
|
+
align-items: flex-start;
|
|
13
|
+
gap: 1px;
|
|
14
|
+
min-width: 0;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
/*
|
|
18
|
+
* A choice a reader has to READ before making it is a card row, not a chip:
|
|
19
|
+
* a template with a sentence under its name does not fit in a pill, and
|
|
20
|
+
* squeezing it there is how the sentence ends up truncated to nothing.
|
|
21
|
+
*/
|
|
22
|
+
/*
|
|
23
|
+
* TWO CLASSES, so this wins whatever order the stylesheets are bundled in.
|
|
24
|
+
* `.crewlet-tabs` sets the row's own display and alignment, and a rule of
|
|
25
|
+
* equal weight in a file that happens to come later takes them back.
|
|
26
|
+
*/
|
|
27
|
+
.crewlet-tabs.crewlet-segmented--cards {
|
|
28
|
+
display: grid;
|
|
29
|
+
gap: var(--spacing-2);
|
|
30
|
+
width: 100%;
|
|
31
|
+
align-items: stretch;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/*
|
|
35
|
+
* The same frame a framed Checkbox draws, because it is the same row: a
|
|
36
|
+
* boundary on the body it sits in, and no surface of its own. A choice with a
|
|
37
|
+
* surface inside a panel of the same surface reads as a second panel.
|
|
38
|
+
*/
|
|
39
|
+
.crewlet-segmented--cards .crewlet-segmented__option {
|
|
40
|
+
justify-content: flex-start;
|
|
41
|
+
text-align: left;
|
|
42
|
+
/* A sentence under a name is a sentence: it wraps rather than being cut. */
|
|
43
|
+
white-space: normal;
|
|
44
|
+
padding: var(--spacing-3);
|
|
45
|
+
border: 1px solid var(--color-border-default);
|
|
46
|
+
border-radius: var(--radius-lg);
|
|
47
|
+
font-size: var(--font-size-compact);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/* One ring, over the card's own boundary rather than 2px off it, which is two
|
|
51
|
+
edges with a gap between them: the rule every field keeps (see Input.css).
|
|
52
|
+
The chosen card still says so under the ring, in its tint and its ink. */
|
|
53
|
+
.crewlet-segmented--cards .crewlet-segmented__option:focus-visible {
|
|
54
|
+
outline-offset: var(--size-focus-ring-inset-offset);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/* The one card that is chosen takes the accent, which is what "here, this
|
|
58
|
+
one" means everywhere else in the product. */
|
|
59
|
+
.crewlet-segmented--cards .crewlet-segmented__option.is-active {
|
|
60
|
+
border-color: var(--color-brand-accent);
|
|
61
|
+
background: var(--color-brand-accent-soft);
|
|
62
|
+
color: var(--color-brand-accent-ink);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/*
|
|
66
|
+
* A ROW OF SEPARATE CHIPS, for a setting with more choices than a well holds
|
|
67
|
+
* on one line: the console's own row of unit types. It wraps rather than
|
|
68
|
+
* running off the panel it sits in, and each chip stands on the raised ground
|
|
69
|
+
* a chip with no edge of its own takes (held off the card by the palette
|
|
70
|
+
* suite), so no chip draws a frame inside the panel's. Two classes, for the
|
|
71
|
+
* reason the card row gives above.
|
|
72
|
+
*/
|
|
73
|
+
.crewlet-tabs.crewlet-segmented--chips {
|
|
74
|
+
/* The chip's own drawing (below) is the --crewlet-segmented-chip-height
|
|
75
|
+
band inside a target-floor box, so it is the same height at every
|
|
76
|
+
density the console's 11px chip is drawn at. */
|
|
77
|
+
--crewlet-segmented-chip-height: calc(var(--size-target-min) - var(--spacing-1));
|
|
78
|
+
display: flex;
|
|
79
|
+
flex-wrap: wrap;
|
|
80
|
+
align-items: center;
|
|
81
|
+
/* No gap between ROWS: each chip's target already overhangs its drawing by
|
|
82
|
+
half a step above and below, so two rows' drawings stand a whole step
|
|
83
|
+
apart while their targets meet. */
|
|
84
|
+
gap: 0 var(--spacing-1);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
/*
|
|
88
|
+
* SMALL, AS THE CONSOLE'S ARE, AND DRAWN SMALL BUT HIT FULL SIZE, the rule the
|
|
89
|
+
* org chart's own controls keep. A chip is a word in the 11px face with a step
|
|
90
|
+
* of room either side, drawn as a band shorter than the pointer-target floor;
|
|
91
|
+
* the button around it stays at the floor, so the band can be the console's
|
|
92
|
+
* size without being a target a finger misses. At the small control step a
|
|
93
|
+
* row of ten was a second row of buttons under the field's label rather than a
|
|
94
|
+
* row of answers to it.
|
|
95
|
+
*
|
|
96
|
+
* The band is the button's own ::before, behind the label, rather than its
|
|
97
|
+
* background clipped to the content box: a clip takes the corner's curve in by
|
|
98
|
+
* the padding it removes, and a chip this small would lose its radius.
|
|
99
|
+
*/
|
|
100
|
+
.crewlet-segmented--chips .crewlet-segmented__option {
|
|
101
|
+
position: relative;
|
|
102
|
+
isolation: isolate;
|
|
103
|
+
min-height: var(--size-target-min);
|
|
104
|
+
padding: 0 var(--spacing-2);
|
|
105
|
+
border-radius: var(--radius-sm);
|
|
106
|
+
background: none;
|
|
107
|
+
color: var(--color-text-secondary);
|
|
108
|
+
font-size: var(--font-size-2xs);
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
.crewlet-segmented--chips .crewlet-segmented__option::before {
|
|
112
|
+
content: '';
|
|
113
|
+
position: absolute;
|
|
114
|
+
inset: calc((var(--size-target-min) - var(--crewlet-segmented-chip-height)) / 2) 0;
|
|
115
|
+
z-index: -1;
|
|
116
|
+
border-radius: var(--radius-sm);
|
|
117
|
+
background: var(--color-surface-elevated);
|
|
118
|
+
pointer-events: none;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
/* The chosen chip is FILLED with the accent: on a row of up to ten raised
|
|
122
|
+
chips, a fill is the one thing that says "this one" at a glance, as the
|
|
123
|
+
console's row says it. Its ring stands off it, because an edge drawn on an
|
|
124
|
+
accent fill in the focus colour is nearly the fill's own colour. */
|
|
125
|
+
.crewlet-segmented--chips .crewlet-segmented__option.is-active {
|
|
126
|
+
color: var(--color-text-on-accent);
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
.crewlet-segmented--chips .crewlet-segmented__option.is-active::before {
|
|
130
|
+
background: var(--color-brand-accent);
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
/* What completes the last choice sits in the row, at the chips' own height
|
|
134
|
+
and in their face: a field at its own control step stood taller than every
|
|
135
|
+
chip beside it. */
|
|
136
|
+
.crewlet-segmented__trailing {
|
|
137
|
+
display: inline-flex;
|
|
138
|
+
align-items: center;
|
|
139
|
+
min-width: 0;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
.crewlet-segmented--chips .crewlet-segmented__trailing .crewlet-input {
|
|
143
|
+
min-height: var(--crewlet-segmented-chip-height);
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
.crewlet-segmented--chips .crewlet-segmented__trailing .crewlet-input__control {
|
|
147
|
+
font-size: var(--font-size-2xs);
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
.crewlet-segmented__description {
|
|
151
|
+
font-size: var(--font-size-xs);
|
|
152
|
+
font-weight: var(--font-weight-regular);
|
|
153
|
+
line-height: var(--font-line-height-normal);
|
|
154
|
+
color: var(--color-text-tertiary);
|
|
155
|
+
white-space: normal;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
.crewlet-segmented--cards .crewlet-segmented__option.is-active .crewlet-segmented__description {
|
|
159
|
+
color: var(--color-brand-accent-ink);
|
|
160
|
+
}
|
package/dist/Select/index.js
CHANGED
|
@@ -68,8 +68,8 @@
|
|
|
68
68
|
* leave the other bare.
|
|
69
69
|
*/
|
|
70
70
|
.crewlet-select:focus-within {
|
|
71
|
-
outline:
|
|
72
|
-
outline-offset:
|
|
71
|
+
outline: 1px solid var(--color-focus);
|
|
72
|
+
outline-offset: -1px;
|
|
73
73
|
}
|
|
74
74
|
|
|
75
75
|
/*
|
|
@@ -347,8 +347,8 @@ svg.crewlet-select__chevron {
|
|
|
347
347
|
* outset ring on the input would be cut by the menu's own `overflow: hidden`.
|
|
348
348
|
*/
|
|
349
349
|
.crewlet-select__search:focus-within {
|
|
350
|
-
outline:
|
|
351
|
-
outline-offset:
|
|
350
|
+
outline: 1px solid var(--color-focus);
|
|
351
|
+
outline-offset: -1px;
|
|
352
352
|
}
|
|
353
353
|
|
|
354
354
|
.crewlet-select__search {
|
package/dist/Switch/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { Switch } from '../chunk-
|
|
1
|
+
export { Switch } from '../chunk-A722MUNR.js';
|
|
2
2
|
import '../chunk-ODEQTPFM.js';
|
|
@@ -111,14 +111,17 @@
|
|
|
111
111
|
* control's own :focus-visible. The track is the same box: the control is
|
|
112
112
|
* `inset: 0` over it.
|
|
113
113
|
*
|
|
114
|
-
*
|
|
115
|
-
* room to draw a ring inside itself
|
|
116
|
-
*
|
|
117
|
-
*
|
|
114
|
+
* OUTSIDE THE TRACK, like a Checkbox's and unlike a text field's: a 20px pill
|
|
115
|
+
* has no room to draw a ring inside itself. But AGAINST it, not 2px off it.
|
|
116
|
+
* Off, the track draws a real boundary of its own, and a ring standing off
|
|
117
|
+
* that boundary was two edges with a gap between them, which reads as a
|
|
118
|
+
* second outline rather than as focus. Flush, the ring and the track are one
|
|
119
|
+
* edge in both states, and the ring is still drawn whole on the ground around
|
|
120
|
+
* the pill, where it is measured.
|
|
118
121
|
*/
|
|
119
122
|
.crewlet-switch__track:has(.crewlet-switch__control:focus-visible) {
|
|
120
123
|
outline: 2px solid var(--color-focus);
|
|
121
|
-
outline-offset:
|
|
124
|
+
outline-offset: 0;
|
|
122
125
|
}
|
|
123
126
|
|
|
124
127
|
.crewlet-switch__text {
|
package/dist/Tabs/index.js
CHANGED
|
@@ -288,6 +288,18 @@
|
|
|
288
288
|
outline-offset: 2px;
|
|
289
289
|
}
|
|
290
290
|
|
|
291
|
+
/*
|
|
292
|
+
* A CHIP RINGS ON ITS OWN EDGE, flush rather than 2px off it. The chip that
|
|
293
|
+
* is on draws a hairline round itself, and a ring standing off that hairline
|
|
294
|
+
* was two edges with a gap between them, which reads as a second outline
|
|
295
|
+
* rather than as focus. Flush, the ring covers the hairline, and it stays
|
|
296
|
+
* inside the well's 2px inset: two pixels wide, it meets the well's own
|
|
297
|
+
* boundary rather than leaving a sliver of the well between the two.
|
|
298
|
+
*/
|
|
299
|
+
.crewlet-tabs--pill .crewlet-tabs__tab:focus-visible {
|
|
300
|
+
outline-offset: 0;
|
|
301
|
+
}
|
|
302
|
+
|
|
291
303
|
.crewlet-tabs__tab.is-disabled,
|
|
292
304
|
.crewlet-tabs__tab:disabled {
|
|
293
305
|
opacity: 0.55;
|
package/dist/Tag/index.js
CHANGED