@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
|
@@ -103,32 +103,21 @@
|
|
|
103
103
|
}
|
|
104
104
|
|
|
105
105
|
/*
|
|
106
|
-
*
|
|
107
|
-
* of the hue's
|
|
108
|
-
*
|
|
109
|
-
*
|
|
110
|
-
*
|
|
111
|
-
*
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
border: 1px solid var(--crewlet-tree-canvas-card-halo);
|
|
118
|
-
border-radius: var(--radius-lg);
|
|
119
|
-
pointer-events: none;
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
/*
|
|
123
|
-
* The six hues, each as the four steps a toned card draws: the fill it sits
|
|
124
|
-
* on, the boundary around it, the halo outside that, and the ink its name is
|
|
125
|
-
* written in. The ink is published as a variable rather than applied here
|
|
126
|
-
* because WHICH text is the name is the caller's to say.
|
|
106
|
+
* ONE BOUNDARY, AND NO HALO. A toned card used to carry a second hairline ring
|
|
107
|
+
* 3px outside its boundary, at the lightest of the hue's alphas, so a toned
|
|
108
|
+
* card was framed twice: two parallel lines round one node read as a double
|
|
109
|
+
* border, which is the one thing no box in this package draws. The fill and
|
|
110
|
+
* the boundary in the hue already say the card is toned from across a chart.
|
|
111
|
+
*
|
|
112
|
+
* The six hues, each as the steps a toned card draws: the fill it sits on, the
|
|
113
|
+
* boundary around it, the ink its name is written in and the accent its mark
|
|
114
|
+
* takes. The ink and the accent are published as variables rather than applied
|
|
115
|
+
* here because WHICH text is the name and which drawing the mark is are the
|
|
116
|
+
* caller's to say.
|
|
127
117
|
*/
|
|
128
118
|
.crewlet-tree-canvas__card[data-tone='purple'] {
|
|
129
119
|
--crewlet-tree-canvas-card-fill: var(--color-node-purple-fill);
|
|
130
120
|
--crewlet-tree-canvas-card-line: var(--color-node-purple-line);
|
|
131
|
-
--crewlet-tree-canvas-card-halo: var(--color-node-purple-halo);
|
|
132
121
|
--crewlet-tree-canvas-card-ink: var(--color-node-purple-ink);
|
|
133
122
|
--crewlet-tree-canvas-card-accent: var(--color-node-purple);
|
|
134
123
|
}
|
|
@@ -136,7 +125,6 @@
|
|
|
136
125
|
.crewlet-tree-canvas__card[data-tone='cyan'] {
|
|
137
126
|
--crewlet-tree-canvas-card-fill: var(--color-node-cyan-fill);
|
|
138
127
|
--crewlet-tree-canvas-card-line: var(--color-node-cyan-line);
|
|
139
|
-
--crewlet-tree-canvas-card-halo: var(--color-node-cyan-halo);
|
|
140
128
|
--crewlet-tree-canvas-card-ink: var(--color-node-cyan-ink);
|
|
141
129
|
--crewlet-tree-canvas-card-accent: var(--color-node-cyan);
|
|
142
130
|
}
|
|
@@ -144,7 +132,6 @@
|
|
|
144
132
|
.crewlet-tree-canvas__card[data-tone='green'] {
|
|
145
133
|
--crewlet-tree-canvas-card-fill: var(--color-node-green-fill);
|
|
146
134
|
--crewlet-tree-canvas-card-line: var(--color-node-green-line);
|
|
147
|
-
--crewlet-tree-canvas-card-halo: var(--color-node-green-halo);
|
|
148
135
|
--crewlet-tree-canvas-card-ink: var(--color-node-green-ink);
|
|
149
136
|
--crewlet-tree-canvas-card-accent: var(--color-node-green);
|
|
150
137
|
}
|
|
@@ -152,7 +139,6 @@
|
|
|
152
139
|
.crewlet-tree-canvas__card[data-tone='amber'] {
|
|
153
140
|
--crewlet-tree-canvas-card-fill: var(--color-node-amber-fill);
|
|
154
141
|
--crewlet-tree-canvas-card-line: var(--color-node-amber-line);
|
|
155
|
-
--crewlet-tree-canvas-card-halo: var(--color-node-amber-halo);
|
|
156
142
|
--crewlet-tree-canvas-card-ink: var(--color-node-amber-ink);
|
|
157
143
|
--crewlet-tree-canvas-card-accent: var(--color-node-amber);
|
|
158
144
|
}
|
|
@@ -160,7 +146,6 @@
|
|
|
160
146
|
.crewlet-tree-canvas__card[data-tone='rose'] {
|
|
161
147
|
--crewlet-tree-canvas-card-fill: var(--color-node-rose-fill);
|
|
162
148
|
--crewlet-tree-canvas-card-line: var(--color-node-rose-line);
|
|
163
|
-
--crewlet-tree-canvas-card-halo: var(--color-node-rose-halo);
|
|
164
149
|
--crewlet-tree-canvas-card-ink: var(--color-node-rose-ink);
|
|
165
150
|
--crewlet-tree-canvas-card-accent: var(--color-node-rose);
|
|
166
151
|
}
|
|
@@ -168,7 +153,6 @@
|
|
|
168
153
|
.crewlet-tree-canvas__card[data-tone='blue'] {
|
|
169
154
|
--crewlet-tree-canvas-card-fill: var(--color-node-blue-fill);
|
|
170
155
|
--crewlet-tree-canvas-card-line: var(--color-node-blue-line);
|
|
171
|
-
--crewlet-tree-canvas-card-halo: var(--color-node-blue-halo);
|
|
172
156
|
--crewlet-tree-canvas-card-ink: var(--color-node-blue-ink);
|
|
173
157
|
--crewlet-tree-canvas-card-accent: var(--color-node-blue);
|
|
174
158
|
}
|
|
@@ -204,18 +188,43 @@
|
|
|
204
188
|
* canvas clips, so an outset ring is cut away on the cards nearest the frame.
|
|
205
189
|
* This component hands out the tab stop, so the indicator is its to draw; left
|
|
206
190
|
* to the caller it was drawn on some charts and on others not at all.
|
|
191
|
+
*
|
|
192
|
+
* A CARD'S OWN NODE RINGS THE WHOLE CARD. Where the treeitem is the card's
|
|
193
|
+
* direct child, the card's edge IS the node's edge, and a ring drawn on the
|
|
194
|
+
* treeitem did two things wrong: it stopped short of anything the card holds
|
|
195
|
+
* under the node (a unit's lead), and it stood beside the card's boundary as a
|
|
196
|
+
* second line. So the ring is drawn on the card, over its boundary, and the
|
|
197
|
+
* treeitem draws none in any state, the way a field's control leaves its ring
|
|
198
|
+
* to the field. A row deeper inside a card (`*` between the two, because a row
|
|
199
|
+
* is always inside something the caller drew) has no boundary of its own, and
|
|
200
|
+
* keeps its ring.
|
|
207
201
|
*/
|
|
208
|
-
.crewlet-tree-canvas__card [role='treeitem']:focus-visible
|
|
202
|
+
.crewlet-tree-canvas__card * [role='treeitem']:focus-visible,
|
|
203
|
+
.crewlet-tree-canvas__card:has(> [role='treeitem']:focus-visible) {
|
|
209
204
|
outline: 2px solid var(--color-focus);
|
|
210
205
|
outline-offset: var(--size-focus-ring-inset-offset);
|
|
211
206
|
}
|
|
212
207
|
|
|
208
|
+
.crewlet-tree-canvas__card > [role='treeitem'] {
|
|
209
|
+
outline: none;
|
|
210
|
+
}
|
|
211
|
+
|
|
213
212
|
/* The selection is where the reader is, so it takes the accent. Inset, for the
|
|
214
213
|
same reason the ring is. */
|
|
215
214
|
.crewlet-tree-canvas__card [role='treeitem'][aria-selected='true'] {
|
|
216
215
|
box-shadow: inset 0 0 0 1px var(--color-brand-accent);
|
|
217
216
|
}
|
|
218
217
|
|
|
218
|
+
/* On a card's own node the selection IS the card's boundary, in the accent: an
|
|
219
|
+
inset ring beside the boundary drew two lines where one says it. */
|
|
220
|
+
.crewlet-tree-canvas__card:has(> [role='treeitem'][aria-selected='true']) {
|
|
221
|
+
border-color: var(--color-brand-accent);
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
.crewlet-tree-canvas__card > [role='treeitem'][aria-selected='true'] {
|
|
225
|
+
box-shadow: none;
|
|
226
|
+
}
|
|
227
|
+
|
|
219
228
|
/*
|
|
220
229
|
* THE POINTER'S CONTROLS, drawn over the end of the card and quiet until it is
|
|
221
230
|
* reached.
|
|
@@ -360,8 +369,8 @@
|
|
|
360
369
|
* The space around the whole chart, as a token, for the reason the gaps are
|
|
361
370
|
* one. None by default: a chart of panels is read inside its own frame, and
|
|
362
371
|
* the space around it is the page's. The `node` appearance takes the console
|
|
363
|
-
* chart's own margin below, which is what keeps the
|
|
364
|
-
*
|
|
372
|
+
* chart's own margin below, which is what keeps the control hanging under the
|
|
373
|
+
* outermost node off the canvas's clip.
|
|
365
374
|
*/
|
|
366
375
|
.crewlet-tree-canvas__margin {
|
|
367
376
|
width: var(--spacing-0);
|
|
@@ -635,8 +644,8 @@
|
|
|
635
644
|
* drawn distance is the same number either way, and the room simply moved
|
|
636
645
|
* from the card's box into the gap with the control that needs it.
|
|
637
646
|
* - AROUND: `--spacing-8`, 40px against 36, and deliberately the step above
|
|
638
|
-
* rather than below: the canvas CLIPS, and
|
|
639
|
-
*
|
|
647
|
+
* rather than below: the canvas CLIPS, and what hangs under the outermost
|
|
648
|
+
* node has to clear the frame.
|
|
640
649
|
*/
|
|
641
650
|
.crewlet-tree-canvas--node .crewlet-tree-canvas__gap {
|
|
642
651
|
width: var(--spacing-9);
|
|
@@ -980,6 +989,27 @@
|
|
|
980
989
|
border-radius: 0;
|
|
981
990
|
}
|
|
982
991
|
|
|
992
|
+
/*
|
|
993
|
+
* AND THEY ANSWER THE POINTER WITH THEIR INK, NOT A GROUND, as the console
|
|
994
|
+
* chart's do: the edit mark turns to the accent and the trash to the critical
|
|
995
|
+
* hue, and nothing is painted under either. A cell is a whole share of the
|
|
996
|
+
* node's corner, so a ground painted over it was a square standing past the
|
|
997
|
+
* card's rounded corner, the one place on a node with no room for a square.
|
|
998
|
+
*/
|
|
999
|
+
.crewlet-tree-canvas--node
|
|
1000
|
+
.crewlet-tree-canvas__actions
|
|
1001
|
+
.crewlet-icon-btn:hover:not(:disabled):not([aria-disabled='true']) {
|
|
1002
|
+
background: none;
|
|
1003
|
+
border-color: transparent;
|
|
1004
|
+
color: var(--color-brand-accent-ink);
|
|
1005
|
+
}
|
|
1006
|
+
|
|
1007
|
+
.crewlet-tree-canvas--node
|
|
1008
|
+
.crewlet-tree-canvas__actions
|
|
1009
|
+
.crewlet-icon-btn--ghost-danger:hover:not(:disabled):not([aria-disabled='true']) {
|
|
1010
|
+
color: var(--color-feedback-danger-ink);
|
|
1011
|
+
}
|
|
1012
|
+
|
|
983
1013
|
/*
|
|
984
1014
|
* A CONTROL ON AN EDGE IS A DISC: a ground of its own, so the line it sits on,
|
|
985
1015
|
* or the card it straddles, stops at its edge rather than running through it.
|
|
@@ -1081,38 +1111,29 @@
|
|
|
1081
1111
|
background-image: linear-gradient(var(--color-surface-subtle), var(--color-surface-subtle));
|
|
1082
1112
|
border: 1px dashed var(--color-brand-accent-soft-strong);
|
|
1083
1113
|
box-shadow: var(--shadow-md);
|
|
1084
|
-
|
|
1085
|
-
|
|
1086
|
-
|
|
1087
|
-
|
|
1088
|
-
|
|
1089
|
-
|
|
1090
|
-
|
|
1091
|
-
|
|
1092
|
-
* over the gap the next card's controls reach into, so it takes no pointer.
|
|
1093
|
-
*/
|
|
1094
|
-
.crewlet-tree-canvas__card--composing::after {
|
|
1095
|
-
content: '';
|
|
1096
|
-
position: absolute;
|
|
1097
|
-
inset: -3px;
|
|
1098
|
-
border: 1px solid var(--color-brand-accent-soft-strong);
|
|
1099
|
-
border-radius: var(--radius-lg);
|
|
1100
|
-
pointer-events: none;
|
|
1114
|
+
/*
|
|
1115
|
+
* THE BOUNDARY BREATHES, which is what says the card is waiting for the
|
|
1116
|
+
* reader from the far end of a chart, where a dashed hairline is a few
|
|
1117
|
+
* pixels. It used to be a second ring 3px outside the boundary that
|
|
1118
|
+
* breathed instead, two lines round one card where every box in this
|
|
1119
|
+
* package draws one, so the dashed boundary itself moves between the soft
|
|
1120
|
+
* accent and the full one.
|
|
1121
|
+
*/
|
|
1101
1122
|
animation:
|
|
1102
|
-
crewlet-tree-canvas-ghost-
|
|
1103
|
-
var(--motion-duration-
|
|
1123
|
+
crewlet-tree-canvas-ghost-card var(--motion-duration-slow) var(--motion-easing-emphasized)
|
|
1124
|
+
var(--motion-duration-base) both,
|
|
1104
1125
|
/* A BREATH RATHER THAN A TRANSITION, so it is a multiple of the scale's
|
|
1105
1126
|
longest step (1.8s) rather than a number off it: the scale tops out at
|
|
1106
1127
|
one UI transition, and a pulse held there would strobe. The console
|
|
1107
|
-
chart's own is 2s. It starts where the
|
|
1128
|
+
chart's own is 2s. It starts where the card's arrival ends. */
|
|
1108
1129
|
crewlet-tree-canvas-ghost-pulse calc(var(--motion-duration-slow) * 6)
|
|
1109
|
-
var(--motion-easing-in-out)
|
|
1110
|
-
|
|
1130
|
+
var(--motion-easing-in-out) calc(var(--motion-duration-base) + var(--motion-duration-slow))
|
|
1131
|
+
infinite;
|
|
1111
1132
|
}
|
|
1112
1133
|
|
|
1113
1134
|
/*
|
|
1114
1135
|
* THE FORM ARRIVES LAST, and from slightly above and behind: the wire, then
|
|
1115
|
-
* the card, then
|
|
1136
|
+
* the card, then what is inside it, which is the order a reader
|
|
1116
1137
|
* follows from the node they pressed to the thing they have to fill in. The
|
|
1117
1138
|
* caller's own element, whatever it drew, because the ghost's contents are
|
|
1118
1139
|
* entirely the caller's.
|
|
@@ -1156,24 +1177,14 @@
|
|
|
1156
1177
|
}
|
|
1157
1178
|
}
|
|
1158
1179
|
|
|
1159
|
-
@keyframes crewlet-tree-canvas-ghost-glow {
|
|
1160
|
-
from {
|
|
1161
|
-
opacity: 0;
|
|
1162
|
-
}
|
|
1163
|
-
|
|
1164
|
-
to {
|
|
1165
|
-
opacity: 1;
|
|
1166
|
-
}
|
|
1167
|
-
}
|
|
1168
|
-
|
|
1169
1180
|
@keyframes crewlet-tree-canvas-ghost-pulse {
|
|
1170
1181
|
0%,
|
|
1171
1182
|
100% {
|
|
1172
|
-
|
|
1183
|
+
border-color: var(--color-brand-accent-soft-strong);
|
|
1173
1184
|
}
|
|
1174
1185
|
|
|
1175
1186
|
50% {
|
|
1176
|
-
|
|
1187
|
+
border-color: var(--color-brand-accent);
|
|
1177
1188
|
}
|
|
1178
1189
|
}
|
|
1179
1190
|
|
|
@@ -1193,8 +1204,8 @@
|
|
|
1193
1204
|
* A READER WHO ASKED FOR LESS gets the ghost DRAWN, in place, at once. Nothing
|
|
1194
1205
|
* about the add is behind the motion: the chart still makes room, the branch
|
|
1195
1206
|
* is still dashed, the view still moves onto it and focus still lands in the
|
|
1196
|
-
* form. Only the arrival, the breath and the rise are dropped, and the
|
|
1197
|
-
*
|
|
1207
|
+
* form. Only the arrival, the breath and the rise are dropped, and the
|
|
1208
|
+
* boundary rests at the soft step it breathes from.
|
|
1198
1209
|
*/
|
|
1199
1210
|
@media (prefers-reduced-motion: reduce) {
|
|
1200
1211
|
/* NOT `transform` on the card itself: its transform is where the layout
|
|
@@ -1214,9 +1225,4 @@
|
|
|
1214
1225
|
transform: none;
|
|
1215
1226
|
animation: none;
|
|
1216
1227
|
}
|
|
1217
|
-
|
|
1218
|
-
.crewlet-tree-canvas__card--composing::after {
|
|
1219
|
-
opacity: 1;
|
|
1220
|
-
animation: none;
|
|
1221
|
-
}
|
|
1222
1228
|
}
|
package/dist/TreeGrid/index.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
export { TreeGrid } from '../chunk-
|
|
1
|
+
export { TreeGrid } from '../chunk-SX2DFTQV.js';
|
|
2
2
|
import '../chunk-S3BCVWTU.js';
|
|
3
3
|
import '../chunk-53DVJCVW.js';
|
|
4
4
|
import '../chunk-7RPGY3JE.js';
|
|
5
5
|
import '../chunk-R25RGPUB.js';
|
|
6
|
-
import '../chunk-
|
|
6
|
+
import '../chunk-4FQT6ZAY.js';
|
|
7
7
|
import '../chunk-BZFWDIV6.js';
|
|
8
8
|
import '../chunk-ODEQTPFM.js';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { useClipboard } from './chunk-5VNUYO76.js';
|
|
2
|
-
import { IconButton } from './chunk-
|
|
3
|
-
import { Button } from './chunk-
|
|
2
|
+
import { IconButton } from './chunk-4FQT6ZAY.js';
|
|
3
|
+
import { Button } from './chunk-OG6CL3EB.js';
|
|
4
4
|
import { VisuallyHidden } from './chunk-BZFWDIV6.js';
|
|
5
5
|
import { cx } from './chunk-ODEQTPFM.js';
|
|
6
6
|
import './Copyable-5PNRFOLS.css';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { VisuallyHidden } from './chunk-BZFWDIV6.js';
|
|
2
2
|
import { cx } from './chunk-ODEQTPFM.js';
|
|
3
|
-
import './IconButton-
|
|
3
|
+
import './IconButton-VYWP6SGW.css';
|
|
4
4
|
import { forwardRef, useId, Children, isValidElement, cloneElement } from 'react';
|
|
5
5
|
import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
|
|
6
6
|
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { Popover } from './chunk-
|
|
1
|
+
import { Popover } from './chunk-PDUZO35I.js';
|
|
2
2
|
import { today, CalendarGrid, shiftMonth, compareDays } from './chunk-GXQ3B46I.js';
|
|
3
|
-
import { IconButton } from './chunk-
|
|
4
|
-
import { Button } from './chunk-
|
|
3
|
+
import { IconButton } from './chunk-4FQT6ZAY.js';
|
|
4
|
+
import { Button } from './chunk-OG6CL3EB.js';
|
|
5
5
|
import { cx } from './chunk-ODEQTPFM.js';
|
|
6
|
-
import './DateTimePicker-
|
|
6
|
+
import './DateTimePicker-4AZBTODT.css';
|
|
7
7
|
import { useMemo, useState, useEffect } from 'react';
|
|
8
8
|
import { CalendarGlyph, ChevronDownGlyph, ChevronsLeftGlyph, ChevronLeftGlyph, ChevronRightGlyph, ChevronsRightGlyph } from '@crewlethq/icons/glyphs';
|
|
9
9
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { VisuallyHidden } from './chunk-BZFWDIV6.js';
|
|
2
2
|
import { cx } from './chunk-ODEQTPFM.js';
|
|
3
|
-
import './FilterChip-
|
|
3
|
+
import './FilterChip-EZ4QMW4E.css';
|
|
4
4
|
import { createContext, useContext, useRef, useId, useCallback, useLayoutEffect } from 'react';
|
|
5
5
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
6
6
|
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { Kbd } from './chunk-
|
|
2
|
-
import { FormField, Textarea, Input } from './chunk-
|
|
1
|
+
import { Kbd } from './chunk-SMBKXWML.js';
|
|
2
|
+
import { FormField, Textarea, Input } from './chunk-ZGX2DP7F.js';
|
|
3
3
|
import { announce } from './chunk-RSAQOKH3.js';
|
|
4
4
|
import { isComposing } from './chunk-R25RGPUB.js';
|
|
5
|
-
import { IconButton } from './chunk-
|
|
5
|
+
import { IconButton } from './chunk-4FQT6ZAY.js';
|
|
6
6
|
import './ListInput-O7LJKOIG.css';
|
|
7
7
|
import { useState, useRef, useLayoutEffect } from 'react';
|
|
8
8
|
import { ArrowUpGlyph, ArrowDownGlyph, XGlyph, PlusGlyph } from '@crewlethq/icons/glyphs';
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { TreeGrid } from './chunk-
|
|
2
|
-
import { createTreeModel } from './chunk-S3BCVWTU.js';
|
|
3
|
-
import { OrgLabel } from './chunk-
|
|
4
|
-
import { AddPill } from './chunk-
|
|
5
|
-
import { IconButton } from './chunk-
|
|
1
|
+
import { TreeGrid } from './chunk-SX2DFTQV.js';
|
|
2
|
+
import { createTreeModel, treeParent } from './chunk-S3BCVWTU.js';
|
|
3
|
+
import { OrgLabel } from './chunk-B47YUQGM.js';
|
|
4
|
+
import { AddPill } from './chunk-74WGARJE.js';
|
|
5
|
+
import { IconButton } from './chunk-4FQT6ZAY.js';
|
|
6
6
|
import { cx } from './chunk-ODEQTPFM.js';
|
|
7
|
-
import './OrgTable-
|
|
7
|
+
import './OrgTable-JZSYTUIK.css';
|
|
8
8
|
import { useMemo, useRef, useImperativeHandle, useCallback } from 'react';
|
|
9
9
|
import { ChevronDownGlyph, ChevronUpGlyph } from '@crewlethq/icons/glyphs';
|
|
10
10
|
import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
|
|
@@ -24,7 +24,7 @@ function OrgTable({
|
|
|
24
24
|
...rest
|
|
25
25
|
}) {
|
|
26
26
|
const text = { ...LABELS, ...labels };
|
|
27
|
-
const
|
|
27
|
+
const tree = useMemo(() => createTreeModel(rows), [rows]);
|
|
28
28
|
const grid = useRef(null);
|
|
29
29
|
useImperativeHandle(
|
|
30
30
|
ref,
|
|
@@ -38,20 +38,22 @@ function OrgTable({
|
|
|
38
38
|
const cell = useCallback(
|
|
39
39
|
(id, column, context) => {
|
|
40
40
|
if (column !== 1) return renderCell(id, column, context);
|
|
41
|
-
const depth =
|
|
41
|
+
const depth = tree.depth.get(id) ?? 0;
|
|
42
|
+
const open = context.expandable(id) && context.expanded(id);
|
|
42
43
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
43
44
|
/* @__PURE__ */ jsx(
|
|
44
45
|
OrgTableWire,
|
|
45
46
|
{
|
|
46
47
|
depth,
|
|
47
48
|
tone: tone?.(id),
|
|
48
|
-
trunk: depth > 0 ||
|
|
49
|
+
trunk: depth > 0 || open,
|
|
50
|
+
last: !open && lastUnderRoot(tree, id)
|
|
49
51
|
}
|
|
50
52
|
),
|
|
51
53
|
renderCell(id, column, context)
|
|
52
54
|
] });
|
|
53
55
|
},
|
|
54
|
-
[
|
|
56
|
+
[tree, renderCell, tone]
|
|
55
57
|
);
|
|
56
58
|
return /* @__PURE__ */ jsxs("div", { className: cx("crewlet-org-table", className), children: [
|
|
57
59
|
controls && /*
|
|
@@ -97,10 +99,18 @@ function OrgTable({
|
|
|
97
99
|
)
|
|
98
100
|
] });
|
|
99
101
|
}
|
|
102
|
+
function lastUnderRoot(tree, id) {
|
|
103
|
+
for (let at = id, up = treeParent(tree, id); up !== null; at = up, up = treeParent(tree, up)) {
|
|
104
|
+
const siblings = tree.children.get(up) ?? [];
|
|
105
|
+
if (siblings[siblings.length - 1] !== at) return false;
|
|
106
|
+
}
|
|
107
|
+
return true;
|
|
108
|
+
}
|
|
100
109
|
function OrgTableWire({
|
|
101
110
|
depth,
|
|
102
111
|
tone,
|
|
103
|
-
trunk
|
|
112
|
+
trunk,
|
|
113
|
+
last
|
|
104
114
|
}) {
|
|
105
115
|
return /* @__PURE__ */ jsx(
|
|
106
116
|
"span",
|
|
@@ -108,6 +118,7 @@ function OrgTableWire({
|
|
|
108
118
|
className: "crewlet-org-table__wire",
|
|
109
119
|
"aria-hidden": "true",
|
|
110
120
|
"data-trunk": trunk ? "" : void 0,
|
|
121
|
+
"data-last": last ? "" : void 0,
|
|
111
122
|
"data-root": depth === 0 ? "" : void 0,
|
|
112
123
|
"data-tone": tone,
|
|
113
124
|
style: { "--crewlet-org-table-depth": depth }
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { VisuallyHidden } from './chunk-BZFWDIV6.js';
|
|
2
2
|
import { cx } from './chunk-ODEQTPFM.js';
|
|
3
|
-
import './AddPill-
|
|
3
|
+
import './AddPill-V4TQXJ53.css';
|
|
4
4
|
import { useState, useId, useRef, useCallback, useEffect, Fragment } from 'react';
|
|
5
5
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
6
6
|
|
|
@@ -93,7 +93,10 @@ function AddPill({
|
|
|
93
93
|
onClick: press,
|
|
94
94
|
children: [
|
|
95
95
|
/* @__PURE__ */ jsx("span", { className: "crewlet-add-pill__disc", "aria-hidden": "true" }),
|
|
96
|
-
/* @__PURE__ */
|
|
96
|
+
/* @__PURE__ */ jsxs("svg", { viewBox: "0 0 16 16", "aria-hidden": "true", focusable: "false", children: [
|
|
97
|
+
/* @__PURE__ */ jsx("circle", { cx: "8", cy: "8", r: "7" }),
|
|
98
|
+
/* @__PURE__ */ jsx("path", { d: "M8 4.5v7M4.5 8h7" })
|
|
99
|
+
] })
|
|
97
100
|
]
|
|
98
101
|
}
|
|
99
102
|
),
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Avatar } from './chunk-IA232OTU.js';
|
|
2
2
|
import { cx } from './chunk-ODEQTPFM.js';
|
|
3
|
-
import './OrgLabel-
|
|
3
|
+
import './OrgLabel-6WSKJQOT.css';
|
|
4
4
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
5
5
|
|
|
6
6
|
function OrgLabel(props) {
|
|
@@ -8,7 +8,11 @@ function OrgLabel(props) {
|
|
|
8
8
|
const zone = props.avatar === void 0 ? /* @__PURE__ */ jsx(
|
|
9
9
|
"span",
|
|
10
10
|
{
|
|
11
|
-
className: cx(
|
|
11
|
+
className: cx(
|
|
12
|
+
"crewlet-org-label__icon",
|
|
13
|
+
props.iconSize === "lg" && "crewlet-org-label__icon--lg",
|
|
14
|
+
props.iconRing === true && "crewlet-org-label__icon--ring"
|
|
15
|
+
),
|
|
12
16
|
"aria-hidden": "true",
|
|
13
17
|
children: props.icon
|
|
14
18
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { HeadingLevelProvider } from './chunk-PQADV6P6.js';
|
|
2
2
|
import { useLayerContainer } from './chunk-7RPGY3JE.js';
|
|
3
3
|
import { focusables, useModalLayer, useBodyScrollLock } from './chunk-R25RGPUB.js';
|
|
4
|
-
import { IconButton } from './chunk-
|
|
5
|
-
import { Button } from './chunk-
|
|
4
|
+
import { IconButton } from './chunk-4FQT6ZAY.js';
|
|
5
|
+
import { Button } from './chunk-OG6CL3EB.js';
|
|
6
6
|
import { cx } from './chunk-ODEQTPFM.js';
|
|
7
7
|
import './Modal-BNT3TDV2.css';
|
|
8
8
|
import { useId, useRef, useCallback } from 'react';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { Kbd } from './chunk-
|
|
2
|
-
import { Modal } from './chunk-
|
|
1
|
+
import { Kbd } from './chunk-SMBKXWML.js';
|
|
2
|
+
import { Modal } from './chunk-BTHX2FS3.js';
|
|
3
3
|
import { useListbox } from './chunk-6MU7HNB4.js';
|
|
4
|
-
import { Input } from './chunk-
|
|
4
|
+
import { Input } from './chunk-ZGX2DP7F.js';
|
|
5
5
|
import { Count } from './chunk-BHHIIK3M.js';
|
|
6
6
|
import { isComposing } from './chunk-R25RGPUB.js';
|
|
7
7
|
import { VisuallyHidden } from './chunk-BZFWDIV6.js';
|
|
@@ -2,7 +2,7 @@ import { CardHeaderSlotContext } from './chunk-AV2DXAEL.js';
|
|
|
2
2
|
import { Count } from './chunk-BHHIIK3M.js';
|
|
3
3
|
import { useHeadingLevel, HeadingLevelProvider, nextHeadingLevel, headingTag } from './chunk-PQADV6P6.js';
|
|
4
4
|
import { cx } from './chunk-ODEQTPFM.js';
|
|
5
|
-
import './Card-
|
|
5
|
+
import './Card-KJOYHDTJ.css';
|
|
6
6
|
import { createContext, useId, useState, isValidElement, useRef, useCallback, useMemo, Children, cloneElement, useContext, useEffect, Fragment } from 'react';
|
|
7
7
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
8
8
|
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import { Toolbar } from './chunk-PGRPNDWM.js';
|
|
2
2
|
import { PageHeader } from './chunk-HOXGBLEY.js';
|
|
3
3
|
import { RelativeTime } from './chunk-3CZ7XAVY.js';
|
|
4
|
-
import { Kbd } from './chunk-
|
|
5
|
-
import { DataTable } from './chunk-
|
|
6
|
-
import { Menu } from './chunk-
|
|
7
|
-
import { DateTimePicker } from './chunk-
|
|
8
|
-
import { Popover } from './chunk-
|
|
4
|
+
import { Kbd } from './chunk-SMBKXWML.js';
|
|
5
|
+
import { DataTable } from './chunk-CVB7O3SZ.js';
|
|
6
|
+
import { Menu } from './chunk-LSB3EHBW.js';
|
|
7
|
+
import { DateTimePicker } from './chunk-5I56UXBJ.js';
|
|
8
|
+
import { Popover } from './chunk-PDUZO35I.js';
|
|
9
9
|
import { useListbox, useOptionKeys } from './chunk-6MU7HNB4.js';
|
|
10
|
-
import { Input } from './chunk-
|
|
10
|
+
import { Input } from './chunk-ZGX2DP7F.js';
|
|
11
11
|
import { Count } from './chunk-BHHIIK3M.js';
|
|
12
|
-
import { IconButton } from './chunk-
|
|
13
|
-
import { Button } from './chunk-
|
|
12
|
+
import { IconButton } from './chunk-4FQT6ZAY.js';
|
|
13
|
+
import { Button } from './chunk-OG6CL3EB.js';
|
|
14
14
|
import { VisuallyHidden } from './chunk-BZFWDIV6.js';
|
|
15
15
|
import { cx } from './chunk-ODEQTPFM.js';
|
|
16
16
|
import './DataView-N6JX464S.css';
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import { Menu } from './chunk-
|
|
1
|
+
import { Menu } from './chunk-LSB3EHBW.js';
|
|
2
2
|
import { EmptyValue } from './chunk-EUCC37WY.js';
|
|
3
|
-
import { Modal } from './chunk-
|
|
3
|
+
import { Modal } from './chunk-BTHX2FS3.js';
|
|
4
4
|
import { useCardHeaderSlot } from './chunk-AV2DXAEL.js';
|
|
5
|
-
import { Checkbox } from './chunk-
|
|
5
|
+
import { Checkbox } from './chunk-YCTMKKRA.js';
|
|
6
6
|
import { useClipboard } from './chunk-5VNUYO76.js';
|
|
7
|
-
import { IconButton } from './chunk-
|
|
8
|
-
import { Button } from './chunk-
|
|
7
|
+
import { IconButton } from './chunk-4FQT6ZAY.js';
|
|
8
|
+
import { Button } from './chunk-OG6CL3EB.js';
|
|
9
9
|
import { VisuallyHidden } from './chunk-BZFWDIV6.js';
|
|
10
10
|
import { cx } from './chunk-ODEQTPFM.js';
|
|
11
|
-
import './DataTable-
|
|
11
|
+
import './DataTable-WZK3V62B.css';
|
|
12
12
|
import React, { useState, useCallback, useMemo, useRef, useLayoutEffect, useEffect, useId } from 'react';
|
|
13
13
|
import { createPortal } from 'react-dom';
|
|
14
14
|
import { CheckGlyph, CircleAlertGlyph, CopyGlyph, ChevronsLeftGlyph, ChevronLeftGlyph, ChevronRightGlyph, ChevronsRightGlyph, SettingsGlyph, GripVerticalGlyph, ChevronUpGlyph, ChevronDownGlyph, TrashGlyph, ArrowUpGlyph, ArrowDownGlyph, ChevronsUpDownGlyph, RotateCcwGlyph } from '@crewlethq/icons/glyphs';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Count } from './chunk-BHHIIK3M.js';
|
|
2
2
|
import { cx } from './chunk-ODEQTPFM.js';
|
|
3
|
-
import './Tabs-
|
|
3
|
+
import './Tabs-BWFQSWY3.css';
|
|
4
4
|
import React, { useRef, useState, useLayoutEffect } from 'react';
|
|
5
5
|
import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
|
|
6
6
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { useAnnouncer } from './chunk-RSAQOKH3.js';
|
|
2
2
|
import { cx } from './chunk-ODEQTPFM.js';
|
|
3
|
-
import './TagGroup-
|
|
3
|
+
import './TagGroup-BCQZD7ZD.css';
|
|
4
4
|
import { useState, useRef, Children } from 'react';
|
|
5
5
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
6
6
|
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { Select } from './chunk-
|
|
2
|
-
import { Popover } from './chunk-
|
|
1
|
+
import { Select } from './chunk-SEFMO2EV.js';
|
|
2
|
+
import { Popover } from './chunk-PDUZO35I.js';
|
|
3
3
|
import { today, shiftMonth, CalendarGrid, compareDays } from './chunk-GXQ3B46I.js';
|
|
4
|
-
import { Input } from './chunk-
|
|
4
|
+
import { Input } from './chunk-ZGX2DP7F.js';
|
|
5
5
|
import { isComposing } from './chunk-R25RGPUB.js';
|
|
6
|
-
import { IconButton } from './chunk-
|
|
7
|
-
import { Button } from './chunk-
|
|
6
|
+
import { IconButton } from './chunk-4FQT6ZAY.js';
|
|
7
|
+
import { Button } from './chunk-OG6CL3EB.js';
|
|
8
8
|
import { cx } from './chunk-ODEQTPFM.js';
|
|
9
|
-
import './TimeWindowPicker-
|
|
9
|
+
import './TimeWindowPicker-GBF4JDFI.css';
|
|
10
10
|
import { useMemo, useState, useRef, useId, useEffect } from 'react';
|
|
11
11
|
import { ClockGlyph, ChevronDownGlyph, CheckGlyph, ChevronLeftGlyph, ChevronRightGlyph } from '@crewlethq/icons/glyphs';
|
|
12
12
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { useTreeState, useMeasuredSizes, layoutForest, treeAncestors, useLayoutAnchor, treeExpandable, layoutConnectors, treeItemAction, treeStep, treePosInSet, treeSetSize, treeLevel, placeGroups } from './chunk-S3BCVWTU.js';
|
|
2
|
-
import { CANVAS_COMPOSE_CONTEXT, CANVAS_FIT_MAX_ZOOM, Canvas } from './chunk-
|
|
2
|
+
import { CANVAS_COMPOSE_CONTEXT, CANVAS_FIT_MAX_ZOOM, Canvas } from './chunk-VE6LD3KM.js';
|
|
3
3
|
import { focusables } from './chunk-R25RGPUB.js';
|
|
4
4
|
import { cx } from './chunk-ODEQTPFM.js';
|
|
5
|
-
import './TreeCanvas-
|
|
5
|
+
import './TreeCanvas-L2XYONWL.css';
|
|
6
6
|
import { useState, useRef, useMemo, useLayoutEffect, useCallback, useImperativeHandle, useId, useSyncExternalStore } from 'react';
|
|
7
7
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
8
8
|
|
|
@@ -133,6 +133,7 @@ function TreeCanvas({
|
|
|
133
133
|
controlsBelow,
|
|
134
134
|
hint,
|
|
135
135
|
dimmed = false,
|
|
136
|
+
ground,
|
|
136
137
|
composing = null,
|
|
137
138
|
labels,
|
|
138
139
|
ref,
|
|
@@ -461,6 +462,7 @@ function TreeCanvas({
|
|
|
461
462
|
controlsBelow,
|
|
462
463
|
hint,
|
|
463
464
|
dimmed,
|
|
465
|
+
ground,
|
|
464
466
|
largestItemWidth: widestCard,
|
|
465
467
|
labels,
|
|
466
468
|
children: [
|