@crewlethq/ui 0.6.3 → 0.7.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/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-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-CLPDVL46.js} +8 -8
- package/dist/{chunk-AGQ3YLA5.js → chunk-CVB7O3SZ.js} +6 -6
- 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-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 +41 -41
- package/dist/index.js +41 -41
- package/dist/styles.css +621 -222
- package/package.json +3 -3
- package/dist/SegmentedControl-X3BI3XU4.css +0 -68
|
@@ -34,6 +34,21 @@
|
|
|
34
34
|
outline-offset: 2px;
|
|
35
35
|
}
|
|
36
36
|
|
|
37
|
+
/*
|
|
38
|
+
* ONE RING, OVER THE BOUNDARY, on every square that draws one: the secondary
|
|
39
|
+
* and the soft-brand at rest, and the ghost-brand, which grows one under the
|
|
40
|
+
* pointer. A ring standing 2px off a visible border is two edges with a gap
|
|
41
|
+
* between them, which reads as a second outline rather than as focus; on the
|
|
42
|
+
* inset offset it covers the border instead, the rule every field keeps (see
|
|
43
|
+
* Input.css). The other ghosts never draw an edge, so they keep the outset
|
|
44
|
+
* ring.
|
|
45
|
+
*/
|
|
46
|
+
.crewlet-icon-btn--secondary:focus-visible,
|
|
47
|
+
.crewlet-icon-btn--soft-brand:focus-visible,
|
|
48
|
+
.crewlet-icon-btn--ghost-brand:focus-visible {
|
|
49
|
+
outline-offset: var(--size-focus-ring-inset-offset);
|
|
50
|
+
}
|
|
51
|
+
|
|
37
52
|
.crewlet-icon-btn:disabled,
|
|
38
53
|
.crewlet-icon-btn[aria-disabled='true'] {
|
|
39
54
|
opacity: 0.5;
|
|
@@ -181,9 +181,13 @@
|
|
|
181
181
|
cursor: default;
|
|
182
182
|
}
|
|
183
183
|
|
|
184
|
+
/* One ring, drawn OVER the badge's knockout ring rather than 2px outside it:
|
|
185
|
+
over the image the knockout is an edge of its own, and a ring standing off
|
|
186
|
+
it was two rings round one small disc. On the inset offset the focus ring
|
|
187
|
+
takes the knockout's place, which still parts the disc from the image. */
|
|
184
188
|
.crewlet-image-upload__remove:focus-visible {
|
|
185
189
|
outline: 2px solid var(--color-focus);
|
|
186
|
-
outline-offset:
|
|
190
|
+
outline-offset: var(--size-focus-ring-inset-offset);
|
|
187
191
|
}
|
|
188
192
|
|
|
189
193
|
.crewlet-image-upload__input {
|
package/dist/Input/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export { FormField, FormRow, FormSection, Input, InputAffix, Label, ReadOnlyField, Textarea } from '../chunk-
|
|
1
|
+
export { FormField, FormRow, FormSection, Input, InputAffix, Label, ReadOnlyField, Textarea } from '../chunk-ZGX2DP7F.js';
|
|
2
2
|
import '../chunk-PQADV6P6.js';
|
|
3
|
-
import '../chunk-
|
|
3
|
+
import '../chunk-4FQT6ZAY.js';
|
|
4
4
|
import '../chunk-BZFWDIV6.js';
|
|
5
5
|
import '../chunk-ODEQTPFM.js';
|
|
@@ -74,11 +74,14 @@
|
|
|
74
74
|
* forced-colors mode drops every box-shadow and keeps outlines: a ring drawn
|
|
75
75
|
* as a shadow disappears for exactly the readers who most need one.
|
|
76
76
|
*
|
|
77
|
-
* It is
|
|
78
|
-
*
|
|
79
|
-
*
|
|
80
|
-
*
|
|
81
|
-
*
|
|
77
|
+
* It is ONE PIXEL, LAID EXACTLY ON THE BOUNDARY: the field's own hairline,
|
|
78
|
+
* drawn in the focus colour, which is how the console's fields say focus. At
|
|
79
|
+
* two pixels it was a heavy band round every box a caret landed in, and on a
|
|
80
|
+
* form of them the field being typed in read as the loudest thing on the page.
|
|
81
|
+
* Drawn on the boundary rather than outside it, a scroller cannot clip it and
|
|
82
|
+
* the field does not grow a halo the moment a caret lands in it, which is what
|
|
83
|
+
* a filter box in a toolbar of them did to the row it sits in. Every boxed
|
|
84
|
+
* field in the package rings this way (`Input.test.tsx` holds them to it).
|
|
82
85
|
*
|
|
83
86
|
* THE BORDER IS LEFT ALONE. Recolouring it under the ring says nothing the
|
|
84
87
|
* ring has not already said, and it is what cost the error state its own
|
|
@@ -94,8 +97,8 @@
|
|
|
94
97
|
* on a pointer press as well as on a tab.
|
|
95
98
|
*/
|
|
96
99
|
.crewlet-input:has(.crewlet-input__control:focus-visible) {
|
|
97
|
-
outline:
|
|
98
|
-
outline-offset:
|
|
100
|
+
outline: 1px solid var(--color-focus);
|
|
101
|
+
outline-offset: -1px;
|
|
99
102
|
}
|
|
100
103
|
|
|
101
104
|
.crewlet-input.is-error {
|
|
@@ -354,8 +357,8 @@
|
|
|
354
357
|
on the control itself: a textarea is the field, with nothing wrapped round
|
|
355
358
|
it and nothing focusable inside it. */
|
|
356
359
|
.crewlet-textarea:focus-visible {
|
|
357
|
-
outline:
|
|
358
|
-
outline-offset:
|
|
360
|
+
outline: 1px solid var(--color-focus);
|
|
361
|
+
outline-offset: -1px;
|
|
359
362
|
}
|
|
360
363
|
|
|
361
364
|
.crewlet-textarea.is-error {
|
|
@@ -371,10 +374,37 @@
|
|
|
371
374
|
cursor: not-allowed;
|
|
372
375
|
}
|
|
373
376
|
|
|
377
|
+
/*
|
|
378
|
+
* ONE LINE THAT GROWS STARTS AT THE SINGLE-LINE FIELD'S HEIGHT. A box that
|
|
379
|
+
* grows to fit what is typed was drawn at the large control step while it held
|
|
380
|
+
* one line, so the box a list item is written in stood sixteen pixels taller
|
|
381
|
+
* than the fields above and below it. One line now stands at the medium step,
|
|
382
|
+
* the height of every single-line field, with the line centred in it as an
|
|
383
|
+
* input's is: the block padding is what that step leaves once the two border
|
|
384
|
+
* pixels and one line are paid for. Each line past the first grows it from
|
|
385
|
+
* there.
|
|
386
|
+
*/
|
|
374
387
|
.crewlet-textarea.is-auto-resize {
|
|
375
388
|
resize: none;
|
|
376
389
|
overflow: hidden;
|
|
377
|
-
min-height: var(--size-control-
|
|
390
|
+
min-height: var(--size-control-md);
|
|
391
|
+
padding-block: max(
|
|
392
|
+
0px,
|
|
393
|
+
calc((var(--size-control-md) - 2px - var(--font-line-height-normal) * var(--font-size-compact)) / 2)
|
|
394
|
+
);
|
|
395
|
+
}
|
|
396
|
+
|
|
397
|
+
/*
|
|
398
|
+
* AND WHAT TRAILS IT SITS ON ITS FIRST LINE, centred in the band one line
|
|
399
|
+
* takes, which is exactly where an input's trailing hint sits. Pinned a spacing
|
|
400
|
+
* step from the top, it sat above the line's middle and level with nothing;
|
|
401
|
+
* on the first line it stays put as the box grows under it.
|
|
402
|
+
*/
|
|
403
|
+
.crewlet-textarea-shell:has(> .crewlet-textarea.is-auto-resize) > .crewlet-input__trailing {
|
|
404
|
+
top: 0;
|
|
405
|
+
display: flex;
|
|
406
|
+
align-items: center;
|
|
407
|
+
height: var(--size-control-md);
|
|
378
408
|
}
|
|
379
409
|
|
|
380
410
|
.crewlet-textarea::placeholder {
|
package/dist/Kbd/index.js
CHANGED
|
@@ -42,9 +42,20 @@
|
|
|
42
42
|
* platform prints a chord. It is a `kbd` of its own because that is what a key
|
|
43
43
|
* inside a key combination is, and a user agent's `kbd` rule would otherwise
|
|
44
44
|
* set its own face and size on it.
|
|
45
|
+
*
|
|
46
|
+
* AND IT TAKES NO BOX FROM ANYBODY ELSE. An application stylesheet that draws
|
|
47
|
+
* a bare `kbd` as a cap of its own (a common enough rule) reached each key in
|
|
48
|
+
* here and framed it, so one chord drew a frame round a run of framed keys.
|
|
49
|
+
* The key states every part of its box, so whatever a page says about `kbd`,
|
|
50
|
+
* a chord is one cap.
|
|
45
51
|
*/
|
|
46
52
|
.crewlet-kbd__key {
|
|
47
53
|
font: inherit;
|
|
54
|
+
color: inherit;
|
|
55
|
+
padding: 0;
|
|
56
|
+
background: none;
|
|
57
|
+
border: 0;
|
|
58
|
+
border-radius: 0;
|
|
48
59
|
}
|
|
49
60
|
|
|
50
61
|
/*
|
package/dist/ListInput/index.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
export { ListInput } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
3
|
-
import '../chunk-
|
|
1
|
+
export { ListInput } from '../chunk-6HXH57BL.js';
|
|
2
|
+
import '../chunk-SMBKXWML.js';
|
|
3
|
+
import '../chunk-ZGX2DP7F.js';
|
|
4
4
|
import '../chunk-PQADV6P6.js';
|
|
5
5
|
import '../chunk-RSAQOKH3.js';
|
|
6
6
|
import '../chunk-7RPGY3JE.js';
|
|
7
7
|
import '../chunk-R25RGPUB.js';
|
|
8
|
-
import '../chunk-
|
|
8
|
+
import '../chunk-4FQT6ZAY.js';
|
|
9
9
|
import '../chunk-BZFWDIV6.js';
|
|
10
10
|
import '../chunk-ODEQTPFM.js';
|
package/dist/Menu/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export { Menu } from '../chunk-
|
|
1
|
+
export { Menu } from '../chunk-LSB3EHBW.js';
|
|
2
2
|
import '../chunk-7RPGY3JE.js';
|
|
3
3
|
import '../chunk-R25RGPUB.js';
|
|
4
|
-
import '../chunk-
|
|
5
|
-
import '../chunk-
|
|
4
|
+
import '../chunk-4FQT6ZAY.js';
|
|
5
|
+
import '../chunk-OG6CL3EB.js';
|
|
6
6
|
import '../chunk-BZFWDIV6.js';
|
|
7
7
|
import '../chunk-ODEQTPFM.js';
|
package/dist/Modal/index.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
export { ConfirmModal, Modal } from '../chunk-
|
|
1
|
+
export { ConfirmModal, Modal } from '../chunk-BTHX2FS3.js';
|
|
2
2
|
import '../chunk-PQADV6P6.js';
|
|
3
3
|
import '../chunk-7RPGY3JE.js';
|
|
4
4
|
import '../chunk-R25RGPUB.js';
|
|
5
|
-
import '../chunk-
|
|
6
|
-
import '../chunk-
|
|
5
|
+
import '../chunk-4FQT6ZAY.js';
|
|
6
|
+
import '../chunk-OG6CL3EB.js';
|
|
7
7
|
import '../chunk-BZFWDIV6.js';
|
|
8
8
|
import '../chunk-ODEQTPFM.js';
|
|
@@ -48,9 +48,11 @@
|
|
|
48
48
|
color: var(--color-brand-accent-ink);
|
|
49
49
|
}
|
|
50
50
|
|
|
51
|
+
/* One ring, over the pill's own boundary rather than 2px off it, which is two
|
|
52
|
+
edges with a gap between them: the rule every field keeps (see Input.css). */
|
|
51
53
|
.crewlet-new-items:focus-visible {
|
|
52
54
|
outline: 2px solid var(--color-focus);
|
|
53
|
-
outline-offset:
|
|
55
|
+
outline-offset: var(--size-focus-ring-inset-offset);
|
|
54
56
|
}
|
|
55
57
|
|
|
56
58
|
@media (prefers-reduced-motion: reduce) {
|
|
@@ -84,13 +84,21 @@ export type OrgLabelMark = {
|
|
|
84
84
|
* so this moves nothing: only what is drawn inside it.
|
|
85
85
|
*/
|
|
86
86
|
iconSize?: 'md' | 'lg' | undefined;
|
|
87
|
+
/**
|
|
88
|
+
* A DASHED RING ROUND THE GLYPH, which is how the console chart draws a
|
|
89
|
+
* person's seat: a figure inside a boundary, because a person is the
|
|
90
|
+
* one seat the engine does not run. Drawn in a node only; a row draws
|
|
91
|
+
* the glyph alone, as the console table does.
|
|
92
|
+
*/
|
|
93
|
+
iconRing?: boolean | undefined;
|
|
87
94
|
avatar?: undefined;
|
|
88
95
|
} | {
|
|
89
96
|
/**
|
|
90
97
|
* A SEAT'S BADGE, with its kind as its outline: a squircle for an agent,
|
|
91
|
-
* a circle for a person,
|
|
92
|
-
*
|
|
93
|
-
*
|
|
98
|
+
* a circle for a person, for a surface that names seats by their
|
|
99
|
+
* initials. A surface drawn as the console chart draws one marks a seat
|
|
100
|
+
* with a glyph instead (the Crewlet figure for an agent, a person inside
|
|
101
|
+
* a dashed ring for a human) and takes the other branch.
|
|
94
102
|
*
|
|
95
103
|
* The layout sizes it and nothing here does: the approved org chart's
|
|
96
104
|
* 26px badge in a node and the smallest step, 20px, in a row.
|
|
@@ -101,6 +109,7 @@ export type OrgLabelMark = {
|
|
|
101
109
|
avatar?: OrgLabelAvatar | undefined;
|
|
102
110
|
icon?: undefined;
|
|
103
111
|
iconSize?: undefined;
|
|
112
|
+
iconRing?: undefined;
|
|
104
113
|
};
|
|
105
114
|
/** What both layouts say besides the mark, in the order they say it. */
|
|
106
115
|
interface OrgLabelWords {
|
package/dist/OrgLabel/index.js
CHANGED
|
@@ -86,6 +86,44 @@
|
|
|
86
86
|
fill: currentColor;
|
|
87
87
|
}
|
|
88
88
|
|
|
89
|
+
/*
|
|
90
|
+
* A PERSON IS A FIGURE INSIDE A DASHED RING, as the console chart draws one:
|
|
91
|
+
* the boundary says this seat is held by someone outside the system. The ring
|
|
92
|
+
* is the 24px target step and the figure inside it a step smaller than a
|
|
93
|
+
* container's glyph, which leaves the air a boundary needs to read as one: at
|
|
94
|
+
* the zone's own step the figure touched the ring on every side.
|
|
95
|
+
*
|
|
96
|
+
* THE RING IS DECORATION, drawn in the step kept for it, and the figure is the
|
|
97
|
+
* mark: the ring says how the seat is held, never what it is.
|
|
98
|
+
*/
|
|
99
|
+
.crewlet-org-label__icon--ring {
|
|
100
|
+
position: relative;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
.crewlet-org-label__icon--ring::before {
|
|
104
|
+
content: '';
|
|
105
|
+
position: absolute;
|
|
106
|
+
top: 50%;
|
|
107
|
+
left: 50%;
|
|
108
|
+
width: var(--size-target-min);
|
|
109
|
+
height: var(--size-target-min);
|
|
110
|
+
border: 1px dashed var(--color-text-muted);
|
|
111
|
+
border-radius: var(--radius-circle);
|
|
112
|
+
transform: translate(-50%, -50%);
|
|
113
|
+
pointer-events: none;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
.crewlet-org-label__icon--ring > svg {
|
|
117
|
+
width: var(--font-size-md);
|
|
118
|
+
height: var(--font-size-md);
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
/* A ROW DRAWS THE FIGURE ALONE, as the console table does: a ring on a line
|
|
122
|
+
of text is a second boundary inside the row's own. */
|
|
123
|
+
.crewlet-org-label--row .crewlet-org-label__icon--ring::before {
|
|
124
|
+
content: none;
|
|
125
|
+
}
|
|
126
|
+
|
|
89
127
|
/* ---- The name and its caption -------------------------------------------- */
|
|
90
128
|
|
|
91
129
|
/*
|
|
@@ -73,8 +73,9 @@ export interface OrgNodeDisclosureProps extends HTMLAttributes<HTMLDivElement> {
|
|
|
73
73
|
export declare function OrgNodeDisclosure({ children, className, ...rest }: OrgNodeDisclosureProps): import("react").JSX.Element;
|
|
74
74
|
export interface OrgNodeLeadProps {
|
|
75
75
|
/**
|
|
76
|
-
* Nothing is set, so the pill is drawn as
|
|
77
|
-
*
|
|
76
|
+
* Nothing is set, so the pill is drawn as an empty slot: no ground, a dashed
|
|
77
|
+
* edge and the word in the quieter ink. A unit with no lead is a fact about
|
|
78
|
+
* the organization and a blank strip says nothing.
|
|
78
79
|
*/
|
|
79
80
|
empty?: boolean | undefined;
|
|
80
81
|
/**
|
|
@@ -97,7 +98,9 @@ export interface OrgNodeLeadProps {
|
|
|
97
98
|
* IT STAYS DRAWN, where the controls that edit the node do not: who leads a
|
|
98
99
|
* unit is a FACT ABOUT THE ORGANIZATION rather than a tool for changing it,
|
|
99
100
|
* and a chart that hid it until the pointer arrived would be a chart you could
|
|
100
|
-
* not read the leads off.
|
|
101
|
-
* node reads as a thing with a lead rather than as two lines of
|
|
101
|
+
* not read the leads off. A pill on a ground of its own rather than a line of
|
|
102
|
+
* text, so the node reads as a thing with a lead rather than as two lines of
|
|
103
|
+
* text; never framed while a lead is set, because the node it sits in already
|
|
104
|
+
* is, and dashed while none is, because an empty place is what it then says.
|
|
102
105
|
*/
|
|
103
106
|
export declare function OrgNodeLead({ empty, clear, children, className }: OrgNodeLeadProps): import("react").JSX.Element;
|
package/dist/OrgNode/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { OrgNodeDisclosure, OrgNodeLabel, OrgNodeLead } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
1
|
+
export { OrgNodeDisclosure, OrgNodeLabel, OrgNodeLead } from '../chunk-VCOELPCT.js';
|
|
2
|
+
import '../chunk-B47YUQGM.js';
|
|
3
3
|
import '../chunk-IA232OTU.js';
|
|
4
4
|
import '../chunk-ODEQTPFM.js';
|
|
@@ -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. */
|